[+] Made AuiFunction a customer overloadable type. Solves #1
This commit is contained in:
parent
e9b8d45e0a
commit
d9d83f00cd
@ -10,6 +10,19 @@
|
|||||||
***/
|
***/
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
|
#if defined(AURORA_RUNTIME_AU_FUNC)
|
||||||
|
template<class T>
|
||||||
|
using AuiFunction = AURORA_RUNTIME_AU_FUNC<T>;
|
||||||
|
#elif defined(AUI_FUNC)
|
||||||
|
template<class T>
|
||||||
|
using AuiFunction = AUI_FUNC<T>;
|
||||||
|
#else
|
||||||
|
#include <functional>
|
||||||
|
|
||||||
|
template<class T>
|
||||||
|
using AuiFunction = std::function<T>;
|
||||||
|
#endif
|
||||||
|
|
||||||
#define AUI_BRACKET_SCOPE(...) __VA_ARGS__
|
#define AUI_BRACKET_SCOPE(...) __VA_ARGS__
|
||||||
|
|
||||||
#define AUI_EXPAND_PARAMS_JOINER_A(a, b) a b
|
#define AUI_EXPAND_PARAMS_JOINER_A(a, b) a b
|
||||||
@ -27,14 +40,14 @@
|
|||||||
#define AUI_METHOD_IMPL(ret, name, params) virtual ret name(AUI_EXPAND_PARAMS params) = 0;
|
#define AUI_METHOD_IMPL(ret, name, params) virtual ret name(AUI_EXPAND_PARAMS params) = 0;
|
||||||
|
|
||||||
#define AUI_METHOD_FUNCTIONAL_IMPL(ret, name, params) \
|
#define AUI_METHOD_FUNCTIONAL_IMPL(ret, name, params) \
|
||||||
AuFunction<ret(AUI_EXPAND_PARAMS_TYPES params)> name ## Functional; \
|
name ## _t name ## Functional; \
|
||||||
virtual ret name (AUI_EXPAND_PARAMS params) override \
|
virtual ret name (AUI_EXPAND_PARAMS params) override \
|
||||||
{ \
|
{ \
|
||||||
return name ## Functional(AUI_EXPAND_PARAMS_PARAMS params); \
|
return name ## Functional(AUI_EXPAND_PARAMS_PARAMS params); \
|
||||||
}
|
}
|
||||||
|
|
||||||
#define AUI_METHOD_FUNCTIONAL_TYPEDEF(ret, name, params) \
|
#define AUI_METHOD_FUNCTIONAL_TYPEDEF(ret, name, params) \
|
||||||
using name ## _t = AuFunction<ret(AUI_EXPAND_PARAMS_TYPES params)>;
|
using name ## _t = AuiFunction<ret(AUI_EXPAND_PARAMS_TYPES params)>;
|
||||||
|
|
||||||
#define AUI_METHOD_PROTOTYPE_TO_FUNCTIONAL(ret, name, params) \
|
#define AUI_METHOD_PROTOTYPE_TO_FUNCTIONAL(ret, name, params) \
|
||||||
name ## _t name ## Functional
|
name ## _t name ## Functional
|
||||||
@ -43,7 +56,7 @@
|
|||||||
const name ## _t &name ## Functional
|
const name ## _t &name ## Functional
|
||||||
|
|
||||||
#define AUI_METHOD_PROTOTYPE_TO_FUNCTIONAL_REF(ret, name, params) \
|
#define AUI_METHOD_PROTOTYPE_TO_FUNCTIONAL_REF(ret, name, params) \
|
||||||
AuFunction<ret(AUI_EXPAND_PARAMS_TYPES params)> && name ## Functional
|
name ## _t && name ## Functional
|
||||||
|
|
||||||
#define AUI_METHOD_FUNCTIONAL_CTOR_PARAMS_BASE_A(ret, name, params) AUI_METHOD_PROTOTYPE_TO_FUNCTIONAL_CREF(ret, name, params)
|
#define AUI_METHOD_FUNCTIONAL_CTOR_PARAMS_BASE_A(ret, name, params) AUI_METHOD_PROTOTYPE_TO_FUNCTIONAL_CREF(ret, name, params)
|
||||||
#define AUI_METHOD_FUNCTIONAL_CTOR_PARAMS_BASE_B(ret, name, params) , AUI_METHOD_PROTOTYPE_TO_FUNCTIONAL_CREF(ret, name, params)
|
#define AUI_METHOD_FUNCTIONAL_CTOR_PARAMS_BASE_B(ret, name, params) , AUI_METHOD_PROTOTYPE_TO_FUNCTIONAL_CREF(ret, name, params)
|
||||||
|
Loading…
Reference in New Issue
Block a user