summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--examples/advanced.c4
-rw-r--r--stc/cmap.h70
2 files changed, 37 insertions, 37 deletions
diff --git a/examples/advanced.c b/examples/advanced.c
index a79caaee..b3f2f380 100644
--- a/examples/advanced.c
+++ b/examples/advanced.c
@@ -50,8 +50,8 @@ Viking viking_fromVw(VikingVw vw) {
}
// Using the full using_cmap() macro to define [Viking -> int] hash map type:
-using_cmap(vk, Viking, int, c_default_del, vikingvw_equals, vikingvw_hash,
- viking_del, VikingVw, viking_fromVw, viking_toVw);
+using_cmap(vk, Viking, int, c_default_del, vikingvw_equals, vikingvw_hash, viking_del,
+ viking_fromVw, viking_toVw, VikingVw);
// cmap_vk uses vikingvw_hash() for hash value calculations, and vikingvw_equals() for equality test.
// cmap_vk_del() will free all memory allocated for Viking keys and the hash table values.
diff --git a/stc/cmap.h b/stc/cmap.h
index 4cad04f3..85ff4b9f 100644
--- a/stc/cmap.h
+++ b/stc/cmap.h
@@ -79,18 +79,18 @@ typedef struct {size_t idx; uint32_t hx;} cmap_bucket_t, cset_bucket_t;
using_cmap_6(X, Key, Mapped, mappedDel, c_default_equals, c_default_hash)
#define using_cmap_6(X, Key, Mapped, mappedDel, keyEquals, keyHash) \
- using_cmap_10(X, Key, Mapped, mappedDel, keyEquals, keyHash, \
- c_default_del, Key, c_default_from_raw, c_default_to_raw)
+ using_cmap_10(X, Key, Mapped, mappedDel, keyEquals, keyHash, c_default_del, \
+ c_default_from_raw, c_default_to_raw, Key)
-#define using_cmap_10(X, Key, Mapped, mappedDel, keyEqualsRaw, keyHashRaw, \
- keyDel, RawKey, keyFromRaw, keyToRaw) \
- _using_CHASH(X, cmap, Key, Mapped, mappedDel, keyEqualsRaw, keyHashRaw, \
- keyDel, RawKey, keyFromRaw, keyToRaw, Mapped, c_default_from_raw)
+#define using_cmap_10(X, Key, Mapped, mappedDel, keyEqualsRaw, keyHashRaw, keyDel, \
+ keyFromRaw, keyToRaw, RawKey) \
+ _using_CHASH(X, cmap, Key, Mapped, mappedDel, keyEqualsRaw, keyHashRaw, keyDel, \
+ keyFromRaw, keyToRaw, RawKey, Mapped, c_default_from_raw)
-#define using_cmap_12(X, Key, Mapped, mappedDel, keyEqualsRaw, keyHashRaw, \
- keyDel, RawKey, keyFromRaw, keyToRaw, RawMapped, mappedFromRaw) \
- _using_CHASH(X, cmap, Key, Mapped, mappedDel, keyEqualsRaw, keyHashRaw, \
- keyDel, RawKey, keyFromRaw, keyToRaw, RawMapped, mappedFromRaw)
+#define using_cmap_12(X, Key, Mapped, mappedDel, keyEqualsRaw, keyHashRaw, keyDel, \
+ keyFromRaw, keyToRaw, RawKey, RawMapped, mappedFromRaw) \
+ _using_CHASH(X, cmap, Key, Mapped, mappedDel, keyEqualsRaw, keyHashRaw, keyDel, \
+ keyFromRaw, keyToRaw, RawKey, RawMapped, mappedFromRaw)
/* cset: */
#define using_cset(...) \
@@ -100,24 +100,22 @@ typedef struct {size_t idx; uint32_t hx;} cmap_bucket_t, cset_bucket_t;
using_cset_4(X, Key, c_default_equals, c_default_hash)
#define using_cset_4(X, Key, keyEquals, keyHash) \
- using_cset_5(X, Key, keyEquals, keyHash, c_default_del)
+ using_cset_6(X, Key, keyEquals, keyHash, c_default_del, c_default_from_raw)
-#define using_cset_5(X, Key, keyEquals, keyHash, keyDel) \
- using_cset_8(X, Key, keyEquals, keyHash, keyDel, \
- Key, c_default_from_raw, c_default_to_raw)
+#define using_cset_6(X, Key, keyEquals, keyHash, keyDel, keyClone) \
+ using_cset_8(X, Key, keyEquals, keyHash, keyDel, keyClone, c_default_to_raw, Key)
-#define using_cset_8(X, Key, keyEqualsRaw, keyHashRaw, keyDel, \
- RawKey, keyFromRaw, keyToRaw) \
- _using_CHASH(X, cset, Key, Key, void, keyEqualsRaw, keyHashRaw, \
- keyDel, RawKey, keyFromRaw, keyToRaw, void, c_default_from_raw)
+#define using_cset_8(X, Key, keyEqualsRaw, keyHashRaw, keyDel, keyFromRaw, keyToRaw, RawKey) \
+ _using_CHASH(X, cset, Key, Key, void, keyEqualsRaw, keyHashRaw, keyDel, \
+ keyFromRaw, keyToRaw, RawKey, void, c_default_from_raw)
/* cset_str, cmap_str, cmap_strkey, cmap_strval: */
#define using_cset_str() \
_using_CHASH_strkey(str, cset, cstr_t, void)
#define using_cmap_str() \
- _using_CHASH(str, cmap, cstr_t, cstr_t, cstr_del, cstr_equals_raw, cstr_hash_raw, \
- cstr_del, const char*, cstr_from, cstr_to_raw, const char*, cstr_from)
+ _using_CHASH(str, cmap, cstr_t, cstr_t, cstr_del, cstr_equals_raw, cstr_hash_raw, cstr_del, \
+ cstr_from, cstr_to_raw, const char*, const char*, cstr_from)
#define using_cmap_strkey(...) \
c_MACRO_OVERLOAD(using_cmap_strkey, __VA_ARGS__)
@@ -135,17 +133,19 @@ typedef struct {size_t idx; uint32_t hx;} cmap_bucket_t, cset_bucket_t;
using_cmap_strval_4(X, Key, c_default_equals, c_default_hash)
#define using_cmap_strval_4(X, Key, keyEquals, keyHash) \
- using_cmap_strval_8(X, Key, keyEquals, keyHash, \
- c_default_del, Key, c_default_from_raw, c_default_to_raw)
+ using_cmap_strval_6(X, Key, keyEquals, keyHash, c_default_del, c_default_from_raw)
-#define using_cmap_strval_8(X, Key, keyEquals, keyHash, keyDel, RawKey, keyFromRaw, keyToRaw) \
- _using_CHASH(X, cmap, Key, cstr_t, cstr_del, keyEquals, keyHash, \
- keyDel, RawKey, keyFromRaw, keyToRaw, const char*, cstr_from)
+#define using_cmap_strval_6(X, Key, keyEquals, keyHash, keyDel, keyClone) \
+ using_cmap_strval_8(X, Key, keyEquals, keyHash, keyDel, keyClone, c_default_to_raw, Key)
+
+#define using_cmap_strval_8(X, Key, keyEquals, keyHash, keyDel, keyFromRaw, keyToRaw, RawKey) \
+ _using_CHASH(X, cmap, Key, cstr_t, cstr_del, keyEquals, keyHash, keyDel, \
+ keyFromRaw, keyToRaw, RawKey, const char*, cstr_from)
#define _using_CHASH_strkey(X, ctype, Mapped, mappedDel) \
- _using_CHASH(X, ctype, cstr_t, Mapped, mappedDel, cstr_equals_raw, cstr_hash_raw, \
- cstr_del, const char*, cstr_from, cstr_to_raw, Mapped, c_default_from_raw)
+ _using_CHASH(X, ctype, cstr_t, Mapped, mappedDel, cstr_equals_raw, cstr_hash_raw, cstr_del, \
+ cstr_from, cstr_to_raw, const char*, Mapped, c_default_from_raw)
#define CSET_ONLY_cset(...) __VA_ARGS__
#define CSET_ONLY_cmap(...)
@@ -155,8 +155,8 @@ typedef struct {size_t idx; uint32_t hx;} cmap_bucket_t, cset_bucket_t;
#define KEY_REF_cmap(e) (e)->first
/* CHASH full: use 'void' for Mapped if ctype is cset */
-#define _using_CHASH(X, ctype, Key, Mapped, mappedDel, keyEqualsRaw, keyHashRaw, \
- keyDel, RawKey, keyFromRaw, keyToRaw, RawMapped, mappedFromRaw) \
+#define _using_CHASH(X, ctype, Key, Mapped, mappedDel, keyEqualsRaw, keyHashRaw, keyDel, \
+ keyFromRaw, keyToRaw, RawKey, RawMapped, mappedFromRaw) \
typedef Key ctype##_##X##_key_t; \
typedef Mapped ctype##_##X##_mapped_t; \
typedef RawKey ctype##_##X##_rawkey_t; \
@@ -304,15 +304,15 @@ typedef struct {size_t idx; uint32_t hx;} cmap_bucket_t, cset_bucket_t;
STC_API uint32_t c_default_hash(const void *data, size_t len); \
STC_API uint32_t c_default_hash32(const void* data, size_t len); \
\
- _c_implement_CHASH(X, ctype, Key, Mapped, mappedDel, keyEqualsRaw, keyHashRaw, \
- keyDel, RawKey, keyFromRaw, keyToRaw, RawMapped, mappedFromRaw) \
+ _c_implement_CHASH(X, ctype, Key, Mapped, mappedDel, keyEqualsRaw, keyHashRaw, keyDel, \
+ keyFromRaw, keyToRaw, RawKey, RawMapped, mappedFromRaw) \
typedef ctype##_##X ctype##_##X##_t
/* -------------------------- IMPLEMENTATION ------------------------- */
#if !defined(STC_HEADER) || defined(STC_IMPLEMENTATION)
-#define _c_implement_CHASH(X, ctype, Key, Mapped, mappedDel, keyEqualsRaw, keyHashRaw, \
- keyDel, RawKey, keyFromRaw, keyToRaw, RawMapped, mappedFromRaw) \
+#define _c_implement_CHASH(X, ctype, Key, Mapped, mappedDel, keyEqualsRaw, keyHashRaw, keyDel, \
+ keyFromRaw, keyToRaw, RawKey, RawMapped, mappedFromRaw) \
STC_DEF ctype##_##X \
ctype##_##X##_with_capacity(size_t cap) { \
ctype##_##X h = ctype##_inits; \
@@ -450,8 +450,8 @@ STC_DEF uint32_t c_default_hash32(const void* data, size_t len) {
}
#else
-#define _c_implement_CHASH(X, ctype, Key, Mapped, mappedDel, keyEqualsRaw, keyHashRaw, \
- keyDel, RawKey, keyFromRaw, keyToRaw, RawMapped, mappedFromRaw)
+#define _c_implement_CHASH(X, ctype, Key, Mapped, mappedDel, keyEqualsRaw, keyHashRaw, keyDel, \
+ keyFromRaw, keyToRaw, RawKey, RawMapped, mappedFromRaw)
#endif
#endif