- #pragma once
- #include <cmath>
- #include <limits>
- namespace jvalidate::detail {
- inline bool is_json_integer(double number) { return std::floor(number) == number; }
- inline bool fits_in_integer(double number) {
- static constexpr double g_int_max = std::numeric_limits<int64_t>::max();
- static constexpr double g_int_min = std::numeric_limits<int64_t>::min();
- return is_json_integer(number) && number <= g_int_max && number >= g_int_min;
- }
- inline bool fits_in_integer(uint64_t number) { return (number & 0x8000'0000'0000'0000) == 0; }
- }
|