Mercurial > code
changeset 44:295e76f7bd28
For parray, added a better PARRAY_INDEX that evaluate to the following:
if (index < 0 || arr->length == 0)
data = a->datas[0];
else if (index >= arr->length)
data = a->datas[arr->length - 1];
else
data = a->datas[index];
author | David Demelier <markand@malikania.fr> |
---|---|
date | Sun, 02 Oct 2011 19:57:07 +0200 |
parents | f1e184940197 |
children | 86dbd57a39de |
files | parray.h |
diffstat | 1 files changed, 2 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/parray.h Sun Oct 02 17:28:43 2011 +0200 +++ b/parray.h Sun Oct 02 19:57:07 2011 +0200 @@ -58,7 +58,8 @@ #define PARRAY_TAIL(a) \ a->datas[a->length - 1] #define PARRAY_INDEX(a, i) \ - a->datas[(i < 0 || i >= (a)->length) ? 0 : i] + a->datas[(i < 0 || a->length == 0) ? 0 : \ + (i >= a->length) ? a->length - 1 : i] #define PARRAY_FOREACH_R(a, var) \ for ((a)->_i = (a)->length - 1, var = PARRAY_INDEX((a), (a)->_i); \