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#include "TypeResolver.h"
6
7namespace vl
8{
9 class JSONWriter : public Visitor
10 {
11 public:
12 JSONWriter(const TypeResolver& typeResolver, const CnvParams& params = CnvParams());
13
14 bool VisitNull(const NullVar& var, const char* name) override;
15 bool VisitBool(const BoolVar& var, const char* name) override;
16 bool VisitNumber(const NumberVar& var, const char* name) override;
17 bool VisitString(const StringVar& var, const char* name) override;
18 bool VisitObject(const ObjectVar& var, const char* name) override;
19 bool EndVisitObject(const ObjectVar& var, const char* name) override;
20 bool VisitList(const ListVar& var, const char* name) override;
21 bool EndVisitList(const ListVar& var, const char* name) override;
22 rapidjson::Document& GetDocument() { return mDoc; }
23
24 protected:
25 void AddMember(rapidjson::Value& val, const char* name);
26 bool AddProto(const ObjectVar& value);
27 rapidjson::Value* GetCurrentContainer();
28 void PushCurrentContainer(rapidjson::Value* val);
30
31 private:
32 rapidjson::Document mDoc;
33 std::vector<rapidjson::Value*> mStack;
34 vl::CnvParams mCnvParams;
35 // TODO: Check for potential memory hold
36 TypeResolver mTypeResolver;
37 };
38}
Definition: TypeResolver.h:7
Definition: vl.h:70
Definition: JSONWriter.h:10
rapidjson::Document & GetDocument()
Definition: JSONWriter.h:22
JSONWriter(const TypeResolver &typeResolver, const CnvParams &params=CnvParams())
Definition: JSONWriter.cpp:6
bool EndVisitObject(const ObjectVar &var, const char *name) override
Definition: JSONWriter.cpp:159
bool VisitObject(const ObjectVar &var, const char *name) override
Definition: JSONWriter.cpp:131
bool PopCurrentContainer()
Definition: JSONWriter.cpp:91
bool VisitList(const ListVar &var, const char *name) override
Definition: JSONWriter.cpp:165
rapidjson::Value * GetCurrentContainer()
Definition: JSONWriter.cpp:81
void PushCurrentContainer(rapidjson::Value *val)
Definition: JSONWriter.cpp:86
void AddMember(rapidjson::Value &val, const char *name)
Definition: JSONWriter.cpp:11
bool EndVisitList(const ListVar &var, const char *name) override
Definition: JSONWriter.cpp:183
bool AddProto(const ObjectVar &value)
Definition: JSONWriter.cpp:56
bool VisitString(const StringVar &var, const char *name) override
Definition: JSONWriter.cpp:123
bool VisitNull(const NullVar &var, const char *name) override
Definition: JSONWriter.cpp:99
bool VisitNumber(const NumberVar &var, const char *name) override
Definition: JSONWriter.cpp:115
bool VisitBool(const BoolVar &var, const char *name) override
Definition: JSONWriter.cpp:107
Definition: vl.h:265
Definition: vl.h:318
Definition: vl.h:92
Definition: vl.h:173
Definition: vl.h:116
Definition: visitor.h:11
Definition: JSONConverter.h:9
Definition: JSONDefs.h:18