aboutsummaryrefslogtreecommitdiff
path: root/vec.c
diff options
context:
space:
mode:
authorMartin Lehoux <martin@lehoux.net>2025-02-14 16:39:54 +0000
committerGitHub <noreply@github.com>2025-02-14 16:39:54 +0000
commit03632f51152e5e3b6bb74c29987709fbe97a9a69 (patch)
treedf6a4cbb37f084f64066e4caba0367ad4181984b /vec.c
parent8a9e6b1bd3be1041792311a86d8aac68b659e891 (diff)
parentd3d71bb044e0ae9af75bd74d4030e1d95f18a68e (diff)
Merge pull request #1 from martinlehoux/json-nested-parsing
json nested parsing
Diffstat (limited to 'vec.c')
-rw-r--r--vec.c23
1 files changed, 10 insertions, 13 deletions
diff --git a/vec.c b/vec.c
index 6962d03..8923f19 100644
--- a/vec.c
+++ b/vec.c
@@ -1,22 +1,20 @@
-#include <stdio.h>
#include <string.h>
+#include "assert.h"
#include "vec.h"
-Vec *_Vec_new(Arena *a, int size, ptrdiff_t cap, int align) {
- Vec *v = new (a, Vec, 1);
- v->data = alloc(a, cap, size, align);
- v->size = size;
- v->align = align;
- v->cap = cap;
- v->len = 0;
+Vec _Vec_new(Arena *a, int size, ptrdiff_t cap, int align) {
+ assert(cap > 0);
+ Vec v = {0};
+ v.data = alloc(a, cap, size, align);
+ v.size = size;
+ v.align = align;
+ v.cap = cap;
+ v.len = 0;
return v;
}
-Vec *Vec_push(Arena *a, Vec *v, void *data) {
- // printf("push: dest=%p, src=%p, size=%d\n", v->data + v->len * v->size,
- // data,
- // v->size);
+void Vec_push(Arena *a, Vec *v, void *data) {
if (v->len == v->cap) {
void *cpy = alloc(a, v->cap * 2, v->size, v->align);
memcpy(cpy, v->data, v->len * v->size);
@@ -24,7 +22,6 @@ Vec *Vec_push(Arena *a, Vec *v, void *data) {
}
memcpy(v->data + v->len * v->size, data, v->size);
v->len++;
- return v;
}
void *_Vec_get(Vec *v, int pos) {