comparison array.h @ 165:970e491d93cb

Add _trim function to realloc to the needed size
author David Demelier <markand@malikania.fr>
date Mon, 24 Sep 2012 23:03:50 +0200
parents 654f32079cdc
children
comparison
equal deleted inserted replaced
164:654f32079cdc 165:970e491d93cb
25 #define ARRAY_DEFAULT_CHKSIZE 128 25 #define ARRAY_DEFAULT_CHKSIZE 128
26 #endif 26 #endif
27 27
28 enum array_flags { 28 enum array_flags {
29 ARRAY_AUTO = 0, /* array grows automatically */ 29 ARRAY_AUTO = 0, /* array grows automatically */
30 ARRAY_FIXED = (1 << 0) /* fixed size length */ 30 ARRAY_FIXED = (1 << 0), /* fixed size length */
31 ARRAY_FASTREMOVE = (1 << 1) /* use last object when removing */ 31 ARRAY_FASTREMOVE = (1 << 1), /* use last object when removing */
32 ARRAY_CLEARBITS = (1 << 2) /* clear data when inserting/removing */ 32 ARRAY_CLEARBITS = (1 << 2), /* clear data when inserting/removing */
33 ARRAY_INSERTSAFE = (1 << 3) /* insertion must have valid indexes */ 33 ARRAY_INSERTSAFE = (1 << 3) /* insertion must have valid indexes */
34 }; 34 };
35 35
36 struct array { 36 struct array {
37 int flags; /* (ro) array flags (default AUTO) */ 37 int flags; /* (ro) array flags (default AUTO) */
107 void 107 void
108 array_clear(struct array *); 108 array_clear(struct array *);
109 109
110 void 110 void
111 array_free(struct array *); 111 array_free(struct array *);
112
113 void *
114 array_trim(struct array *);
112 115
113 #define ARRAY_FOREACH(a, var, i) \ 116 #define ARRAY_FOREACH(a, var, i) \
114 for (i = 0, (var) = array_first((a)); \ 117 for (i = 0, (var) = array_first((a)); \
115 i < (a)->length; \ 118 i < (a)->length; \
116 (var) = array_get(a, ++i)) 119 (var) = array_get(a, ++i))