annotate parray.c @ 137:97c9c20535e2

Just fix a -Wextra warning
author David Demelier <markand@malikania.fr>
date Mon, 26 Mar 2012 10:46:32 +0200
parents c6d9eb5702e8
children e3cf5ac9a5aa
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
36
fdc3736ff806 Added parray.c and parray.h:
David Demelier <markand@malikania.fr>
parents:
diff changeset
1 /*
fdc3736ff806 Added parray.c and parray.h:
David Demelier <markand@malikania.fr>
parents:
diff changeset
2 * parray.c -- manipulate dynamic pointer arrays
fdc3736ff806 Added parray.c and parray.h:
David Demelier <markand@malikania.fr>
parents:
diff changeset
3 *
98
b1a084c030c8 Happy new year
David Demelier <markand@malikania.fr>
parents: 93
diff changeset
4 * Copyright (c) 2011, 2012, David Demelier <markand@malikania.fr>
36
fdc3736ff806 Added parray.c and parray.h:
David Demelier <markand@malikania.fr>
parents:
diff changeset
5 *
fdc3736ff806 Added parray.c and parray.h:
David Demelier <markand@malikania.fr>
parents:
diff changeset
6 * Permission to use, copy, modify, and/or distribute this software for any
fdc3736ff806 Added parray.c and parray.h:
David Demelier <markand@malikania.fr>
parents:
diff changeset
7 * purpose with or without fee is hereby granted, provided that the above
fdc3736ff806 Added parray.c and parray.h:
David Demelier <markand@malikania.fr>
parents:
diff changeset
8 * copyright notice and this permission notice appear in all copies.
fdc3736ff806 Added parray.c and parray.h:
David Demelier <markand@malikania.fr>
parents:
diff changeset
9 *
fdc3736ff806 Added parray.c and parray.h:
David Demelier <markand@malikania.fr>
parents:
diff changeset
10 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
fdc3736ff806 Added parray.c and parray.h:
David Demelier <markand@malikania.fr>
parents:
diff changeset
11 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
fdc3736ff806 Added parray.c and parray.h:
David Demelier <markand@malikania.fr>
parents:
diff changeset
12 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
fdc3736ff806 Added parray.c and parray.h:
David Demelier <markand@malikania.fr>
parents:
diff changeset
13 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
fdc3736ff806 Added parray.c and parray.h:
David Demelier <markand@malikania.fr>
parents:
diff changeset
14 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
fdc3736ff806 Added parray.c and parray.h:
David Demelier <markand@malikania.fr>
parents:
diff changeset
15 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
fdc3736ff806 Added parray.c and parray.h:
David Demelier <markand@malikania.fr>
parents:
diff changeset
16 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
fdc3736ff806 Added parray.c and parray.h:
David Demelier <markand@malikania.fr>
parents:
diff changeset
17 */
fdc3736ff806 Added parray.c and parray.h:
David Demelier <markand@malikania.fr>
parents:
diff changeset
18
fdc3736ff806 Added parray.c and parray.h:
David Demelier <markand@malikania.fr>
parents:
diff changeset
19 #include <stdio.h>
fdc3736ff806 Added parray.c and parray.h:
David Demelier <markand@malikania.fr>
parents:
diff changeset
20 #include <stdlib.h>
fdc3736ff806 Added parray.c and parray.h:
David Demelier <markand@malikania.fr>
parents:
diff changeset
21 #include <string.h>
fdc3736ff806 Added parray.c and parray.h:
David Demelier <markand@malikania.fr>
parents:
diff changeset
22
fdc3736ff806 Added parray.c and parray.h:
David Demelier <markand@malikania.fr>
parents:
diff changeset
23 #include "parray.h"
fdc3736ff806 Added parray.c and parray.h:
David Demelier <markand@malikania.fr>
parents:
diff changeset
24
fdc3736ff806 Added parray.c and parray.h:
David Demelier <markand@malikania.fr>
parents:
diff changeset
25 #define LENGTH(x) ((x) * (sizeof (void *)))
fdc3736ff806 Added parray.c and parray.h:
David Demelier <markand@malikania.fr>
parents:
diff changeset
26
124
5917096facb9 Use enum and add #ifdef __cplusplus
David Demelier <markand@malikania.fr>
parents: 120
diff changeset
27 static int grow(struct parray *);
36
fdc3736ff806 Added parray.c and parray.h:
David Demelier <markand@malikania.fr>
parents:
diff changeset
28
92
4d723e81b685 Same thing for parray
David Demelier <markand@malikania.fr>
parents: 67
diff changeset
29 int
93
9ebea85c7765 Use pointer instead of copying variable in ARRAY_FOREACH, then you can modify it
David Demelier <markand@malikania.fr>
parents: 92
diff changeset
30 parray_init(struct parray *arr)
36
fdc3736ff806 Added parray.c and parray.h:
David Demelier <markand@malikania.fr>
parents:
diff changeset
31 {
92
4d723e81b685 Same thing for parray
David Demelier <markand@malikania.fr>
parents: 67
diff changeset
32 /* Set defaults if needed */
4d723e81b685 Same thing for parray
David Demelier <markand@malikania.fr>
parents: 67
diff changeset
33 arr->bsize = (arr->bsize <= 0) ? PARRAY_DEFAULT_BSIZE : arr->bsize;
4d723e81b685 Same thing for parray
David Demelier <markand@malikania.fr>
parents: 67
diff changeset
34 arr->malloc = (arr->malloc == NULL) ? &malloc : arr->malloc;
4d723e81b685 Same thing for parray
David Demelier <markand@malikania.fr>
parents: 67
diff changeset
35 arr->realloc = (arr->realloc == NULL) ? &realloc : arr->realloc;
36
fdc3736ff806 Added parray.c and parray.h:
David Demelier <markand@malikania.fr>
parents:
diff changeset
36
136
David Demelier <markand@malikania.fr>
parents: 124
diff changeset
37 arr->bsize += (arr->flags & PARRAY_NULLEND) ? 1 : 0;
36
fdc3736ff806 Added parray.c and parray.h:
David Demelier <markand@malikania.fr>
parents:
diff changeset
38 arr->size = LENGTH(arr->bsize);
fdc3736ff806 Added parray.c and parray.h:
David Demelier <markand@malikania.fr>
parents:
diff changeset
39
117
bbe86bdb55da Update parray for a lot of things
David Demelier <markand@malikania.fr>
parents: 109
diff changeset
40 if ((arr->data = arr->malloc(arr->size)) == NULL)
92
4d723e81b685 Same thing for parray
David Demelier <markand@malikania.fr>
parents: 67
diff changeset
41 return -1;
4d723e81b685 Same thing for parray
David Demelier <markand@malikania.fr>
parents: 67
diff changeset
42
136
David Demelier <markand@malikania.fr>
parents: 124
diff changeset
43 memset(arr->data, 0, arr->size);
92
4d723e81b685 Same thing for parray
David Demelier <markand@malikania.fr>
parents: 67
diff changeset
44
4d723e81b685 Same thing for parray
David Demelier <markand@malikania.fr>
parents: 67
diff changeset
45 return 0;
4d723e81b685 Same thing for parray
David Demelier <markand@malikania.fr>
parents: 67
diff changeset
46 }
4d723e81b685 Same thing for parray
David Demelier <markand@malikania.fr>
parents: 67
diff changeset
47
4d723e81b685 Same thing for parray
David Demelier <markand@malikania.fr>
parents: 67
diff changeset
48 /*
4d723e81b685 Same thing for parray
David Demelier <markand@malikania.fr>
parents: 67
diff changeset
49 * Valid options that can be set for an array :
4d723e81b685 Same thing for parray
David Demelier <markand@malikania.fr>
parents: 67
diff changeset
50 * l -> optional array block size of type int
4d723e81b685 Same thing for parray
David Demelier <markand@malikania.fr>
parents: 67
diff changeset
51 * m -> malloc function that must matches void * (*malloc)(size_t)
4d723e81b685 Same thing for parray
David Demelier <markand@malikania.fr>
parents: 67
diff changeset
52 * r -> realloc function that must matches void * (*realloc)(void *, size_t)
136
David Demelier <markand@malikania.fr>
parents: 124
diff changeset
53 * f -> parray flags of type int
92
4d723e81b685 Same thing for parray
David Demelier <markand@malikania.fr>
parents: 67
diff changeset
54 */
36
fdc3736ff806 Added parray.c and parray.h:
David Demelier <markand@malikania.fr>
parents:
diff changeset
55
92
4d723e81b685 Same thing for parray
David Demelier <markand@malikania.fr>
parents: 67
diff changeset
56 void
4d723e81b685 Same thing for parray
David Demelier <markand@malikania.fr>
parents: 67
diff changeset
57 parray_set(struct parray *arr, const char *fmt, ...)
4d723e81b685 Same thing for parray
David Demelier <markand@malikania.fr>
parents: 67
diff changeset
58 {
4d723e81b685 Same thing for parray
David Demelier <markand@malikania.fr>
parents: 67
diff changeset
59 va_list ap;
4d723e81b685 Same thing for parray
David Demelier <markand@malikania.fr>
parents: 67
diff changeset
60 const char *p;
4d723e81b685 Same thing for parray
David Demelier <markand@malikania.fr>
parents: 67
diff changeset
61
4d723e81b685 Same thing for parray
David Demelier <markand@malikania.fr>
parents: 67
diff changeset
62 va_start(ap, fmt);
4d723e81b685 Same thing for parray
David Demelier <markand@malikania.fr>
parents: 67
diff changeset
63 for (p = fmt; *p != '\0'; ++p)
4d723e81b685 Same thing for parray
David Demelier <markand@malikania.fr>
parents: 67
diff changeset
64 switch (*p) {
4d723e81b685 Same thing for parray
David Demelier <markand@malikania.fr>
parents: 67
diff changeset
65 case 'l':
4d723e81b685 Same thing for parray
David Demelier <markand@malikania.fr>
parents: 67
diff changeset
66 arr->bsize = va_arg(ap, int);
4d723e81b685 Same thing for parray
David Demelier <markand@malikania.fr>
parents: 67
diff changeset
67 break;
4d723e81b685 Same thing for parray
David Demelier <markand@malikania.fr>
parents: 67
diff changeset
68 case 'm':
4d723e81b685 Same thing for parray
David Demelier <markand@malikania.fr>
parents: 67
diff changeset
69 arr->malloc = va_arg(ap, void * (*)(size_t));
4d723e81b685 Same thing for parray
David Demelier <markand@malikania.fr>
parents: 67
diff changeset
70 break;
4d723e81b685 Same thing for parray
David Demelier <markand@malikania.fr>
parents: 67
diff changeset
71 case 'r':
117
bbe86bdb55da Update parray for a lot of things
David Demelier <markand@malikania.fr>
parents: 109
diff changeset
72 arr->realloc = va_arg(ap, void * (*)(void *, size_t));
92
4d723e81b685 Same thing for parray
David Demelier <markand@malikania.fr>
parents: 67
diff changeset
73 break;
136
David Demelier <markand@malikania.fr>
parents: 124
diff changeset
74 case 'f':
David Demelier <markand@malikania.fr>
parents: 124
diff changeset
75 arr->flags = va_arg(ap, int);
99
d534fdcbb319 Remove #ifdef __cplusplus
David Demelier <markand@malikania.fr>
parents: 98
diff changeset
76 break;
92
4d723e81b685 Same thing for parray
David Demelier <markand@malikania.fr>
parents: 67
diff changeset
77 default:
4d723e81b685 Same thing for parray
David Demelier <markand@malikania.fr>
parents: 67
diff changeset
78 break;
4d723e81b685 Same thing for parray
David Demelier <markand@malikania.fr>
parents: 67
diff changeset
79 }
36
fdc3736ff806 Added parray.c and parray.h:
David Demelier <markand@malikania.fr>
parents:
diff changeset
80 }
fdc3736ff806 Added parray.c and parray.h:
David Demelier <markand@malikania.fr>
parents:
diff changeset
81
fdc3736ff806 Added parray.c and parray.h:
David Demelier <markand@malikania.fr>
parents:
diff changeset
82 /*
fdc3736ff806 Added parray.c and parray.h:
David Demelier <markand@malikania.fr>
parents:
diff changeset
83 * Add to the head of array. NOTE: this may be very slow when adding a lot
fdc3736ff806 Added parray.c and parray.h:
David Demelier <markand@malikania.fr>
parents:
diff changeset
84 * of object (about 100000). If you need to add a lot of data please consider
fdc3736ff806 Added parray.c and parray.h:
David Demelier <markand@malikania.fr>
parents:
diff changeset
85 * using linked list instead.
fdc3736ff806 Added parray.c and parray.h:
David Demelier <markand@malikania.fr>
parents:
diff changeset
86 */
fdc3736ff806 Added parray.c and parray.h:
David Demelier <markand@malikania.fr>
parents:
diff changeset
87
fdc3736ff806 Added parray.c and parray.h:
David Demelier <markand@malikania.fr>
parents:
diff changeset
88 int
fdc3736ff806 Added parray.c and parray.h:
David Demelier <markand@malikania.fr>
parents:
diff changeset
89 parray_push(struct parray *arr, void *data)
fdc3736ff806 Added parray.c and parray.h:
David Demelier <markand@malikania.fr>
parents:
diff changeset
90 {
124
5917096facb9 Use enum and add #ifdef __cplusplus
David Demelier <markand@malikania.fr>
parents: 120
diff changeset
91 if (grow(arr) < 0)
36
fdc3736ff806 Added parray.c and parray.h:
David Demelier <markand@malikania.fr>
parents:
diff changeset
92 return -1;
fdc3736ff806 Added parray.c and parray.h:
David Demelier <markand@malikania.fr>
parents:
diff changeset
93
117
bbe86bdb55da Update parray for a lot of things
David Demelier <markand@malikania.fr>
parents: 109
diff changeset
94 memmove(&arr->data[1], &arr->data[0], LENGTH(arr->length++));
bbe86bdb55da Update parray for a lot of things
David Demelier <markand@malikania.fr>
parents: 109
diff changeset
95 arr->data[0] = data;
36
fdc3736ff806 Added parray.c and parray.h:
David Demelier <markand@malikania.fr>
parents:
diff changeset
96
136
David Demelier <markand@malikania.fr>
parents: 124
diff changeset
97 if (arr->flags & PARRAY_NULLEND)
David Demelier <markand@malikania.fr>
parents: 124
diff changeset
98 arr->data[arr->length] = NULL;
David Demelier <markand@malikania.fr>
parents: 124
diff changeset
99
36
fdc3736ff806 Added parray.c and parray.h:
David Demelier <markand@malikania.fr>
parents:
diff changeset
100 return 0;
fdc3736ff806 Added parray.c and parray.h:
David Demelier <markand@malikania.fr>
parents:
diff changeset
101 }
fdc3736ff806 Added parray.c and parray.h:
David Demelier <markand@malikania.fr>
parents:
diff changeset
102
fdc3736ff806 Added parray.c and parray.h:
David Demelier <markand@malikania.fr>
parents:
diff changeset
103 /*
fdc3736ff806 Added parray.c and parray.h:
David Demelier <markand@malikania.fr>
parents:
diff changeset
104 * Insert the data at the specified index. The function returns -1 on
117
bbe86bdb55da Update parray for a lot of things
David Demelier <markand@malikania.fr>
parents: 109
diff changeset
105 * allocation failure.
36
fdc3736ff806 Added parray.c and parray.h:
David Demelier <markand@malikania.fr>
parents:
diff changeset
106 */
fdc3736ff806 Added parray.c and parray.h:
David Demelier <markand@malikania.fr>
parents:
diff changeset
107
fdc3736ff806 Added parray.c and parray.h:
David Demelier <markand@malikania.fr>
parents:
diff changeset
108 int
fdc3736ff806 Added parray.c and parray.h:
David Demelier <markand@malikania.fr>
parents:
diff changeset
109 parray_insert(struct parray *arr, void *data, int index)
fdc3736ff806 Added parray.c and parray.h:
David Demelier <markand@malikania.fr>
parents:
diff changeset
110 {
117
bbe86bdb55da Update parray for a lot of things
David Demelier <markand@malikania.fr>
parents: 109
diff changeset
111 if (index < 0)
bbe86bdb55da Update parray for a lot of things
David Demelier <markand@malikania.fr>
parents: 109
diff changeset
112 return parray_push(arr, data);
bbe86bdb55da Update parray for a lot of things
David Demelier <markand@malikania.fr>
parents: 109
diff changeset
113 if (index >= arr->length)
bbe86bdb55da Update parray for a lot of things
David Demelier <markand@malikania.fr>
parents: 109
diff changeset
114 return parray_append(arr, data);
36
fdc3736ff806 Added parray.c and parray.h:
David Demelier <markand@malikania.fr>
parents:
diff changeset
115
117
bbe86bdb55da Update parray for a lot of things
David Demelier <markand@malikania.fr>
parents: 109
diff changeset
116 /* Good place */
bbe86bdb55da Update parray for a lot of things
David Demelier <markand@malikania.fr>
parents: 109
diff changeset
117 memmove(&arr->data[index + 1], &arr->data[index],
36
fdc3736ff806 Added parray.c and parray.h:
David Demelier <markand@malikania.fr>
parents:
diff changeset
118 LENGTH(arr->length++ - index));
117
bbe86bdb55da Update parray for a lot of things
David Demelier <markand@malikania.fr>
parents: 109
diff changeset
119 arr->data[index] = data;
36
fdc3736ff806 Added parray.c and parray.h:
David Demelier <markand@malikania.fr>
parents:
diff changeset
120
136
David Demelier <markand@malikania.fr>
parents: 124
diff changeset
121 if (arr->flags & PARRAY_NULLEND)
David Demelier <markand@malikania.fr>
parents: 124
diff changeset
122 arr->data[arr->length] = NULL;
David Demelier <markand@malikania.fr>
parents: 124
diff changeset
123
36
fdc3736ff806 Added parray.c and parray.h:
David Demelier <markand@malikania.fr>
parents:
diff changeset
124 return 0;
fdc3736ff806 Added parray.c and parray.h:
David Demelier <markand@malikania.fr>
parents:
diff changeset
125 }
fdc3736ff806 Added parray.c and parray.h:
David Demelier <markand@malikania.fr>
parents:
diff changeset
126
fdc3736ff806 Added parray.c and parray.h:
David Demelier <markand@malikania.fr>
parents:
diff changeset
127 /*
fdc3736ff806 Added parray.c and parray.h:
David Demelier <markand@malikania.fr>
parents:
diff changeset
128 * Append the data to the end of array.
fdc3736ff806 Added parray.c and parray.h:
David Demelier <markand@malikania.fr>
parents:
diff changeset
129 */
fdc3736ff806 Added parray.c and parray.h:
David Demelier <markand@malikania.fr>
parents:
diff changeset
130
fdc3736ff806 Added parray.c and parray.h:
David Demelier <markand@malikania.fr>
parents:
diff changeset
131 int
fdc3736ff806 Added parray.c and parray.h:
David Demelier <markand@malikania.fr>
parents:
diff changeset
132 parray_append(struct parray *arr, void *data)
fdc3736ff806 Added parray.c and parray.h:
David Demelier <markand@malikania.fr>
parents:
diff changeset
133 {
124
5917096facb9 Use enum and add #ifdef __cplusplus
David Demelier <markand@malikania.fr>
parents: 120
diff changeset
134 if (grow(arr) < 0)
36
fdc3736ff806 Added parray.c and parray.h:
David Demelier <markand@malikania.fr>
parents:
diff changeset
135 return -1;
fdc3736ff806 Added parray.c and parray.h:
David Demelier <markand@malikania.fr>
parents:
diff changeset
136
117
bbe86bdb55da Update parray for a lot of things
David Demelier <markand@malikania.fr>
parents: 109
diff changeset
137 arr->data[arr->length++] = data;
36
fdc3736ff806 Added parray.c and parray.h:
David Demelier <markand@malikania.fr>
parents:
diff changeset
138
136
David Demelier <markand@malikania.fr>
parents: 124
diff changeset
139 if (arr->flags & PARRAY_NULLEND)
David Demelier <markand@malikania.fr>
parents: 124
diff changeset
140 arr->data[arr->length] = NULL;
David Demelier <markand@malikania.fr>
parents: 124
diff changeset
141
36
fdc3736ff806 Added parray.c and parray.h:
David Demelier <markand@malikania.fr>
parents:
diff changeset
142 return 0;
fdc3736ff806 Added parray.c and parray.h:
David Demelier <markand@malikania.fr>
parents:
diff changeset
143 }
fdc3736ff806 Added parray.c and parray.h:
David Demelier <markand@malikania.fr>
parents:
diff changeset
144
fdc3736ff806 Added parray.c and parray.h:
David Demelier <markand@malikania.fr>
parents:
diff changeset
145 /*
fdc3736ff806 Added parray.c and parray.h:
David Demelier <markand@malikania.fr>
parents:
diff changeset
146 * Remove the array's head.
fdc3736ff806 Added parray.c and parray.h:
David Demelier <markand@malikania.fr>
parents:
diff changeset
147 */
fdc3736ff806 Added parray.c and parray.h:
David Demelier <markand@malikania.fr>
parents:
diff changeset
148
fdc3736ff806 Added parray.c and parray.h:
David Demelier <markand@malikania.fr>
parents:
diff changeset
149 void
fdc3736ff806 Added parray.c and parray.h:
David Demelier <markand@malikania.fr>
parents:
diff changeset
150 parray_pop(struct parray *arr)
fdc3736ff806 Added parray.c and parray.h:
David Demelier <markand@malikania.fr>
parents:
diff changeset
151 {
136
David Demelier <markand@malikania.fr>
parents: 124
diff changeset
152 parray_iremove(arr, 0);
36
fdc3736ff806 Added parray.c and parray.h:
David Demelier <markand@malikania.fr>
parents:
diff changeset
153 }
fdc3736ff806 Added parray.c and parray.h:
David Demelier <markand@malikania.fr>
parents:
diff changeset
154
fdc3736ff806 Added parray.c and parray.h:
David Demelier <markand@malikania.fr>
parents:
diff changeset
155 /*
fdc3736ff806 Added parray.c and parray.h:
David Demelier <markand@malikania.fr>
parents:
diff changeset
156 * Remove the array's tail.
fdc3736ff806 Added parray.c and parray.h:
David Demelier <markand@malikania.fr>
parents:
diff changeset
157 */
fdc3736ff806 Added parray.c and parray.h:
David Demelier <markand@malikania.fr>
parents:
diff changeset
158
fdc3736ff806 Added parray.c and parray.h:
David Demelier <markand@malikania.fr>
parents:
diff changeset
159 void
fdc3736ff806 Added parray.c and parray.h:
David Demelier <markand@malikania.fr>
parents:
diff changeset
160 parray_unqueue(struct parray *arr)
fdc3736ff806 Added parray.c and parray.h:
David Demelier <markand@malikania.fr>
parents:
diff changeset
161 {
136
David Demelier <markand@malikania.fr>
parents: 124
diff changeset
162 parray_iremove(arr, arr->length - 1);
36
fdc3736ff806 Added parray.c and parray.h:
David Demelier <markand@malikania.fr>
parents:
diff changeset
163 }
fdc3736ff806 Added parray.c and parray.h:
David Demelier <markand@malikania.fr>
parents:
diff changeset
164
fdc3736ff806 Added parray.c and parray.h:
David Demelier <markand@malikania.fr>
parents:
diff changeset
165 /*
fdc3736ff806 Added parray.c and parray.h:
David Demelier <markand@malikania.fr>
parents:
diff changeset
166 * Remove the data at the specified index. Bounds are checked.
fdc3736ff806 Added parray.c and parray.h:
David Demelier <markand@malikania.fr>
parents:
diff changeset
167 */
fdc3736ff806 Added parray.c and parray.h:
David Demelier <markand@malikania.fr>
parents:
diff changeset
168
fdc3736ff806 Added parray.c and parray.h:
David Demelier <markand@malikania.fr>
parents:
diff changeset
169 void
117
bbe86bdb55da Update parray for a lot of things
David Demelier <markand@malikania.fr>
parents: 109
diff changeset
170 parray_iremove(struct parray *arr, int index)
36
fdc3736ff806 Added parray.c and parray.h:
David Demelier <markand@malikania.fr>
parents:
diff changeset
171 {
fdc3736ff806 Added parray.c and parray.h:
David Demelier <markand@malikania.fr>
parents:
diff changeset
172 if (arr->length > 0 && index >= 0 && index < arr->length) {
136
David Demelier <markand@malikania.fr>
parents: 124
diff changeset
173 if (arr->flags & PARRAY_FASTREMOVE)
David Demelier <markand@malikania.fr>
parents: 124
diff changeset
174 arr->data[index] = arr->data[--arr->length];
David Demelier <markand@malikania.fr>
parents: 124
diff changeset
175 else
David Demelier <markand@malikania.fr>
parents: 124
diff changeset
176 memmove(&arr->data[index], &arr->data[index + 1],
David Demelier <markand@malikania.fr>
parents: 124
diff changeset
177 LENGTH(arr->length-- - index - 1));
36
fdc3736ff806 Added parray.c and parray.h:
David Demelier <markand@malikania.fr>
parents:
diff changeset
178 }
136
David Demelier <markand@malikania.fr>
parents: 124
diff changeset
179
David Demelier <markand@malikania.fr>
parents: 124
diff changeset
180 arr->data[arr->length] = NULL;
36
fdc3736ff806 Added parray.c and parray.h:
David Demelier <markand@malikania.fr>
parents:
diff changeset
181 }
fdc3736ff806 Added parray.c and parray.h:
David Demelier <markand@malikania.fr>
parents:
diff changeset
182
fdc3736ff806 Added parray.c and parray.h:
David Demelier <markand@malikania.fr>
parents:
diff changeset
183 /*
fdc3736ff806 Added parray.c and parray.h:
David Demelier <markand@malikania.fr>
parents:
diff changeset
184 * Remove the object referenced by the `data' argument. Useful when you
fdc3736ff806 Added parray.c and parray.h:
David Demelier <markand@malikania.fr>
parents:
diff changeset
185 * don't know the index.
fdc3736ff806 Added parray.c and parray.h:
David Demelier <markand@malikania.fr>
parents:
diff changeset
186 */
fdc3736ff806 Added parray.c and parray.h:
David Demelier <markand@malikania.fr>
parents:
diff changeset
187
fdc3736ff806 Added parray.c and parray.h:
David Demelier <markand@malikania.fr>
parents:
diff changeset
188 void
117
bbe86bdb55da Update parray for a lot of things
David Demelier <markand@malikania.fr>
parents: 109
diff changeset
189 parray_premove(struct parray *arr, const void *data)
36
fdc3736ff806 Added parray.c and parray.h:
David Demelier <markand@malikania.fr>
parents:
diff changeset
190 {
fdc3736ff806 Added parray.c and parray.h:
David Demelier <markand@malikania.fr>
parents:
diff changeset
191 void *elm;
fdc3736ff806 Added parray.c and parray.h:
David Demelier <markand@malikania.fr>
parents:
diff changeset
192 int i;
fdc3736ff806 Added parray.c and parray.h:
David Demelier <markand@malikania.fr>
parents:
diff changeset
193
117
bbe86bdb55da Update parray for a lot of things
David Demelier <markand@malikania.fr>
parents: 109
diff changeset
194 PARRAY_FOREACH(arr, elm, i) {
bbe86bdb55da Update parray for a lot of things
David Demelier <markand@malikania.fr>
parents: 109
diff changeset
195 if (elm == data) {
bbe86bdb55da Update parray for a lot of things
David Demelier <markand@malikania.fr>
parents: 109
diff changeset
196 parray_iremove(arr, i);
bbe86bdb55da Update parray for a lot of things
David Demelier <markand@malikania.fr>
parents: 109
diff changeset
197 break;
bbe86bdb55da Update parray for a lot of things
David Demelier <markand@malikania.fr>
parents: 109
diff changeset
198 }
36
fdc3736ff806 Added parray.c and parray.h:
David Demelier <markand@malikania.fr>
parents:
diff changeset
199 }
fdc3736ff806 Added parray.c and parray.h:
David Demelier <markand@malikania.fr>
parents:
diff changeset
200 }
fdc3736ff806 Added parray.c and parray.h:
David Demelier <markand@malikania.fr>
parents:
diff changeset
201
fdc3736ff806 Added parray.c and parray.h:
David Demelier <markand@malikania.fr>
parents:
diff changeset
202 /*
fdc3736ff806 Added parray.c and parray.h:
David Demelier <markand@malikania.fr>
parents:
diff changeset
203 * Swap the two elements referenced by index `i1' and `i2'. This function needs
fdc3736ff806 Added parray.c and parray.h:
David Demelier <markand@malikania.fr>
parents:
diff changeset
204 * to allocate data to swap elements thus if the functions fails it returns -1
fdc3736ff806 Added parray.c and parray.h:
David Demelier <markand@malikania.fr>
parents:
diff changeset
205 * otherwise 0 is returned.
fdc3736ff806 Added parray.c and parray.h:
David Demelier <markand@malikania.fr>
parents:
diff changeset
206 */
fdc3736ff806 Added parray.c and parray.h:
David Demelier <markand@malikania.fr>
parents:
diff changeset
207
fdc3736ff806 Added parray.c and parray.h:
David Demelier <markand@malikania.fr>
parents:
diff changeset
208 int
43
f1e184940197 Same last commit for array too
David Demelier <markand@malikania.fr>
parents: 40
diff changeset
209 parray_iswap(struct parray *arr, int i1, int i2)
36
fdc3736ff806 Added parray.c and parray.h:
David Demelier <markand@malikania.fr>
parents:
diff changeset
210 {
fdc3736ff806 Added parray.c and parray.h:
David Demelier <markand@malikania.fr>
parents:
diff changeset
211 void *tmp;
fdc3736ff806 Added parray.c and parray.h:
David Demelier <markand@malikania.fr>
parents:
diff changeset
212
fdc3736ff806 Added parray.c and parray.h:
David Demelier <markand@malikania.fr>
parents:
diff changeset
213 /* Out of bounds */
fdc3736ff806 Added parray.c and parray.h:
David Demelier <markand@malikania.fr>
parents:
diff changeset
214 if (i1 >= arr->length || i1 < 0 || i2 >= arr->length || i2 < 0)
fdc3736ff806 Added parray.c and parray.h:
David Demelier <markand@malikania.fr>
parents:
diff changeset
215 return -1;
fdc3736ff806 Added parray.c and parray.h:
David Demelier <markand@malikania.fr>
parents:
diff changeset
216
117
bbe86bdb55da Update parray for a lot of things
David Demelier <markand@malikania.fr>
parents: 109
diff changeset
217 tmp = arr->data[i1];
bbe86bdb55da Update parray for a lot of things
David Demelier <markand@malikania.fr>
parents: 109
diff changeset
218 arr->data[i1] = arr->data[i2];
bbe86bdb55da Update parray for a lot of things
David Demelier <markand@malikania.fr>
parents: 109
diff changeset
219 arr->data[i2] = tmp;
36
fdc3736ff806 Added parray.c and parray.h:
David Demelier <markand@malikania.fr>
parents:
diff changeset
220
fdc3736ff806 Added parray.c and parray.h:
David Demelier <markand@malikania.fr>
parents:
diff changeset
221 return 0;
fdc3736ff806 Added parray.c and parray.h:
David Demelier <markand@malikania.fr>
parents:
diff changeset
222 }
fdc3736ff806 Added parray.c and parray.h:
David Demelier <markand@malikania.fr>
parents:
diff changeset
223
fdc3736ff806 Added parray.c and parray.h:
David Demelier <markand@malikania.fr>
parents:
diff changeset
224 /*
43
f1e184940197 Same last commit for array too
David Demelier <markand@malikania.fr>
parents: 40
diff changeset
225 * Swap the two elements referenced by data `o1' and `o2'. This function
f1e184940197 Same last commit for array too
David Demelier <markand@malikania.fr>
parents: 40
diff changeset
226 * may be slow on large arrays since it must travel all the object
f1e184940197 Same last commit for array too
David Demelier <markand@malikania.fr>
parents: 40
diff changeset
227 * to find the indexes.
f1e184940197 Same last commit for array too
David Demelier <markand@malikania.fr>
parents: 40
diff changeset
228 */
f1e184940197 Same last commit for array too
David Demelier <markand@malikania.fr>
parents: 40
diff changeset
229
f1e184940197 Same last commit for array too
David Demelier <markand@malikania.fr>
parents: 40
diff changeset
230 int
f1e184940197 Same last commit for array too
David Demelier <markand@malikania.fr>
parents: 40
diff changeset
231 parray_pswap(struct parray *arr, const void *o1, const void *o2)
f1e184940197 Same last commit for array too
David Demelier <markand@malikania.fr>
parents: 40
diff changeset
232 {
f1e184940197 Same last commit for array too
David Demelier <markand@malikania.fr>
parents: 40
diff changeset
233 int found, i1, i2;
f1e184940197 Same last commit for array too
David Demelier <markand@malikania.fr>
parents: 40
diff changeset
234
f1e184940197 Same last commit for array too
David Demelier <markand@malikania.fr>
parents: 40
diff changeset
235 for (i1 = found = 0; !found && i1 < arr->length; ++i1)
117
bbe86bdb55da Update parray for a lot of things
David Demelier <markand@malikania.fr>
parents: 109
diff changeset
236 found = arr->data[i1] == o1;
43
f1e184940197 Same last commit for array too
David Demelier <markand@malikania.fr>
parents: 40
diff changeset
237
f1e184940197 Same last commit for array too
David Demelier <markand@malikania.fr>
parents: 40
diff changeset
238 if (!found)
f1e184940197 Same last commit for array too
David Demelier <markand@malikania.fr>
parents: 40
diff changeset
239 return -1;
f1e184940197 Same last commit for array too
David Demelier <markand@malikania.fr>
parents: 40
diff changeset
240
f1e184940197 Same last commit for array too
David Demelier <markand@malikania.fr>
parents: 40
diff changeset
241 for (i2 = found = 0; !found && i2 < arr->length; ++i2)
117
bbe86bdb55da Update parray for a lot of things
David Demelier <markand@malikania.fr>
parents: 109
diff changeset
242 found = arr->data[i2] == o2;
43
f1e184940197 Same last commit for array too
David Demelier <markand@malikania.fr>
parents: 40
diff changeset
243
f1e184940197 Same last commit for array too
David Demelier <markand@malikania.fr>
parents: 40
diff changeset
244 if (!found)
f1e184940197 Same last commit for array too
David Demelier <markand@malikania.fr>
parents: 40
diff changeset
245 return -1;
f1e184940197 Same last commit for array too
David Demelier <markand@malikania.fr>
parents: 40
diff changeset
246
f1e184940197 Same last commit for array too
David Demelier <markand@malikania.fr>
parents: 40
diff changeset
247 return parray_iswap(arr, --i1, --i2);
f1e184940197 Same last commit for array too
David Demelier <markand@malikania.fr>
parents: 40
diff changeset
248 }
f1e184940197 Same last commit for array too
David Demelier <markand@malikania.fr>
parents: 40
diff changeset
249
f1e184940197 Same last commit for array too
David Demelier <markand@malikania.fr>
parents: 40
diff changeset
250 /*
36
fdc3736ff806 Added parray.c and parray.h:
David Demelier <markand@malikania.fr>
parents:
diff changeset
251 * Apply the function `fn' on each object and give the optional `udata'
fdc3736ff806 Added parray.c and parray.h:
David Demelier <markand@malikania.fr>
parents:
diff changeset
252 * argument to the function too.
fdc3736ff806 Added parray.c and parray.h:
David Demelier <markand@malikania.fr>
parents:
diff changeset
253 */
fdc3736ff806 Added parray.c and parray.h:
David Demelier <markand@malikania.fr>
parents:
diff changeset
254
fdc3736ff806 Added parray.c and parray.h:
David Demelier <markand@malikania.fr>
parents:
diff changeset
255 void
67
cff6869fbc94 Modified [p]array_find to return the index for a better usage
David Demelier <markand@malikania.fr>
parents: 50
diff changeset
256 parray_map(const struct parray *arr, parray_map_fn fn, void *udata)
36
fdc3736ff806 Added parray.c and parray.h:
David Demelier <markand@malikania.fr>
parents:
diff changeset
257 {
fdc3736ff806 Added parray.c and parray.h:
David Demelier <markand@malikania.fr>
parents:
diff changeset
258 int i;
fdc3736ff806 Added parray.c and parray.h:
David Demelier <markand@malikania.fr>
parents:
diff changeset
259
fdc3736ff806 Added parray.c and parray.h:
David Demelier <markand@malikania.fr>
parents:
diff changeset
260 for (i = 0; i < arr->length; ++i)
117
bbe86bdb55da Update parray for a lot of things
David Demelier <markand@malikania.fr>
parents: 109
diff changeset
261 fn(arr->data[i], udata);
36
fdc3736ff806 Added parray.c and parray.h:
David Demelier <markand@malikania.fr>
parents:
diff changeset
262 }
fdc3736ff806 Added parray.c and parray.h:
David Demelier <markand@malikania.fr>
parents:
diff changeset
263
fdc3736ff806 Added parray.c and parray.h:
David Demelier <markand@malikania.fr>
parents:
diff changeset
264 /*
fdc3736ff806 Added parray.c and parray.h:
David Demelier <markand@malikania.fr>
parents:
diff changeset
265 * Compare each object with the user supplied function. If the `fn' function
67
cff6869fbc94 Modified [p]array_find to return the index for a better usage
David Demelier <markand@malikania.fr>
parents: 50
diff changeset
266 * returns 1 then the index of the data position is returned and the parameter
cff6869fbc94 Modified [p]array_find to return the index for a better usage
David Demelier <markand@malikania.fr>
parents: 50
diff changeset
267 * data points to the array data at the correct index. If the comparison
cff6869fbc94 Modified [p]array_find to return the index for a better usage
David Demelier <markand@malikania.fr>
parents: 50
diff changeset
268 * function nevers returns 1, array_find returns -1.
36
fdc3736ff806 Added parray.c and parray.h:
David Demelier <markand@malikania.fr>
parents:
diff changeset
269 */
fdc3736ff806 Added parray.c and parray.h:
David Demelier <markand@malikania.fr>
parents:
diff changeset
270
67
cff6869fbc94 Modified [p]array_find to return the index for a better usage
David Demelier <markand@malikania.fr>
parents: 50
diff changeset
271 int
108
d5ea329ba28e Use same semantic as array.c for _find
David Demelier <markand@malikania.fr>
parents: 99
diff changeset
272 parray_find(const struct parray *arr, parray_cmp_fn fn, void *ptr, void *u)
36
fdc3736ff806 Added parray.c and parray.h:
David Demelier <markand@malikania.fr>
parents:
diff changeset
273 {
fdc3736ff806 Added parray.c and parray.h:
David Demelier <markand@malikania.fr>
parents:
diff changeset
274 int st, i;
fdc3736ff806 Added parray.c and parray.h:
David Demelier <markand@malikania.fr>
parents:
diff changeset
275
fdc3736ff806 Added parray.c and parray.h:
David Demelier <markand@malikania.fr>
parents:
diff changeset
276 for (i = st = 0; i < arr->length && st != 1; ++i)
117
bbe86bdb55da Update parray for a lot of things
David Demelier <markand@malikania.fr>
parents: 109
diff changeset
277 st = fn(arr->data[i], u);
36
fdc3736ff806 Added parray.c and parray.h:
David Demelier <markand@malikania.fr>
parents:
diff changeset
278
120
68784ea3fabb Fix (p)array_find
David Demelier <markand@malikania.fr>
parents: 117
diff changeset
279 if (st && ptr)
68784ea3fabb Fix (p)array_find
David Demelier <markand@malikania.fr>
parents: 117
diff changeset
280 *(void **)ptr = arr->data[i - 1];
36
fdc3736ff806 Added parray.c and parray.h:
David Demelier <markand@malikania.fr>
parents:
diff changeset
281
120
68784ea3fabb Fix (p)array_find
David Demelier <markand@malikania.fr>
parents: 117
diff changeset
282 return (st) ? i - 1 : -1;
36
fdc3736ff806 Added parray.c and parray.h:
David Demelier <markand@malikania.fr>
parents:
diff changeset
283 }
fdc3736ff806 Added parray.c and parray.h:
David Demelier <markand@malikania.fr>
parents:
diff changeset
284
136
David Demelier <markand@malikania.fr>
parents: 124
diff changeset
285 void *
David Demelier <markand@malikania.fr>
parents: 124
diff changeset
286 parray_first(const struct parray *arr)
David Demelier <markand@malikania.fr>
parents: 124
diff changeset
287 {
David Demelier <markand@malikania.fr>
parents: 124
diff changeset
288 return arr->data[0];
David Demelier <markand@malikania.fr>
parents: 124
diff changeset
289 }
David Demelier <markand@malikania.fr>
parents: 124
diff changeset
290
David Demelier <markand@malikania.fr>
parents: 124
diff changeset
291 void *
David Demelier <markand@malikania.fr>
parents: 124
diff changeset
292 parray_last(const struct parray *arr)
David Demelier <markand@malikania.fr>
parents: 124
diff changeset
293 {
David Demelier <markand@malikania.fr>
parents: 124
diff changeset
294 if (arr->length == 0)
David Demelier <markand@malikania.fr>
parents: 124
diff changeset
295 return parray_first(arr);
David Demelier <markand@malikania.fr>
parents: 124
diff changeset
296
David Demelier <markand@malikania.fr>
parents: 124
diff changeset
297 return arr->data[arr->length - 1];
David Demelier <markand@malikania.fr>
parents: 124
diff changeset
298
David Demelier <markand@malikania.fr>
parents: 124
diff changeset
299 }
David Demelier <markand@malikania.fr>
parents: 124
diff changeset
300
David Demelier <markand@malikania.fr>
parents: 124
diff changeset
301 void *
David Demelier <markand@malikania.fr>
parents: 124
diff changeset
302 parray_index(const struct parray *arr, int idx)
David Demelier <markand@malikania.fr>
parents: 124
diff changeset
303 {
David Demelier <markand@malikania.fr>
parents: 124
diff changeset
304 if (idx < 0)
David Demelier <markand@malikania.fr>
parents: 124
diff changeset
305 return parray_first(arr);
David Demelier <markand@malikania.fr>
parents: 124
diff changeset
306 if (idx >= arr->length)
David Demelier <markand@malikania.fr>
parents: 124
diff changeset
307 return parray_last(arr);
David Demelier <markand@malikania.fr>
parents: 124
diff changeset
308
David Demelier <markand@malikania.fr>
parents: 124
diff changeset
309 return arr->data[idx];
David Demelier <markand@malikania.fr>
parents: 124
diff changeset
310 }
David Demelier <markand@malikania.fr>
parents: 124
diff changeset
311
36
fdc3736ff806 Added parray.c and parray.h:
David Demelier <markand@malikania.fr>
parents:
diff changeset
312 /*
40
d741c948de89 Added a convenient macro PARRAY_FLUSH to free all objects
David Demelier <markand@malikania.fr>
parents: 37
diff changeset
313 * Reset the array by setting each pointer to NULL and the length to 0.
36
fdc3736ff806 Added parray.c and parray.h:
David Demelier <markand@malikania.fr>
parents:
diff changeset
314 */
fdc3736ff806 Added parray.c and parray.h:
David Demelier <markand@malikania.fr>
parents:
diff changeset
315
fdc3736ff806 Added parray.c and parray.h:
David Demelier <markand@malikania.fr>
parents:
diff changeset
316 void
fdc3736ff806 Added parray.c and parray.h:
David Demelier <markand@malikania.fr>
parents:
diff changeset
317 parray_clear(struct parray *arr)
fdc3736ff806 Added parray.c and parray.h:
David Demelier <markand@malikania.fr>
parents:
diff changeset
318 {
136
David Demelier <markand@malikania.fr>
parents: 124
diff changeset
319 arr->data[0] = NULL;
David Demelier <markand@malikania.fr>
parents: 124
diff changeset
320 arr->length = 0;
36
fdc3736ff806 Added parray.c and parray.h:
David Demelier <markand@malikania.fr>
parents:
diff changeset
321 }
fdc3736ff806 Added parray.c and parray.h:
David Demelier <markand@malikania.fr>
parents:
diff changeset
322
fdc3736ff806 Added parray.c and parray.h:
David Demelier <markand@malikania.fr>
parents:
diff changeset
323 /*
fdc3736ff806 Added parray.c and parray.h:
David Demelier <markand@malikania.fr>
parents:
diff changeset
324 * Same as parray_clear except it also free the array object.
fdc3736ff806 Added parray.c and parray.h:
David Demelier <markand@malikania.fr>
parents:
diff changeset
325 */
fdc3736ff806 Added parray.c and parray.h:
David Demelier <markand@malikania.fr>
parents:
diff changeset
326
fdc3736ff806 Added parray.c and parray.h:
David Demelier <markand@malikania.fr>
parents:
diff changeset
327 void
fdc3736ff806 Added parray.c and parray.h:
David Demelier <markand@malikania.fr>
parents:
diff changeset
328 parray_free(struct parray *arr)
fdc3736ff806 Added parray.c and parray.h:
David Demelier <markand@malikania.fr>
parents:
diff changeset
329 {
136
David Demelier <markand@malikania.fr>
parents: 124
diff changeset
330 parray_clear(arr);
117
bbe86bdb55da Update parray for a lot of things
David Demelier <markand@malikania.fr>
parents: 109
diff changeset
331 free(arr->data);
136
David Demelier <markand@malikania.fr>
parents: 124
diff changeset
332
David Demelier <markand@malikania.fr>
parents: 124
diff changeset
333 arr->data = NULL;
David Demelier <markand@malikania.fr>
parents: 124
diff changeset
334 arr->size = 0;
36
fdc3736ff806 Added parray.c and parray.h:
David Demelier <markand@malikania.fr>
parents:
diff changeset
335 }
fdc3736ff806 Added parray.c and parray.h:
David Demelier <markand@malikania.fr>
parents:
diff changeset
336
fdc3736ff806 Added parray.c and parray.h:
David Demelier <markand@malikania.fr>
parents:
diff changeset
337 /*
fdc3736ff806 Added parray.c and parray.h:
David Demelier <markand@malikania.fr>
parents:
diff changeset
338 * Increate the array storage when it is full. If the buffer is fixed size
fdc3736ff806 Added parray.c and parray.h:
David Demelier <markand@malikania.fr>
parents:
diff changeset
339 * it returns -1 on full buffer otherwise 0 is returned if allocation
fdc3736ff806 Added parray.c and parray.h:
David Demelier <markand@malikania.fr>
parents:
diff changeset
340 * succeeded.
fdc3736ff806 Added parray.c and parray.h:
David Demelier <markand@malikania.fr>
parents:
diff changeset
341 */
fdc3736ff806 Added parray.c and parray.h:
David Demelier <markand@malikania.fr>
parents:
diff changeset
342
fdc3736ff806 Added parray.c and parray.h:
David Demelier <markand@malikania.fr>
parents:
diff changeset
343 static int
124
5917096facb9 Use enum and add #ifdef __cplusplus
David Demelier <markand@malikania.fr>
parents: 120
diff changeset
344 grow(struct parray *arr)
36
fdc3736ff806 Added parray.c and parray.h:
David Demelier <markand@malikania.fr>
parents:
diff changeset
345 {
137
97c9c20535e2 Just fix a -Wextra warning
David Demelier <markand@malikania.fr>
parents: 136
diff changeset
346 unsigned int toadd;
136
David Demelier <markand@malikania.fr>
parents: 124
diff changeset
347
David Demelier <markand@malikania.fr>
parents: 124
diff changeset
348 toadd = (arr->flags & PARRAY_NULLEND) ? 2 : 1;
David Demelier <markand@malikania.fr>
parents: 124
diff changeset
349
David Demelier <markand@malikania.fr>
parents: 124
diff changeset
350 if ((arr->size / sizeof (void *)) - arr->length >= toadd)
36
fdc3736ff806 Added parray.c and parray.h:
David Demelier <markand@malikania.fr>
parents:
diff changeset
351 return 0;
fdc3736ff806 Added parray.c and parray.h:
David Demelier <markand@malikania.fr>
parents:
diff changeset
352
136
David Demelier <markand@malikania.fr>
parents: 124
diff changeset
353 if (!(arr->flags & PARRAY_FIXED)) {
117
bbe86bdb55da Update parray for a lot of things
David Demelier <markand@malikania.fr>
parents: 109
diff changeset
354 if ((arr->data = arr->realloc(arr->data, arr->size +
136
David Demelier <markand@malikania.fr>
parents: 124
diff changeset
355 LENGTH(arr->bsize))) == NULL) {
David Demelier <markand@malikania.fr>
parents: 124
diff changeset
356 arr->size = arr->length = 0;
36
fdc3736ff806 Added parray.c and parray.h:
David Demelier <markand@malikania.fr>
parents:
diff changeset
357 return -1;
136
David Demelier <markand@malikania.fr>
parents: 124
diff changeset
358 }
36
fdc3736ff806 Added parray.c and parray.h:
David Demelier <markand@malikania.fr>
parents:
diff changeset
359
fdc3736ff806 Added parray.c and parray.h:
David Demelier <markand@malikania.fr>
parents:
diff changeset
360 arr->size += LENGTH(arr->bsize);
fdc3736ff806 Added parray.c and parray.h:
David Demelier <markand@malikania.fr>
parents:
diff changeset
361 } else
fdc3736ff806 Added parray.c and parray.h:
David Demelier <markand@malikania.fr>
parents:
diff changeset
362 return -1;
fdc3736ff806 Added parray.c and parray.h:
David Demelier <markand@malikania.fr>
parents:
diff changeset
363
fdc3736ff806 Added parray.c and parray.h:
David Demelier <markand@malikania.fr>
parents:
diff changeset
364 return 0;
fdc3736ff806 Added parray.c and parray.h:
David Demelier <markand@malikania.fr>
parents:
diff changeset
365 }