bool is(const basic_json<Char, Alloc>& val) const { if (val.is_longlong()) { return val.as_longlong() >= std::numeric_limits<long>::min JSONCONS_NO_MACRO_EXP() && val.as_longlong() <= std::numeric_limits<long>::max JSONCONS_NO_MACRO_EXP(); } else if (val.is_ulonglong()) { return val.as_ulonglong() <= std::numeric_limits<long>::max JSONCONS_NO_MACRO_EXP(); } else { return false; } }
bool is(const basic_json<Char, Alloc>& val) const { if (val.is_longlong()) { return val.as_longlong() >= 0 && static_cast<unsigned long long>(val.as_longlong()) <= std::numeric_limits<unsigned long>::max JSONCONS_NO_MACRO_EXP(); } else if (val.is_ulonglong()) { return val.as_ulonglong() <= std::numeric_limits<unsigned long>::max JSONCONS_NO_MACRO_EXP(); } else { return false; } }
basic_csv_parameters() : assume_header_(false), ignore_empty_values_(false), trim_leading_(false), trim_trailing_(false), trim_leading_inside_quotes_(false), trim_trailing_inside_quotes_(false), unquoted_empty_value_is_null_(false), field_delimiter_(','), quote_char_('\"'), quote_escape_char_('\"'), comment_starter_('\0'), quote_style_(quote_styles::minimal), max_lines_(std::numeric_limits<unsigned long>::max JSONCONS_NO_MACRO_EXP()), header_lines_(0) { line_delimiter_.push_back('\n'); }
uint64_t string_to_uinteger(const CharT *s, size_t length) throw(std::overflow_error) { static const uint64_t max_value = std::numeric_limits<uint64_t>::max JSONCONS_NO_MACRO_EXP(); static const uint64_t max_value_div_10 = max_value / 10; uint64_t n = 0; for (size_t i = 0; i < length; ++i) { uint64_t x = s[i] - '0'; if (n > max_value_div_10) { throw std::overflow_error("Unsigned overflow"); } n = n * 10; if (n > max_value - x) { throw std::overflow_error("Unsigned overflow"); } n += x; } return n; }
int64_t string_to_integer(bool has_neg, const CharT *s, size_t length) throw(std::overflow_error) { const long long max_value = std::numeric_limits<int64_t>::max JSONCONS_NO_MACRO_EXP(); const long long max_value_div_10 = max_value / 10; long long n = 0; for (size_t i = 0; i < length; ++i) { long long x = s[i] - '0'; if (n > max_value_div_10) { throw std::overflow_error("Integer overflow"); } n = n * 10; if (n > max_value - x) { throw std::overflow_error("Integer overflow"); } n += x; } return has_neg ? -n : n; }