167 return cxRealloc(al, array, capacity * elem_size); |
167 return cxRealloc(al, array, capacity * elem_size); |
168 } |
168 } |
169 |
169 |
170 static void cx_arl_destructor(struct cx_list_s *list) { |
170 static void cx_arl_destructor(struct cx_list_s *list) { |
171 cx_array_list *arl = (cx_array_list *) list; |
171 cx_array_list *arl = (cx_array_list *) list; |
|
172 |
|
173 char *ptr = arl->data; |
|
174 |
|
175 if (list->simple_destructor) { |
|
176 for (size_t i = 0; i < list->size; i++) { |
|
177 cx_invoke_simple_destructor(list, ptr); |
|
178 ptr += list->item_size; |
|
179 } |
|
180 } |
|
181 if (list->advanced_destructor) { |
|
182 for (size_t i = 0; i < list->size; i++) { |
|
183 cx_invoke_advanced_destructor(list, ptr); |
|
184 ptr += list->item_size; |
|
185 } |
|
186 } |
|
187 |
172 cxFree(list->allocator, arl->data); |
188 cxFree(list->allocator, arl->data); |
|
189 cxFree(list->allocator, list); |
173 } |
190 } |
174 |
191 |
175 static size_t cx_arl_insert_array( |
192 static size_t cx_arl_insert_array( |
176 struct cx_list_s *list, |
193 struct cx_list_s *list, |
177 size_t index, |
194 size_t index, |