bool is(const basic_json<Char, Alloc>& val) const { bool result = val.is_array(); for (size_t i = 0; result && i < val.size(); ++i) { if (!val[i].template is<T>()) { result = false; } } return result; }
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 long>::max JSONCONS_NO_MACRO_EXP(); } else if (val.is_ulonglong()) { return true; } else { return false; } }
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; } else if (val.is_ulonglong()) { return true; } else { return false; } }
std::vector<T> as(const basic_json<Char, Alloc>& val) const { std::vector<T> v(val.size()); for (size_t i = 0; i < v.size(); ++i) { v[i] = val[i].template as<T>(); } return v; }
bool is(const basic_json<char,Storage>& val) const { if (!val.is_string()) { return false; } std::string s = val.template as<std::string>(); try { boost::gregorian::date_from_iso_string(s); return true; } catch (...) { return false; } }
Char as(const basic_json<Char, Alloc>& val) const { return val.as_char(); }
bool is(const basic_json<Char, Alloc>& val) const { return val.is_string() && val.as_string().size() == 1; }
bool as(const basic_json<Char, Alloc>& val) const { return val.as_bool(); }
void assign(basic_json<Char, Alloc>& self, double val) { self.assign_float(val); }
bool is(const basic_json<Char, Alloc>& val) const { return val.is_double(); }
long as(const basic_json<Char, Alloc>& val) const { return val.as_long(); }
unsigned int as(const basic_json<Char, Alloc>& val) const { return val.as_uint(); }
void assign(basic_json<Char, Alloc>& self, int val) { self.assign_longlong(val); }
unsigned short as(const basic_json<Char, Alloc>& val) const { return (unsigned short)val.as_uint(); }
short as(const basic_json<Char, Alloc>& val) const { return (short)val.as_int(); }
void assign(basic_json<Char, Alloc>& self, bool val) { self.assign_bool(val); }
void assign(basic_json<Char, Alloc>& self, const std::basic_string<Char>& val) { self.assign_string(val); }
void assign(basic_json<Char, Alloc>& self, Char ch) { std::basic_string<Char> s; s.push_back(ch); self.assign_string(s); }
void assign(basic_json<Char, Alloc>& self, long long val) { self.assign_integer(val); }
double as(const basic_json<Char, Alloc>& val) const { return val.as_double(); }
std::basic_string<Char> as(const basic_json<Char, Alloc>& val) const { return val.as_string(); }
typename basic_json<Char, Alloc>::any as(const basic_json<Char, Alloc>& val) const { return val.any_value(); }
bool is(const basic_json<Char, Alloc>& val) const { return val.is_string(); }
bool is(const basic_json<Char, Alloc>& self) const { return self.is_any(); }
void assign(basic_json<Char, Alloc>& self, null_type) { self.assign_null(); }
void assign(basic_json<Char, Alloc>& self, typename basic_json<Char, Alloc>::any val) { self.assign_any(val); }
unsigned long long as(const basic_json<Char, Alloc>& val) const { return val.as_ulonglong(); }
void assign(basic_json<Char, Alloc>& self, const Char *val) { self.assign_string(std::basic_string<Char>(val)); }
void assign(basic_json<Char, Alloc>& self, unsigned long long val) { self.assign_ulonglong(val); }