Couch
Node.h
Go to the documentation of this file.
1 
25 #ifndef NODE_H
26 #define NODE_H
27 
28 #include <list>
29 
30 #include "types.h"
31 
32 class Node; // Forwards declare
37 class NodeList : public std::list<Node*> {
38 public:
39  NodeList();
40  NodeList(bool isPrefabList);
46  void Append(Node *node);
51  void Remove(Node *node);
56  int Length();
62  bool IsPrefabList();
66  void FreeList();
67 private:
68  bool isPrefabList;
69  friend class Node;
70 };
71 
75 class Node {
76 public:
77  Node();
78  Node(bool isPrefab);
79  virtual Name GetType() const;
80 
88  bool IsPrefab();
98  void AddChild(Node *child);
102  Node *GetParent();
107  void QueueFree();
108 
113  void DoFree();
114 
119  static Node *GetRoot();
125  virtual Node* Create();
132  virtual Node* Duplicate();
140  virtual Node* Instance();
141 
142 private:
143  NodeList children;
144  Node *parent;
145  bool isPrefab = true;
146  friend class NodeList;
147 };
148 
149 #endif /* NODE_H */
Definition: Node.h:37
void Remove(Node *node)
Definition: Node.cpp:50
void Append(Node *node)
Definition: Node.cpp:40
bool IsPrefabList()
Definition: Node.cpp:58
int Length()
Definition: Node.cpp:54
void FreeList()
Definition: Node.cpp:62
Definition: Node.h:75
Node * GetParent()
Definition: Node.cpp:93
bool IsPrefab()
Definition: Node.cpp:80
void QueueFree()
Definition: Node.cpp:97
void DoFree()
Definition: Node.cpp:102
virtual Node * Instance()
Definition: Node.cpp:121
virtual Node * Create()
Definition: Node.cpp:113
static Node * GetRoot()
Definition: Node.cpp:109
NodeList GetChildren()
Definition: Node.cpp:84
void AddChild(Node *child)
Definition: Node.cpp:88
virtual Node * Duplicate()
Definition: Node.cpp:117