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);