From 0e6ac173b8b76a0403a18662473f5c066eeed51c Mon Sep 17 00:00:00 2001 From: Michael Scire Date: Tue, 7 Jul 2020 16:08:01 -0700 Subject: [PATCH] sf: correct invocation def for pointer holder --- .../sf/impl/sf_impl_service_object_macros.hpp | 21 ++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/libraries/libstratosphere/include/stratosphere/sf/impl/sf_impl_service_object_macros.hpp b/libraries/libstratosphere/include/stratosphere/sf/impl/sf_impl_service_object_macros.hpp index da49ab535..2d251f58a 100644 --- a/libraries/libstratosphere/include/stratosphere/sf/impl/sf_impl_service_object_macros.hpp +++ b/libraries/libstratosphere/include/stratosphere/sf/impl/sf_impl_service_object_macros.hpp @@ -111,11 +111,18 @@ namespace ams::sf::impl { }(::ams::sf::impl::TypeTag{}, std::forward(args)...); \ } - #define AMS_SF_IMPL_DECLARE_INTERFACE_FUNCTION_INVOKER(CLASSNAME, CMD_ID, RETURN, NAME, ARGS, VERSION_MIN, VERSION_MAX) \ - template \ - requires std::same_as, AMS_SF_IMPL_HELPER_FUNCTION_ARGS(CLASSNAME, NAME)> \ - static RETURN NAME##Invoker (CLASSNAME *_this, Arguments &&... args) { \ - return static_cast(_this)->NAME(std::forward(args)...); \ + #define AMS_SF_IMPL_DECLARE_INTERFACE_FUNCTION_INVOKER_HOLDER(CLASSNAME, CMD_ID, RETURN, NAME, ARGS, VERSION_MIN, VERSION_MAX) \ + template \ + requires std::same_as, AMS_SF_IMPL_HELPER_FUNCTION_ARGS(CLASSNAME, NAME)> \ + static RETURN NAME##Invoker (CLASSNAME *_this, Arguments &&... args) { \ + return static_cast(_this)->NAME(std::forward(args)...); \ + } + + #define AMS_SF_IMPL_DECLARE_INTERFACE_FUNCTION_INVOKER_POINTER(CLASSNAME, CMD_ID, RETURN, NAME, ARGS, VERSION_MIN, VERSION_MAX) \ + template \ + requires std::same_as, AMS_SF_IMPL_HELPER_FUNCTION_ARGS(CLASSNAME, NAME)> \ + static RETURN NAME##Invoker (CLASSNAME *_this, Arguments &&... args) { \ + return static_cast(_this)->NAME(std::forward(args)...); \ } #define AMS_SF_IMPL_DECLARE_INTERFACE_FUNCTION_IMPL(CLASSNAME, CMD_ID, RETURN, NAME, ARGS, VERSION_MIN, VERSION_MAX) \ @@ -201,7 +208,7 @@ namespace ams::sf::impl { template requires ::ams::sf::IsMitmServiceObject && std::same_as \ static ALWAYS_INLINE bool ShouldMitm(os::ProcessId p, ncm::ProgramId r) { return T::ShouldMitm(p, r); } \ private: \ - CMD_MACRO(CLASSNAME, AMS_SF_IMPL_DECLARE_INTERFACE_FUNCTION_INVOKER) \ + CMD_MACRO(CLASSNAME, AMS_SF_IMPL_DECLARE_INTERFACE_FUNCTION_INVOKER_HOLDER) \ public: \ CMD_MACRO(CLASSNAME, AMS_SF_IMPL_DECLARE_INTERFACE_FUNCTION_IMPL) \ private: \ @@ -225,7 +232,7 @@ namespace ams::sf::impl { ALWAYS_INLINE T &GetImpl() { return *this->impl; } \ ALWAYS_INLINE const T &GetImpl() const { return *this->impl; } \ private: \ - CMD_MACRO(CLASSNAME, AMS_SF_IMPL_DECLARE_INTERFACE_FUNCTION_INVOKER) \ + CMD_MACRO(CLASSNAME, AMS_SF_IMPL_DECLARE_INTERFACE_FUNCTION_INVOKER_POINTER) \ public: \ CMD_MACRO(CLASSNAME, AMS_SF_IMPL_DECLARE_INTERFACE_FUNCTION_IMPL_PTR) \ private: \