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()
287 new_head_cell(List *list) in new_head_cell() argument
290 if (list->length >= list->max_length) in new_head_cell()
291 enlarge_list(list, list->length + 1); in new_head_cell()
293 memmove(&list->elements[1], &list->elements[0], in new_head_cell()
294 list->length * sizeof(ListCell)); in new_head_cell()
295 list->length++; in new_head_cell()
305 new_tail_cell(List *list) in new_tail_cell() argument
308 if (list->length >= list->max_length) in new_tail_cell()
309 enlarge_list(list, list->length + 1); in new_tail_cell()
310 list->length++; in new_tail_cell()
321 lappend(List *list, void *datum) in lappend() argument
323 Assert(IsPointerList(list)); in lappend()
325 if (list == NIL) in lappend()
326 list = new_list(T_List, 1); in lappend()
328 new_tail_cell(list); in lappend()
330 lfirst(list_tail(list)) = datum; in lappend()
331 check_list_invariants(list); in lappend()
332 return list; in lappend()
339 lappend_int(List *list, int datum) in lappend_int() argument
341 Assert(IsIntegerList(list)); in lappend_int()
343 if (list == NIL) in lappend_int()
344 list = new_list(T_IntList, 1); in lappend_int()
346 new_tail_cell(list); in lappend_int()
348 lfirst_int(list_tail(list)) = datum; in lappend_int()
349 check_list_invariants(list); in lappend_int()
350 return list; in lappend_int()
357 lappend_oid(List *list, Oid datum) in lappend_oid() argument
359 Assert(IsOidList(list)); in lappend_oid()
361 if (list == NIL) in lappend_oid()
362 list = new_list(T_OidList, 1); in lappend_oid()
364 new_tail_cell(list); in lappend_oid()
366 lfirst_oid(list_tail(list)) = datum; in lappend_oid()
367 check_list_invariants(list); in lappend_oid()
368 return list; in lappend_oid()
379 insert_new_cell(List *list, int pos) in insert_new_cell() argument
381 Assert(pos >= 0 && pos <= list->length); in insert_new_cell()
384 if (list->length >= list->max_length) in insert_new_cell()
385 enlarge_list(list, list->length + 1); in insert_new_cell()
387 if (pos < list->length) in insert_new_cell()
388 memmove(&list->elements[pos + 1], &list->elements[pos], in insert_new_cell()
389 (list->length - pos) * sizeof(ListCell)); in insert_new_cell()
390 list->length++; in insert_new_cell()
392 return &list->elements[pos]; in insert_new_cell()
400 list_insert_nth(List *list, int pos, void *datum) in list_insert_nth() argument
402 if (list == NIL) in list_insert_nth()
407 Assert(IsPointerList(list)); in list_insert_nth()
408 lfirst(insert_new_cell(list, pos)) = datum; in list_insert_nth()
409 check_list_invariants(list); in list_insert_nth()
410 return list; in list_insert_nth()
414 list_insert_nth_int(List *list, int pos, int datum) in list_insert_nth_int() argument
416 if (list == NIL) in list_insert_nth_int()
421 Assert(IsIntegerList(list)); in list_insert_nth_int()
422 lfirst_int(insert_new_cell(list, pos)) = datum; in list_insert_nth_int()
423 check_list_invariants(list); in list_insert_nth_int()
424 return list; in list_insert_nth_int()
428 list_insert_nth_oid(List *list, int pos, Oid datum) in list_insert_nth_oid() argument
430 if (list == NIL) in list_insert_nth_oid()
435 Assert(IsOidList(list)); in list_insert_nth_oid()
436 lfirst_oid(insert_new_cell(list, pos)) = datum; in list_insert_nth_oid()
437 check_list_invariants(list); in list_insert_nth_oid()
438 return list; in list_insert_nth_oid()
453 lcons(void *datum, List *list) in lcons() argument
455 Assert(IsPointerList(list)); in lcons()
457 if (list == NIL) in lcons()
458 list = new_list(T_List, 1); in lcons()
460 new_head_cell(list); in lcons()
462 lfirst(list_head(list)) = datum; in lcons()
463 check_list_invariants(list); in lcons()
464 return list; in lcons()
471 lcons_int(int datum, List *list) in lcons_int() argument
473 Assert(IsIntegerList(list)); in lcons_int()
475 if (list == NIL) in lcons_int()
476 list = new_list(T_IntList, 1); in lcons_int()
478 new_head_cell(list); in lcons_int()
480 lfirst_int(list_head(list)) = datum; in lcons_int()
481 check_list_invariants(list); in lcons_int()
482 return list; in lcons_int()
489 lcons_oid(Oid datum, List *list) in lcons_oid() argument
491 Assert(IsOidList(list)); in lcons_oid()
493 if (list == NIL) in lcons_oid()
494 list = new_list(T_OidList, 1); in lcons_oid()
496 new_head_cell(list); in lcons_oid()
498 lfirst_oid(list_head(list)) = datum; in lcons_oid()
499 check_list_invariants(list); in lcons_oid()
500 return list; in lcons_oid()
585 list_truncate(List *list, int new_size) in list_truncate() argument
591 if (new_size < list_length(list)) in list_truncate()
592 list->length = new_size; in list_truncate()
604 return list; in list_truncate()
613 list_member(const List *list, const void *datum) in list_member() argument
617 Assert(IsPointerList(list)); in list_member()
618 check_list_invariants(list); in list_member()
620 foreach(cell, list) in list_member()
634 list_member_ptr(const List *list, const void *datum) in list_member_ptr() argument
638 Assert(IsPointerList(list)); in list_member_ptr()
639 check_list_invariants(list); in list_member_ptr()
641 foreach(cell, list) in list_member_ptr()
654 list_member_int(const List *list, int datum) in list_member_int() argument
658 Assert(IsIntegerList(list)); in list_member_int()
659 check_list_invariants(list); in list_member_int()
661 foreach(cell, list) in list_member_int()
674 list_member_oid(const List *list, Oid datum) in list_member_oid() argument
678 Assert(IsOidList(list)); in list_member_oid()
679 check_list_invariants(list); in list_member_oid()
681 foreach(cell, list) in list_member_oid()
696 list_delete_nth_cell(List *list, int n) in list_delete_nth_cell() argument
698 check_list_invariants(list); in list_delete_nth_cell()
700 Assert(n >= 0 && n < list->length); in list_delete_nth_cell()
707 if (list->length == 1) in list_delete_nth_cell()
709 list_free(list); in list_delete_nth_cell()
720 memmove(&list->elements[n], &list->elements[n + 1], in list_delete_nth_cell()
721 (list->length - 1 - n) * sizeof(ListCell)); in list_delete_nth_cell()
722 list->length--; in list_delete_nth_cell()
726 int newmaxlen = list->length - 1; in list_delete_nth_cell()
729 MemoryContextAlloc(GetMemoryChunkContext(list), in list_delete_nth_cell()
731 memcpy(newelems, list->elements, n * sizeof(ListCell)); in list_delete_nth_cell()
732 memcpy(&newelems[n], &list->elements[n + 1], in list_delete_nth_cell()
733 (list->length - 1 - n) * sizeof(ListCell)); in list_delete_nth_cell()
734 if (list->elements != list->initial_elements) in list_delete_nth_cell()
735 pfree(list->elements); in list_delete_nth_cell()
743 wipe_mem(list->initial_elements, in list_delete_nth_cell()
744 list->max_length * sizeof(ListCell)); in list_delete_nth_cell()
746 VALGRIND_MAKE_MEM_NOACCESS(list->initial_elements, in list_delete_nth_cell()
747 list->max_length * sizeof(ListCell)); in list_delete_nth_cell()
750 list->elements = newelems; in list_delete_nth_cell()
751 list->max_length = newmaxlen; in list_delete_nth_cell()
752 list->length--; in list_delete_nth_cell()
753 check_list_invariants(list); in list_delete_nth_cell()
757 return list; in list_delete_nth_cell()
767 list_delete_cell(List *list, ListCell *cell) in list_delete_cell() argument
769 return list_delete_nth_cell(list, cell - list->elements); in list_delete_cell()
777 list_delete(List *list, void *datum) in list_delete() argument
781 Assert(IsPointerList(list)); in list_delete()
782 check_list_invariants(list); in list_delete()
784 foreach(cell, list) in list_delete()
787 return list_delete_cell(list, cell); in list_delete()
791 return list; in list_delete()
796 list_delete_ptr(List *list, void *datum) in list_delete_ptr() argument
800 Assert(IsPointerList(list)); in list_delete_ptr()
801 check_list_invariants(list); in list_delete_ptr()
803 foreach(cell, list) in list_delete_ptr()
806 return list_delete_cell(list, cell); in list_delete_ptr()
810 return list; in list_delete_ptr()
815 list_delete_int(List *list, int datum) in list_delete_int() argument
819 Assert(IsIntegerList(list)); in list_delete_int()
820 check_list_invariants(list); in list_delete_int()
822 foreach(cell, list) in list_delete_int()
825 return list_delete_cell(list, cell); in list_delete_int()
829 return list; in list_delete_int()
834 list_delete_oid(List *list, Oid datum) in list_delete_oid() argument
838 Assert(IsOidList(list)); in list_delete_oid()
839 check_list_invariants(list); in list_delete_oid()
841 foreach(cell, list) in list_delete_oid()
844 return list_delete_cell(list, cell); in list_delete_oid()
848 return list; in list_delete_oid()
860 list_delete_first(List *list) in list_delete_first() argument
862 check_list_invariants(list); in list_delete_first()
864 if (list == NIL) in list_delete_first()
867 return list_delete_nth_cell(list, 0); in list_delete_first()
877 list_delete_last(List *list) in list_delete_last() argument
879 check_list_invariants(list); in list_delete_last()
881 if (list == NIL) in list_delete_last()
885 if (list_length(list) <= 1) in list_delete_last()
887 list_free(list); in list_delete_last()
891 return list_truncate(list, list_length(list) - 1); in list_delete_last()
900 list_delete_first_n(List *list, int n) in list_delete_first_n() argument
902 check_list_invariants(list); in list_delete_first_n()
906 return list; in list_delete_first_n()
909 if (n >= list_length(list)) in list_delete_first_n()
911 list_free(list); in list_delete_first_n()
922 memmove(&list->elements[0], &list->elements[n], in list_delete_first_n()
923 (list->length - n) * sizeof(ListCell)); in list_delete_first_n()
924 list->length -= n; in list_delete_first_n()
928 int newmaxlen = list->length - n; in list_delete_first_n()
931 MemoryContextAlloc(GetMemoryChunkContext(list), in list_delete_first_n()
933 memcpy(newelems, &list->elements[n], newmaxlen * sizeof(ListCell)); in list_delete_first_n()
934 if (list->elements != list->initial_elements) in list_delete_first_n()
935 pfree(list->elements); in list_delete_first_n()
943 wipe_mem(list->initial_elements, in list_delete_first_n()
944 list->max_length * sizeof(ListCell)); in list_delete_first_n()
946 VALGRIND_MAKE_MEM_NOACCESS(list->initial_elements, in list_delete_first_n()
947 list->max_length * sizeof(ListCell)); in list_delete_first_n()
950 list->elements = newelems; in list_delete_first_n()
951 list->max_length = newmaxlen; in list_delete_first_n()
952 list->length = newmaxlen; in list_delete_first_n()
953 check_list_invariants(list); in list_delete_first_n()
957 return list; in list_delete_first_n()
1246 list_append_unique(List *list, void *datum) in list_append_unique() argument
1248 if (list_member(list, datum)) in list_append_unique()
1249 return list; in list_append_unique()
1251 return lappend(list, datum); in list_append_unique()
1259 list_append_unique_ptr(List *list, void *datum) in list_append_unique_ptr() argument
1261 if (list_member_ptr(list, datum)) in list_append_unique_ptr()
1262 return list; in list_append_unique_ptr()
1264 return lappend(list, datum); in list_append_unique_ptr()
1271 list_append_unique_int(List *list, int datum) in list_append_unique_int() argument
1273 if (list_member_int(list, datum)) in list_append_unique_int()
1274 return list; in list_append_unique_int()
1276 return lappend_int(list, datum); in list_append_unique_int()
1283 list_append_unique_oid(List *list, Oid datum) in list_append_unique_oid() argument
1285 if (list_member_oid(list, datum)) in list_append_unique_oid()
1286 return list; in list_append_unique_oid()
1288 return lappend_oid(list, datum); in list_append_unique_oid()
1391 list_deduplicate_oid(List *list) in list_deduplicate_oid() argument
1395 Assert(IsOidList(list)); in list_deduplicate_oid()
1396 len = list_length(list); in list_deduplicate_oid()
1399 ListCell *elements = list->elements; in list_deduplicate_oid()
1407 list->length = i + 1; in list_deduplicate_oid()
1409 check_list_invariants(list); in list_deduplicate_oid()
1416 list_free_private(List *list, bool deep) in list_free_private() argument
1418 if (list == NIL) in list_free_private()
1421 check_list_invariants(list); in list_free_private()
1425 for (int i = 0; i < list->length; i++) in list_free_private()
1426 pfree(lfirst(&list->elements[i])); in list_free_private()
1428 if (list->elements != list->initial_elements) in list_free_private()
1429 pfree(list->elements); in list_free_private()
1430 pfree(list); in list_free_private()
1442 list_free(List *list) in list_free() argument
1444 list_free_private(list, false); in list_free()
1456 list_free_deep(List *list) in list_free_deep() argument
1461 Assert(IsPointerList(list)); in list_free_deep()
1462 list_free_private(list, true); in list_free_deep()
1547 list_sort(List *list, list_sort_comparator cmp) in list_sort() argument
1552 check_list_invariants(list); in list_sort()
1555 len = list_length(list); in list_sort()
1557 qsort(list->elements, len, sizeof(ListCell), (qsort_comparator) cmp); in list_sort()