summaryrefslogtreecommitdiffhomepage
path: root/stc
diff options
context:
space:
mode:
authorTyge Løvset <[email protected]>2021-01-03 10:50:41 +0100
committerTyge Løvset <[email protected]>2021-01-03 10:50:41 +0100
commite4c1dadb85e08d88fbc706e49a5d2b18b39fe0ed (patch)
tree731d91462d450fb848dd9125efdc8dc77c68d730 /stc
parent949c6b61cae7bb4665f47a6f27375dd450a23854 (diff)
downloadSTC-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.h3
-rw-r--r--stc/ccommon.h15
-rw-r--r--stc/cdeq.h2
-rw-r--r--stc/clist.h2
-rw-r--r--stc/cmap.h11
-rw-r--r--stc/cptr.h8
-rw-r--r--stc/cvec.h2
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 */
diff --git a/stc/cdeq.h b/stc/cdeq.h
index 38445649..3339ac07 100644
--- a/stc/cdeq.h
+++ b/stc/cdeq.h
@@ -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() \
diff --git a/stc/cmap.h b/stc/cmap.h
index edeacfa9..ea766636 100644
--- a/stc/cmap.h
+++ b/stc/cmap.h
@@ -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)
diff --git a/stc/cptr.h b/stc/cptr.h
index d028977c..41af8810 100644
--- a/stc/cptr.h
+++ b/stc/cptr.h
@@ -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; \
diff --git a/stc/cvec.h b/stc/cvec.h
index 62fc9ea3..0e35145a 100644
--- a/stc/cvec.h
+++ b/stc/cvec.h
@@ -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() \