add template Node::clone() and remove destroy_immediate
This commit is contained in:
14
src/node.h
14
src/node.h
@@ -195,16 +195,24 @@ public:
|
||||
virtual void parse_attributes(kAttribute ka, const tinyxml2::XMLAttribute* attr);
|
||||
void load_internal(const tinyxml2::XMLElement* x_node);
|
||||
virtual void draw();
|
||||
Node* clone();
|
||||
virtual Node* clone_instantiate() const;
|
||||
virtual void clone_copy(Node* dest) const;
|
||||
virtual void clone_children(Node* dest) const;
|
||||
virtual void clone_finalize(Node* dest) const;;
|
||||
void watch(std::function<bool(Node*)> observer);
|
||||
void destroy();
|
||||
virtual void destroy_immediate();
|
||||
virtual void destroy();
|
||||
Node* root();
|
||||
|
||||
|
||||
template<class T = Node> std::shared_ptr<T> clone()
|
||||
{
|
||||
std::shared_ptr<T> n = std::shared_ptr<T>((T*)clone_instantiate());
|
||||
clone_copy(n.get());
|
||||
clone_children(n.get());
|
||||
clone_finalize(n.get());
|
||||
return n;
|
||||
}
|
||||
|
||||
template<class T = Node> T* find(const char* ids)
|
||||
{
|
||||
uint16_t id = const_hash(ids);
|
||||
|
||||
Reference in New Issue
Block a user