diff options
| author | Martin Lehoux <martin@lehoux.net> | 2025-02-14 16:39:54 +0000 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-02-14 16:39:54 +0000 |
| commit | 03632f51152e5e3b6bb74c29987709fbe97a9a69 (patch) | |
| tree | df6a4cbb37f084f64066e4caba0367ad4181984b /vec.c | |
| parent | 8a9e6b1bd3be1041792311a86d8aac68b659e891 (diff) | |
| parent | d3d71bb044e0ae9af75bd74d4030e1d95f18a68e (diff) | |
Merge pull request #1 from martinlehoux/json-nested-parsing
json nested parsing
Diffstat (limited to 'vec.c')
| -rw-r--r-- | vec.c | 23 |
1 files changed, 10 insertions, 13 deletions
@@ -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) { |
