@@ -292,7 +292,7 @@ parse_number_string(UC const *p, UC const *pend,
292
292
answer.negative = (*p == UC (' -' ));
293
293
#ifdef FASTFLOAT_ALLOWS_LEADING_PLUS // disabled by default
294
294
if ((*p == UC (' -' )) ||
295
- (!int (fmt & detail::basic_json_fmt) && *p == UC (' +' ))) {
295
+ (!uint64_t (fmt & detail::basic_json_fmt) && *p == UC (' +' ))) {
296
296
#else
297
297
if (*p == UC (' -' )) { // C++17 20.19.3.(7.1) explicitly forbids '+' sign here
298
298
#endif
@@ -301,7 +301,7 @@ parse_number_string(UC const *p, UC const *pend,
301
301
return report_parse_error<UC>(
302
302
p, parse_error::missing_integer_or_dot_after_sign);
303
303
}
304
- if (int (fmt & detail::basic_json_fmt)) {
304
+ if (uint64_t (fmt & detail::basic_json_fmt)) {
305
305
if (!is_integer (*p)) { // a sign must be followed by an integer
306
306
return report_parse_error<UC>(p,
307
307
parse_error::missing_integer_after_sign);
@@ -330,7 +330,7 @@ parse_number_string(UC const *p, UC const *pend,
330
330
UC const *const end_of_integer_part = p;
331
331
int64_t digit_count = int64_t (end_of_integer_part - start_digits);
332
332
answer.integer = span<const UC>(start_digits, size_t (digit_count));
333
- if (int (fmt & detail::basic_json_fmt)) {
333
+ if (uint64_t (fmt & detail::basic_json_fmt)) {
334
334
// at least 1 digit in integer part, without leading zeros
335
335
if (digit_count == 0 ) {
336
336
return report_parse_error<UC>(p, parse_error::no_digits_in_integer_part);
@@ -359,7 +359,7 @@ parse_number_string(UC const *p, UC const *pend,
359
359
answer.fraction = span<const UC>(before, size_t (p - before));
360
360
digit_count -= exponent;
361
361
}
362
- if (int (fmt & detail::basic_json_fmt)) {
362
+ if (uint64_t (fmt & detail::basic_json_fmt)) {
363
363
// at least 1 digit in fractional part
364
364
if (has_decimal_point && exponent == 0 ) {
365
365
return report_parse_error<UC>(p,
@@ -370,9 +370,9 @@ parse_number_string(UC const *p, UC const *pend,
370
370
return report_parse_error<UC>(p, parse_error::no_digits_in_mantissa);
371
371
}
372
372
int64_t exp_number = 0 ; // explicit exponential part
373
- if ((int (fmt & chars_format::scientific) && (p != pend) &&
373
+ if ((uint64_t (fmt & chars_format::scientific) && (p != pend) &&
374
374
((UC (' e' ) == *p) || (UC (' E' ) == *p))) ||
375
- (int (fmt & detail::basic_fortran_fmt) && (p != pend) &&
375
+ (uint64_t (fmt & detail::basic_fortran_fmt) && (p != pend) &&
376
376
((UC (' +' ) == *p) || (UC (' -' ) == *p) || (UC (' d' ) == *p) ||
377
377
(UC (' D' ) == *p)))) {
378
378
UC const *location_of_e = p;
@@ -390,7 +390,7 @@ parse_number_string(UC const *p, UC const *pend,
390
390
++p;
391
391
}
392
392
if ((p == pend) || !is_integer (*p)) {
393
- if (!int (fmt & chars_format::fixed)) {
393
+ if (!uint64_t (fmt & chars_format::fixed)) {
394
394
// The exponential part is invalid for scientific notation, so it must
395
395
// be a trailing token for fixed notation. However, fixed notation is
396
396
// disabled, so report a scientific notation error.
@@ -413,8 +413,8 @@ parse_number_string(UC const *p, UC const *pend,
413
413
}
414
414
} else {
415
415
// If it scientific and not fixed, we have to bail out.
416
- if (int (fmt & chars_format::scientific) &&
417
- !int (fmt & chars_format::fixed)) {
416
+ if (uint64_t (fmt & chars_format::scientific) &&
417
+ !uint64_t (fmt & chars_format::fixed)) {
418
418
return report_parse_error<UC>(p, parse_error::missing_exponential_part);
419
419
}
420
420
}
0 commit comments