diff options
| author | Tyge Løvset <[email protected]> | 2022-05-19 22:37:11 +0200 |
|---|---|---|
| committer | Tyge Løvset <[email protected]> | 2022-05-19 22:37:11 +0200 |
| commit | fa5c3a40738d5fca515ab1d581566355b8e05430 (patch) | |
| tree | ec3b7fb8beb5c64eb22f6d8ea9582fb982a5452a /include | |
| parent | 9e1421e5ed0e93cebecfb2a8fe423d01ba1d08e8 (diff) | |
| download | STC-modified-fa5c3a40738d5fca515ab1d581566355b8e05430.tar.gz STC-modified-fa5c3a40738d5fca515ab1d581566355b8e05430.zip | |
Some extra test on template params. Update shape.c example.
Diffstat (limited to 'include')
| -rw-r--r-- | include/stc/ccommon.h | 2 | ||||
| -rw-r--r-- | include/stc/template.h | 20 |
2 files changed, 13 insertions, 9 deletions
diff --git a/include/stc/ccommon.h b/include/stc/ccommon.h index 549dd969..850bc511 100644 --- a/include/stc/ccommon.h +++ b/include/stc/ccommon.h @@ -95,7 +95,7 @@ #define c_memcmp_eq(x, y) (memcmp(x, y, sizeof *(x)) == 0)
#define c_default_hash(x) c_fasthash(x, sizeof *(x))
-#define c_default_from(v) (v)
+#define c_default_clone(v) (v)
#define c_default_toraw(vp) (*(vp))
#define c_default_drop(vp) ((void) (vp))
#define c_derived_keyclone(v) i_keyfrom((i_keyto((&(v)))))
diff --git a/include/stc/template.h b/include/stc/template.h index 6af10ace..4d2f0f58 100644 --- a/include/stc/template.h +++ b/include/stc/template.h @@ -138,11 +138,13 @@ #endif
#if !defined i_key
- #error "no i_key or i_val provided"
+ #error "no i_key or i_val defined"
#elif defined i_keyraw ^ defined i_keyto
- #error "if i_keyraw is defined, i_keyto must be defined, and vice versa"
+ #error "both i_keyraw and i_keyto must be defined, if any"
+#elif defined i_keyfrom && !defined i_keyraw
+ #error "i_keyfrom defined without i_keyraw"
#elif defined i_from || defined i_drop
- #error "i_from / i_drop are not supported. Define i_keyfrom/i_valfrom and-or i_keydrop/i_valdrop instead."
+ #error "i_from / i_drop not supported. Define i_keyfrom/i_valfrom and/or i_keydrop/i_valdrop instead"
#endif
#ifndef i_tag
@@ -155,7 +157,7 @@ #define i_keyraw i_key
#endif
#ifndef i_keyfrom
- #define i_keyfrom c_default_from
+ #define i_keyfrom c_default_clone
#else
#define _i_has_from
#endif
@@ -163,7 +165,7 @@ #define i_keyto c_default_toraw
#endif
#ifndef i_keyclone
- #define i_keyclone(key) (key)
+ #define i_keyclone c_default_clone
#endif
#ifndef i_keydrop
#define i_keydrop c_default_drop
@@ -214,7 +216,9 @@ #endif
#if defined i_valraw ^ defined i_valto
- #error "if i_valraw is defined, i_valto must be defined, and vice versa"
+ #error "both i_valto and i_valraw must be defined, if any"
+#elif defined i_valfrom && !defined i_valraw
+ #error "i_valfrom defined without i_valraw"
#endif
#if !defined i_valclone && (defined i_valdrop || defined i_valraw)
@@ -224,7 +228,7 @@ #define i_valraw i_val
#endif
#ifndef i_valfrom
- #define i_valfrom c_default_from
+ #define i_valfrom c_default_clone
#else
#define _i_has_from
#endif
@@ -232,7 +236,7 @@ #define i_valto c_default_toraw
#endif
#ifndef i_valclone
- #define i_valclone(val) (val)
+ #define i_valclone c_default_clone
#endif
#ifndef i_valdrop
#define i_valdrop c_default_drop
|
