diff options
Diffstat (limited to 'sql/my_json_writer.h')
-rw-r--r-- | sql/my_json_writer.h | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/sql/my_json_writer.h b/sql/my_json_writer.h new file mode 100644 index 00000000000..403d7e0688c --- /dev/null +++ b/sql/my_json_writer.h @@ -0,0 +1,43 @@ +/* Todo: SkySQL copyrights */ + +class Json_writer +{ +public: + /* Add a member. We must be in an object. */ + Json_writer& add_member(const char *name); + + /* Add atomic values */ + void add_ll(longlong val); + void add_str(const char* val); + void add_str(const String &str); + void add_double(double val); + void add_bool(bool val); + + /* Start a child object */ + void start_object(); + void start_array(); + + void end_object(); + void end_array(); + + Json_writer() : + indent_level(0), document_start(true), element_started(false), + first_child(true) + {} +private: + // stack of (name, bool is_object_or_array) elements. + int indent_level; + enum { INDENT_SIZE = 2 }; + + bool document_start; + bool element_started; + bool first_child; + + void append_indent(); + void start_element(); + + //const char *new_member_name; +public: + String output; +}; + |