Lines Matching refs:list

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