77 size_t n |
77 size_t n |
78 ) { |
78 ) { |
79 return list->climpl->insert_array(list, index, array, n); |
79 return list->climpl->insert_array(list, index, array, n); |
80 } |
80 } |
81 |
81 |
|
82 static size_t cx_pl_insert_sorted( |
|
83 struct cx_list_s *list, |
|
84 void const *array, |
|
85 size_t n |
|
86 ) { |
|
87 cx_pl_hack_cmpfunc(list); |
|
88 size_t result = list->climpl->insert_sorted(list, array, n); |
|
89 cx_pl_unhack_cmpfunc(list); |
|
90 return result; |
|
91 } |
|
92 |
82 static int cx_pl_insert_iter( |
93 static int cx_pl_insert_iter( |
83 struct cx_iterator_s *iter, |
94 struct cx_iterator_s *iter, |
84 void const *elem, |
95 void const *elem, |
85 int prepend |
96 int prepend |
86 ) { |
97 ) { |
286 list, index + i, src + (i * elem_size))) { |
299 list, index + i, src + (i * elem_size))) { |
287 return i; |
300 return i; |
288 } |
301 } |
289 } |
302 } |
290 return i; |
303 return i; |
|
304 } |
|
305 |
|
306 size_t cx_list_default_insert_sorted( |
|
307 struct cx_list_s *list, |
|
308 void const *sorted_data, |
|
309 size_t n |
|
310 ) { |
|
311 size_t elem_size = list->collection.elem_size; |
|
312 cx_compare_func cmp = list->collection.cmpfunc; |
|
313 char const *src = sorted_data; |
|
314 |
|
315 size_t r = cx_list_default_insert_array(list, 0, src, n); |
|
316 cx_list_default_sort(list); |
|
317 |
|
318 return r; |
291 } |
319 } |
292 |
320 |
293 void cx_list_default_sort(struct cx_list_s *list) { |
321 void cx_list_default_sort(struct cx_list_s *list) { |
294 size_t elem_size = list->collection.elem_size; |
322 size_t elem_size = list->collection.elem_size; |
295 size_t list_size = list->collection.size; |
323 size_t list_size = list->collection.size; |