rcx

library of miscellaneous bits of C code
git clone git://git.rr3.xyz/rcx
Log | Files | Refs | README | LICENSE

commit eba7fdc831830b6e6a34f94ecd2394cdc63999a8
parent b9c673ffb02568211832f0767291afe0822114b8
Author: Robert Russell <robertrussell.72001@gmail.com>
Date:   Fri,  9 Sep 2022 20:05:27 -0700

Make vector len and cap take T*, not T**

This makes more sense. We could also make peek take T* instead.

Diffstat:
Minc/rcx/vector.h | 22+++++++++++-----------
1 file changed, 11 insertions(+), 11 deletions(-)

diff --git a/inc/rcx/vector.h b/inc/rcx/vector.h @@ -27,9 +27,9 @@ typedef struct { #define R_VECTOR_FREE free #define R_VECTOR_DECLARE(T, ...)\ +R_VECTOR_STATIC UNUSED usize R_VECTOR_METHOD(len,##__VA_ARGS__)(T *v); \ +R_VECTOR_STATIC UNUSED usize R_VECTOR_METHOD(cap,##__VA_ARGS__)(T *v); \ R_VECTOR_STATIC UNUSED void R_VECTOR_METHOD(free,##__VA_ARGS__)(T **v); \ -R_VECTOR_STATIC UNUSED usize R_VECTOR_METHOD(len,##__VA_ARGS__)(T **v); \ -R_VECTOR_STATIC UNUSED usize R_VECTOR_METHOD(cap,##__VA_ARGS__)(T **v); \ R_VECTOR_STATIC UNUSED int R_VECTOR_METHOD(resize,##__VA_ARGS__)(T **v, usize cap); \ R_VECTOR_STATIC UNUSED int R_VECTOR_METHOD(reserve,##__VA_ARGS__)(T **v, usize n); \ R_VECTOR_STATIC UNUSED int R_VECTOR_METHOD(ins,##__VA_ARGS__)(T **v, usize i, T e); \ @@ -43,17 +43,17 @@ R_VECTOR_STATIC UNUSED T R_VECTOR_METHOD(pop,##__VA_ARGS__)(T **v); \ R_VECTOR_STATIC UNUSED T R_VECTOR_METHOD(peek,##__VA_ARGS__)(T **v); #define R_VECTOR_DEFINE(T, ...)\ +usize R_VECTOR_METHOD(len,##__VA_ARGS__)(T *v) { \ + return v ? R_VECTOR_HDR_(v)->len : 0; \ +} \ +usize R_VECTOR_METHOD(cap,##__VA_ARGS__)(T *v) { \ + return v ? R_VECTOR_HDR_(v)->cap : 0; \ +} \ void R_VECTOR_METHOD(free,##__VA_ARGS__)(T **v) { \ if (*v) \ R_VECTOR_FREE(R_VECTOR_HDR_(*v)); \ *v = 0; \ } \ -usize R_VECTOR_METHOD(len,##__VA_ARGS__)(T **v) { \ - return *v ? R_VECTOR_HDR_(*v)->len : 0; \ -} \ -usize R_VECTOR_METHOD(cap,##__VA_ARGS__)(T **v) { \ - return *v ? R_VECTOR_HDR_(*v)->cap : 0; \ -} \ int R_VECTOR_METHOD(resize,##__VA_ARGS__)(T **v, usize cap) { \ if (cap == 0) { \ R_VECTOR_METHOD(free,##__VA_ARGS__)(v); \ @@ -98,7 +98,7 @@ int R_VECTOR_METHOD(ins,##__VA_ARGS__)(T **v, usize i, T e) { \ } \ int R_VECTOR_METHOD(insv,##__VA_ARGS__)(T **dst, usize i, T *src) { \ return R_VECTOR_METHOD(insn,##__VA_ARGS__)(dst, i, src, \ - R_VECTOR_METHOD(len,##__VA_ARGS__)(&src)); \ + R_VECTOR_METHOD(len,##__VA_ARGS__)(src)); \ } \ int R_VECTOR_METHOD(insn,##__VA_ARGS__)(T **dst, usize i, T *src, usize n) { \ if (R_VECTOR_METHOD(reserve,##__VA_ARGS__)(dst, n)) \ @@ -114,11 +114,11 @@ int R_VECTOR_METHOD(push,##__VA_ARGS__)(T **v, T e) { \ } \ int R_VECTOR_METHOD(cat,##__VA_ARGS__)(T **dst, T *src) { \ return R_VECTOR_METHOD(catn,##__VA_ARGS__)(dst, \ - src, R_VECTOR_METHOD(len,##__VA_ARGS__)(&src)); \ + src, R_VECTOR_METHOD(len,##__VA_ARGS__)(src)); \ } \ int R_VECTOR_METHOD(catn,##__VA_ARGS__)(T **dst, T *src, usize n) { \ return R_VECTOR_METHOD(insn,##__VA_ARGS__)(dst, \ - R_VECTOR_METHOD(len,##__VA_ARGS__)(dst), src, n); \ + R_VECTOR_METHOD(len,##__VA_ARGS__)(*dst), src, n); \ } \ T R_VECTOR_METHOD(del,##__VA_ARGS__)(T **v, usize i) { \ T e = (*v)[i]; \