summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/Array.cpp4
-rw-r--r--src/Dictionary.cpp2
-rw-r--r--src/Node.cpp15
-rw-r--r--src/Structure.cpp15
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;
+}
+
};