diff options
Diffstat (limited to 'src/include/serialiser_texttree.hpp')
-rw-r--r-- | src/include/serialiser_texttree.hpp | 33 |
1 files changed, 31 insertions, 2 deletions
diff --git a/src/include/serialiser_texttree.hpp b/src/include/serialiser_texttree.hpp index ad88e155..4e8a9cf8 100644 --- a/src/include/serialiser_texttree.hpp +++ b/src/include/serialiser_texttree.hpp @@ -5,6 +5,7 @@ #define _SERIALISER_TEXTTREE_HPP_INCLUDED_ #include <ostream> +#include <istream> #include "serialise.hpp" class Serialiser_TextTree: @@ -12,12 +13,13 @@ class Serialiser_TextTree: { ::std::ostream& m_os; int m_indent_level; + bool m_array_was_empty; public: Serialiser_TextTree(::std::ostream& os); virtual Serialiser& operator<<(bool val) override; - virtual Serialiser& operator<<(unsigned int val) override; - virtual Serialiser& operator<<(const ::std::string& s) override; + virtual Serialiser& operator<<(uint64_t val) override; + virtual Serialiser& operator<<(const char* s) override; protected: virtual void start_object(const char *tag) override; @@ -30,5 +32,32 @@ private: void print_indent(); }; + +class Deserialiser_TextTree: + public Deserialiser +{ + ::std::istream& m_is; + + static bool is_ws(char c); + char getc(); + char peekc(); + void eat_ws(); +public: + Deserialiser_TextTree(::std::istream& is); + +protected: + virtual size_t start_array() override; + virtual void end_array() override; + virtual ::std::string read_tag() override; + +public: + virtual void item(bool& b) override; + virtual void item(uint64_t& v) override; + virtual void item(::std::string& s) override; + + virtual void start_object(const char *tag) override; + virtual void end_object(const char *tag) override; +}; + #endif |