diff options
| author | Kimplul <kimi.h.kuparinen@gmail.com> | 2025-03-18 19:58:30 +0200 |
|---|---|---|
| committer | Kimplul <kimi.h.kuparinen@gmail.com> | 2025-03-18 19:58:47 +0200 |
| commit | 7b5abecd2bef6b7441b0d850f95d451b441a6f76 (patch) | |
| tree | 73d86891a41a7bcdb99a4d74f4613dff1f62c995 /src/vec.c | |
| parent | 26b79b88ed724d89211e8c3afdebc3c747ef3f67 (diff) | |
| download | ek-7b5abecd2bef6b7441b0d850f95d451b441a6f76.tar.gz ek-7b5abecd2bef6b7441b0d850f95d451b441a6f76.zip | |
move to generic conts
Diffstat (limited to 'src/vec.c')
| -rw-r--r-- | src/vec.c | 67 |
1 files changed, 0 insertions, 67 deletions
diff --git a/src/vec.c b/src/vec.c deleted file mode 100644 index 89c5500..0000000 --- a/src/vec.c +++ /dev/null @@ -1,67 +0,0 @@ -/* SPDX-License-Identifier: copyleft-next-0.3.1 */ - -#include <stdlib.h> -#include <assert.h> -#include <string.h> - -#include <ek/vec.h> - -struct vec vec_create(size_t ns) -{ - return (struct vec) { - .n = 0, - .s = 1, - .ns = ns, - .buf = malloc(ns), - }; -} - -size_t vec_len(struct vec *v) -{ - return v->n; -} - -void *vec_at(struct vec *v, size_t i) -{ - assert(i < v->n && "out of vector bounds"); - return v->buf + i * v->ns; -} - -void *vec_back(struct vec *v) -{ - assert(v->n); - return v->buf + (v->n - 1) * v->ns; -} - -void *vec_pop(struct vec *v) -{ - assert(v->n && "attempting to pop empty vector"); - v->n--; - return v->buf + v->n * v->ns; -} - -void vec_append(struct vec *v, void *n) -{ - v->n++; - if (v->n >= v->s) { - v->s *= 2; - v->buf = realloc(v->buf, v->s * v->ns); - } - - void *p = vec_at(v, v->n - 1); - memcpy(p, n, v->ns); -} - -void vec_reset(struct vec *v) -{ - v->n = 0; -} - -void vec_destroy(struct vec *v) { - free(v->buf); -} - -void vec_sort(struct vec *v, vec_comp_t comp) -{ - qsort(v->buf, v->n, v->ns, comp); -} |
