diff array.h @ 8:127254037b30

Switch to a void * array instead of void **
author David Demelier <markand@malikania.fr>
date Wed, 07 Sep 2011 20:12:40 +0200
parents 25cc379de564
children 596f33ecc087
line wrap: on
line diff
--- a/array.h	Wed Sep 07 07:33:25 2011 +0200
+++ b/array.h	Wed Sep 07 20:12:40 2011 +0200
@@ -22,8 +22,8 @@
 #define ARRAY_DEFAULT_BSIZE	128
 
 struct array {
-	void	**data;	/* array of data */
-	size_t	length;	/* number of element in array */
+	void	*data;	/* array of data */
+	int	length;	/* number of element inside */
 
 #define ARRAY_FIXED	0x00000000
 #define ARRAY_AUTO	0x00000001
@@ -31,12 +31,13 @@
 
 	/* Private should not be modified by user */
 	size_t	size;	/* current buffer size */
-	size_t	bsize;	/* block size */
+	size_t	bsize;	/* block size (used when growing array) */
+	size_t	unit;	/* unit size (sizeof the object) */
 };
 
-struct array	*array_new(const void *, size_t, int);
-#define array_new_auto(size)	array_new(NULL, size, ARRAY_AUTO)
-#define array_new_fixed(max)	array_new(NULL, max, ARRAY_FIXED)
+struct array	*array_new(const void *, size_t, size_t, int);
+#define array_new_auto(size)		array_new(NULL, size, 0, ARRAY_AUTO)
+#define array_new_fixed(size, max)	array_new(NULL, size, max, ARRAY_FIXED)
 
 int	array_push(struct array *, const void *);
 int	array_insert(struct array *, const void *, int);
@@ -46,12 +47,12 @@
 void	*array_remove(struct array *, int);
 void	array_map(struct array *, void (*fn)(void *, void *), void *);
 void	*array_find(struct array *, int (*fn)(void *, void *), void *, int *);
-void	array_clear(struct array *, int);
-void	array_free(struct array *, int);
+void	array_clear(struct array *);
+void	array_free(struct array *);
 
 #define ARRAY_FOREACH(array, entry, tmp, type)					\
 	for ((tmp) = (type **) (array)->data, entry = *tmp;			\
 	    (entry) != NULL;							\
 	    ++(tmp), (entry) = (*tmp))
 
-#endif /* _ARRAY_H */
+#endif /* _ARRAY_H_ */