|
|
@@ -35,6 +35,12 @@
|
|
|
free((da).items); \
|
|
|
} while(0)
|
|
|
|
|
|
+#define DA_INC_CAP(da) \
|
|
|
+ (da).items = _realloc((da).items, \
|
|
|
+ (da).cap, \
|
|
|
+ ((da).cap*2) * sizeof(*(da).items)); \
|
|
|
+ (da).cap *= 2;
|
|
|
+
|
|
|
#define DA_CLEAR(da) \
|
|
|
do { \
|
|
|
(da).size = 0; \
|
|
|
@@ -59,9 +65,7 @@
|
|
|
break; \
|
|
|
} \
|
|
|
if ( (da).size+1 >= (da).cap ) { \
|
|
|
- (da).cap *= 2; \
|
|
|
- (da).items = realloc((da).items, \
|
|
|
- (da).cap * sizeof(*(da).items)); \
|
|
|
+ DA_INC_CAP(da) \
|
|
|
} \
|
|
|
memmove((da).items+index+1, (da).items+index, \
|
|
|
(da).cap - index); \
|
|
|
@@ -75,11 +79,7 @@
|
|
|
#define DA_APPEND(da, item) \
|
|
|
do { \
|
|
|
if ( (da).size+1 >= (da).cap ) { \
|
|
|
- (da).items = _realloc((da).items, \
|
|
|
- (da).cap, \
|
|
|
- ((da).cap*2) \
|
|
|
- * sizeof(*(da).items)); \
|
|
|
- (da).cap *= 2; \
|
|
|
+ DA_INC_CAP(da) \
|
|
|
} \
|
|
|
(da).items[(da).size++] = item; \
|
|
|
} while(0)
|