diff options
Diffstat (limited to 'include/stc/extend.h')
| -rw-r--r-- | include/stc/extend.h | 17 |
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 |
