diff options
| author | Tyge Løvset <[email protected]> | 2022-04-08 12:04:20 +0200 |
|---|---|---|
| committer | Tyge Løvset <[email protected]> | 2022-04-08 12:04:20 +0200 |
| commit | 6177b01bcc929f2044fb1aeac3532ea22147930b (patch) | |
| tree | d60c7b3047ff2cbc7afd6e5b4005ca1f1d137719 /include | |
| parent | 40cd61ca7d5f9d32931b3a2313aef65e13c950b6 (diff) | |
| download | STC-modified-6177b01bcc929f2044fb1aeac3532ea22147930b.tar.gz STC-modified-6177b01bcc929f2044fb1aeac3532ea22147930b.zip | |
Support to use i_val* input macro for sets (cset and csset).
Diffstat (limited to 'include')
| -rw-r--r-- | include/stc/template.h | 30 |
1 files changed, 23 insertions, 7 deletions
diff --git a/include/stc/template.h b/include/stc/template.h index b2dcebd8..d0b7f20d 100644 --- a/include/stc/template.h +++ b/include/stc/template.h @@ -98,18 +98,19 @@ #endif
/* Resolve i_drop and i_from here */
-#if defined i_drop && defined i_isset
+#if defined i_drop && !defined i_keydrop && defined _i_isset
#define i_keydrop i_drop
#elif defined i_drop && !defined i_key
#define i_valdrop i_drop
-#elif defined i_drop
+#elif defined i_drop && !defined _i_isset
#error "i_drop not supported for maps, define i_keydrop / i_valdrop instead."
#endif
-#if defined i_from && defined i_isset
+
+#if defined i_from && !defined i_keyfrom && defined _i_isset
#define i_keyfrom i_from
#elif defined i_from && !defined i_key
#define i_valfrom i_from
-#elif defined i_from
+#elif defined i_from && !defined _i_isset
#error "i_from not supported for maps, define i_keyfrom / i_valfrom instead."
#endif
@@ -154,8 +155,25 @@ #define _i_no_emplace
#endif
+/* Copy i_val* macros to i_key* if _i_isset */
+#if defined _i_isset && defined i_val
+ #define i_key i_val
+ #if defined i_valraw && !defined i_keyraw
+ #define i_keyraw i_valraw
+ #endif
+ #if defined i_valfrom && !defined i_keyfrom
+ #define i_keyfrom i_valfrom
+ #endif
+ #if defined i_valto && !defined i_keyto
+ #define i_keyto i_valto
+ #endif
+ #if defined i_valdrop && !defined i_keydrop
+ #define i_keydrop i_valdrop
+ #endif
+#endif
+
#ifdef i_key
- #ifdef _i_isset
+ #if defined _i_isset && !defined i_val
#define i_val i_key
#endif
#ifndef i_tag
@@ -176,8 +194,6 @@ #ifndef i_keydrop
#define i_keydrop c_default_drop
#endif
-#elif defined _i_isset
- #error "i_key define is missing."
#endif
#ifndef i_tag
|
