diff options
| author | Tyge <[email protected]> | 2020-04-26 23:30:14 +0200 |
|---|---|---|
| committer | Tyge <[email protected]> | 2020-04-26 23:30:14 +0200 |
| commit | 3ce522042c4d5cfdcbdffb8428f3405166ded373 (patch) | |
| tree | 438f63f42da8021e8a1bd2a3eec0063f55f205bf | |
| parent | 782a2e7e627db4a8c5625b8986ea4a92b51e7808 (diff) | |
| download | STC-modified-3ce522042c4d5cfdcbdffb8428f3405166ded373.tar.gz STC-modified-3ce522042c4d5cfdcbdffb8428f3405166ded373.zip | |
More refactor.
| -rw-r--r-- | stc/cflist.h | 7 | ||||
| -rw-r--r-- | stc/cmap.h | 14 | ||||
| -rw-r--r-- | 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) \ @@ -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) { \
|
