2 * This program is free software; you can redistribute it and/or modify
3 * it under the terms of the GNU General Public License as published by
4 * the Free Software Foundation; either version 2 of the License, or (at
5 * your option) any later version.
7 * This program is distributed in the hope that it will be useful, but
8 * WITHOUT ANY WARRANTY; without even the implied warranty of
9 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
10 * General Public License for more details.
12 * You should have received a copy of the GNU General Public License
13 * along with this program; if not, write to the Free Software
14 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
17 * Copyright © 2006 Pierre Habouzit
22 void *__array_take(__array *a, ssize_t pos)
26 if (pos >= a->len || pos < 0) {
32 memmove(a->arr + pos, a->arr + pos + 1, (a->len - pos) * sizeof(void*));
36 #define SIZE_AUGMENT 32
38 void __array_insert(__array *a, ssize_t pos, void *item)
40 pos = MAX(0, MIN(a->len, pos));
42 if (a->len >= a->size) {
43 p_realloc(&a->arr, a->size + SIZE_AUGMENT);
44 a->size += SIZE_AUGMENT;
47 memmove(a->arr + pos + 1, a->arr + pos, (a->len - pos) * sizeof(void *));