Lines Matching refs:list

59   struct gl_list_impl *list =
62 if (list == NULL)
65 list->base.vtable = implementation;
66 list->base.equals_fn = equals_fn;
67 list->base.hashcode_fn = hashcode_fn;
68 list->base.dispose_fn = dispose_fn;
69 list->base.allow_duplicates = allow_duplicates;
70 list->elements = NULL;
71 list->offset = 0;
72 list->count = 0;
73 list->allocated = 0;
75 return list;
86 struct gl_list_impl *list =
89 if (list == NULL)
92 list->base.vtable = implementation;
93 list->base.equals_fn = equals_fn;
94 list->base.hashcode_fn = hashcode_fn;
95 list->base.dispose_fn = dispose_fn;
96 list->base.allow_duplicates = allow_duplicates;
101 list->elements = (const void **) malloc (count * sizeof (const void *));
102 if (list->elements == NULL)
104 memcpy (list->elements, contents, count * sizeof (const void *));
107 list->elements = NULL;
108 list->offset = 0;
109 list->count = count;
110 list->allocated = count;
112 return list;
115 free (list);
120 gl_carray_size (gl_list_t list)
122 return list->count;
126 gl_carray_node_value (gl_list_t list, gl_list_node_t node)
131 if (!(index < list->count))
134 i = list->offset + index;
135 if (i >= list->allocated)
136 i -= list->allocated;
137 return list->elements[i];
141 gl_carray_node_nx_set_value (gl_list_t list, gl_list_node_t node,
147 if (!(index < list->count))
150 i = list->offset + index;
151 if (i >= list->allocated)
152 i -= list->allocated;
153 list->elements[i] = elt;
158 gl_carray_next_node (gl_list_t list, gl_list_node_t node)
161 if (!(index < list->count))
165 if (index < list->count)
172 gl_carray_previous_node (gl_list_t list, gl_list_node_t node)
175 if (!(index < list->count))
185 gl_carray_first_node (gl_list_t list)
187 if (list->count > 0)
194 gl_carray_last_node (gl_list_t list)
196 if (list->count > 0)
197 return INDEX_TO_NODE (list->count - 1);
203 gl_carray_get_at (gl_list_t list, size_t position)
205 size_t count = list->count;
211 i = list->offset + position;
212 if (i >= list->allocated)
213 i -= list->allocated;
214 return list->elements[i];
218 gl_carray_nx_set_at (gl_list_t list, size_t position, const void *elt)
220 size_t count = list->count;
226 i = list->offset + position;
227 if (i >= list->allocated)
228 i -= list->allocated;
229 list->elements[i] = elt;
234 gl_carray_indexof_from_to (gl_list_t list, size_t start_index, size_t end_index,
237 size_t count = list->count;
245 gl_listelement_equals_fn equals = list->base.equals_fn;
246 size_t allocated = list->allocated;
249 i_end = list->offset + end_index;
257 i = list->offset + start_index;
263 if (equals (elt, list->elements[i]))
264 return (i >= list->offset ? i : i + allocated) - list->offset;
276 i = list->offset + start_index;
282 if (elt == list->elements[i])
283 return (i >= list->offset ? i : i + allocated) - list->offset;
296 gl_carray_search_from_to (gl_list_t list, size_t start_index, size_t end_index,
299 size_t index = gl_carray_indexof_from_to (list, start_index, end_index, elt);
306 grow (gl_list_t list)
312 new_allocated = xtimes (list->allocated, 2);
318 if (list->offset > 0 && list->count > 0)
324 if (list->offset + list->count > list->allocated)
326 memcpy (memory, &list->elements[list->offset],
327 (list->allocated - list->offset) * sizeof (const void *));
328 memcpy (memory + (list->allocated - list->offset), list->elements,
329 (list->offset + list->count - list->allocated)
334 memcpy (memory, &list->elements[list->offset],
335 list->count * sizeof (const void *));
336 if (list->elements != NULL)
337 free (list->elements);
341 memory = (const void **) realloc (list->elements, memory_size);
346 list->elements = memory;
347 list->offset = 0;
348 list->allocated = new_allocated;
353 gl_carray_nx_add_first (gl_list_t list, const void *elt)
355 size_t count = list->count;
357 if (count == list->allocated)
358 if (grow (list) < 0)
360 list->offset = (list->offset == 0 ? list->allocated : list->offset) - 1;
361 list->elements[list->offset] = elt;
362 list->count = count + 1; in isExportDataConfig_Destination()
367 gl_carray_nx_add_last (gl_list_t list, const void *elt)
369 size_t count = list->count;
372 if (count == list->allocated)
373 if (grow (list) < 0)
375 i = list->offset + count;
376 if (i >= list->allocated)
377 i -= list->allocated;
378 list->elements[i] = elt;
379 list->count = count + 1;
384 gl_carray_nx_add_at (gl_list_t list, size_t position, const void *elt)
386 size_t count = list->count;
392 if (count == list->allocated)
393 if (grow (list) < 0)
395 elements = list->elements;
401 list->offset = (list->offset == 0 ? list->allocated : list->offset) - 1;
403 i2 = list->offset + position;
404 if (i2 >= list->allocated)
407 size_t i1 = list->allocated - 1;
408 i2 -= list->allocated;
409 for (i = list->offset; i < i1; i++)
417 for (i = list->offset; i < i2; i++)
427 i1 = list->offset + position;
428 i3 = list->offset + count;
429 if (i1 >= list->allocated)
431 i1 -= list->allocated;
432 i3 -= list->allocated;
436 else if (i3 >= list->allocated)
439 size_t i2 = list->allocated - 1;
440 i3 -= list->allocated;
454 list->count = count + 1;
459 gl_carray_nx_add_before (gl_list_t list, gl_list_node_t node, const void *elt)
461 size_t count = list->count;
467 return gl_carray_nx_add_at (list, index, elt);
471 gl_carray_nx_add_after (gl_list_t list, gl_list_node_t node, const void *elt)
473 size_t count = list->count;
479 return gl_carray_nx_add_at (list, index + 1, elt);
483 gl_carray_remove_at (gl_list_t list, size_t position)
485 size_t count = list->count;
492 elements = list->elements;
498 i0 = list->offset;
499 i2 = list->offset + position;
500 if (i2 >= list->allocated)
503 size_t i1 = list->allocated - 1;
504 i2 -= list->allocated;
505 if (list->base.dispose_fn != NULL)
506 list->base.dispose_fn (elements[i2]);
515 if (list->base.dispose_fn != NULL)
516 list->base.dispose_fn (elements[i2]);
522 list->offset = (i0 == list->allocated ? 0 : i0);
529 i1 = list->offset + position;
530 i3 = list->offset + count - 1;
531 if (i1 >= list->allocated)
533 i1 -= list->allocated;
534 i3 -= list->allocated;
535 if (list->base.dispose_fn != NULL)
536 list->base.dispose_fn (elements[i1]);
540 else if (i3 >= list->allocated)
543 size_t i2 = list->allocated - 1;
544 i3 -= list->allocated;
545 if (list->base.dispose_fn != NULL)
546 list->base.dispose_fn (elements[i1]);
555 if (list->base.dispose_fn != NULL)
556 list->base.dispose_fn (elements[i1]);
561 list->count = count - 1;
566 gl_carray_remove_node (gl_list_t list, gl_list_node_t node)
568 size_t count = list->count;
574 return gl_carray_remove_at (list, index);
578 gl_carray_remove (gl_list_t list, const void *elt)
580 size_t position = gl_carray_indexof_from_to (list, 0, list->count, elt);
584 return gl_carray_remove_at (list, position);
588 gl_carray_list_free (gl_list_t list)
590 if (list->elements != NULL)
592 if (list->base.dispose_fn != NULL)
594 size_t count = list->count;
598 gl_listelement_dispose_fn dispose = list->base.dispose_fn;
599 const void **elements = list->elements;
600 size_t i1 = list->offset;
601 size_t i3 = list->offset + count - 1;
603 if (i3 >= list->allocated)
607 size_t i2 = list->allocated - 1;
610 i3 -= list->allocated;
625 free (list->elements);
627 free (list);
633 gl_carray_iterator (gl_list_t list)
637 result.vtable = list->base.vtable;
638 result.list = list;
639 result.count = list->count;
641 result.j = list->count;
651 gl_carray_iterator_from_to (gl_list_t list, size_t start_index, size_t end_index)
655 if (!(start_index <= end_index && end_index <= list->count))
658 result.vtable = list->base.vtable;
659 result.list = list;
660 result.count = list->count;
675 gl_list_t list = iterator->list;
676 if (iterator->count != list->count)
678 if (iterator->count != list->count + 1)
688 size_t i = list->offset + iterator->i;
689 if (i >= list->allocated)
690 i -= list->allocated;
691 *eltp = list->elements[i];
709 gl_carray_sortedlist_indexof_from_to (gl_list_t list,
714 if (!(low <= high && high <= list->count))
729 i_mid = list->offset + mid;
730 if (i_mid >= list->allocated)
731 i_mid -= list->allocated;
733 cmp = compar (list->elements[i_mid], elt);
754 i_mid2 = list->offset + mid2;
755 if (i_mid2 >= list->allocated)
756 i_mid2 -= list->allocated;
758 cmp2 = compar (list->elements[i_mid2], elt);
782 gl_carray_sortedlist_indexof (gl_list_t list, gl_listelement_compar_fn compar,
785 return gl_carray_sortedlist_indexof_from_to (list, compar, 0, list->count,
790 gl_carray_sortedlist_search_from_to (gl_list_t list,
796 gl_carray_sortedlist_indexof_from_to (list, compar, low, high, elt);
801 gl_carray_sortedlist_search (gl_list_t list, gl_listelement_compar_fn compar,
805 gl_carray_sortedlist_indexof_from_to (list, compar, 0, list->count, elt);
810 gl_carray_sortedlist_nx_add (gl_list_t list, gl_listelement_compar_fn compar,
813 size_t count = list->count;
825 i_mid = list->offset + mid;
826 if (i_mid >= list->allocated)
827 i_mid -= list->allocated;
829 cmp = compar (list->elements[i_mid], elt);
841 return gl_carray_nx_add_at (list, low, elt);
845 gl_carray_sortedlist_remove (gl_list_t list, gl_listelement_compar_fn compar,
848 size_t index = gl_carray_sortedlist_indexof (list, compar, elt);
852 return gl_carray_remove_at (list, index);