Lines Matching full:array
60 #define g_array_elt_len(array,i) ((array)->elt_size * (i))
61 #define g_array_elt_pos(array,i) ((array)->data + g_array_elt_len((array),(i)))
62 #define g_array_elt_zero(array, pos, len) \
63 (memset (g_array_elt_pos ((array), pos), 0, g_array_elt_len ((array), len)))
64 #define g_array_zero_terminate(array) G_STMT_START{ \
65 if ((array)->zero_terminated) \
66 g_array_elt_zero ((array), (array)->len, 1); \
70 static void g_array_maybe_expand (GRealArray *array,
86 GRealArray *array = g_slice_new (GRealArray);
88 array->data = NULL;
89 array->len = 0;
90 array->alloc = 0;
91 array->zero_terminated = (zero_terminated ? 1 : 0);
92 array->clear = (clear ? 1 : 0);
93 array->elt_size = elt_size;
95 if (array->zero_terminated || reserved_size != 0)
97 g_array_maybe_expand (array, reserved_size);
98 g_array_zero_terminate(array);
101 return (GArray*) array;
105 g_array_free (GArray *array,
110 g_return_val_if_fail (array, NULL);
114 g_free (array->data);
118 segment = array->data;
120 g_slice_free1 (sizeof (GRealArray), array);
130 GRealArray *array = (GRealArray*) farray;
132 g_array_maybe_expand (array, len);
134 memcpy (g_array_elt_pos (array, array->len), data,
135 g_array_elt_len (array, len));
137 array->len += len;
139 g_array_zero_terminate (array);
149 GRealArray *array = (GRealArray*) farray;
151 g_array_maybe_expand (array, len);
153 g_memmove (g_array_elt_pos (array, len), g_array_elt_pos (array, 0),
154 g_array_elt_len (array, array->len));
156 memcpy (g_array_elt_pos (array, 0), data, g_array_elt_len (array, len));
158 array->len += len;
160 g_array_zero_terminate (array);
171 GRealArray *array = (GRealArray*) farray;
173 g_array_maybe_expand (array, len);
175 g_memmove (g_array_elt_pos (array, len + index_),
176 g_array_elt_pos (array, index_),
177 g_array_elt_len (array, array->len - index_));
179 memcpy (g_array_elt_pos (array, index_), data, g_array_elt_len (array, len));
181 array->len += len;
183 g_array_zero_terminate (array);
192 GRealArray *array = (GRealArray*) farray;
193 if (length > array->len)
195 g_array_maybe_expand (array, length - array->len);
197 if (array->clear)
198 g_array_elt_zero (array, array->len, length - array->len);
200 else if (G_UNLIKELY (g_mem_gc_friendly) && length < array->len)
201 g_array_elt_zero (array, length, array->len - length);
203 array->len = length;
205 g_array_zero_terminate (array);
214 GRealArray* array = (GRealArray*) farray;
216 g_return_val_if_fail (array, NULL);
218 g_return_val_if_fail (index_ < array->len, NULL);
220 if (index_ != array->len - 1)
221 g_memmove (g_array_elt_pos (array, index_),
222 g_array_elt_pos (array, index_ + 1),
223 g_array_elt_len (array, array->len - index_ - 1));
225 array->len -= 1;
228 g_array_elt_zero (array, array->len, 1);
230 g_array_zero_terminate (array);
239 GRealArray* array = (GRealArray*) farray;
241 g_return_val_if_fail (array, NULL);
243 g_return_val_if_fail (index_ < array->len, NULL);
245 if (index_ != array->len - 1)
246 memcpy (g_array_elt_pos (array, index_),
247 g_array_elt_pos (array, array->len - 1),
248 g_array_elt_len (array, 1));
250 array->len -= 1;
253 g_array_elt_zero (array, array->len, 1);
255 g_array_zero_terminate (array);
265 GRealArray *array = (GRealArray*) farray;
267 g_return_val_if_fail (array, NULL);
268 g_return_val_if_fail (index_ < array->len, NULL);
269 g_return_val_if_fail (index_ + length <= array->len, NULL);
271 if (index_ + length != array->len)
272 g_memmove (g_array_elt_pos (array, index_),
273 g_array_elt_pos (array, index_ + length),
274 (array->len - (index_ + length)) * array->elt_size);
276 array->len -= length;
278 g_array_elt_zero (array, array->len, length);
280 g_array_zero_terminate (array);
289 GRealArray *array = (GRealArray*) farray;
291 g_return_if_fail (array != NULL);
293 qsort (array->data,
294 array->len,
295 array->elt_size,
304 GRealArray *array = (GRealArray*) farray;
306 g_return_if_fail (array != NULL);
308 g_qsort_with_data (array->data,
309 array->len,
310 array->elt_size,
328 g_array_maybe_expand (GRealArray *array,
331 guint want_alloc = g_array_elt_len (array, array->len + len +
332 array->zero_terminated);
334 if (want_alloc > array->alloc)
339 array->data = g_realloc (array->data, want_alloc);
342 memset (array->data + array->alloc, 0, want_alloc - array->alloc);
344 array->alloc = want_alloc;
348 /* Pointer Array
360 static void g_ptr_array_maybe_expand (GRealPtrArray *array,
372 GRealPtrArray *array = g_slice_new (GRealPtrArray);
374 array->pdata = NULL;
375 array->len = 0;
376 array->alloc = 0;
379 g_ptr_array_maybe_expand (array, reserved_size);
381 return (GPtrArray*) array;
385 g_ptr_array_free (GPtrArray *array,
390 g_return_val_if_fail (array, NULL);
394 g_free (array->pdata);
398 segment = array->pdata;
400 g_slice_free1 (sizeof (GRealPtrArray), array);
406 g_ptr_array_maybe_expand (GRealPtrArray *array,
409 if ((array->len + len) > array->alloc)
411 guint old_alloc = array->alloc;
412 array->alloc = g_nearest_pow (array->len + len);
413 array->alloc = MAX (array->alloc, MIN_ARRAY_SIZE);
414 array->pdata = g_realloc (array->pdata, sizeof (gpointer) * array->alloc);
416 for ( ; old_alloc < array->alloc; old_alloc++)
417 array->pdata [old_alloc] = NULL;
425 GRealPtrArray* array = (GRealPtrArray*) farray;
427 g_return_if_fail (array);
429 if (length > array->len)
432 g_ptr_array_maybe_expand (array, (length - array->len));
434 * memset (array->pdata + array->len, 0,
435 * sizeof (gpointer) * (length - array->len));
439 for (i = array->len; i < length; i++)
440 array->pdata[i] = NULL;
442 if (G_UNLIKELY (g_mem_gc_friendly) && length < array->len)
445 for (i = length; i < array->len; i++)
446 array->pdata[i] = NULL;
449 array->len = length;
456 GRealPtrArray* array = (GRealPtrArray*) farray;
459 g_return_val_if_fail (array, NULL);
461 g_return_val_if_fail (index_ < array->len, NULL);
463 result = array->pdata[index_];
465 if (index_ != array->len - 1)
466 g_memmove (array->pdata + index_, array->pdata + index_ + 1,
467 sizeof (gpointer) * (array->len - index_ - 1));
469 array->len -= 1;
472 array->pdata[array->len] = NULL;
481 GRealPtrArray* array = (GRealPtrArray*) farray;
484 g_return_val_if_fail (array, NULL);
486 g_return_val_if_fail (index_ < array->len, NULL);
488 result = array->pdata[index_];
490 if (index_ != array->len - 1)
491 array->pdata[index_] = array->pdata[array->len - 1];
493 array->len -= 1;
496 array->pdata[array->len] = NULL;
506 GRealPtrArray* array = (GRealPtrArray*) farray;
508 g_return_if_fail (array);
509 g_return_if_fail (index_ < array->len);
510 g_return_if_fail (index_ + length <= array->len);
512 if (index_ + length != array->len)
513 g_memmove (&array->pdata[index_],
514 &array->pdata[index_ + length],
515 (array->len - (index_ + length)) * sizeof (gpointer));
517 array->len -= length;
522 array->pdata[array->len + i] = NULL;
530 GRealPtrArray* array = (GRealPtrArray*) farray;
533 g_return_val_if_fail (array, FALSE);
535 for (i = 0; i < array->len; i += 1)
537 if (array->pdata[i] == data)
551 GRealPtrArray* array = (GRealPtrArray*) farray;
554 g_return_val_if_fail (array, FALSE);
556 for (i = 0; i < array->len; i += 1)
558 if (array->pdata[i] == data)
572 GRealPtrArray* array = (GRealPtrArray*) farray;
574 g_return_if_fail (array);
576 g_ptr_array_maybe_expand (array, 1);
578 array->pdata[array->len++] = data;
582 g_ptr_array_sort (GPtrArray *array,
585 g_return_if_fail (array != NULL);
587 qsort (array->pdata,
588 array->len,
594 g_ptr_array_sort_with_data (GPtrArray *array,
598 g_return_if_fail (array != NULL);
600 g_qsort_with_data (array->pdata,
601 array->len,
609 * @array: a #GPtrArray
610 * @func: the function to call for each array element
618 g_ptr_array_foreach (GPtrArray *array,
624 g_return_if_fail (array);
626 for (i = 0; i < array->len; i++)
627 (*func) (array->pdata[i], user_data);
643 guint8* g_byte_array_free (GByteArray *array,
646 return (guint8*) g_array_free ((GArray*) array, free_segment);
649 GByteArray* g_byte_array_append (GByteArray *array,
653 g_array_append_vals ((GArray*) array, (guint8*)data, len);
655 return array;
658 GByteArray* g_byte_array_prepend (GByteArray *array,
662 g_array_prepend_vals ((GArray*) array, (guint8*)data, len);
664 return array;
667 GByteArray* g_byte_array_set_size (GByteArray *array,
670 g_array_set_size ((GArray*) array, length);
672 return array;
675 GByteArray* g_byte_array_remove_index (GByteArray *array,
678 g_array_remove_index ((GArray*) array, index_);
680 return array;
683 GByteArray* g_byte_array_remove_index_fast (GByteArray *array,
686 g_array_remove_index_fast ((GArray*) array, index_);
688 return array;
692 g_byte_array_remove_range (GByteArray *array,
696 g_return_val_if_fail (array, NULL);
697 g_return_val_if_fail (index_ < array->len, NULL);
698 g_return_val_if_fail (index_ + length <= array->len, NULL);
700 return (GByteArray *)g_array_remove_range ((GArray*) array, index_, length);
704 g_byte_array_sort (GByteArray *array,
707 g_array_sort ((GArray *) array, compare_func);
711 g_byte_array_sort_with_data (GByteArray *array,
715 g_array_sort_with_data ((GArray *) array, compare_func, user_data);