From 83b7be31a1d0fc0be4e013dbfc97bb6cdc3600db Mon Sep 17 00:00:00 2001 From: Tyge Løvset Date: Sun, 27 Dec 2020 16:03:58 +0100 Subject: Removed MACRO functions in API, like cvec_size(c), cvec_empty(c). Use cvec_X_size(c) etc. Restructured benchmarks / examples. --- stc/cdeq.h | 4 ++-- stc/clist.h | 3 +-- stc/cmap.h | 4 ---- stc/cvec.h | 53 ++++++++++++++++++++++------------------------------- 4 files changed, 25 insertions(+), 39 deletions(-) (limited to 'stc') diff --git a/stc/cdeq.h b/stc/cdeq.h index b95bb45f..55168a81 100644 --- a/stc/cdeq.h +++ b/stc/cdeq.h @@ -359,7 +359,7 @@ STC_INLINE size_t _cdeq_safe_capacity(const void* base) { return base ? ((const size_t *) base)[-1] : 0; } -static inline c_minf(double x, double y) { return x < y ? x : y; } -static inline c_maxf(double x, double y) { return x > y ? x : y; } +static inline double c_minf(double x, double y) { return x < y ? x : y; } +static inline double c_maxf(double x, double y) { return x > y ? x : y; } #endif diff --git a/stc/clist.h b/stc/clist.h index af31bf96..a4636a29 100644 --- a/stc/clist.h +++ b/stc/clist.h @@ -86,7 +86,6 @@ } clist_##X##_iter_t #define clist_inits {NULL} -#define clist_empty(list) ((list).last == NULL) #define c_emplace_after(self, ctype, pos, ...) do { \ ctype* __self = self; \ @@ -110,7 +109,7 @@ STC_API size_t _clist_size(const clist_void* self); STC_INLINE clist_##X \ clist_##X##_init(void) {clist_##X x = clist_inits; return x;} \ STC_INLINE bool \ - clist_##X##_empty(clist_##X ls) {return clist_empty(ls);} \ + clist_##X##_empty(clist_##X ls) {return ls.last == NULL;} \ STC_INLINE size_t \ clist_##X##_size(clist_##X ls) {return _clist_size((const clist_void*) &ls);} \ STC_INLINE Value \ diff --git a/stc/cmap.h b/stc/cmap.h index dfaf0447..8d5fd7cd 100644 --- a/stc/cmap.h +++ b/stc/cmap.h @@ -55,11 +55,7 @@ int main(void) { #include #define cmap_inits {NULL, NULL, 0, 0, 0.85f, 0.15f} -#define cmap_empty(m) ((m).size == 0) -#define cmap_size(m) ((size_t) (m).size) #define cset_inits cmap_inits -#define cset_empty(s) cmap_empty(s) -#define cset_size(s) cmap_size(s) #define c_try_emplace(self, ctype, key, val) do { \ ctype##_result_t __r = ctype##_insert_key_(self, key); \ diff --git a/stc/cvec.h b/stc/cvec.h index 9d68e869..7c693f0d 100644 --- a/stc/cvec.h +++ b/stc/cvec.h @@ -28,9 +28,6 @@ #include #define cvec_inits {NULL} -#define cvec_size(vec) _cvec_safe_size((vec).data) -#define cvec_capacity(vec) _cvec_safe_capacity((vec).data) -#define cvec_empty(vec) (cvec_size(vec) == 0) #define using_cvec(...) c_MACRO_OVERLOAD(using_cvec, __VA_ARGS__) #define using_cvec_2(X, Value) \ @@ -56,12 +53,14 @@ \ STC_INLINE cvec_##X \ cvec_##X##_init(void) {cvec_##X vec = cvec_inits; return vec;} \ - STC_INLINE bool \ - cvec_##X##_empty(cvec_##X vec) {return cvec_empty(vec);} \ STC_INLINE size_t \ - cvec_##X##_size(cvec_##X vec) {return cvec_size(vec);} \ + cvec_##X##_size(cvec_##X vec) \ + {return vec.data ? ((const size_t *) vec.data)[-2] : 0;} \ STC_INLINE size_t \ - cvec_##X##_capacity(cvec_##X vec) {return cvec_capacity(vec);} \ + cvec_##X##_capacity(cvec_##X vec) \ + {return vec.data ? ((const size_t *) vec.data)[-1] : 0;} \ + STC_INLINE bool \ + cvec_##X##_empty(cvec_##X vec) {return !cvec_##X##_size(vec);} \ STC_INLINE Value \ cvec_##X##_value_from_raw(RawValue rawValue) {return valueFromRaw(rawValue);} \ STC_INLINE void \ @@ -159,7 +158,7 @@ cvec_##X##_back(cvec_##X* self) {return self->data + _cvec_size(self) - 1;} \ STC_INLINE cvec_##X##_value_t* \ cvec_##X##_at(cvec_##X* self, size_t i) { \ - assert(i < cvec_size(*self)); \ + assert(i < cvec_##X##_size(*self)); \ return self->data + i; \ } \ \ @@ -171,7 +170,7 @@ } \ STC_INLINE void \ cvec_##X##_sort(cvec_##X* self) { \ - cvec_##X##_sort_with(self, 0, cvec_size(*self), cvec_##X##_value_compare); \ + cvec_##X##_sort_with(self, 0, cvec_##X##_size(*self), cvec_##X##_value_compare); \ } \ \ STC_INLINE cvec_##X##_iter_t \ @@ -180,7 +179,7 @@ } \ STC_INLINE cvec_##X##_iter_t \ cvec_##X##_end(const cvec_##X* self) { \ - cvec_##X##_iter_t it = {self->data + cvec_size(*self)}; return it; \ + cvec_##X##_iter_t it = {self->data + cvec_##X##_size(*self)}; return it; \ } \ STC_INLINE void \ cvec_##X##_next(cvec_##X##_iter_t* it) {++it->ref;} \ @@ -199,8 +198,8 @@ \ STC_DEF void \ cvec_##X##_push_n(cvec_##X *self, const cvec_##X##_input_t arr[], size_t n) { \ - cvec_##X##_reserve(self, cvec_size(*self) + n); \ - cvec_##X##_value_t* p = self->data + cvec_size(*self); \ + cvec_##X##_reserve(self, cvec_##X##_size(*self) + n); \ + cvec_##X##_value_t* p = self->data + _cvec_size(self); \ for (size_t i=0; i < n; ++i) *p++ = valueFromRaw(arr[i]); \ _cvec_size(self) += n; \ } \ @@ -220,9 +219,10 @@ \ STC_DEF void \ cvec_##X##_reserve(cvec_##X* self, size_t cap) { \ - if (cap > cvec_capacity(*self)) { \ - size_t len = cvec_size(*self); \ - size_t* rep = (size_t *) c_realloc(_cvec_alloced(self->data), 2 * sizeof(size_t) + cap * sizeof(Value)); \ + size_t* rep; \ + if (cap > cvec_##X##_capacity(*self)) { \ + size_t len = cvec_##X##_size(*self); \ + rep = (size_t *) c_realloc(_cvec_alloced(self->data), 2 * sizeof(size_t) + cap * sizeof(Value)); \ self->data = (Value *) (rep + 2); \ rep[0] = len; \ rep[1] = cap; \ @@ -231,21 +231,21 @@ STC_DEF void \ cvec_##X##_resize(cvec_##X* self, size_t size, Value null_val) { \ cvec_##X##_reserve(self, size); \ - for (size_t i=cvec_size(*self); idata[i] = null_val; \ + for (size_t i=cvec_##X##_size(*self); idata[i] = null_val; \ if (self->data) _cvec_size(self) = size; \ } \ \ STC_DEF void \ cvec_##X##_push_back(cvec_##X* self, Value value) { \ - size_t len = cvec_size(*self); \ - if (len == cvec_capacity(*self)) \ + size_t len = cvec_##X##_size(*self); \ + if (len == cvec_##X##_capacity(*self)) \ cvec_##X##_reserve(self, 4 + len * 3 / 2); \ self->data[_cvec_size(self)++] = value; \ } \ \ STC_DEF cvec_##X \ cvec_##X##_clone(cvec_##X vec) { \ - size_t len = cvec_size(vec); \ + size_t len = cvec_##X##_size(vec); \ cvec_##X out = cvec_##X##_with_capacity(len); \ cvec_##X##_insert_range_p(&out, out.data, vec.data, vec.data + len); \ return out; \ @@ -253,8 +253,8 @@ \ STC_DEF cvec_##X##_iter_t \ cvec_##X##_insert_range_p(cvec_##X* self, cvec_##X##_value_t* pos, const cvec_##X##_value_t* first, const cvec_##X##_value_t* finish) { \ - size_t len = finish - first, idx = pos - self->data, size = cvec_size(*self); \ - if (size + len > cvec_capacity(*self)) \ + size_t len = finish - first, idx = pos - self->data, size = cvec_##X##_size(*self); \ + if (size + len > cvec_##X##_capacity(*self)) \ cvec_##X##_reserve(self, 4 + (size + len) * 3 / 2); \ _cvec_size(self) += len; \ pos = self->data + idx; \ @@ -311,15 +311,6 @@ typedef int(*_cvec_cmp)(const void*, const void*); STC_EXTERN_IMPORT void qsort(void *base, size_t nitems, size_t size, _cvec_cmp cmp); #define _cvec_size(self) ((size_t *) (self)->data)[-2] - -STC_INLINE size_t* _cvec_alloced(void* data) { - return data ? ((size_t *) data) - 2 : NULL; -} -STC_INLINE size_t _cvec_safe_size(const void* data) { - return data ? ((const size_t *) data)[-2] : 0; -} -STC_INLINE size_t _cvec_safe_capacity(const void* data) { - return data ? ((const size_t *) data)[-1] : 0; -} +#define _cvec_alloced(data) ((data) ? ((size_t *) (data)) - 2 : NULL) #endif -- cgit v1.2.3