summaryrefslogtreecommitdiffstats
path: root/src/Array.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/Array.cpp')
-rw-r--r--src/Array.cpp107
1 files changed, 8 insertions, 99 deletions
diff --git a/src/Array.cpp b/src/Array.cpp
index b85a114..7c8272c 100644
--- a/src/Array.cpp
+++ b/src/Array.cpp
@@ -20,23 +20,17 @@
20 20
21#include <stdlib.h> 21#include <stdlib.h>
22#include <plist/Array.h> 22#include <plist/Array.h>
23#include <plist/Dictionary.h> 23#include <plist/Utils.h>
24#include <plist/Boolean.h>
25#include <plist/Integer.h>
26#include <plist/Real.h>
27#include <plist/String.h>
28#include <plist/Date.h>
29#include <plist/Data.h>
30 24
31namespace PList 25namespace PList
32{ 26{
33 27
34Array::Array() : Structure(PLIST_ARRAY) 28Array::Array(Node* parent) : Structure(PLIST_ARRAY, parent)
35{ 29{
36 _array.clear(); 30 _array.clear();
37} 31}
38 32
39Array::Array(plist_t node) : Structure() 33Array::Array(plist_t node, Node* parent) : Structure(parent)
40{ 34{
41 _node = node; 35 _node = node;
42 uint32_t size = plist_array_get_size(_node); 36 uint32_t size = plist_array_get_size(_node);
@@ -44,36 +38,7 @@ Array::Array(plist_t node) : Structure()
44 for (uint32_t i = 0; i < size; i++) 38 for (uint32_t i = 0; i < size; i++)
45 { 39 {
46 plist_t subnode = plist_array_get_item(_node, i); 40 plist_t subnode = plist_array_get_item(_node, i);
47 plist_type subtype = plist_get_node_type(subnode); 41 _array.push_back( Utils::FromPlist(subnode, this) );
48 switch(subtype)
49 {
50 case PLIST_DICT:
51 _array.push_back( new Dictionary(subnode) );
52 break;
53 case PLIST_ARRAY:
54 _array.push_back( new Array(subnode) );
55 break;
56 case PLIST_BOOLEAN:
57 _array.push_back( new Boolean(subnode) );
58 break;
59 case PLIST_UINT:
60 _array.push_back( new Integer(subnode) );
61 break;
62 case PLIST_REAL:
63 _array.push_back( new Real(subnode) );
64 break;
65 case PLIST_STRING:
66 _array.push_back( new String(subnode) );
67 break;
68 case PLIST_DATE:
69 _array.push_back( new Date(subnode) );
70 break;
71 case PLIST_DATA:
72 _array.push_back( new Data(subnode) );
73 break;
74 default:
75 break;
76 }
77 } 42 }
78} 43}
79 44
@@ -86,36 +51,7 @@ Array::Array(PList::Array& a) : Structure()
86 for (uint32_t i = 0; i < size; i++) 51 for (uint32_t i = 0; i < size; i++)
87 { 52 {
88 plist_t subnode = plist_array_get_item(_node, i); 53 plist_t subnode = plist_array_get_item(_node, i);
89 plist_type subtype = plist_get_node_type(subnode); 54 _array.push_back( Utils::FromPlist(subnode, this) );
90 switch(subtype)
91 {
92 case PLIST_DICT:
93 _array.push_back( new Dictionary(subnode) );
94 break;
95 case PLIST_ARRAY:
96 _array.push_back( new Array(subnode) );
97 break;
98 case PLIST_BOOLEAN:
99 _array.push_back( new Boolean(subnode) );
100 break;
101 case PLIST_UINT:
102 _array.push_back( new Integer(subnode) );
103 break;
104 case PLIST_REAL:
105 _array.push_back( new Real(subnode) );
106 break;
107 case PLIST_STRING:
108 _array.push_back( new String(subnode) );
109 break;
110 case PLIST_DATE:
111 _array.push_back( new Date(subnode) );
112 break;
113 case PLIST_DATA:
114 _array.push_back( new Data(subnode) );
115 break;
116 default:
117 break;
118 }
119 } 55 }
120} 56}
121 57
@@ -134,36 +70,7 @@ Array& Array::operator=(PList::Array& a)
134 for (uint32_t i = 0; i < size; i++) 70 for (uint32_t i = 0; i < size; i++)
135 { 71 {
136 plist_t subnode = plist_array_get_item(_node, i); 72 plist_t subnode = plist_array_get_item(_node, i);
137 plist_type subtype = plist_get_node_type(subnode); 73 _array.push_back( Utils::FromPlist(subnode, this) );
138 switch(subtype)
139 {
140 case PLIST_DICT:
141 _array.push_back( new Dictionary(subnode) );
142 break;
143 case PLIST_ARRAY:
144 _array.push_back( new Array(subnode) );
145 break;
146 case PLIST_BOOLEAN:
147 _array.push_back( new Boolean(subnode) );
148 break;
149 case PLIST_UINT:
150 _array.push_back( new Integer(subnode) );
151 break;
152 case PLIST_REAL:
153 _array.push_back( new Real(subnode) );
154 break;
155 case PLIST_STRING:
156 _array.push_back( new String(subnode) );
157 break;
158 case PLIST_DATE:
159 _array.push_back( new Date(subnode) );
160 break;
161 case PLIST_DATA:
162 _array.push_back( new Data(subnode) );
163 break;
164 default:
165 break;
166 }
167 } 74 }
168} 75}
169 76
@@ -191,6 +98,7 @@ void Array::Append(Node* node)
191 if (node) 98 if (node)
192 { 99 {
193 Node* clone = node->Clone(); 100 Node* clone = node->Clone();
101 clone->SetParent(this);
194 plist_array_append_item(_node, clone->GetPlist()); 102 plist_array_append_item(_node, clone->GetPlist());
195 _array.push_back(clone); 103 _array.push_back(clone);
196 } 104 }
@@ -201,6 +109,7 @@ void Array::Insert(Node* node, unsigned int pos)
201 if (node) 109 if (node)
202 { 110 {
203 Node* clone = node->Clone(); 111 Node* clone = node->Clone();
112 clone->SetParent(this);
204 plist_array_insert_item(_node, clone->GetPlist(), pos); 113 plist_array_insert_item(_node, clone->GetPlist(), pos);
205 std::vector<Node*>::iterator it = _array.begin(); 114 std::vector<Node*>::iterator it = _array.begin();
206 it += pos; 115 it += pos;