Mercurial > code
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)) |