diff options
Diffstat (limited to 'src/Array.cpp')
| -rw-r--r-- | src/Array.cpp | 36 |
1 files changed, 18 insertions, 18 deletions
diff --git a/src/Array.cpp b/src/Array.cpp index 0505a27..b85a114 100644 --- a/src/Array.cpp +++ b/src/Array.cpp | |||
| @@ -77,15 +77,9 @@ Array::Array(plist_t node) : Structure() | |||
| 77 | } | 77 | } |
| 78 | } | 78 | } |
| 79 | 79 | ||
| 80 | Array::Array(Array& a) | 80 | Array::Array(PList::Array& a) : Structure() |
| 81 | { | 81 | { |
| 82 | plist_free(_node); | ||
| 83 | for (int it = 0; it < _array.size(); it++) | ||
| 84 | { | ||
| 85 | delete _array.at(it); | ||
| 86 | } | ||
| 87 | _array.clear(); | 82 | _array.clear(); |
| 88 | |||
| 89 | _node = plist_copy(a.GetPlist()); | 83 | _node = plist_copy(a.GetPlist()); |
| 90 | uint32_t size = plist_array_get_size(_node); | 84 | uint32_t size = plist_array_get_size(_node); |
| 91 | 85 | ||
| @@ -125,7 +119,7 @@ Array::Array(Array& a) | |||
| 125 | } | 119 | } |
| 126 | } | 120 | } |
| 127 | 121 | ||
| 128 | Array& Array::operator=(const Array& a) | 122 | Array& Array::operator=(PList::Array& a) |
| 129 | { | 123 | { |
| 130 | plist_free(_node); | 124 | plist_free(_node); |
| 131 | for (int it = 0; it < _array.size(); it++) | 125 | for (int it = 0; it < _array.size(); it++) |
| @@ -175,12 +169,16 @@ Array& Array::operator=(const Array& a) | |||
| 175 | 169 | ||
| 176 | Array::~Array() | 170 | Array::~Array() |
| 177 | { | 171 | { |
| 178 | plist_free(_node); | 172 | for (int it = 0; it < _array.size(); it++) |
| 179 | for (int it = 0; it < _array.size(); it++) | 173 | { |
| 180 | { | 174 | delete (_array.at(it)); |
| 181 | delete _array.at(it); | 175 | } |
| 182 | } | 176 | _array.clear(); |
| 183 | _array.clear(); | 177 | } |
| 178 | |||
| 179 | Node* Array::Clone() | ||
| 180 | { | ||
| 181 | return new Array(*this); | ||
| 184 | } | 182 | } |
| 185 | 183 | ||
| 186 | Node* Array::operator[](unsigned int index) | 184 | Node* Array::operator[](unsigned int index) |
| @@ -192,8 +190,9 @@ void Array::Append(Node* node) | |||
| 192 | { | 190 | { |
| 193 | if (node) | 191 | if (node) |
| 194 | { | 192 | { |
| 195 | plist_array_append_item(_node, node->GetPlist()); | 193 | Node* clone = node->Clone(); |
| 196 | _array.push_back(node); | 194 | plist_array_append_item(_node, clone->GetPlist()); |
| 195 | _array.push_back(clone); | ||
| 197 | } | 196 | } |
| 198 | } | 197 | } |
| 199 | 198 | ||
| @@ -201,10 +200,11 @@ void Array::Insert(Node* node, unsigned int pos) | |||
| 201 | { | 200 | { |
| 202 | if (node) | 201 | if (node) |
| 203 | { | 202 | { |
| 204 | plist_array_insert_item(_node, node->GetPlist(), pos); | 203 | Node* clone = node->Clone(); |
| 204 | plist_array_insert_item(_node, clone->GetPlist(), pos); | ||
| 205 | std::vector<Node*>::iterator it = _array.begin(); | 205 | std::vector<Node*>::iterator it = _array.begin(); |
| 206 | it += pos; | 206 | it += pos; |
| 207 | _array.insert(it, node); | 207 | _array.insert(it, clone); |
| 208 | } | 208 | } |
| 209 | } | 209 | } |
| 210 | 210 | ||
