X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=src%2Fdarray.h;h=b75d85f98b0b4aff3511da076612f0c375f2ce44;hb=5b3774ace991a396752ff0a846fdfb5c38424551;hp=c30fd7ded767f09aae7223136779789d6b32656a;hpb=a3e110d605c469a59b692465f5bc0e5ce5214779;p=platform%2Fupstream%2Flibxkbcommon.git diff --git a/src/darray.h b/src/darray.h index c30fd7d..b75d85f 100644 --- a/src/darray.h +++ b/src/darray.h @@ -104,7 +104,7 @@ typedef darray (unsigned long) darray_ulong; #define darray_from_items(arr, items, count) do { \ unsigned __count = (count); \ darray_resize(arr, __count); \ - if (count != 0) \ + if (__count != 0) \ memcpy((arr).item, items, __count * sizeof(*(arr).item)); \ } while (0) @@ -114,6 +114,11 @@ typedef darray (unsigned long) darray_ulong; #define darray_concat(arr_to, arr_from) \ darray_append_items((arr_to), (arr_from).item, (arr_from).size) +/*** Removal ***/ + +/* Warning: Do not call darray_remove_last on an empty darray. */ +#define darray_remove_last(arr) (--(arr).size) + /*** String buffer ***/ #define darray_append_string(arr, str) do { \ @@ -206,4 +211,7 @@ darray_next_alloc(unsigned alloc, unsigned need, unsigned itemSize) (idx) < (arr).size; \ (idx)++, (val)++) +#define darray_foreach_reverse(i, arr) \ + for ((i) = &(arr).item[(arr).size - 1]; (arr).size > 0 && (i) >= &(arr).item[0]; (i)--) + #endif /* CCAN_DARRAY_H */