VL
JSONWriter.h
Go to the documentation of this file.
1#include "visitor.h"
2#include "JSONDefs.h"
3#include "rapidjson/fwd.h"
4#include "rapidjson/document.h"
5
6namespace vl
7{
8 class JSONWriter : public Visitor
9 {
10 public:
11 JSONWriter(const vl::Object& context, const CnvParams& params = CnvParams());
12
13 bool VisitNull(NullVar& var, const char* name) override;
14 bool VisitBool(BoolVar& var, const char* name) override;
15 bool VisitNumber(NumberVar& var, const char* name) override;
16 bool VisitString(StringVar& var, const char* name) override;
17 bool VisitObject(ObjectVar& var, const char* name) override;
18 bool EndVisitObject(ObjectVar& var, const char* name) override;
19 bool VisitList(ListVar& var, const char* name) override;
20 bool EndVisitList(ListVar& var, const char* name) override;
21 rapidjson::Document& GetDocument() { return mDoc; }
22
23 protected:
24 void AddMember(rapidjson::Value& val, const char* name);
25 bool AddProto(ObjectVar& value);
26 rapidjson::Value* GetCurrentContainer();
27 void PushCurrentContainer(rapidjson::Value* val);
29
30 private:
31 rapidjson::Document mDoc;
32 std::vector<rapidjson::Value*> mStack;
33 vl::CnvParams mCnvParams;
34 // TODO: Check for potential memory hold
35 vl::Object mContext;
36 };
37}
Definition: JSONWriter.h:9
bool VisitNull(NullVar &var, const char *name) override
Definition: JSONWriter.cpp:98
JSONWriter(const vl::Object &context, const CnvParams &params=CnvParams())
Definition: JSONWriter.cpp:6
bool AddProto(ObjectVar &value)
Definition: JSONWriter.cpp:56
bool EndVisitObject(ObjectVar &var, const char *name) override
Definition: JSONWriter.cpp:158
rapidjson::Document & GetDocument()
Definition: JSONWriter.h:21
bool VisitBool(BoolVar &var, const char *name) override
Definition: JSONWriter.cpp:106
bool VisitList(ListVar &var, const char *name) override
Definition: JSONWriter.cpp:164
bool VisitObject(ObjectVar &var, const char *name) override
Definition: JSONWriter.cpp:130
bool PopCurrentContainer()
Definition: JSONWriter.cpp:90
rapidjson::Value * GetCurrentContainer()
Definition: JSONWriter.cpp:80
bool VisitNumber(NumberVar &var, const char *name) override
Definition: JSONWriter.cpp:114
void PushCurrentContainer(rapidjson::Value *val)
Definition: JSONWriter.cpp:85
void AddMember(rapidjson::Value &val, const char *name)
Definition: JSONWriter.cpp:11
bool EndVisitList(ListVar &var, const char *name) override
Definition: JSONWriter.cpp:182
bool VisitString(StringVar &var, const char *name) override
Definition: JSONWriter.cpp:122
Definition: JSONConverter.h:8
Definition: JSONDefs.h:8