Add control of type and oplists
This commit is contained in:
1 parent
bf3ffd1766
commit
3885cb29a2
3 files changed
+24
No files matched your search
@@ -241,6 +241,8 @@
|
|||||||
M_MAP(FUNC_OBJ_INS_ATTR_STRUCT, __VA_ARGS__) \
|
M_MAP(FUNC_OBJ_INS_ATTR_STRUCT, __VA_ARGS__) \
|
||||||
} M_C(name, _t)[1]; \
|
} M_C(name, _t)[1]; \
|
||||||
\
|
\
|
||||||
|
FUNCOBJI_CONTROL_ALL_OPLIST(name, __VA_ARGS__) \
|
||||||
|
\
|
||||||
static inline M_C(base_name, _retcode_t) \
|
static inline M_C(base_name, _retcode_t) \
|
||||||
M_C(name, _callback)(M_C(base_name, _t) obj \
|
M_C(name, _callback)(M_C(base_name, _t) obj \
|
||||||
M_IF_EMPTY(M_OPFLAT param_list)( \
|
M_IF_EMPTY(M_OPFLAT param_list)( \
|
||||||
@@ -333,4 +335,11 @@
|
|||||||
#define FUNC_OBJ_TEST_METHOD_P(method, ...) \
|
#define FUNC_OBJ_TEST_METHOD_P(method, ...) \
|
||||||
M_IF(M_REDUCE2(FUNC_OBJ_TEST_METHOD1_P, M_AND, method, __VA_ARGS__))
|
M_IF(M_REDUCE2(FUNC_OBJ_TEST_METHOD1_P, M_AND, method, __VA_ARGS__))
|
||||||
|
|
||||||
|
/* Macro for checking compatible type and oplist */
|
||||||
|
#define FUNCOBJI_CONTROL_ALL_OPLIST(name, ...) \
|
||||||
|
M_MAP2(FUNCOBJI_CONTROL_OPLIST, name, __VA_ARGS__)
|
||||||
|
#define FUNCOBJI_CONTROL_OPLIST(name, a) \
|
||||||
|
M_CHECK_COMPATIBLE_OPLIST(name, M_RET_ARG1 a, M_RET_ARG2 a, M_RET_ARG3 a)
|
||||||
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
@@ -108,6 +108,7 @@ namespace m_tuple {
|
|||||||
#define TUPLEI_DEF2_P3(name, ...) \
|
#define TUPLEI_DEF2_P3(name, ...) \
|
||||||
TUPLE_DEFINE_TYPE(name, __VA_ARGS__) \
|
TUPLE_DEFINE_TYPE(name, __VA_ARGS__) \
|
||||||
TUPLE_DEFINE_ENUM(name, __VA_ARGS__) \
|
TUPLE_DEFINE_ENUM(name, __VA_ARGS__) \
|
||||||
|
TUPLE_CONTROL_ALL_OPLIST(name, __VA_ARGS__) \
|
||||||
TUPLEI_IF_ALL(INIT, __VA_ARGS__) \
|
TUPLEI_IF_ALL(INIT, __VA_ARGS__) \
|
||||||
(TUPLE_DEFINE_INIT(name, __VA_ARGS__),) \
|
(TUPLE_DEFINE_INIT(name, __VA_ARGS__),) \
|
||||||
TUPLE_DEFINE_INIT_SET(name, __VA_ARGS__) \
|
TUPLE_DEFINE_INIT_SET(name, __VA_ARGS__) \
|
||||||
@@ -210,6 +211,12 @@ namespace m_tuple {
|
|||||||
#define TUPLE_DEFINE_ENUM_ELE(name, a) \
|
#define TUPLE_DEFINE_ENUM_ELE(name, a) \
|
||||||
M_C4(name, _, TUPLE_GET_FIELD a, _value)
|
M_C4(name, _, TUPLE_GET_FIELD a, _value)
|
||||||
|
|
||||||
|
#define TUPLE_CONTROL_ALL_OPLIST(name, ...) \
|
||||||
|
M_MAP2(TUPLE_CONTROL_OPLIST, name, __VA_ARGS__)
|
||||||
|
#define TUPLE_CONTROL_OPLIST(name, a) \
|
||||||
|
M_CHECK_COMPATIBLE_OPLIST(name, TUPLE_GET_FIELD a, \
|
||||||
|
TUPLE_GET_TYPE a, TUPLE_GET_OPLIST a)
|
||||||
|
|
||||||
|
|
||||||
#define TUPLE_DEFINE_INIT(name, ...) \
|
#define TUPLE_DEFINE_INIT(name, ...) \
|
||||||
static inline void M_C(name, _init)(M_C(name,_t) my) { \
|
static inline void M_C(name, _init)(M_C(name,_t) my) { \
|
||||||
|
|||||||
@@ -81,6 +81,7 @@
|
|||||||
/* Define the variant */
|
/* Define the variant */
|
||||||
#define VARIANTI_DEF2_P3(name, ...) \
|
#define VARIANTI_DEF2_P3(name, ...) \
|
||||||
VARIANTI_DEFINE_TYPE(name, __VA_ARGS__) \
|
VARIANTI_DEFINE_TYPE(name, __VA_ARGS__) \
|
||||||
|
VARIANTI_CONTROL_ALL_OPLIST(name, __VA_ARGS__) \
|
||||||
VARIANTI_DEFINE_INIT(name, __VA_ARGS__) \
|
VARIANTI_DEFINE_INIT(name, __VA_ARGS__) \
|
||||||
VARIANTI_DEFINE_CLEAR(name, __VA_ARGS__) \
|
VARIANTI_DEFINE_CLEAR(name, __VA_ARGS__) \
|
||||||
VARIANTI_DEFINE_INIT_SET(name, __VA_ARGS__) \
|
VARIANTI_DEFINE_INIT_SET(name, __VA_ARGS__) \
|
||||||
@@ -176,6 +177,13 @@
|
|||||||
VARIANTI_GET_TYPE a VARIANTI_GET_FIELD a ;
|
VARIANTI_GET_TYPE a VARIANTI_GET_FIELD a ;
|
||||||
|
|
||||||
|
|
||||||
|
#define VARIANTI_CONTROL_ALL_OPLIST(name, ...) \
|
||||||
|
M_MAP2(VARIANTI_CONTROL_OPLIST, name, __VA_ARGS__)
|
||||||
|
#define VARIANTI_CONTROL_OPLIST(name, a) \
|
||||||
|
M_CHECK_COMPATIBLE_OPLIST(name, VARIANTI_GET_FIELD a, \
|
||||||
|
VARIANTI_GET_TYPE a, VARIANTI_GET_OPLIST a)
|
||||||
|
|
||||||
|
|
||||||
#define VARIANTI_DEFINE_INIT(name, ...) \
|
#define VARIANTI_DEFINE_INIT(name, ...) \
|
||||||
static inline void M_C(name, _init)(M_C(name,_t) my) { \
|
static inline void M_C(name, _init)(M_C(name,_t) my) { \
|
||||||
my->type = M_C(name, _EMPTY); \
|
my->type = M_C(name, _EMPTY); \
|
||||||
|
|||||||
Reference in new issue
Block a user