From 3ce522042c4d5cfdcbdffb8428f3405166ded373 Mon Sep 17 00:00:00 2001 From: Tyge Date: Sun, 26 Apr 2020 23:30:14 +0200 Subject: More refactor. --- stc/cflist.h | 7 +++---- stc/cmap.h | 14 +++++++------- stc/cvector.h | 23 +++++++++++------------ 3 files changed, 21 insertions(+), 23 deletions(-) diff --git a/stc/cflist.h b/stc/cflist.h index bf921c36..d35ccea4 100644 --- a/stc/cflist.h +++ b/stc/cflist.h @@ -143,16 +143,15 @@ static inline cflist_##tag##_iter_t \ cflist_##tag##_begin(CFList_##tag* lst) { \ CFListNode_##tag *head = lst->last ? lst->last->next : NULL; \ - return (cflist_##tag##_iter_t) {head, &lst->last}; \ + cflist_##tag##_iter_t it = {head, &lst->last}; return it; \ } \ static inline cflist_##tag##_iter_t \ cflist_##tag##_next(cflist_##tag##_iter_t it) { \ - it.item = it.item == *it._last ? NULL : it.item->next; \ - return it; \ + it.item = it.item == *it._last ? NULL : it.item->next; return it; \ } \ static inline cflist_##tag##_iter_t \ cflist_##tag##_last(CFList_##tag* lst) { \ - return (cflist_##tag##_iter_t) {lst->last, &lst->last}; \ + cflist_##tag##_iter_t it = {lst->last, &lst->last}; return it; \ } \ \ implement_CFList_6(tag, Value, valueDestroy, valueCompare, ValueRaw, valueGetRaw) \ diff --git a/stc/cmap.h b/stc/cmap.h index 984b1329..9f3f80f2 100644 --- a/stc/cmap.h +++ b/stc/cmap.h @@ -103,11 +103,6 @@ cmap_##tag##_destroy(CMap_##tag* self); \ STC_API void \ cmap_##tag##_clear(CMap_##tag* self); \ \ -static inline void \ -cmap_##tag##_swap(CMap_##tag* a, CMap_##tag* b) { \ - c_swap(CMap_##tag, *a, *b); \ -} \ - \ STC_API void \ cmap_##tag##_setMaxLoadFactor(CMap_##tag* self, double fac); \ \ @@ -176,7 +171,7 @@ cmap_##tag##_setShrinkLimitFactor(CMap_##tag* self, double limit) { \ cmap_##tag##_reserve(self, (size_t) (cmap_size(*self) * 1.2 / limit)); \ } \ \ -STC_API size_t \ +static inline size_t \ cmap_##tag##_bucket(CMap_##tag* self, cmap_##tag##_rawkey_t* const rawKeyPtr, uint32_t* hxPtr) { \ uint32_t hash = keyHashRaw(rawKeyPtr, sizeof(cmap_##tag##_rawkey_t)), hx = (hash & cmapentry_HASH) | cmapentry_USED; \ size_t cap = cvector_capacity(self->_table); \ @@ -198,7 +193,7 @@ cmap_##tag##_get(CMap_##tag map, cmap_##tag##_rawkey_t rawKey) { \ return map._table.data[idx].hashx ? &map._table.data[idx] : NULL; \ } \ \ -STC_API void \ +static inline void \ cmap_##tag##_expand(CMap_##tag* self) { \ size_t cap = cvector_capacity(self->_table); \ if (cmap_size(*self) + 1 >= cap * self->maxLoadPercent * 0.01) \ @@ -240,6 +235,11 @@ cmap_##tag##_insert(CMap_##tag* self, CMapEntry_##tag entry) { \ return e; \ } \ \ +static inline void \ +cmap_##tag##_swap(CMap_##tag* a, CMap_##tag* b) { \ + c_swap(CMap_##tag, *a, *b); \ +} \ + \ STC_API size_t \ cmap_##tag##_reserve(CMap_##tag* self, size_t size) { \ size_t oldcap = cvector_capacity(self->_table), newcap = 1 + (size / 2) * 2; \ diff --git a/stc/cvector.h b/stc/cvector.h index 782c7954..4430a750 100644 --- a/stc/cvector.h +++ b/stc/cvector.h @@ -49,11 +49,6 @@ typedef struct CVector_##tag { \ Value* data; \ } CVector_##tag; \ \ -static inline void \ -cvector_##tag##_swap(CVector_##tag* a, CVector_##tag* b) { \ - c_swap(Value*, a->data, b->data); \ -} \ - \ STC_API void \ cvector_##tag##_destroy(CVector_##tag* self); \ \ @@ -83,19 +78,17 @@ cvector_##tag##_insert(CVector_##tag* self, size_t pos, Value value); \ STC_API void \ cvector_##tag##_erase(CVector_##tag* self, size_t pos, size_t size); \ \ -static inline int \ -cvector_##tag##_sortCompare(const void* x, const void* y) { \ - ValueRaw rx = valueGetRaw((const Value *) x); \ - ValueRaw ry = valueGetRaw((const Value *) y); \ - return valueCompare(&rx, &ry); \ -} \ - \ STC_API void \ cvector_##tag##_sort(CVector_##tag* self); \ \ STC_API size_t \ cvector_##tag##_find(CVector_##tag cv, ValueRaw rawValue); \ \ +static inline void \ +cvector_##tag##_swap(CVector_##tag* a, CVector_##tag* b) { \ + c_swap(Value*, a->data, b->data); \ +} \ + \ \ typedef struct cvector_##tag##_iter_t { \ Value *item, *end; \ @@ -185,6 +178,12 @@ cvector_##tag##_find(CVector_##tag cv, ValueRaw rawValue) { \ return c_npos; \ } \ \ +STC_API int \ +cvector_##tag##_sortCompare(const void* x, const void* y) { \ + ValueRaw rx = valueGetRaw((const Value *) x); \ + ValueRaw ry = valueGetRaw((const Value *) y); \ + return valueCompare(&rx, &ry); \ +} \ extern void qsort(void *base, size_t nitems, size_t size, int (*compar)(const void *, const void*)); \ STC_API void \ cvector_##tag##_sort(CVector_##tag* self) { \ -- cgit v1.2.3