4#include <unordered_map>
29 const std::string&
GetId()
const;
33 virtual bool IsList()
const;
39 void Update(Observable* sender, vl::VarPtr info)
override;
62 vl::AbstractVar*
mData =
nullptr;
76 void Update(Observable* sender, vl::VarPtr info)
override;
77 bool Has(
const std::string& childId)
const;
84 bool Remove(
const std::string& childId);
92 std::unordered_map<std::string, VarTreeNodePtr> mChildren;
102 void Update(Observable* sender, vl::VarPtr info)
override;
104 return mChildren.size();
109 mChildren.resize(newSize);
112 bool Clear(
int index);
114 bool IsList()
const override;
123 std::vector<VarTreeNodePtr> mChildren;
157 std::unordered_multimap<const void*, VarTreeNode*> mVarToNode;
158 std::unordered_map<const VarTreeNode*, std::string> mNamedNodes;
159 std::unordered_map<const VarTreeNode*, int> mIndexedNodes;
Definition: VLBackwardTraversable.h:97
VarTreeNodePtr SharedFromThis() override
Definition: VLBackwardTraversable.cpp:578
void Update(Observable *sender, vl::VarPtr info) override
Definition: VLBackwardTraversable.cpp:414
void Resize(int newSize)
Definition: VLBackwardTraversable.h:108
void Add(const VarTreeNodePtr &node)
Definition: VLBackwardTraversable.cpp:567
bool IsList() const override
Definition: VLBackwardTraversable.cpp:610
ListTreeNode * AsList() override
Definition: VLBackwardTraversable.cpp:600
~ListTreeNode()
Definition: VLBackwardTraversable.cpp:411
void Set(int index, const VarTreeNodePtr &node)
Definition: VLBackwardTraversable.cpp:562
void Remove(int index)
Definition: VLBackwardTraversable.cpp:572
bool ForeachChildren(const std::function< bool(VarTreeNode &)> &pred)
Definition: VLBackwardTraversable.cpp:615
int ChildCount() const override
Definition: VLBackwardTraversable.h:103
const VarTreeNodePtr & At(int index) const
Definition: VLBackwardTraversable.cpp:588
bool Clear(int index)
Definition: VLBackwardTraversable.cpp:593
ListTreeNodePtr ListSharedFromThis()
Definition: VLBackwardTraversable.cpp:583
Definition: VLBackwardTraversable.h:71
const VarTreeNodePtr & Get(const std::string &childId) const
Definition: VLBackwardTraversable.cpp:502
ObjectTreeNode * AsObject() override
Definition: VLBackwardTraversable.cpp:539
bool IsObject() const override
Definition: VLBackwardTraversable.cpp:549
void Update(Observable *sender, vl::VarPtr info) override
Definition: VLBackwardTraversable.cpp:325
VarTreeNodePtr SharedFromThis() override
Definition: VLBackwardTraversable.cpp:524
bool Has(const std::string &childId) const
Definition: VLBackwardTraversable.cpp:492
ObjectTreeNodePtr ObjectSharedFromThis()
Definition: VLBackwardTraversable.cpp:529
bool ForeachChildren(const std::function< bool(VarTreeNode &)> &pred)
Definition: VLBackwardTraversable.cpp:554
int ChildCount() const override
Definition: VLBackwardTraversable.cpp:534
~ObjectTreeNode()
Definition: VLBackwardTraversable.cpp:322
void Set(const std::string &childId, const VarTreeNodePtr &node)
Definition: VLBackwardTraversable.cpp:497
bool Remove(const std::string &childId)
Definition: VLBackwardTraversable.cpp:510
Definition: VLBackwardTraversable.h:128
VarTreeNodePtr CreateNamedNode(const std::string &nodeId, vl::Var &data, VarTreeNode *parent)
Definition: VLBackwardTraversable.cpp:240
const std::string & GetId(const VarTreeNode *node) const
Definition: VLBackwardTraversable.cpp:145
bool RemoveNode(const VarTreeNode *node)
Definition: VLBackwardTraversable.cpp:186
VarNodeRegistry(vl::AbstractVar *rootData)
Definition: VLBackwardTraversable.cpp:140
const VarTreeNode * GetNode(const vl::Var &varPtr) const
Definition: VLBackwardTraversable.cpp:261
VarTreeNode & GetTree()
Definition: VLBackwardTraversable.h:144
VarTreeNodePtr CreateIndexedNode(int index, vl::Var &data, VarTreeNode *parent)
Definition: VLBackwardTraversable.cpp:252
int GetIndex(const VarTreeNode *node) const
Definition: VLBackwardTraversable.cpp:153
VarTreeNodePtr CreateNode(vl::Var &data, VarTreeNode *parent)
Definition: VLBackwardTraversable.cpp:161
Definition: VLBackwardTraversable.h:21
virtual ListTreeNode * AsList()
Definition: VLBackwardTraversable.cpp:109
virtual ~VarTreeNode()
Definition: VLBackwardTraversable.cpp:26
void Update(Observable *sender, vl::VarPtr info) override
Definition: VLBackwardTraversable.cpp:119
const VarNodeRegistry & GetRegistry() const
Definition: VLBackwardTraversable.cpp:84
friend class ListTreeNode
Definition: VLBackwardTraversable.h:23
void SetParent(VarTreeNode *newParent)
Definition: VLBackwardTraversable.h:58
std::string GetPath() const
Definition: VLBackwardTraversable.cpp:62
VarTreeNode * mParent
Definition: VLBackwardTraversable.h:64
bool ForeachChildren(const std::function< bool(VarTreeNode &)> &pred)
Definition: VLBackwardTraversable.cpp:135
VarNodeRegistry & mRegistry
Definition: VLBackwardTraversable.h:65
VarTreeNode(VarNodeRegistry ®istry, vl::AbstractVar *data, VarTreeNode *parent)
Definition: VLBackwardTraversable.cpp:17
const void * DataPtr() const
Definition: VLBackwardTraversable.h:52
virtual int ChildCount() const
Definition: VLBackwardTraversable.cpp:124
const VarTreeNode * GetParent() const
Definition: VLBackwardTraversable.h:49
const void * mDataPtr
Definition: VLBackwardTraversable.h:63
virtual VarTreeNodePtr SharedFromThis()
Definition: VLBackwardTraversable.cpp:130
bool IsRoot() const
Definition: VLBackwardTraversable.h:46
bool mToBeReplaced
Definition: VLBackwardTraversable.h:66
vl::AbstractVar * mData
Definition: VLBackwardTraversable.h:62
friend class ObjectTreeNode
Definition: VLBackwardTraversable.h:24
const vl::Var * GetData() const
Definition: VLBackwardTraversable.h:41
const std::string & GetId() const
Definition: VLBackwardTraversable.cpp:32
virtual ObjectTreeNode * AsObject()
Definition: VLBackwardTraversable.cpp:99
int GetIndex() const
Definition: VLBackwardTraversable.cpp:47
virtual bool IsList() const
Definition: VLBackwardTraversable.cpp:89
virtual bool IsObject() const
Definition: VLBackwardTraversable.cpp:94
Definition: JSONConverter.h:8
std::shared_ptr< ObjectTreeNode > ObjectTreeNodePtr
Definition: VLBackwardTraversable.h:15
std::shared_ptr< VarTreeNode > VarTreeNodePtr
Definition: VLBackwardTraversable.h:13
std::shared_ptr< ListTreeNode > ListTreeNodePtr
Definition: VLBackwardTraversable.h:17