aboutsummaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
Diffstat (limited to 'include')
-rw-r--r--include/dynarr.h15
1 files changed, 14 insertions, 1 deletions
diff --git a/include/dynarr.h b/include/dynarr.h
index 7edb035..52cacc5 100644
--- a/include/dynarr.h
+++ b/include/dynarr.h
@@ -3,9 +3,22 @@
#include <string.h>
+#include "_alloc_fn.h"
#include "alloc.h"
-#define dynarr(T) struct { T *buf; size_t len, cap; }
+#define dynarr(T) \
+ struct { \
+ T *buf; \
+ size_t len, cap; \
+ alloc_fn alloc; \
+ void *ctx; \
+ }
+
+void *dapush(void *, void *, size_t, size_t);
+
+#define dapush(da, ...) \
+ dapush((da), ((typeof(__VA_ARGS__)[1]){__VA_ARGS__}), sizeof(__VA_ARGS__), \
+ alignof(__VA_ARGS__))
#define DAGROW(da, n) \
do { \