| 2610 | } |
| 2611 | |
| 2612 | fastfloat_really_inline void skip_zeros(const char*& first, const char* last) noexcept { |
| 2613 | uint64_t val; |
| 2614 | while (std::distance(first, last) >= 8) { |
| 2615 | ::memcpy(&val, first, sizeof(uint64_t)); |
| 2616 | if (val != 0x3030303030303030) { |
| 2617 | break; |
| 2618 | } |
| 2619 | first += 8; |
| 2620 | } |
| 2621 | while (first != last) { |
| 2622 | if (*first != '0') { |
| 2623 | break; |
| 2624 | } |
| 2625 | first++; |
| 2626 | } |
| 2627 | } |
| 2628 | |
| 2629 | // determine if any non-zero digits were truncated. |
| 2630 | // all characters must be valid digits. |