1
0
mirror of https://github.com/samba-team/samba.git synced 2025-01-10 01:18:15 +03:00

replace: add ARRAY_INSERT_ELEMENT() helper

Signed-off-by: Stefan Metzmacher <metze@samba.org>
Reviewed-by: Andrew Bartlett <abartlet@samba.org>
Reviewed-by: Douglas Bagnall <douglas.bagnall@catalyst.net.nz>
This commit is contained in:
Stefan Metzmacher 2023-03-16 09:57:43 +01:00
parent 9053862b89
commit 9d8ff0d1e0

View File

@ -885,6 +885,21 @@ typedef unsigned long long ptrdiff_t ;
#define ARRAY_DEL_ELEMENT(a,i,n) \
if((i)<((n)-1)){memmove(&((a)[(i)]),&((a)[(i)+1]),(sizeof(*(a))*((n)-(i)-1)));}
/**
* Insert an array element by moving the rest one up
*
*/
#define ARRAY_INSERT_ELEMENT(__array,__old_last_idx,__new_elem,__new_idx) do { \
if ((__new_idx) < (__old_last_idx)) { \
const void *__src = &((__array)[(__new_idx)]); \
void *__dst = &((__array)[(__new_idx)+1]); \
size_t __num = (__old_last_idx)-(__new_idx); \
size_t __len = sizeof(*(__array)) * __num; \
memmove(__dst, __src, __len); \
} \
(__array)[(__new_idx)] = (__new_elem); \
} while(0)
/**
* Pointer difference macro
*/