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;
     }
 }
Example #2
0
 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;
     }
 }
Example #3
0
 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');
 }
Example #4
0
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;
}
Example #5
0
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;
}