Mercurial > code
comparison array.h @ 93:9ebea85c7765
Use pointer instead of copying variable in ARRAY_FOREACH, then you can modify it
author | David Demelier <markand@malikania.fr> |
---|---|
date | Wed, 04 Jan 2012 13:21:15 +0100 |
parents | 4d723e81b685 |
children | f5339bdc5cb1 |
comparison
equal
deleted
inserted
replaced
92:4d723e81b685 | 93:9ebea85c7765 |
---|---|
49 }; | 49 }; |
50 | 50 |
51 typedef void (*array_map_fn)(void *, void *); | 51 typedef void (*array_map_fn)(void *, void *); |
52 typedef int (*array_cmp_fn)(void *, void *); | 52 typedef int (*array_cmp_fn)(void *, void *); |
53 | 53 |
54 int array_new(struct array *, size_t); | 54 int array_init(struct array *, size_t); |
55 void array_set(struct array *, const char *, ...); | 55 void array_set(struct array *, const char *, ...); |
56 int array_push(struct array *, const void *); | 56 int array_push(struct array *, const void *); |
57 int array_insert(struct array *, const void *, int); | 57 int array_insert(struct array *, const void *, int); |
58 int array_append(struct array *, const void *); | 58 int array_append(struct array *, const void *); |
59 void array_pop(struct array *); | 59 void array_pop(struct array *); |
74 #define ARRAY_INDEX(a, i, type) \ | 74 #define ARRAY_INDEX(a, i, type) \ |
75 ((type *)(a)->data)[((i) < 0) \ | 75 ((type *)(a)->data)[((i) < 0) \ |
76 ? 0 : ((i) >= (a)->length) ? (a)->length - 1 : (i)] | 76 ? 0 : ((i) >= (a)->length) ? (a)->length - 1 : (i)] |
77 | 77 |
78 #define ARRAY_FOREACH(a, var, type) \ | 78 #define ARRAY_FOREACH(a, var, type) \ |
79 for ((a)->i = 0, var = ARRAY_HEAD((a), type); \ | 79 for ((a)->i = 0, var = &ARRAY_HEAD((a), type); \ |
80 (a)->i < (a)->length; \ | 80 (a)->i < (a)->length; \ |
81 ++(a)->i, var = ARRAY_INDEX((a), (a)->i, type)) | 81 ++(a)->i, var = &ARRAY_INDEX((a), (a)->i, type)) |
82 | 82 |
83 /* Only for ARRAY_FIXED */ | 83 /* Only for ARRAY_FIXED */ |
84 #define ARRAY_FULL(a) \ | 84 #define ARRAY_FULL(a) \ |
85 ((a)->length == (a)->bsize) | 85 ((a)->length == (a)->bsize) |
86 | 86 |