summaryrefslogtreecommitdiffhomepage
path: root/include/stc/extend.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/stc/extend.h')
-rw-r--r--include/stc/extend.h17
1 files changed, 11 insertions, 6 deletions
diff --git a/include/stc/extend.h b/include/stc/extend.h
index 66b3ebd1..52d59414 100644
--- a/include/stc/extend.h
+++ b/include/stc/extend.h
@@ -43,10 +43,12 @@
#define _i_val i_val
#endif
-#ifdef _i_key
- c_PASTE(forward_, i_con)(i_type, _i_key, _i_val);
+#if defined _i_key && defined _i_val
+ c_PASTE(forward_, i_base)(i_type, _i_key, _i_val);
+#elif defined _i_key
+ c_PASTE(forward_, i_base)(i_type, _i_key);
#else
- c_PASTE(forward_, i_con)(i_type, _i_val);
+ c_PASTE(forward_, i_base)(i_type, _i_val);
#endif
typedef struct {
@@ -54,13 +56,16 @@ typedef struct {
i_type get;
} c_PASTE(i_type, _ext);
-#define c_getcon(cptr) c_container_of(cptr, _cx_memb(_ext), get)
+#define c_extend() c_container_of(self, _cx_MEMB(_ext), get)
+// Note: i_less: c_extend() accessible for cpque types
+// i_cmp: c_extend() accessible for csmap and csset types
+// i_hash/i_eq: c_extend() accessible for cmap and cset types
#define i_is_forward
-#define _i_inc <stc/i_con.h>
+#define _i_inc <stc/i_base.h>
#include _i_inc
#undef _i_inc
#undef _i_key
#undef _i_val
-#undef i_con
+#undef i_base
#undef i_extend