macrohax: make MACROHAX_CONCAT useful and simplify a bunch of macros

This commit is contained in:
Andrei Alexeyev 2021-08-12 20:00:12 +03:00
parent f7ed0befdf
commit 93d779df43
No known key found for this signature in database
GPG key ID: 72D26128040B9690
3 changed files with 18 additions and 18 deletions

View file

@ -1,14 +1,15 @@
// this needs an extra indirection to expand EXPORT_DIALOG_TASKS_CHARACTER
#define EDT_CONCAT(a, b) MACROHAX_CONCAT(a, b)
// Fill the global dialog_tasks_<character> struct
#define WITH_EVENTS(_name, _events) WITHOUT_EVENTS(_name)
#define WITHOUT_EVENTS(_name) \
._name = MACROHAX_EXPAND(MACROHAX_DEFER(TASK_INDIRECT_INIT)(_name##Dialog, EDT_CONCAT(EXPORT_DIALOG_TASKS_CHARACTER, _##_name##Dialog))),
._name = MACROHAX_EXPAND(\
MACROHAX_DEFER(TASK_INDIRECT_INIT)( \
_name##Dialog, MACROHAX_CONCAT(EXPORT_DIALOG_TASKS_CHARACTER, _##_name##Dialog) \
) \
),
PlayerDialogTasks EDT_CONCAT(dialog_tasks_, EXPORT_DIALOG_TASKS_CHARACTER) = {
PlayerDialogTasks MACROHAX_CONCAT(dialog_tasks_, EXPORT_DIALOG_TASKS_CHARACTER) = {
DIALOG_SCRIPTS
};
@ -17,12 +18,13 @@ PlayerDialogTasks EDT_CONCAT(dialog_tasks_, EXPORT_DIALOG_TASKS_CHARACTER) = {
#undef WITHOUT_EVENTS
#define WITHOUT_EVENTS(_name) \
attr_unused static char MACROHAX_EXPAND(MACROHAX_DEFER(EDT_CONCAT)(COTASK_UNUSED_CHECK_, EDT_CONCAT(EXPORT_DIALOG_TASKS_CHARACTER, _##_name##Dialog)));
attr_unused static char MACROHAX_CONCAT( \
COTASK_UNUSED_CHECK_, MACROHAX_CONCAT(EXPORT_DIALOG_TASKS_CHARACTER, _##_name##Dialog) \
);
DIALOG_SCRIPTS
#undef WITH_EVENTS
#undef WITHOUT_EVENTS
#undef EDT_CONTAT
#undef EXPORT_DIALOG_TASKS_CHARACTER

View file

@ -5,16 +5,16 @@
#define _CONV_OUT_IS_FLOAT ((float)_CONV_OUT_MAX == 1.0f)
#define _CONV_VALUE_FUNC \
MACROHAX_EXPAND(MACROHAX_DEFER(MACROHAX_CONCAT)(_CONV_FUNCNAME, _convert_value))
MACROHAX_CONCAT(_CONV_FUNCNAME, _convert_value)
#define _CONV_IMPL_FUNC \
MACROHAX_EXPAND(MACROHAX_DEFER(MACROHAX_CONCAT)(_CONV_FUNCNAME, _impl))
MACROHAX_CONCAT(_CONV_FUNCNAME, _impl)
#define _CONV_DISPATCH_1_FUNC \
_CONV_FUNCNAME
#define _CONV_DISPATCH_2_FUNC \
MACROHAX_EXPAND(MACROHAX_DEFER(MACROHAX_CONCAT)(_CONV_FUNCNAME, _dispatch_2))
MACROHAX_CONCAT(_CONV_FUNCNAME, _dispatch_2)
static _CONV_OUT_TYPE _CONV_VALUE_FUNC(_CONV_IN_TYPE val) {
if(_CONV_IN_IS_FLOAT) {

View file

@ -17,8 +17,9 @@
#define MACROHAX_DEFER(id) id MACROHAX_EMPTY()
#define MACROHAX_OBSTRUCT(...) __VA_ARGS__ MACROHAX_DEFER(MACROHAX_EMPTY)()
#define MACROHAX_EXPAND(...) __VA_ARGS__
#define MACROHAX_CONCAT(a, b) a ## b
#define MACROHAX_ADDLINENUM(a) MACROHAX_EXPAND(MACROHAX_DEFER(MACROHAX_CONCAT)(a, __LINE__))
#define MACROHAX_CONCAT_(a, b) a ## b
#define MACROHAX_CONCAT(a, b) MACROHAX_CONCAT_(a, b)
#define MACROHAX_ADDLINENUM(a) MACROHAX_CONCAT(a, __LINE__)
#define MACROHAX_STRINGIFY(x) #x
// Expands to 0 if argument list is empty, 1 otherwise.
@ -55,14 +56,11 @@
// Expands to baseN, where N is the number of arguments.
#define MACROHAX_OVERLOAD_NARGS(base, ...) \
MACROHAX_EXPAND(\
MACROHAX_DEFER(MACROHAX_CONCAT)(base, MACROHAX_NARGS(__VA_ARGS__))\
)
MACROHAX_CONCAT(base, MACROHAX_NARGS(__VA_ARGS__))
// Expands to baseN, where N is 0 if the argument list is empty, 1 otherwise.
#define MACROHAX_OVERLOAD_HASARGS(base, ...) \
MACROHAX_EXPAND(\
MACROHAX_DEFER(MACROHAX_CONCAT)(base, MACROHAX_HASARGS(__VA_ARGS__))\
)
MACROHAX_CONCAT(base, MACROHAX_HASARGS(__VA_ARGS__))
#endif // IGUARD_util_macrohax_h