Mercurial > code
changeset 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 |
files | array.c array.h parray.c parray.h |
diffstat | 4 files changed, 7 insertions(+), 7 deletions(-) [+] |
line wrap: on
line diff
--- a/array.c Tue Jan 03 17:54:35 2012 +0100 +++ b/array.c Wed Jan 04 13:21:15 2012 +0100 @@ -27,7 +27,7 @@ static int array_grow(struct array *); int -array_new(struct array *arr, size_t unit) +array_init(struct array *arr, size_t unit) { if (unit == 0) return -1; @@ -67,7 +67,7 @@ arr->bsize = va_arg(ap, int); break; case 'm': - arr->malloc = va_arg(ap, void * (*)(size_t)); + arr->malloc = va_arg(ap, void *(*)(size_t)); break; case 'r': arr->realloc = va_arg(ap, void *(*)(void *, size_t));
--- a/array.h Tue Jan 03 17:54:35 2012 +0100 +++ b/array.h Wed Jan 04 13:21:15 2012 +0100 @@ -51,7 +51,7 @@ typedef void (*array_map_fn)(void *, void *); typedef int (*array_cmp_fn)(void *, void *); -int array_new(struct array *, size_t); +int array_init(struct array *, size_t); void array_set(struct array *, const char *, ...); int array_push(struct array *, const void *); int array_insert(struct array *, const void *, int); @@ -76,9 +76,9 @@ ? 0 : ((i) >= (a)->length) ? (a)->length - 1 : (i)] #define ARRAY_FOREACH(a, var, type) \ - for ((a)->i = 0, var = ARRAY_HEAD((a), type); \ + for ((a)->i = 0, var = &ARRAY_HEAD((a), type); \ (a)->i < (a)->length; \ - ++(a)->i, var = ARRAY_INDEX((a), (a)->i, type)) + ++(a)->i, var = &ARRAY_INDEX((a), (a)->i, type)) /* Only for ARRAY_FIXED */ #define ARRAY_FULL(a) \
--- a/parray.c Tue Jan 03 17:54:35 2012 +0100 +++ b/parray.c Wed Jan 04 13:21:15 2012 +0100 @@ -27,7 +27,7 @@ static int parray_grow(struct parray *); int -parray_new(struct parray *arr) +parray_init(struct parray *arr) { /* Set defaults if needed */ arr->bsize = (arr->bsize <= 0) ? PARRAY_DEFAULT_BSIZE : arr->bsize;
--- a/parray.h Tue Jan 03 17:54:35 2012 +0100 +++ b/parray.h Wed Jan 04 13:21:15 2012 +0100 @@ -50,7 +50,7 @@ typedef void (*parray_map_fn)(void *, void *); typedef int (*parray_cmp_fn)(void *, void *); -int parray_new(struct parray *); +int parray_init(struct parray *); void parray_set(struct parray *, const char *, ...); int parray_push(struct parray *, void *); int parray_insert(struct parray *, void *, int);