@@ -15,13 +15,13 @@ namespace json {
1515
1616class object {
1717private:
18- using value =
18+ using Value =
1919 std::variant<std::nullptr_t , bool , long long int , double , std::string>;
20- using all_values =
21- std::variant<std:: nullptr_t , bool , long long int , double , std::string,
22- std::vector<object>, std::map<std::string, object>>;
20+ using AllValues = std::variant<std:: nullptr_t , bool , long long int , double ,
21+ std::string, std::vector<json::object> ,
22+ std::map<std::string, json:: object>>;
2323
24- type _type ;
24+ json::TYPE type ;
2525
2626 void clearVariant ();
2727
@@ -34,58 +34,63 @@ class object {
3434 void assertIsMap ();
3535
3636protected:
37- value _value ;
38- std::vector<object> _array ;
39- std::map<std::string, object> _map ;
37+ json::object::Value value ;
38+ std::vector<json:: object> array ;
39+ std::map<std::string, json:: object> map ;
4040
4141public:
42+ // Constructors
4243 object ();
43- object (all_values data);
44+ object (json::object::AllValues data);
45+ object (const char *data);
4446 ~object ();
4547
46- // Equal to operators
47- object &operator =(std::nullptr_t data);
48- object &operator =(bool data);
49- object &operator =(int data);
50- object &operator =(long long int data);
51- object &operator =(double data);
52- object &operator =(const char *data);
53- object &operator =(std::vector<object> data);
54- object &operator =(std::map<std::string, object> data);
55-
56- // Array operators
57- object &operator [](const size_t index);
58- const object &operator [](const size_t index) const ;
48+ // Assignment operators
49+ json::object &operator =(std::nullptr_t data);
50+ json::object &operator =(bool data);
51+ json::object &operator =(int data);
52+ json::object &operator =(long long int data);
53+ json::object &operator =(double data);
54+ json::object &operator =(const char *data);
55+ json::object &operator =(const std::string &data);
56+ json::object &operator =(std::vector<json::object> data);
57+ json::object &operator =(std::map<std::string, json::object> data);
58+
59+ // Array operations
60+ json::object &operator [](const size_t index);
61+ json::object &operator [](const int index);
62+ void push_back (const json::object &data);
5963 void pop_back ();
60- void push_back (all_values data);
61- void push_back (object data);
62- void reserve (size_t size);
63- void resize (size_t size);
64+ void reserve (const size_t size);
65+ void resize (const size_t size);
6466 void shrink_to_fit ();
6567
66- // Map operators
67- object &operator [](const std::string &key);
68- const object &operator [](const std::string &key) const ;
69- void erase (const std::string key);
68+ // Map operations
69+ json::object &operator [](const char *key);
70+ json::object &operator [](const std::string &key);
7071 std::map<std::string, json::object>::iterator find (const std::string key);
71- void insert (const std::string key, all_values data);
72+ std::map<std::string, json::object>::iterator begin ();
73+ std::map<std::string, json::object>::iterator end ();
74+ void insert (const std::string key, json::object::AllValues value);
7275
7376 // Array and Map operators
74- size_t size ();
7577 void clear ();
78+ size_t size () const ;
7679
77- // object operators
80+ // Object operators
7881 void reset ();
79- void dump (std::string path , size_t indent = 0 );
80- std::string dumps (size_t indent = 0 , size_t baseIndent = 0 );
82+ void dump (std::string filename , size_t indent = 0 ) const ;
83+ std::string dumps (size_t indent = 0 , size_t baseIndent = 0 ) const ;
8184
82- // Output functions
83- friend std::ostream &operator <<(std::ostream &os, object &obj);
84-
85- operator std::nullptr_t () const ;
86- // operator bool() const;
87- operator double () const ;
85+ // Conversion Operators
8886 operator std::string () const ;
87+ operator int () const ;
88+ operator long long int () const ;
89+ operator double () const ;
90+ operator bool () const ;
91+
92+ // Output functions
93+ friend std::ostream &operator <<(std::ostream &os, const json::object &obj);
8994};
9095
9196} // namespace json
0 commit comments