diff --git a/Include/AuroraInterfaces.hpp b/Include/AuroraInterfaces.hpp index 52e9591..877b2d2 100644 --- a/Include/AuroraInterfaces.hpp +++ b/Include/AuroraInterfaces.hpp @@ -10,6 +10,19 @@ ***/ #pragma once +#if defined(AURORA_RUNTIME_AU_FUNC) + template + using AuiFunction = AURORA_RUNTIME_AU_FUNC; +#elif defined(AUI_FUNC) + template + using AuiFunction = AUI_FUNC; +#else + #include + + template + using AuiFunction = std::function; +#endif + #define AUI_BRACKET_SCOPE(...) __VA_ARGS__ #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_FUNCTIONAL_IMPL(ret, name, params) \ - AuFunction name ## Functional; \ + name ## _t name ## Functional; \ virtual ret name (AUI_EXPAND_PARAMS params) override \ { \ return name ## Functional(AUI_EXPAND_PARAMS_PARAMS params); \ } #define AUI_METHOD_FUNCTIONAL_TYPEDEF(ret, name, params) \ - using name ## _t = AuFunction; + using name ## _t = AuiFunction; #define AUI_METHOD_PROTOTYPE_TO_FUNCTIONAL(ret, name, params) \ name ## _t name ## Functional @@ -43,7 +56,7 @@ const name ## _t &name ## Functional #define AUI_METHOD_PROTOTYPE_TO_FUNCTIONAL_REF(ret, name, params) \ - AuFunction && 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_B(ret, name, params) , AUI_METHOD_PROTOTYPE_TO_FUNCTIONAL_CREF(ret, name, params)