X-Git-Url: http://git.madism.org/?a=blobdiff_plain;f=common%2Farray.h;h=3a8fda5f4dff1b7b3da166ae7444a6b5ab95bf24;hb=944e5baada4d41b5aa63a1247485435df9433f36;hp=55883d212e0272751efcefc6e36ede22e0e6b23d;hpb=98232498b817536cfd1e11bccb23e2f7fdd5832b;p=apps%2Fpfixtools.git diff --git a/common/array.h b/common/array.h index 55883d2..3a8fda5 100644 --- a/common/array.h +++ b/common/array.h @@ -134,7 +134,7 @@ #define array_ensure_capacity_delta(array, delta) \ array_ensure_capacity(array, (array).len + (delta)) #define array_ensure_exact_capacity(array, goal) \ - if (array_size(array) < (goal)) { \ + if ((array).size < (goal)) { \ array_ensure_can_edit(array); \ p_allocgrow(&(array).data, (goal), &(array).size); \ } @@ -160,19 +160,25 @@ array_wipe(array); \ } while (0) +#define array_len(array) (array).len +#define array_size(array) (array).size +#define array_elt_len(array) sizeof(*(array).data) +#define array_byte_len(array) ((array).len * array_elt_len(array)) + #define array_lock(array) \ - ((array).locked || \ - (mlock((array).data, (array).len * sizeof(*(array).data)) == 0 \ + ((array).locked \ + || (mlock((array).data, array_byte_len(array)) == 0 \ && ((array).locked = true))) #define array_unlock(array) \ if ((array).locked) { \ - (void)munlock((array).data, (array).len * sizeof(*(array).data)); \ + (void)munlock((array).data, array_byte_len(array)); \ (array).locked = false; \ } ARRAY(char) ARRAY(int) ARRAY(bool) +ARRAY(uint16_t) ARRAY(uint32_t) PARRAY(void)