From 6177b01bcc929f2044fb1aeac3532ea22147930b Mon Sep 17 00:00:00 2001 From: Tyge Løvset Date: Fri, 8 Apr 2022 12:04:20 +0200 Subject: Support to use i_val* input macro for sets (cset and csset). --- include/stc/template.h | 30 +++++++++++++++++++++++------- 1 file 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 -- cgit v1.2.3