summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--docs/cmap_api.md17
-rw-r--r--examples/complex.c2
-rw-r--r--examples/csmap_v1.h20
-rw-r--r--stc/carray.h2
-rw-r--r--stc/ccommon.h10
-rw-r--r--stc/cdeq.h4
-rw-r--r--stc/clist.h4
-rw-r--r--stc/cmap.h22
-rw-r--r--stc/cptr.h4
-rw-r--r--stc/csmap.h22
-rw-r--r--stc/cvec.h4
11 files changed, 56 insertions, 55 deletions
diff --git a/docs/cmap_api.md b/docs/cmap_api.md
index 0c1a2b97..26724bfd 100644
--- a/docs/cmap_api.md
+++ b/docs/cmap_api.md
@@ -79,15 +79,16 @@ cmap_X_iter_t cmap_X_end(cmap_X* self);
void cmap_X_next(cmap_X_iter_t* it);
cmap_X_mapped_t* cmap_X_itval(cmap_X_iter_t it);
```
-```
-uint64_t c_default_hash(const void *data, size_t len);
+```c
+uint64_t c_default_hash(const void *data, size_t len); // bytewise hash
uint64_t c_default_hash32(const void* data, size_t len=4);
uint64_t c_default_hash64(const void* data, size_t len=8);
int c_default_equals(const RawKey* a, const RawKey* b);
-void c_plain_del(Type* val);
-Value c_no_clone(Type val);
-Value c_plain_fromraw(RawType raw);
-RawType c_plain_toraw(Type* val);
+int c_trivial_equals(const RawKey* a, const RawKey* b); // bitwise
+Type c_no_clone(Type val);
+Type c_trivial_fromraw(Type val); // plain copy
+Type c_trivial_toraw(Type* val);
+void c_trivial_del(Type* val); // does nothing
```
## Types
@@ -199,8 +200,8 @@ Demonstrate cmap with plain-old-data key type Vec3i and int as mapped type: cmap
typedef struct { int x, y, z; } Vec3i;
-using_cmap(v3, Vec3i, int, c_plain_equals, // compare Vec3i bitwise
- c_default_hash); // hash Vec3i bitwise.
+using_cmap(v3, Vec3i, int, c_trivial_equals, // bitwise equals
+ c_default_hash); // bytewise hash
int main()
{
diff --git a/examples/complex.c b/examples/complex.c
index 161d0b31..49cd0077 100644
--- a/examples/complex.c
+++ b/examples/complex.c
@@ -5,7 +5,7 @@
void check_del(float* v) {printf("destroy %g\n", *v);}
-using_carray(f, float, check_del, c_plain_fromraw);
+using_carray(f, float, check_del, c_trivial_fromraw);
using_clist(a, carray2f, c_no_compare, carray2f_del, c_no_clone);
using_cmap(l, int, clist_a, c_default_equals, c_default_hash, clist_a_del, c_no_clone);
using_cmap_strkey(s, cmap_l, cmap_l_del, c_no_clone);
diff --git a/examples/csmap_v1.h b/examples/csmap_v1.h
index 78e40431..f8ea6ae9 100644
--- a/examples/csmap_v1.h
+++ b/examples/csmap_v1.h
@@ -50,19 +50,19 @@ int main(void) {
using_csmap_4(X, Key, Mapped, c_default_compare)
#define using_csmap_4(X, Key, Mapped, keyCompare) \
- using_csmap_6(X, Key, Mapped, keyCompare, c_plain_del, c_plain_fromraw)
+ using_csmap_6(X, Key, Mapped, keyCompare, c_trivial_del, c_trivial_fromraw)
#define using_csmap_6(X, Key, Mapped, keyCompare, mappedDel, mappedClone) \
- using_csmap_8(X, Key, Mapped, keyCompare, mappedDel, mappedClone, c_plain_del, c_plain_fromraw)
+ using_csmap_8(X, Key, Mapped, keyCompare, mappedDel, mappedClone, c_trivial_del, c_trivial_fromraw)
#define using_csmap_8(X, Key, Mapped, keyCompare, mappedDel, mappedClone, keyDel, keyClone) \
using_csmap_10(X, Key, Mapped, keyCompare, mappedDel, mappedClone, \
- keyDel, keyClone, c_plain_toraw, Key)
+ keyDel, keyClone, c_trivial_toraw, Key)
#define using_csmap_10(X, Key, Mapped, keyCompareRaw, mappedDel, mappedClone, \
keyDel, keyFromRaw, keyToRaw, RawKey) \
_using_CBST(X, csmap, Key, Mapped, keyCompareRaw, mappedDel, keyDel, \
- keyFromRaw, keyToRaw, RawKey, mappedClone, c_plain_toraw, Mapped)
+ keyFromRaw, keyToRaw, RawKey, mappedClone, c_trivial_toraw, Mapped)
/* csset: */
#define using_csset(...) \
@@ -72,10 +72,10 @@ int main(void) {
using_csset_3(X, Key, c_default_compare)
#define using_csset_3(X, Key, keyCompare) \
- using_csset_5(X, Key, keyCompare, c_plain_del, c_plain_fromraw)
+ using_csset_5(X, Key, keyCompare, c_trivial_del, c_trivial_fromraw)
#define using_csset_5(X, Key, keyCompare, keyDel, keyClone) \
- using_csset_7(X, Key, keyCompare, keyDel, keyClone, c_plain_toraw, Key)
+ using_csset_7(X, Key, keyCompare, keyDel, keyClone, c_trivial_toraw, Key)
#define using_csset_7(X, Key, keyCompareRaw, keyDel, keyFromRaw, keyToRaw, RawKey) \
_using_CBST(X, csset, Key, Key, keyCompareRaw, _UNUSED_, keyDel, \
@@ -92,14 +92,14 @@ int main(void) {
c_MACRO_OVERLOAD(using_csmap_strkey, __VA_ARGS__)
#define using_csmap_strkey_2(X, Mapped) \
- _using_CBST_strkey(X, csmap, Mapped, c_plain_del, c_plain_fromraw)
+ _using_CBST_strkey(X, csmap, Mapped, c_trivial_del, c_trivial_fromraw)
#define using_csmap_strkey_4(X, Mapped, mappedDel, mappedClone) \
_using_CBST_strkey(X, csmap, Mapped, mappedDel, mappedClone)
#define _using_CBST_strkey(X, C, Mapped, mappedDel, mappedClone) \
_using_CBST(X, C, cstr_t, Mapped, cstr_compare_raw, mappedDel, cstr_del, \
- cstr_from, cstr_c_str, const char*, mappedClone, c_plain_toraw, Mapped)
+ cstr_from, cstr_c_str, const char*, mappedClone, c_trivial_toraw, Mapped)
#define using_csmap_strval(...) \
c_MACRO_OVERLOAD(using_csmap_strval, __VA_ARGS__)
@@ -108,10 +108,10 @@ int main(void) {
using_csmap_strval_3(X, Key, c_default_compare)
#define using_csmap_strval_3(X, Key, keyCompare) \
- using_csmap_strval_5(X, Key, keyCompare, c_plain_del, c_plain_fromraw)
+ using_csmap_strval_5(X, Key, keyCompare, c_trivial_del, c_trivial_fromraw)
#define using_csmap_strval_5(X, Key, keyCompare, keyDel, keyClone) \
- using_csmap_strval_7(X, Key, keyCompare, keyDel, keyClone, c_plain_toraw, Key)
+ using_csmap_strval_7(X, Key, keyCompare, keyDel, keyClone, c_trivial_toraw, Key)
#define using_csmap_strval_7(X, Key, keyCompare, keyDel, keyFromRaw, keyToRaw, RawKey) \
_using_CBST(X, csmap, Key, cstr_t, keyCompare, cstr_del, keyDel, \
diff --git a/stc/carray.h b/stc/carray.h
index 39e1fba8..7a49de50 100644
--- a/stc/carray.h
+++ b/stc/carray.h
@@ -48,7 +48,7 @@ int main()
#define using_carray(...) c_MACRO_OVERLOAD(using_carray, __VA_ARGS__)
#define using_carray_2(X, Value) \
- using_carray_4(X, Value, c_plain_del, c_plain_fromraw)
+ using_carray_4(X, Value, c_trivial_del, c_trivial_fromraw)
#define using_carray_4(X, Value, valueDel, valueClone) \
\
diff --git a/stc/ccommon.h b/stc/ccommon.h
index 590609fa..77f76bf0 100644
--- a/stc/ccommon.h
+++ b/stc/ccommon.h
@@ -83,13 +83,13 @@
#define c_no_compare(x, y) (assert(!"c_no_compare() called"), 0)
#define c_default_equals(x, y) (*(x) == *(y))
-#define c_plain_equals(x, y) (memcmp(x, y, sizeof *(x)) == 0)
+#define c_trivial_equals(x, y) (memcmp(x, y, sizeof *(x)) == 0)
-#define c_plain_fromraw(x) (x)
-#define c_no_clone(x) (assert(!"emplace*() with c_no_clone"), x)
-#define c_plain_toraw(ptr) (*(ptr))
+#define c_no_clone(x) (assert(!"c_no_clone() called"), x)
+#define c_trivial_fromraw(x) (x)
+#define c_trivial_toraw(ptr) (*(ptr))
-#define c_plain_del(ptr) ((void) (ptr))
+#define c_trivial_del(ptr) ((void) (ptr))
/* Generic algorithms */
diff --git a/stc/cdeq.h b/stc/cdeq.h
index a5c743a5..b964de2c 100644
--- a/stc/cdeq.h
+++ b/stc/cdeq.h
@@ -31,9 +31,9 @@
#define using_cdeq_2(X, Value) \
using_cdeq_3(X, Value, c_default_compare)
#define using_cdeq_3(X, Value, valueCompare) \
- using_cdeq_7(X, Value, valueCompare, c_plain_del, c_plain_fromraw, c_plain_toraw, Value)
+ using_cdeq_7(X, Value, valueCompare, c_trivial_del, c_trivial_fromraw, c_trivial_toraw, Value)
#define using_cdeq_5(X, Value, valueCompare, valueDel, valueFromRaw) \
- using_cdeq_7(X, Value, valueCompare, valueDel, valueFromRaw, c_plain_toraw, Value)
+ using_cdeq_7(X, Value, valueCompare, valueDel, valueFromRaw, c_trivial_toraw, Value)
#define using_cdeq_str() \
using_cdeq_7(str, cstr_t, cstr_compare_raw, cstr_del, cstr_from, cstr_c_str, const char*)
diff --git a/stc/clist.h b/stc/clist.h
index 03b13a8c..bb2e2408 100644
--- a/stc/clist.h
+++ b/stc/clist.h
@@ -59,9 +59,9 @@
#define using_clist_2(X, Value) \
using_clist_3(X, Value, c_default_compare)
#define using_clist_3(X, Value, valueCompare) \
- using_clist_7(X, Value, valueCompare, c_plain_del, c_plain_fromraw, c_plain_toraw, Value)
+ using_clist_7(X, Value, valueCompare, c_trivial_del, c_trivial_fromraw, c_trivial_toraw, Value)
#define using_clist_5(X, Value, valueCompare, valueDel, valueClone) \
- using_clist_7(X, Value, valueCompare, valueDel, valueClone, c_plain_toraw, Value)
+ using_clist_7(X, Value, valueCompare, valueDel, valueClone, c_trivial_toraw, Value)
#define using_clist_str() \
using_clist_7(str, cstr_t, cstr_compare_raw, cstr_del, cstr_from, cstr_c_str, const char*)
diff --git a/stc/cmap.h b/stc/cmap.h
index db15eeaa..79d689b4 100644
--- a/stc/cmap.h
+++ b/stc/cmap.h
@@ -65,17 +65,17 @@ typedef struct {size_t idx; uint32_t hx;} chash_bucket_t;
#define using_cmap_5(X, Key, Mapped, keyEquals, keyHash) \
using_cmap_9(X, Key, Mapped, keyEquals, keyHash, \
- c_plain_del, c_plain_fromraw, c_plain_toraw, Mapped)
+ c_trivial_del, c_trivial_fromraw, c_trivial_toraw, Mapped)
#define using_cmap_7(X, Key, Mapped, keyEquals, keyHash, mappedDel, mappedClone) \
using_cmap_9(X, Key, Mapped, keyEquals, keyHash, \
- mappedDel, mappedClone, c_plain_toraw, Mapped)
+ mappedDel, mappedClone, c_trivial_toraw, Mapped)
#define using_cmap_9(X, Key, Mapped, keyEquals, keyHash, \
mappedDel, mappedFromRaw, mappedToRaw, RawMapped) \
_using_CHASH(X, cmap, Key, Mapped, keyEquals, keyHash, \
mappedDel, mappedFromRaw, mappedToRaw, RawMapped, \
- c_plain_del, c_plain_fromraw, c_plain_toraw, Key)
+ c_trivial_del, c_trivial_fromraw, c_trivial_toraw, Key)
#define using_cmap_13(X, Key, Mapped, keyEqualsRaw, keyHashRaw, \
mappedDel, mappedFromRaw, mappedToRaw, RawMapped, \
@@ -87,11 +87,11 @@ typedef struct {size_t idx; uint32_t hx;} chash_bucket_t;
#define using_cmap_keydef(...) c_MACRO_OVERLOAD(using_cmap_keydef, __VA_ARGS__)
#define using_cmap_keydef_7(X, Key, Mapped, keyEquals, keyHash, keyDel, keyClone) \
using_cmap_keydef_9(X, Key, Mapped, keyEquals, keyHash, \
- keyDel, keyClone, c_plain_toraw, Key)
+ keyDel, keyClone, c_trivial_toraw, Key)
#define using_cmap_keydef_9(X, Key, Mapped, keyEqualsRaw, keyHashRaw, \
keyDel, keyFromRaw, keyToRaw, RawKey) \
_using_CHASH(X, cmap, Key, Mapped, keyEqualsRaw, keyHashRaw, \
- c_plain_del, c_plain_fromraw, c_plain_toraw, Mapped, \
+ c_trivial_del, c_trivial_fromraw, c_trivial_toraw, Mapped, \
keyDel, keyFromRaw, keyToRaw, RawKey)
/* cset: */
@@ -102,10 +102,10 @@ typedef struct {size_t idx; uint32_t hx;} chash_bucket_t;
using_cset_4(X, Key, c_default_equals, c_default_hash)
#define using_cset_4(X, Key, keyEquals, keyHash) \
- using_cset_8(X, Key, keyEquals, keyHash, c_plain_del, c_plain_fromraw, c_plain_toraw, Key)
+ using_cset_8(X, Key, keyEquals, keyHash, c_trivial_del, c_trivial_fromraw, c_trivial_toraw, Key)
#define using_cset_6(X, Key, keyEquals, keyHash, keyDel, keyClone) \
- using_cset_8(X, Key, keyEquals, keyHash, keyDel, keyClone, c_plain_toraw, Key)
+ using_cset_8(X, Key, keyEquals, keyHash, keyDel, keyClone, c_trivial_toraw, Key)
#define using_cset_8(X, Key, keyEqualsRaw, keyHashRaw, keyDel, keyFromRaw, keyToRaw, RawKey) \
_using_CHASH(X, cset, Key, Key, keyEqualsRaw, keyHashRaw, \
@@ -124,10 +124,10 @@ typedef struct {size_t idx; uint32_t hx;} chash_bucket_t;
c_MACRO_OVERLOAD(using_cmap_strkey, __VA_ARGS__)
#define using_cmap_strkey_2(X, Mapped) \
- _using_CHASH_strkey(X, cmap, Mapped, c_plain_del, c_plain_fromraw, c_plain_toraw, Mapped)
+ _using_CHASH_strkey(X, cmap, Mapped, c_trivial_del, c_trivial_fromraw, c_trivial_toraw, Mapped)
#define using_cmap_strkey_4(X, Mapped, mappedDel, mappedClone) \
- _using_CHASH_strkey(X, cmap, Mapped, mappedDel, mappedClone, c_plain_toraw, Mapped)
+ _using_CHASH_strkey(X, cmap, Mapped, mappedDel, mappedClone, c_trivial_toraw, Mapped)
#define using_cmap_strkey_6(X, Mapped, mappedDel, mappedFromRaw, mappedToRaw, RawMapped) \
_using_CHASH_strkey(X, cmap, Mapped, mappedDel, mappedFromRaw, mappedToRaw, RawMapped)
@@ -144,10 +144,10 @@ typedef struct {size_t idx; uint32_t hx;} chash_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_plain_del, c_plain_fromraw, c_plain_toraw, Key)
+ using_cmap_strval_8(X, Key, keyEquals, keyHash, c_trivial_del, c_trivial_fromraw, c_trivial_toraw, Key)
#define using_cmap_strval_6(X, Key, keyEquals, keyHash, keyDel, keyClone) \
- using_cmap_strval_8(X, Key, keyEquals, keyHash, keyDel, keyClone, c_plain_toraw, Key)
+ using_cmap_strval_8(X, Key, keyEquals, keyHash, keyDel, keyClone, c_trivial_toraw, Key)
#define using_cmap_strval_8(X, Key, keyEqualsRaw, keyHashRaw, keyDel, keyFromRaw, keyToRaw, RawKey) \
_using_CHASH(X, cmap, Key, cstr_t, keyEqualsRaw, keyHashRaw, \
diff --git a/stc/cptr.h b/stc/cptr.h
index 2614238d..a188e19b 100644
--- a/stc/cptr.h
+++ b/stc/cptr.h
@@ -65,7 +65,7 @@ int main() {
using_cptr_3(X, Value, c_default_compare)
#define using_cptr_3(X, Value, valueCompare) \
- using_cptr_4(X, Value, valueCompare, c_plain_del)
+ using_cptr_4(X, Value, valueCompare, c_trivial_del)
#define using_cptr_4(X, Value, valueCompare, valueDel) \
typedef Value cptr_##X##_value_t; \
@@ -158,7 +158,7 @@ typedef long atomic_count_t;
using_csptr_3(X, Value, c_default_compare)
#define using_csptr_3(X, Value, valueCompare) \
- using_csptr_4(X, Value, valueCompare, c_plain_del)
+ using_csptr_4(X, Value, valueCompare, c_trivial_del)
#define using_csptr_4(X, Value, valueCompare, valueDel) \
typedef Value csptr_##X##_value_t; \
diff --git a/stc/csmap.h b/stc/csmap.h
index c261801d..2ac892eb 100644
--- a/stc/csmap.h
+++ b/stc/csmap.h
@@ -49,15 +49,15 @@ int main(void) {
using_csmap_4(X, Key, Mapped, c_default_compare)
#define using_csmap_4(X, Key, Mapped, keyCompare) \
- using_csmap_8(X, Key, Mapped, keyCompare, c_plain_del, c_plain_fromraw, c_plain_toraw, Mapped)
+ using_csmap_8(X, Key, Mapped, keyCompare, c_trivial_del, c_trivial_fromraw, c_trivial_toraw, Mapped)
#define using_csmap_6(X, Key, Mapped, keyCompare, mappedDel, mappedClone) \
- using_csmap_8(X, Key, Mapped, keyCompare, mappedDel, mappedClone, c_plain_toraw, Mapped)
+ 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, \
- c_plain_del, c_plain_fromraw, c_plain_toraw, Key)
+ c_trivial_del, c_trivial_fromraw, c_trivial_toraw, Key)
#define using_csmap_12(X, Key, Mapped, keyCompareRaw, \
mappedDel, mappedFromRaw, mappedToRaw, RawMapped, \
@@ -69,11 +69,11 @@ int main(void) {
#define using_csmap_keydef(...) c_MACRO_OVERLOAD(using_csmap_keydef, __VA_ARGS__)
#define using_csmap_keydef_6(X, Key, Mapped, keyCompare, keyDel, keyClone) \
using_csmap_keydef_8(X, Key, Mapped, keyCompare, \
- keyDel, keyClone, c_plain_toraw, Key)
+ keyDel, keyClone, c_trivial_toraw, Key)
#define using_csmap_keydef_8(X, Key, Mapped, keyCompareRaw, \
keyDel, keyFromRaw, keyToRaw, RawKey) \
_using_AATREE(X, csmap, Key, Mapped, keyCompareRaw, \
- c_plain_del, c_plain_fromraw, c_plain_toraw, Mapped, \
+ c_trivial_del, c_trivial_fromraw, c_trivial_toraw, Mapped, \
keyDel, keyFromRaw, keyToRaw, RawKey)
/* csset: */
@@ -84,10 +84,10 @@ int main(void) {
using_csset_3(X, Key, c_default_compare)
#define using_csset_3(X, Key, keyCompare) \
- using_csset_7(X, Key, keyCompare, c_plain_del, c_plain_fromraw, c_plain_toraw, Key)
+ using_csset_7(X, Key, keyCompare, c_trivial_del, c_trivial_fromraw, c_trivial_toraw, Key)
#define using_csset_5(X, Key, keyCompare, keyDel, keyClone) \
- using_csset_7(X, Key, keyCompare, keyDel, keyClone, c_plain_toraw, Key)
+ using_csset_7(X, Key, keyCompare, keyDel, keyClone, c_trivial_toraw, Key)
#define using_csset_7(X, Key, keyCompareRaw, keyDel, keyFromRaw, keyToRaw, RawKey) \
_using_AATREE(X, csset, Key, Key, keyCompareRaw, \
@@ -106,10 +106,10 @@ int main(void) {
c_MACRO_OVERLOAD(using_csmap_strkey, __VA_ARGS__)
#define using_csmap_strkey_2(X, Mapped) \
- _using_AATREE_strkey(X, csmap, Mapped, c_plain_del, c_plain_fromraw, c_plain_toraw, Mapped)
+ _using_AATREE_strkey(X, csmap, Mapped, c_trivial_del, c_trivial_fromraw, c_trivial_toraw, Mapped)
#define using_csmap_strkey_4(X, Mapped, mappedDel, mappedClone) \
- _using_AATREE_strkey(X, csmap, Mapped, mappedDel, mappedClone, c_plain_toraw, Mapped)
+ _using_AATREE_strkey(X, csmap, Mapped, mappedDel, mappedClone, c_trivial_toraw, Mapped)
#define using_csmap_strkey_6(X, Mapped, mappedDel, mappedFromRaw, mappedToRaw, RawMapped) \
_using_AATREE_strkey(X, csmap, Mapped, mappedDel, mappedFromRaw, mappedToRaw, RawMapped)
@@ -126,10 +126,10 @@ int main(void) {
using_csmap_strval_3(X, Key, c_default_compare)
#define using_csmap_strval_3(X, Key, keyCompare) \
- using_csmap_strval_7(X, Key, keyCompare, c_plain_del, c_plain_fromraw, c_plain_toraw, Key)
+ using_csmap_strval_7(X, Key, keyCompare, c_trivial_del, c_trivial_fromraw, c_trivial_toraw, Key)
#define using_csmap_strval_5(X, Key, keyCompare, keyDel, keyClone) \
- using_csmap_strval_7(X, Key, keyCompare, keyDel, keyClone, c_plain_toraw, Key)
+ using_csmap_strval_7(X, Key, keyCompare, keyDel, keyClone, c_trivial_toraw, Key)
#define using_csmap_strval_7(X, Key, keyCompareRaw, keyDel, keyFromRaw, keyToRaw, RawKey) \
_using_AATREE(X, csmap, Key, cstr_t, keyCompareRaw, \
diff --git a/stc/cvec.h b/stc/cvec.h
index 71a6b289..7ffe0996 100644
--- a/stc/cvec.h
+++ b/stc/cvec.h
@@ -31,9 +31,9 @@
#define using_cvec_2(X, Value) \
using_cvec_3(X, Value, c_default_compare)
#define using_cvec_3(X, Value, valueCompare) \
- using_cvec_7(X, Value, valueCompare, c_plain_del, c_plain_fromraw, c_plain_toraw, Value)
+ using_cvec_7(X, Value, valueCompare, c_trivial_del, c_trivial_fromraw, c_trivial_toraw, Value)
#define using_cvec_5(X, Value, valueCompare, valueDel, valueClone) \
- using_cvec_7(X, Value, valueCompare, valueDel, valueClone, c_plain_toraw, Value)
+ using_cvec_7(X, Value, valueCompare, valueDel, valueClone, c_trivial_toraw, Value)
#define using_cvec_str() \
using_cvec_7(str, cstr_t, cstr_compare_raw, cstr_del, cstr_from, cstr_c_str, const char*)