19 {
_values.push_back( std::move(val_r) ); }
21 void Array::add(
const std::initializer_list<Value> &contents_r)
23 for(
const auto &v : contents_r )
33 str <<
", " << val->asJSON();
44 Object::Object(
const std::initializer_list<std::pair<String, Value> > &contents_r)
49 {
_values.insert( std::make_pair( std::move(key_r), std::move(val_r)) ); }
51 void Object::add(std::initializer_list<std::pair<String, Value> > contents_r)
53 for(
const auto &val : contents_r )
54 add( val.first, val.second );
68 return str << endl <<
'}';
77 std::vector<Value> vs;
78 auto range =
_values.equal_range ( key );
79 std::for_each( range.first, range.second, [&](
const auto &v) { vs.push_back (v.second);} );
93 std::ostream &
Object::dumpOn(std::ostream &
str, std::map<String, Value>::const_iterator val_r)
const
94 {
return str << val_r->first <<
": " << val_r->second; }
98 return std::visit( [](
auto &&val ) {
return val.asJSON(); },
_value );
std::ostream & dumpOn(std::ostream &str) const
Stream output.
std::vector< Value > _values
void add(Value val_r)
Push JSON Value to Array.
bool operator==(const Array &other) const
std::string asJSON() const
JSON representation.
std::ostream & dumpOn(std::ostream &str) const
Stream output.
const Value & value(const String &key) const
bool contains(const String &key) const
std::vector< Value > values(const String &key) const
std::multimap< String, Value > _values
void add(String key_r, Value val_r)
Add key/value pair.
bool operator==(const Object &other) const
std::string asJSON() const
JSON representation.
String related utilities and Regular expression matching.
Convenient building of std::string via std::ostringstream Basically a std::ostringstream autoconverti...
#define for_(IT, BEG, END)
Convenient for-loops using iterator.