@@ -40,7 +40,9 @@ static void array_fill(Array *_this, std::vector<Node*> &array, plist_t node)
4040 do {
4141 subnode = NULL ;
4242 plist_array_next_item (node, iter, &subnode);
43- array.push_back ( Node::FromPlist (subnode, _this) );
43+ if (subnode != NULL ) {
44+ array.push_back ( Node::FromPlist (subnode, _this) );
45+ }
4446 } while (subnode);
4547 free (iter);
4648}
@@ -88,6 +90,16 @@ Node* Array::operator[](unsigned int array_index)
8890 return _array.at (array_index);
8991}
9092
93+ Node *Array::back ()
94+ {
95+ return _array.back ();
96+ }
97+
98+ Node *Array::Back ()
99+ {
100+ return _array.back ();
101+ }
102+
91103Array::iterator Array::Begin ()
92104{
93105 return _array.begin ();
@@ -132,7 +144,7 @@ size_t Array::size() const {
132144 return _array.size ();
133145}
134146
135- void Array::Append (Node* node)
147+ void Array::Append (const Node* node)
136148{
137149 if (node)
138150 {
@@ -143,7 +155,15 @@ void Array::Append(Node* node)
143155 }
144156}
145157
146- void Array::Insert (Node* node, unsigned int pos)
158+ void Array::Append (const Node &node)
159+ {
160+ Node *clone = node.Clone ();
161+ UpdateNodeParent (clone);
162+ plist_array_append_item (_node, clone->GetPlist ());
163+ _array.push_back (clone);
164+ }
165+
166+ void Array::Insert (const Node* node, unsigned int pos)
147167{
148168 if (node)
149169 {
@@ -156,6 +176,10 @@ void Array::Insert(Node* node, unsigned int pos)
156176 }
157177}
158178
179+ void Array::Insert (const Node &node, unsigned int pos)
180+ {
181+ Insert (&node, pos);
182+ }
159183void Array::Remove (Node* node)
160184{
161185 if (node)
0 commit comments