nuclear@0: #ifndef NODE_H_ nuclear@0: #define NODE_H_ nuclear@0: nuclear@0: #include nuclear@0: #include nuclear@0: nuclear@0: class Node { nuclear@0: private: nuclear@0: std::string name; nuclear@0: Node *parent; nuclear@0: std::vector children; nuclear@0: nuclear@0: public: nuclear@0: Node(); nuclear@0: virtual ~Node(); nuclear@0: nuclear@0: virtual void set_name(const char *name); nuclear@0: virtual const char *get_name() const; nuclear@0: nuclear@0: virtual void add_child(Node *c); nuclear@0: virtual int get_num_children() const; nuclear@0: nuclear@0: virtual Node *get_child(int idx) const; nuclear@0: virtual Node *get_child(const char *name) const; nuclear@0: virtual Node *get_descendant(const char *name) const; nuclear@0: nuclear@0: virtual Node *get_parent() const; nuclear@0: // passing 0 will return the root nuclear@0: virtual Node *get_ancestor(const char *name) const; nuclear@0: }; nuclear@0: nuclear@0: #endif // NODE_H_