diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/Array.cpp | 4 | ||||
-rw-r--r-- | src/Dictionary.cpp | 2 | ||||
-rw-r--r-- | src/Node.cpp | 15 | ||||
-rw-r--r-- | src/Structure.cpp | 15 |
4 files changed, 18 insertions, 18 deletions
diff --git a/src/Array.cpp b/src/Array.cpp index a847ae2..3069314 100644 --- a/src/Array.cpp +++ b/src/Array.cpp @@ -101,7 +101,7 @@ void Array::Append(Node* node) if (node) { Node* clone = node->Clone(); - clone->SetParent(this); + UpdateNodeParent(clone); plist_array_append_item(_node, clone->GetPlist()); _array.push_back(clone); } @@ -112,7 +112,7 @@ void Array::Insert(Node* node, unsigned int pos) if (node) { Node* clone = node->Clone(); - clone->SetParent(this); + UpdateNodeParent(clone); plist_array_insert_item(_node, clone->GetPlist(), pos); std::vector<Node*>::iterator it = _array.begin(); it += pos; diff --git a/src/Dictionary.cpp b/src/Dictionary.cpp index 62ed433..8b5565f 100644 --- a/src/Dictionary.cpp +++ b/src/Dictionary.cpp @@ -147,7 +147,7 @@ Dictionary::iterator Dictionary::Insert(const std::string& key, Node* node) if (node) { Node* clone = node->Clone(); - clone->SetParent(this); + UpdateNodeParent(clone); plist_dict_insert_item(_node, key.c_str(), clone->GetPlist()); delete _map[key]; _map[key] = clone; diff --git a/src/Node.cpp b/src/Node.cpp index 8ed3c6a..b0cc96a 100644 --- a/src/Node.cpp +++ b/src/Node.cpp @@ -96,19 +96,4 @@ Node* Node::GetParent() return _parent; } -void Node::SetParent(Node* parent) -{ - //Unlink node first - if ( NULL != _parent ) - { - plist_type type = plist_get_node_type(_parent); - if (PLIST_ARRAY ==type || PLIST_DICT == type ) - { - Structure* s = static_cast<Structure*>(_parent); - s->Remove(this); - } - } - _parent = parent; -} - }; diff --git a/src/Structure.cpp b/src/Structure.cpp index 872d396..cf7c611 100644 --- a/src/Structure.cpp +++ b/src/Structure.cpp @@ -70,5 +70,20 @@ std::vector<char> Structure::ToBin() return ret; } +void Structure::UpdateNodeParent(Node* node) +{ + //Unlink node first + if ( NULL != node->_parent ) + { + plist_type type = plist_get_node_type(node->_parent); + if (PLIST_ARRAY ==type || PLIST_DICT == type ) + { + Structure* s = static_cast<Structure*>(node->_parent); + s->Remove(node); + } + } + node->_parent = this; +} + }; |