Lines Matching refs:list

63 check_list_invariants(const List *list)  in check_list_invariants()  argument
65 if (list == NIL) in check_list_invariants()
68 Assert(list->length > 0); in check_list_invariants()
69 Assert(list->length <= list->max_length); in check_list_invariants()
70 Assert(list->elements != NULL); in check_list_invariants()
72 Assert(list->type == T_List || in check_list_invariants()
73 list->type == T_IntList || in check_list_invariants()
74 list->type == T_OidList); in check_list_invariants()
152 enlarge_list(List *list, int min_size) in enlarge_list() argument
156 Assert(min_size > list->max_length); /* else we shouldn't be here */ in enlarge_list()
173 if (list->elements == list->initial_elements) in enlarge_list()
182 list->elements = (ListCell *) in enlarge_list()
183 MemoryContextAlloc(GetMemoryChunkContext(list), in enlarge_list()
185 memcpy(list->elements, list->initial_elements, in enlarge_list()
186 list->length * sizeof(ListCell)); in enlarge_list()
195 wipe_mem(list->initial_elements, in enlarge_list()
196 list->max_length * sizeof(ListCell)); in enlarge_list()
198 VALGRIND_MAKE_MEM_NOACCESS(list->initial_elements, in enlarge_list()
199 list->max_length * sizeof(ListCell)); in enlarge_list()
206 list->elements = (ListCell *) repalloc(list->elements, in enlarge_list()
216 MemoryContextAlloc(GetMemoryChunkContext(list), in enlarge_list()
218 memcpy(newelements, list->elements, in enlarge_list()
219 list->length * sizeof(ListCell)); in enlarge_list()
220 pfree(list->elements); in enlarge_list()
221 list->elements = newelements; in enlarge_list()
225 list->max_length = new_max_len; in enlarge_list()
235 List *list = new_list(t, 1); in list_make1_impl() local
237 list->elements[0] = datum1; in list_make1_impl()
238 check_list_invariants(list); in list_make1_impl()
239 return list; in list_make1_impl()
245 List *list = new_list(t, 2); in list_make2_impl() local
247 list->elements[0] = datum1; in list_make2_impl()
248 list->elements[1] = datum2; in list_make2_impl()
249 check_list_invariants(list); in list_make2_impl()
250 return list; in list_make2_impl()
257 List *list = new_list(t, 3); in list_make3_impl() local
259 list->elements[0] = datum1; in list_make3_impl()
260 list->elements[1] = datum2; in list_make3_impl()
261 list->elements[2] = datum3; in list_make3_impl()
262 check_list_invariants(list); in list_make3_impl()
263 return list; in list_make3_impl()
270 List *list = new_list(t, 4); in list_make4_impl() local
272 list->elements[0] = datum1; in list_make4_impl()
273 list->elements[1] = datum2; in list_make4_impl()
274 list->elements[2] = datum3; in list_make4_impl()
275 list->elements[3] = datum4; in list_make4_impl()
276 check_list_invariants(list); in list_make4_impl()
277 return list; in list_make4_impl()
284 List *list = new_list(t, 5); in list_make5_impl() local
286 list->elements[0] = datum1; in list_make5_impl()
287 list->elements[1] = datum2; in list_make5_impl()
288 list->elements[2] = datum3; in list_make5_impl()
289 list->elements[3] = datum4; in list_make5_impl()
290 list->elements[4] = datum5; in list_make5_impl()
291 check_list_invariants(list); in list_make5_impl()
292 return list; in list_make5_impl()
302 new_head_cell(List *list) in new_head_cell() argument
305 if (list->length >= list->max_length) in new_head_cell()
306 enlarge_list(list, list->length + 1); in new_head_cell()
308 memmove(&list->elements[1], &list->elements[0], in new_head_cell()
309 list->length * sizeof(ListCell)); in new_head_cell()
310 list->length++; in new_head_cell()
320 new_tail_cell(List *list) in new_tail_cell() argument
323 if (list->length >= list->max_length) in new_tail_cell()
324 enlarge_list(list, list->length + 1); in new_tail_cell()
325 list->length++; in new_tail_cell()
336 lappend(List *list, void *datum) in lappend() argument
338 Assert(IsPointerList(list)); in lappend()
340 if (list == NIL) in lappend()
341 list = new_list(T_List, 1); in lappend()
343 new_tail_cell(list); in lappend()
345 llast(list) = datum; in lappend()
346 check_list_invariants(list); in lappend()
347 return list; in lappend()
354 lappend_int(List *list, int datum) in lappend_int() argument
356 Assert(IsIntegerList(list)); in lappend_int()
358 if (list == NIL) in lappend_int()
359 list = new_list(T_IntList, 1); in lappend_int()
361 new_tail_cell(list); in lappend_int()
363 llast_int(list) = datum; in lappend_int()
364 check_list_invariants(list); in lappend_int()
365 return list; in lappend_int()
372 lappend_oid(List *list, Oid datum) in lappend_oid() argument
374 Assert(IsOidList(list)); in lappend_oid()
376 if (list == NIL) in lappend_oid()
377 list = new_list(T_OidList, 1); in lappend_oid()
379 new_tail_cell(list); in lappend_oid()
381 llast_oid(list) = datum; in lappend_oid()
382 check_list_invariants(list); in lappend_oid()
383 return list; in lappend_oid()
394 insert_new_cell(List *list, int pos) in insert_new_cell() argument
396 Assert(pos >= 0 && pos <= list->length); in insert_new_cell()
399 if (list->length >= list->max_length) in insert_new_cell()
400 enlarge_list(list, list->length + 1); in insert_new_cell()
402 if (pos < list->length) in insert_new_cell()
403 memmove(&list->elements[pos + 1], &list->elements[pos], in insert_new_cell()
404 (list->length - pos) * sizeof(ListCell)); in insert_new_cell()
405 list->length++; in insert_new_cell()
407 return &list->elements[pos]; in insert_new_cell()
415 list_insert_nth(List *list, int pos, void *datum) in list_insert_nth() argument
417 if (list == NIL) in list_insert_nth()
422 Assert(IsPointerList(list)); in list_insert_nth()
423 lfirst(insert_new_cell(list, pos)) = datum; in list_insert_nth()
424 check_list_invariants(list); in list_insert_nth()
425 return list; in list_insert_nth()
429 list_insert_nth_int(List *list, int pos, int datum) in list_insert_nth_int() argument
431 if (list == NIL) in list_insert_nth_int()
436 Assert(IsIntegerList(list)); in list_insert_nth_int()
437 lfirst_int(insert_new_cell(list, pos)) = datum; in list_insert_nth_int()
438 check_list_invariants(list); in list_insert_nth_int()
439 return list; in list_insert_nth_int()
443 list_insert_nth_oid(List *list, int pos, Oid datum) in list_insert_nth_oid() argument
445 if (list == NIL) in list_insert_nth_oid()
450 Assert(IsOidList(list)); in list_insert_nth_oid()
451 lfirst_oid(insert_new_cell(list, pos)) = datum; in list_insert_nth_oid()
452 check_list_invariants(list); in list_insert_nth_oid()
453 return list; in list_insert_nth_oid()
468 lcons(void *datum, List *list) in lcons() argument
470 Assert(IsPointerList(list)); in lcons()
472 if (list == NIL) in lcons()
473 list = new_list(T_List, 1); in lcons()
475 new_head_cell(list); in lcons()
477 linitial(list) = datum; in lcons()
478 check_list_invariants(list); in lcons()
479 return list; in lcons()
486 lcons_int(int datum, List *list) in lcons_int() argument
488 Assert(IsIntegerList(list)); in lcons_int()
490 if (list == NIL) in lcons_int()
491 list = new_list(T_IntList, 1); in lcons_int()
493 new_head_cell(list); in lcons_int()
495 linitial_int(list) = datum; in lcons_int()
496 check_list_invariants(list); in lcons_int()
497 return list; in lcons_int()
504 lcons_oid(Oid datum, List *list) in lcons_oid() argument
506 Assert(IsOidList(list)); in lcons_oid()
508 if (list == NIL) in lcons_oid()
509 list = new_list(T_OidList, 1); in lcons_oid()
511 new_head_cell(list); in lcons_oid()
513 linitial_oid(list) = datum; in lcons_oid()
514 check_list_invariants(list); in lcons_oid()
515 return list; in lcons_oid()
600 list_truncate(List *list, int new_size) in list_truncate() argument
606 if (new_size < list_length(list)) in list_truncate()
607 list->length = new_size; in list_truncate()
619 return list; in list_truncate()
628 list_member(const List *list, const void *datum) in list_member() argument
632 Assert(IsPointerList(list)); in list_member()
633 check_list_invariants(list); in list_member()
635 foreach(cell, list) in list_member()
649 list_member_ptr(const List *list, const void *datum) in list_member_ptr() argument
653 Assert(IsPointerList(list)); in list_member_ptr()
654 check_list_invariants(list); in list_member_ptr()
656 foreach(cell, list) in list_member_ptr()
669 list_member_int(const List *list, int datum) in list_member_int() argument
673 Assert(IsIntegerList(list)); in list_member_int()
674 check_list_invariants(list); in list_member_int()
676 foreach(cell, list) in list_member_int()
689 list_member_oid(const List *list, Oid datum) in list_member_oid() argument
693 Assert(IsOidList(list)); in list_member_oid()
694 check_list_invariants(list); in list_member_oid()
696 foreach(cell, list) in list_member_oid()
711 list_delete_nth_cell(List *list, int n) in list_delete_nth_cell() argument
713 check_list_invariants(list); in list_delete_nth_cell()
715 Assert(n >= 0 && n < list->length); in list_delete_nth_cell()
722 if (list->length == 1) in list_delete_nth_cell()
724 list_free(list); in list_delete_nth_cell()
735 memmove(&list->elements[n], &list->elements[n + 1], in list_delete_nth_cell()
736 (list->length - 1 - n) * sizeof(ListCell)); in list_delete_nth_cell()
737 list->length--; in list_delete_nth_cell()
741 int newmaxlen = list->length - 1; in list_delete_nth_cell()
744 MemoryContextAlloc(GetMemoryChunkContext(list), in list_delete_nth_cell()
746 memcpy(newelems, list->elements, n * sizeof(ListCell)); in list_delete_nth_cell()
747 memcpy(&newelems[n], &list->elements[n + 1], in list_delete_nth_cell()
748 (list->length - 1 - n) * sizeof(ListCell)); in list_delete_nth_cell()
749 if (list->elements != list->initial_elements) in list_delete_nth_cell()
750 pfree(list->elements); in list_delete_nth_cell()
758 wipe_mem(list->initial_elements, in list_delete_nth_cell()
759 list->max_length * sizeof(ListCell)); in list_delete_nth_cell()
761 VALGRIND_MAKE_MEM_NOACCESS(list->initial_elements, in list_delete_nth_cell()
762 list->max_length * sizeof(ListCell)); in list_delete_nth_cell()
765 list->elements = newelems; in list_delete_nth_cell()
766 list->max_length = newmaxlen; in list_delete_nth_cell()
767 list->length--; in list_delete_nth_cell()
768 check_list_invariants(list); in list_delete_nth_cell()
772 return list; in list_delete_nth_cell()
782 list_delete_cell(List *list, ListCell *cell) in list_delete_cell() argument
784 return list_delete_nth_cell(list, cell - list->elements); in list_delete_cell()
792 list_delete(List *list, void *datum) in list_delete() argument
796 Assert(IsPointerList(list)); in list_delete()
797 check_list_invariants(list); in list_delete()
799 foreach(cell, list) in list_delete()
802 return list_delete_cell(list, cell); in list_delete()
806 return list; in list_delete()
811 list_delete_ptr(List *list, void *datum) in list_delete_ptr() argument
815 Assert(IsPointerList(list)); in list_delete_ptr()
816 check_list_invariants(list); in list_delete_ptr()
818 foreach(cell, list) in list_delete_ptr()
821 return list_delete_cell(list, cell); in list_delete_ptr()
825 return list; in list_delete_ptr()
830 list_delete_int(List *list, int datum) in list_delete_int() argument
834 Assert(IsIntegerList(list)); in list_delete_int()
835 check_list_invariants(list); in list_delete_int()
837 foreach(cell, list) in list_delete_int()
840 return list_delete_cell(list, cell); in list_delete_int()
844 return list; in list_delete_int()
849 list_delete_oid(List *list, Oid datum) in list_delete_oid() argument
853 Assert(IsOidList(list)); in list_delete_oid()
854 check_list_invariants(list); in list_delete_oid()
856 foreach(cell, list) in list_delete_oid()
859 return list_delete_cell(list, cell); in list_delete_oid()
863 return list; in list_delete_oid()
875 list_delete_first(List *list) in list_delete_first() argument
877 check_list_invariants(list); in list_delete_first()
879 if (list == NIL) in list_delete_first()
882 return list_delete_nth_cell(list, 0); in list_delete_first()
892 list_delete_last(List *list) in list_delete_last() argument
894 check_list_invariants(list); in list_delete_last()
896 if (list == NIL) in list_delete_last()
900 if (list_length(list) <= 1) in list_delete_last()
902 list_free(list); in list_delete_last()
906 return list_truncate(list, list_length(list) - 1); in list_delete_last()
915 list_delete_first_n(List *list, int n) in list_delete_first_n() argument
917 check_list_invariants(list); in list_delete_first_n()
921 return list; in list_delete_first_n()
924 if (n >= list_length(list)) in list_delete_first_n()
926 list_free(list); in list_delete_first_n()
937 memmove(&list->elements[0], &list->elements[n], in list_delete_first_n()
938 (list->length - n) * sizeof(ListCell)); in list_delete_first_n()
939 list->length -= n; in list_delete_first_n()
943 int newmaxlen = list->length - n; in list_delete_first_n()
946 MemoryContextAlloc(GetMemoryChunkContext(list), in list_delete_first_n()
948 memcpy(newelems, &list->elements[n], newmaxlen * sizeof(ListCell)); in list_delete_first_n()
949 if (list->elements != list->initial_elements) in list_delete_first_n()
950 pfree(list->elements); in list_delete_first_n()
958 wipe_mem(list->initial_elements, in list_delete_first_n()
959 list->max_length * sizeof(ListCell)); in list_delete_first_n()
961 VALGRIND_MAKE_MEM_NOACCESS(list->initial_elements, in list_delete_first_n()
962 list->max_length * sizeof(ListCell)); in list_delete_first_n()
965 list->elements = newelems; in list_delete_first_n()
966 list->max_length = newmaxlen; in list_delete_first_n()
967 list->length = newmaxlen; in list_delete_first_n()
968 check_list_invariants(list); in list_delete_first_n()
972 return list; in list_delete_first_n()
1261 list_append_unique(List *list, void *datum) in list_append_unique() argument
1263 if (list_member(list, datum)) in list_append_unique()
1264 return list; in list_append_unique()
1266 return lappend(list, datum); in list_append_unique()
1274 list_append_unique_ptr(List *list, void *datum) in list_append_unique_ptr() argument
1276 if (list_member_ptr(list, datum)) in list_append_unique_ptr()
1277 return list; in list_append_unique_ptr()
1279 return lappend(list, datum); in list_append_unique_ptr()
1286 list_append_unique_int(List *list, int datum) in list_append_unique_int() argument
1288 if (list_member_int(list, datum)) in list_append_unique_int()
1289 return list; in list_append_unique_int()
1291 return lappend_int(list, datum); in list_append_unique_int()
1298 list_append_unique_oid(List *list, Oid datum) in list_append_unique_oid() argument
1300 if (list_member_oid(list, datum)) in list_append_unique_oid()
1301 return list; in list_append_unique_oid()
1303 return lappend_oid(list, datum); in list_append_unique_oid()
1406 list_deduplicate_oid(List *list) in list_deduplicate_oid() argument
1410 Assert(IsOidList(list)); in list_deduplicate_oid()
1411 len = list_length(list); in list_deduplicate_oid()
1414 ListCell *elements = list->elements; in list_deduplicate_oid()
1422 list->length = i + 1; in list_deduplicate_oid()
1424 check_list_invariants(list); in list_deduplicate_oid()
1431 list_free_private(List *list, bool deep) in list_free_private() argument
1433 if (list == NIL) in list_free_private()
1436 check_list_invariants(list); in list_free_private()
1440 for (int i = 0; i < list->length; i++) in list_free_private()
1441 pfree(lfirst(&list->elements[i])); in list_free_private()
1443 if (list->elements != list->initial_elements) in list_free_private()
1444 pfree(list->elements); in list_free_private()
1445 pfree(list); in list_free_private()
1457 list_free(List *list) in list_free() argument
1459 list_free_private(list, false); in list_free()
1471 list_free_deep(List *list) in list_free_deep() argument
1476 Assert(IsPointerList(list)); in list_free_deep()
1477 list_free_private(list, true); in list_free_deep()
1562 list_sort(List *list, list_sort_comparator cmp) in list_sort() argument
1567 check_list_invariants(list); in list_sort()
1570 len = list_length(list); in list_sort()
1572 qsort(list->elements, len, sizeof(ListCell), (qsort_comparator) cmp); in list_sort()