Mercurial > code
diff parray.h @ 51:82bbd3b869e3
Fix some problem with ()
author | David Demelier <markand@malikania.fr> |
---|---|
date | Fri, 07 Oct 2011 17:43:48 +0200 |
parents | 2901c594eaef |
children | 8a8db17c02a4 |
line wrap: on
line diff
--- 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); \