#pragma once #include #include 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::max(); static constexpr double g_int_min = std::numeric_limits::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; } }