aboutsummaryrefslogtreecommitdiff
path: root/src/vec.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/vec.h')
-rw-r--r--src/vec.h8
1 files changed, 8 insertions, 0 deletions
diff --git a/src/vec.h b/src/vec.h
index e39c09c..bd8723c 100644
--- a/src/vec.h
+++ b/src/vec.h
@@ -22,6 +22,7 @@
T* T##Vector_end(T##Vector *self); \
T* T##Vector_ref(T##Vector *self, size_t n); \
void T##Vector_swap(T##Vector *self, int i, int j); \
+ T##Vector T##Vector_move(T##Vector *self); \
void T##Vector_free(T##Vector *self);
#define VECTOR_IMPL(T) \
@@ -73,6 +74,13 @@
memcpy(self->buffer + i, self->buffer + j, sizeof(T)); \
memcpy(self->buffer + j, &buf, sizeof(T)); \
} \
+ T##Vector T##Vector_move(T##Vector *self) { \
+ T##Vector dup = *self; \
+ self->buffer = NULL; \
+ self->size = 0; \
+ self->cap = 0; \
+ return dup; \
+ } \
void T##Vector_free(T##Vector *self) { free(self->buffer); }
VECTOR_DEF(Int);