diff options
| author | Tyge Løvset <[email protected]> | 2021-01-03 10:50:41 +0100 |
|---|---|---|
| committer | Tyge Løvset <[email protected]> | 2021-01-03 10:50:41 +0100 |
| commit | e4c1dadb85e08d88fbc706e49a5d2b18b39fe0ed (patch) | |
| tree | 731d91462d450fb848dd9125efdc8dc77c68d730 /stc | |
| parent | 949c6b61cae7bb4665f47a6f27375dd450a23854 (diff) | |
| download | STC-modified-e4c1dadb85e08d88fbc706e49a5d2b18b39fe0ed.tar.gz STC-modified-e4c1dadb85e08d88fbc706e49a5d2b18b39fe0ed.zip | |
Force template argument *clone* to be specified when *del* is specified for containers. Can be *c_no_clone* if clonable is not required.
Diffstat (limited to 'stc')
| -rw-r--r-- | stc/carray.h | 3 | ||||
| -rw-r--r-- | stc/ccommon.h | 15 | ||||
| -rw-r--r-- | stc/cdeq.h | 2 | ||||
| -rw-r--r-- | stc/clist.h | 2 | ||||
| -rw-r--r-- | stc/cmap.h | 11 | ||||
| -rw-r--r-- | stc/cptr.h | 8 | ||||
| -rw-r--r-- | stc/cvec.h | 2 |
7 files changed, 13 insertions, 30 deletions
diff --git a/stc/carray.h b/stc/carray.h index 12a97853..5e036b5b 100644 --- a/stc/carray.h +++ b/stc/carray.h @@ -50,9 +50,6 @@ int main() #define using_carray_2(X, Value) \
using_carray_4(X, Value, c_default_del, c_default_clone)
-#define using_carray_3(X, Value, valueDestroy) \
- using_carray_4(X, Value, valueDestroy, Value##_clone)
-
#define using_carray_4(X, Value, valueDestroy, valueClone) \
\
typedef Value carray1##X##_value_t; \
diff --git a/stc/ccommon.h b/stc/ccommon.h index a2d11729..797180ce 100644 --- a/stc/ccommon.h +++ b/stc/ccommon.h @@ -74,16 +74,21 @@ #define c_realloc(p, sz) realloc(p, sz)
#define c_free(p) free(p)
#endif
+
#define c_swap(T, x, y) do { T __t = x; x = y; y = __t; } while (0)
-#define c_no_compare(x, y) (0)
-#define c_mem_equals(x, y) (memcmp(x, y, sizeof *(x)) == 0)
-#define c_default_equals(x, y) (*(x) == *(y))
+
+#define c_default_compare(x, y) c_less_compare(c_default_less, x, y)
#define c_default_less(x, y) (*(x) < *(y))
#define c_less_compare(less, x, y) (less(y, x) - less(x, y))
-#define c_default_compare(x, y) c_less_compare(c_default_less, x, y)
-#define c_default_from_raw(x) (x)
+#define c_no_compare(x, y) (0)
+
+#define c_default_equals(x, y) (*(x) == *(y))
+#define c_mem_equals(x, y) (memcmp(x, y, sizeof *(x)) == 0)
+
#define c_default_clone(x) (x)
+#define c_no_clone(x) (assert(!"c_no_clone"), x)
#define c_default_to_raw(ptr) (*(ptr))
+
#define c_default_del(ptr) ((void) (ptr))
/* Generic algorithms */
@@ -34,8 +34,6 @@ using_cdeq_3(X, Value, c_default_compare)
#define using_cdeq_3(X, Value, valueCompare) \
using_cdeq_5(X, Value, valueCompare, c_default_del, c_default_clone)
-#define using_cdeq_4(X, Value, valueCompare, valueDestroy) \
- using_cdeq_5(X, Value, valueCompare, valueDestroy, Value##_clone)
#define using_cdeq_5(X, Value, valueCompare, valueDestroy, valueClone) \
using_cdeq_7(X, Value, valueCompare, valueDestroy, valueClone, c_default_to_raw, Value)
#define using_cdeq_str() \
diff --git a/stc/clist.h b/stc/clist.h index 7c18b818..5c5a5db5 100644 --- a/stc/clist.h +++ b/stc/clist.h @@ -60,8 +60,6 @@ using_clist_3(X, Value, c_default_compare)
#define using_clist_3(X, Value, valueCompare) \
using_clist_5(X, Value, valueCompare, c_default_del, c_default_clone)
-#define using_clist_4(X, Value, valueCompare, valueDestroy) \
- using_clist_5(X, Value, valueCompare, valueDestroy, Value##_clone)
#define using_clist_5(X, Value, valueCompare, valueDestroy, valueClone) \
using_clist_7(X, Value, valueCompare, valueDestroy, valueClone, c_default_to_raw, Value)
#define using_clist_str() \
@@ -75,9 +75,6 @@ typedef struct {size_t idx; uint32_t hx;} cmap_bucket_t, cset_bucket_t; #define using_cmap_3(X, Key, Mapped) \
using_cmap_5(X, Key, Mapped, c_default_del, c_default_clone)
-#define using_cmap_4(X, Key, Mapped, mappedDel) \
- using_cmap_5(X, Key, Mapped, mappedDel, Mapped##_clone)
-
#define using_cmap_5(X, Key, Mapped, mappedDel, mappedClone) \
using_cmap_7(X, Key, Mapped, mappedDel, mappedClone, c_default_equals, c_default_hash)
@@ -108,9 +105,6 @@ typedef struct {size_t idx; uint32_t hx;} cmap_bucket_t, cset_bucket_t; #define using_cset_4(X, Key, keyEquals, keyHash) \
using_cset_6(X, Key, keyEquals, keyHash, c_default_del, c_default_clone)
-#define using_cset_5(X, Key, keyEquals, keyHash, keyDel) \
- using_cset_6(X, Key, keyEquals, keyHash, keyDel, Key##_clone)
-
#define using_cset_6(X, Key, keyEquals, keyHash, keyDel, keyClone) \
using_cset_8(X, Key, keyEquals, keyHash, keyDel, keyClone, c_default_to_raw, Key)
@@ -129,8 +123,6 @@ typedef struct {size_t idx; uint32_t hx;} cmap_bucket_t, cset_bucket_t; c_MACRO_OVERLOAD(using_cmap_strkey, __VA_ARGS__)
#define using_cmap_strkey_2(X, Mapped) \
_using_CHASH_strkey(X, cmap, Mapped, c_default_del, c_default_clone)
-#define using_cmap_strkey_3(X, Mapped, mappedDel) \
- _using_CHASH_strkey(X, cmap, Mapped, mappedDel, Mapped##_clone)
#define using_cmap_strkey_4(X, Mapped, mappedDel, mappedClone) \
_using_CHASH_strkey(X, cmap, Mapped, mappedDel, mappedClone)
@@ -143,9 +135,6 @@ typedef struct {size_t idx; uint32_t hx;} cmap_bucket_t, cset_bucket_t; #define using_cmap_strval_4(X, Key, keyEquals, keyHash) \
using_cmap_strval_6(X, Key, keyEquals, keyHash, c_default_del, c_default_clone)
-#define using_cmap_strval_5(X, Key, keyEquals, keyHash, keyDel) \
- using_cmap_strval_6(X, Key, keyEquals, keyHash, keyDel, Key##_clone)
-
#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)
@@ -67,9 +67,6 @@ int main() { #define using_cptr_3(X, Value, valueCompare) \
using_cptr_5(X, Value, valueCompare, c_default_del, c_default_clone)
-#define using_cptr_4(X, Value, valueCompare, valueDestroy) \
- using_cptr_5(X, Value, valueCompare, valueDestroy, Value##_clone)
-
#define using_cptr_5(X, Value, valueCompare, valueDestroy, valueClone) \
typedef Value cptr_##X##_value_t; \
typedef cptr_##X##_value_t *cptr_##X; \
@@ -157,8 +154,6 @@ typedef long atomic_count_t; }
#endif
-#define csptr_pointer_compare(x, y) ((x)->get - (y)->get)
-
#define using_csptr(...) c_MACRO_OVERLOAD(using_csptr, __VA_ARGS__)
#define using_csptr_2(X, Value) \
@@ -167,6 +162,9 @@ typedef long atomic_count_t; #define using_csptr_3(X, Value, valueCompare) \
using_csptr_4(X, Value, valueCompare, c_default_del)
+#define using_csptr_5(X, Value, valueCompare, valueDestroy, dummyValueClone) \
+ using_csptr_4(X, Value, valueCompare, valueDestroy)
+
#define using_csptr_4(X, Value, valueCompare, valueDestroy) \
typedef Value csptr_##X##_value_t; \
typedef struct { csptr_##X##_value_t* get; atomic_count_t* use_count; } csptr_##X; \
@@ -34,8 +34,6 @@ using_cvec_3(X, Value, c_default_compare)
#define using_cvec_3(X, Value, valueCompare) \
using_cvec_5(X, Value, valueCompare, c_default_del, c_default_clone)
-#define using_cvec_4(X, Value, valueCompare, valueDestroy) \
- using_cvec_5(X, Value, valueCompare, valueDestroy, Value##_clone)
#define using_cvec_5(X, Value, valueCompare, valueDestroy, valueClone) \
using_cvec_7(X, Value, valueCompare, valueDestroy, valueClone, c_default_to_raw, Value)
#define using_cvec_str() \
|
