src/list.c

changeset 1111
78eeeb950883
parent 1109
89ec23988b88
equal deleted inserted replaced
1110:a0e9be7ed131 1111:78eeeb950883
190 cx_pl_sort, 190 cx_pl_sort,
191 cx_pl_compare, 191 cx_pl_compare,
192 cx_pl_reverse, 192 cx_pl_reverse,
193 cx_pl_iterator, 193 cx_pl_iterator,
194 }; 194 };
195
196 void cxListStoreObjects(CxList *list) {
197 list->collection.store_pointer = false;
198 if (list->climpl != NULL) {
199 list->cl = list->climpl;
200 list->climpl = NULL;
201 }
202 }
203
204 void cxListStorePointers(CxList *list) {
205 list->collection.elem_size = sizeof(void *);
206 list->collection.store_pointer = true;
207 list->climpl = list->cl;
208 list->cl = &cx_pointer_list_class;
209 }
210
211 // </editor-fold> 195 // </editor-fold>
212 196
213 // <editor-fold desc="empty list implementation"> 197 // <editor-fold desc="empty list implementation">
214 198
215 static void cx_emptyl_noop(cx_attr_unused CxList *list) { 199 static void cx_emptyl_noop(cx_attr_unused CxList *list) {
413 memcpy(jp, tmp, elem_size); 397 memcpy(jp, tmp, elem_size);
414 398
415 free(tmp); 399 free(tmp);
416 400
417 return 0; 401 return 0;
402 }
403
404 void cx_list_init(
405 struct cx_list_s *list,
406 struct cx_list_class_s *cl,
407 const struct cx_allocator_s *allocator,
408 cx_compare_func comparator,
409 size_t elem_size
410 ) {
411 list->cl = cl;
412 list->collection.allocator = allocator;
413 list->collection.cmpfunc = comparator;
414 if (elem_size > 0) {
415 list->collection.elem_size = elem_size;
416 } else {
417 list->collection.elem_size = sizeof(void *);
418 if (list->collection.cmpfunc == NULL) {
419 list->collection.cmpfunc = cx_cmp_ptr;
420 }
421 list->collection.store_pointer = true;
422 list->climpl = list->cl;
423 list->cl = &cx_pointer_list_class;
424 }
418 } 425 }
419 426
420 int cxListCompare( 427 int cxListCompare(
421 const CxList *list, 428 const CxList *list,
422 const CxList *other 429 const CxList *other

mercurial