Mercurial > code
changeset 51:82bbd3b869e3
Fix some problem with ()
author | David Demelier <markand@malikania.fr> |
---|---|
date | Fri, 07 Oct 2011 17:43:48 +0200 |
parents | 2901c594eaef |
children | 14c0b77f679b |
files | array.h parray.h |
diffstat | 2 files changed, 18 insertions(+), 25 deletions(-) [+] |
line wrap: on
line diff
--- a/array.h Fri Oct 07 16:58:58 2011 +0200 +++ b/array.h Fri Oct 07 17:43:48 2011 +0200 @@ -55,20 +55,21 @@ void array_free(struct array *); #define ARRAY_HEAD(a) \ - a->data + (a->data) #define ARRAY_TAIL(a) \ - (void *) ((char *) a->data + \ - (a->unit * ((a->length == 0) ? 0 : (a->length - 1)))) + ((void *) ((char *) (a)->data + \ + ((a)->unit * (((a)->length == 0) ? 0 : ((a)->length - 1))))) +#define ARRAY_INDEX(a, i) \ + (((i) < 0 || (a)->length == 0) ? (ARRAY_HEAD((a))) /* < 0 head */ \ + : ((i) >= (a)->length) ? (ARRAY_TAIL((a))) /* > l tail */ \ + : ((void *) ((char *) (a)->data + ((a)->unit * (i))))) /* correct */ -#define ARRAY_INDEX(a, i) \ - (void *) (i < 0 || a->length == 0) ? ARRAY_HEAD(a) /* < 0 head */ \ - : (i >= a->length) ? ARRAY_TAIL(a) /* > l tail */ \ - : ((char *) a->data + (a->unit * i)) /* correct */ +#define ARRAY_FOREACH_R(a, var) \ + for ((a)->i = 0, var = ARRAY_TAIL((a)); \ + (a)->i < (a)->length; ++(a)->i, --var) #define ARRAY_FOREACH(a, var) \ - for (a->i = 0, var = a->data; a->i < a->length; ++a->i, ++var) + for ((a)->i = 0, var = (a)->data; (a)->i < (a)->length; ++(a)->i, ++var) -#define ARRAY_FOREACH_R(a, var) \ - for (a->i = 0, var = ARRAY_TAIL(a); a->i < a->length; ++a->i, --var) #endif /* _ARRAY_H_ */
--- a/parray.h Fri Oct 07 16:58:58 2011 +0200 +++ b/parray.h Fri Oct 07 17:43:48 2011 +0200 @@ -54,25 +54,17 @@ void parray_free(struct parray *); #define PARRAY_HEAD(a) \ - a->datas[0] + (a->datas[0]) #define PARRAY_TAIL(a) \ - a->datas[(a->length == 0) ? 0 : a->length - 1] - -#if 0 + (a->datas[(a->length == 0) ? 0 : a->length - 1]) #define PARRAY_INDEX(a, i) \ - a->datas[(i < 0 || a->length == 0) ? 0 /* < 0 head */ \ - : (i >= a->length) ? a->length - 1 /* > l tail */ \ - : i] /* correct */ -#endif - -#define PARRAY_INDEX(a, i) \ - ((i < 0 || a->length == 0) ? PARRAY_HEAD(a) /* < 0 head */ \ - : (i >= a->length) ? PARRAY_TAIL(a) /* > l tail */ \ - : a->datas[i]) /* correct */ + (((i) < 0 || (a)->length == 0) ? (PARRAY_HEAD((a))) /* < 0 head */ \ + : ((i) >= (a)->length) ? (PARRAY_TAIL((a))) /* > l tail */ \ + : ((a)->datas[i])) /* correct */ #define PARRAY_FOREACH_R(a, var) \ - for ((a)->i = (a)->length - 1, var = PARRAY_INDEX((a), (a)->i); \ - (a)->i >= 0; --(a)->i, var = PARRAY_INDEX((a), (a)->i)) + for ((a)->i = 0, var = PARRAY_TAIL((a)); \ + (a)->i < (a)->length; ++(a)->i, var = PARRAY_INDEX((a), (a)->i)) #define PARRAY_FOREACH(a, var) \ for ((a)->i = 0, var = PARRAY_INDEX((a), (a)->i); \