diff options
Diffstat (limited to 'kernel/json.h')
-rw-r--r-- | kernel/json.h | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/kernel/json.h b/kernel/json.h index 3ba355327..ae86b3aa6 100644 --- a/kernel/json.h +++ b/kernel/json.h @@ -38,18 +38,26 @@ class PrettyJson ARRAY, }; + struct Target { + virtual void emit(const char *data) = 0; + virtual void flush() {}; + virtual ~Target() {}; + }; + std::string newline_indent = "\n"; - std::vector<std::function<void(const char *)>> targets; + std::vector<std::unique_ptr<Target>> targets; std::vector<Scope> state = {VALUE}; public: void emit_to_log(); void append_to_string(std::string &target); + bool write_to_file(const std::string &path); bool active() { return !targets.empty(); } void line(); void raw(const char *raw_json); + void flush(); void begin_object(); void begin_array(); void end_object(); |