@@ -291,7 +291,8 @@ parse_number_string(UC const *p, UC const *pend,
291291 answer.too_many_digits = false ;
292292 answer.negative = (*p == UC (' -' ));
293293#ifdef FASTFLOAT_ALLOWS_LEADING_PLUS // disabled by default
294- if ((*p == UC (' -' )) || (!(fmt & FASTFLOAT_JSONFMT) && *p == UC (' +' ))) {
294+ if ((*p == UC (' -' )) ||
295+ (!uint64_t (fmt & detail::basic_json_fmt) && *p == UC (' +' ))) {
295296#else
296297 if (*p == UC (' -' )) { // C++17 20.19.3.(7.1) explicitly forbids '+' sign here
297298#endif
@@ -300,7 +301,7 @@ parse_number_string(UC const *p, UC const *pend,
300301 return report_parse_error<UC>(
301302 p, parse_error::missing_integer_or_dot_after_sign);
302303 }
303- if (fmt & FASTFLOAT_JSONFMT ) {
304+ if (uint64_t ( fmt & detail::basic_json_fmt) ) {
304305 if (!is_integer (*p)) { // a sign must be followed by an integer
305306 return report_parse_error<UC>(p,
306307 parse_error::missing_integer_after_sign);
@@ -329,7 +330,7 @@ parse_number_string(UC const *p, UC const *pend,
329330 UC const *const end_of_integer_part = p;
330331 int64_t digit_count = int64_t (end_of_integer_part - start_digits);
331332 answer.integer = span<const UC>(start_digits, size_t (digit_count));
332- if (fmt & FASTFLOAT_JSONFMT ) {
333+ if (uint64_t ( fmt & detail::basic_json_fmt) ) {
333334 // at least 1 digit in integer part, without leading zeros
334335 if (digit_count == 0 ) {
335336 return report_parse_error<UC>(p, parse_error::no_digits_in_integer_part);
@@ -358,7 +359,7 @@ parse_number_string(UC const *p, UC const *pend,
358359 answer.fraction = span<const UC>(before, size_t (p - before));
359360 digit_count -= exponent;
360361 }
361- if (fmt & FASTFLOAT_JSONFMT ) {
362+ if (uint64_t ( fmt & detail::basic_json_fmt) ) {
362363 // at least 1 digit in fractional part
363364 if (has_decimal_point && exponent == 0 ) {
364365 return report_parse_error<UC>(p,
@@ -369,9 +370,9 @@ parse_number_string(UC const *p, UC const *pend,
369370 return report_parse_error<UC>(p, parse_error::no_digits_in_mantissa);
370371 }
371372 int64_t exp_number = 0 ; // explicit exponential part
372- if (((fmt & chars_format::scientific) && (p != pend) &&
373+ if ((uint64_t (fmt & chars_format::scientific) && (p != pend) &&
373374 ((UC (' e' ) == *p) || (UC (' E' ) == *p))) ||
374- ((fmt & FASTFLOAT_FORTRANFMT ) && (p != pend) &&
375+ (uint64_t (fmt & detail::basic_fortran_fmt ) && (p != pend) &&
375376 ((UC (' +' ) == *p) || (UC (' -' ) == *p) || (UC (' d' ) == *p) ||
376377 (UC (' D' ) == *p)))) {
377378 UC const *location_of_e = p;
@@ -389,7 +390,7 @@ parse_number_string(UC const *p, UC const *pend,
389390 ++p;
390391 }
391392 if ((p == pend) || !is_integer (*p)) {
392- if (!(fmt & chars_format::fixed)) {
393+ if (!uint64_t (fmt & chars_format::fixed)) {
393394 // The exponential part is invalid for scientific notation, so it must
394395 // be a trailing token for fixed notation. However, fixed notation is
395396 // disabled, so report a scientific notation error.
@@ -412,7 +413,8 @@ parse_number_string(UC const *p, UC const *pend,
412413 }
413414 } else {
414415 // If it scientific and not fixed, we have to bail out.
415- if ((fmt & chars_format::scientific) && !(fmt & chars_format::fixed)) {
416+ if (uint64_t (fmt & chars_format::scientific) &&
417+ !uint64_t (fmt & chars_format::fixed)) {
416418 return report_parse_error<UC>(p, parse_error::missing_exponential_part);
417419 }
418420 }
0 commit comments