src/ucx/array_list.c

changeset 504
c094afcdfb27
parent 490
d218607f5a7e
equal deleted inserted replaced
503:aeaf7db26fac 504:c094afcdfb27
101 // return successfully 101 // return successfully
102 return CX_ARRAY_COPY_SUCCESS; 102 return CX_ARRAY_COPY_SUCCESS;
103 } 103 }
104 104
105 #ifndef CX_ARRAY_SWAP_SBO_SIZE 105 #ifndef CX_ARRAY_SWAP_SBO_SIZE
106 #define CX_ARRAY_SWAP_SBO_SIZE 512 106 #define CX_ARRAY_SWAP_SBO_SIZE 128
107 #endif 107 #endif
108 108
109 void cx_array_swap( 109 void cx_array_swap(
110 void *arr, 110 void *arr,
111 size_t elem_size, 111 size_t elem_size,
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,

mercurial