diff options
| author | Tyge Løvset <[email protected]> | 2021-04-10 23:38:31 +0200 |
|---|---|---|
| committer | Tyge Løvset <[email protected]> | 2021-04-10 23:38:31 +0200 |
| commit | 4db3f43304da1c0b12dcefd15f9f80a4e5a76c79 (patch) | |
| tree | 6813a64a137a7112759a75cd7e7b55b3987d62d8 | |
| parent | 5f80d1cd671d8d03ae1100df2df015a130f75bed (diff) | |
| download | STC-modified-4db3f43304da1c0b12dcefd15f9f80a4e5a76c79.tar.gz STC-modified-4db3f43304da1c0b12dcefd15f9f80a4e5a76c79.zip | |
Some final code move.
| -rw-r--r-- | stc/cdeq.h | 11 | ||||
| -rw-r--r-- | stc/clist.h | 14 | ||||
| -rw-r--r-- | stc/cmap.h | 38 | ||||
| -rw-r--r-- | stc/csmap.h | 19 | ||||
| -rw-r--r-- | stc/cvec.h | 13 |
5 files changed, 51 insertions, 44 deletions
@@ -28,6 +28,7 @@ #include <string.h>
#define using_cdeq(...) c_MACRO_OVERLOAD(using_cdeq, __VA_ARGS__)
+
#define using_cdeq_2(X, Value) \
using_cdeq_3(X, Value, c_default_compare)
#define using_cdeq_3(X, Value, valueCompare) \
@@ -38,10 +39,16 @@ using_cdeq_7(X, Value, valueCompare, valueDel, valueClone, c_trivial_toraw, Value)
#define using_cdeq_7(X, Value, valueCompareRaw, valueDel, valueFromRaw, valueToRaw, RawValue) \
_c_using_cdeq(cdeq_##X, Value, valueCompareRaw, valueDel, valueFromRaw, valueToRaw, RawValue)
+
#define using_cdeq_str() \
_c_using_cdeq(cdeq_str, cstr_t, cstr_compare_raw, cstr_del, cstr_from, cstr_c_str, const char*)
+struct cdeq_rep { size_t size, cap; void* base[]; };
+#define cdeq_rep_(self) c_container_of((self)->_base, struct cdeq_rep, base)
+typedef int (*c_cmp_fn)(const void*, const void*);
+
+
#define _c_using_cdeq(CX, Value, valueCompareRaw, valueDel, valueFromRaw, valueToRaw, RawValue) \
\
typedef Value CX##_value_t; \
@@ -178,10 +185,6 @@ _c_implement_cdeq(CX, Value, valueCompareRaw, valueDel, valueFromRaw, valueToRaw, RawValue) \
struct stc_trailing_semicolon
-struct cdeq_rep { size_t size, cap; void* base[]; };
-#define cdeq_rep_(self) c_container_of((self)->_base, struct cdeq_rep, base)
-typedef int (*c_cmp_fn)(const void*, const void*);
-
/* -------------------------- IMPLEMENTATION ------------------------- */
#if !defined(STC_HEADER) || defined(STC_IMPLEMENTATION)
diff --git a/stc/clist.h b/stc/clist.h index fd484bad..66a42a2d 100644 --- a/stc/clist.h +++ b/stc/clist.h @@ -67,9 +67,11 @@ using_clist_7(X, Value, valueCompare, valueDel, valueClone, c_trivial_toraw, Value)
#define using_clist_7(X, Value, valueCompareRaw, valueDel, valueFromRaw, valueToRaw, RawValue) \
_c_using_clist(clist_##X, Value, valueCompareRaw, valueDel, valueFromRaw, valueToRaw, RawValue)
+
#define using_clist_str() \
_c_using_clist(clist_str, cstr_t, cstr_compare_raw, cstr_del, cstr_from, cstr_c_str, const char*)
+
#define _c_using_clist_types(CX, Value) \
typedef Value CX##_value_t; \
\
@@ -87,6 +89,10 @@ CX##_value_t *ref; \
} CX##_iter_t
+_c_using_clist_types(clist_VOID, int);
+STC_API size_t _clist_size(const clist_VOID* self);
+#define _clist_node(CX, vp) c_container_of(vp, CX##_node_t, value)
+
#define _c_using_clist(CX, Value, valueCompareRaw, valueDel, valueFromRaw, valueToRaw, RawValue) \
\
@@ -125,7 +131,6 @@ \
STC_API void CX##_splice(CX* self, CX##_iter_t it, CX* other); \
STC_API CX CX##_split(CX* self, CX##_iter_t it1, CX##_iter_t it2); \
-\
STC_API void CX##_sort(CX* self); \
STC_API CX##_iter_t CX##_find_in_range(const CX* self, CX##_iter_t it1, CX##_iter_t it2, RawValue val); \
\
@@ -137,15 +142,18 @@ CX##_value_t* head = self->last ? &self->last->next->value : NULL; \
CX##_iter_t it = {&self->last, self->last, head}; return it; \
} \
+\
STC_INLINE CX##_iter_t \
CX##_end(const CX* self) { \
CX##_iter_t it = {NULL}; return it; \
} \
+\
STC_INLINE void \
CX##_next(CX##_iter_t* it) { \
CX##_node_t* node = it->_prev = _clist_node(CX, it->ref); \
it->ref = (node == *it->_last ? NULL : &node->next->value); \
} \
+\
STC_INLINE CX##_iter_t \
CX##_fwd(CX##_iter_t it, size_t n) { \
while (n-- && it.ref) CX##_next(&it); \
@@ -167,10 +175,6 @@ _c_implement_clist(CX, Value, valueCompareRaw, valueDel, valueFromRaw, valueToRaw, RawValue) \
struct stc_trailing_semicolon
-_c_using_clist_types(clist_VOID, int);
-STC_API size_t _clist_size(const clist_VOID* self);
-#define _clist_node(CX, vp) c_container_of(vp, CX##_node_t, value)
-
/* -------------------------- IMPLEMENTATION ------------------------- */
#if !defined(STC_HEADER) || defined(STC_IMPLEMENTATION)
@@ -63,12 +63,11 @@ int main(void) { #define using_cmap_7(X, Key, Mapped, keyEquals, keyHash, mappedDel, mappedClone) \
using_cmap_9(X, Key, Mapped, keyEquals, keyHash, \
mappedDel, mappedClone, c_trivial_toraw, Mapped)
-
#define using_cmap_9(X, Key, Mapped, keyEquals, keyHash, \
mappedDel, mappedFromRaw, mappedToRaw, RawMapped) \
- _c_using_chash(cmap_##X, cmap_, Key, Mapped, keyEquals, keyHash, \
- mappedDel, mappedFromRaw, mappedToRaw, RawMapped, \
- c_trivial_del, c_trivial_fromraw, c_trivial_toraw, Key)
+ using_cmap_13(X, Key, Mapped, keyEquals, keyHash, \
+ mappedDel, mappedFromRaw, mappedToRaw, RawMapped, \
+ c_trivial_del, c_trivial_fromraw, c_trivial_toraw, Key)
#define using_cmap_13(X, Key, Mapped, keyEqualsRaw, keyHashRaw, \
mappedDel, mappedFromRaw, mappedToRaw, RawMapped, \
@@ -129,6 +128,21 @@ int main(void) { cstr_del, cstr_from, cstr_c_str, const char*, \
keyDel, keyFromRaw, keyToRaw, RawKey)
+#define SET_ONLY_cmap_(...)
+#define MAP_ONLY_cmap_(...) __VA_ARGS__
+#define KEY_REF_cmap_(vp) (&(vp)->first)
+#ifndef CMAP_SIZE_T
+#define CMAP_SIZE_T uint32_t
+#endif
+#define _cmap_inits {NULL, NULL, 0, 0, 0.15f, 0.85f}
+typedef struct {size_t idx; uint_fast8_t hx;} chash_bucket_t; \
+
+STC_API uint64_t c_default_hash(const void *data, size_t len);
+STC_INLINE uint64_t c_default_hash32(const void* data, size_t ignored)
+ {return *(const uint32_t *)data * 0xc6a4a7935bd1e99d;}
+STC_INLINE uint64_t c_default_hash64(const void* data, size_t ignored)
+ {return *(const uint64_t *)data * 0xc6a4a7935bd1e99d;}
+
#define _c_using_chash(CX, C, Key, Mapped, keyEqualsRaw, keyHashRaw, \
mappedDel, mappedFromRaw, mappedToRaw, RawMapped, \
@@ -289,22 +303,6 @@ int main(void) { keyDel, keyFromRaw, keyToRaw, RawKey) \
struct stc_trailing_semicolon
-
-#define SET_ONLY_cmap_(...)
-#define MAP_ONLY_cmap_(...) __VA_ARGS__
-#define KEY_REF_cmap_(vp) (&(vp)->first)
-#ifndef CMAP_SIZE_T
-#define CMAP_SIZE_T uint32_t
-#endif
-#define _cmap_inits {NULL, NULL, 0, 0, 0.15f, 0.85f}
-typedef struct {size_t idx; uint_fast8_t hx;} chash_bucket_t; \
-
-STC_API uint64_t c_default_hash(const void *data, size_t len);
-STC_INLINE uint64_t c_default_hash32(const void* data, size_t ignored)
- {return *(const uint32_t *)data * 0xc6a4a7935bd1e99d;}
-STC_INLINE uint64_t c_default_hash64(const void* data, size_t ignored)
- {return *(const uint64_t *)data * 0xc6a4a7935bd1e99d;}
-
/* -------------------------- IMPLEMENTATION ------------------------- */
#if !defined(STC_HEADER) || defined(STC_IMPLEMENTATION)
diff --git a/stc/csmap.h b/stc/csmap.h index 732d3713..7171a128 100644 --- a/stc/csmap.h +++ b/stc/csmap.h @@ -59,7 +59,6 @@ int main(void) { using_csmap_6(X, Key, Mapped, keyCompare, mappedDel, c_no_clone)
#define using_csmap_6(X, Key, Mapped, keyCompare, mappedDel, mappedClone) \
using_csmap_8(X, Key, Mapped, keyCompare, mappedDel, mappedClone, c_trivial_toraw, Mapped)
-
#define using_csmap_8(X, Key, Mapped, keyCompare, mappedDel, mappedFromRaw, mappedToRaw, RawMapped) \
using_csmap_12(X, Key, Mapped, keyCompare, \
mappedDel, mappedFromRaw, mappedToRaw, RawMapped, \
@@ -124,6 +123,15 @@ int main(void) { cstr_del, cstr_from, cstr_c_str, const char*, \
keyDel, keyFromRaw, keyToRaw, RawKey)
+#define SET_ONLY_csmap_(...)
+#define MAP_ONLY_csmap_(...) __VA_ARGS__
+#define KEY_REF_csmap_(vp) (&(vp)->first)
+#ifndef CSMAP_SIZE_T
+#define CSMAP_SIZE_T uint32_t
+#endif
+struct csmap_rep { size_t root, disp, head, size, cap; void* nodes[]; };
+#define _csmap_rep(self) c_container_of((self)->nodes, struct csmap_rep, nodes)
+
#define _c_using_aatree(CX, C, Key, Mapped, keyCompareRaw, \
mappedDel, mappedFromRaw, mappedToRaw, RawMapped, \
@@ -287,15 +295,6 @@ int main(void) { keyDel, keyFromRaw, keyToRaw, RawKey) \
struct stc_trailing_semicolon
-#define SET_ONLY_csmap_(...)
-#define MAP_ONLY_csmap_(...) __VA_ARGS__
-#define KEY_REF_csmap_(vp) (&(vp)->first)
-#ifndef CSMAP_SIZE_T
-#define CSMAP_SIZE_T uint32_t
-#endif
-struct csmap_rep { size_t root, disp, head, size, cap; void* nodes[]; };
-#define _csmap_rep(self) c_container_of((self)->nodes, struct csmap_rep, nodes)
-
/* -------------------------- IMPLEMENTATION ------------------------- */
#if !defined(STC_HEADER) || defined(STC_IMPLEMENTATION)
@@ -28,6 +28,7 @@ #include <string.h>
#define using_cvec(...) c_MACRO_OVERLOAD(using_cvec, __VA_ARGS__)
+
#define using_cvec_2(X, Value) \
using_cvec_3(X, Value, c_default_compare)
#define using_cvec_3(X, Value, valueCompare) \
@@ -38,10 +39,16 @@ using_cvec_7(X, Value, valueCompare, valueDel, valueClone, c_trivial_toraw, Value)
#define using_cvec_7(X, Value, valueCompareRaw, valueDel, valueFromRaw, valueToRaw, RawValue) \
_c_using_cvec(cvec_##X, Value, valueCompareRaw, valueDel, valueFromRaw, valueToRaw, RawValue)
+
#define using_cvec_str() \
_c_using_cvec(cvec_str, cstr_t, cstr_compare_raw, cstr_del, cstr_from, cstr_c_str, const char*)
-
+
+struct cvec_rep { size_t size, cap; void* data[]; };
+#define _cvec_rep(self) c_container_of((self)->data, struct cvec_rep, data)
+typedef int (*c_cmp_fn)(const void*, const void*);
+
+
#define _c_using_cvec(CX, Value, valueCompareRaw, valueDel, valueFromRaw, valueToRaw, RawValue) \
\
typedef Value CX##_value_t; \
@@ -183,10 +190,6 @@ _c_implement_cvec(CX, Value, valueCompareRaw, valueDel, valueFromRaw, valueToRaw, RawValue) \
struct stc_trailing_semicolon
-struct cvec_rep { size_t size, cap; void* data[]; };
-#define _cvec_rep(self) c_container_of((self)->data, struct cvec_rep, data)
-typedef int (*c_cmp_fn)(const void*, const void*);
-
/* -------------------------- IMPLEMENTATION ------------------------- */
#if !defined(STC_HEADER) || defined(STC_IMPLEMENTATION)
|
