+#define darray_insert(arr, index, ...) do { \
+ size_t __index = index; \
+ darray_resize(arr, (arr).size+1); \
+ memmove((arr).item+__index+1, (arr).item+__index, ((arr).size-__index-1)*sizeof(*(arr).item)); \
+ (arr).item[__index] = (__VA_ARGS__); \
+ } while(0)