#ifndef GEODE_CORE_META_THISCALL_HPP #define GEODE_CORE_META_THISCALL_HPP namespace geode::core::meta::x86 { template class Thiscall { private: template static Ret __thiscall wrapper(Args... all) { return detour(all...); } public: static Ret invoke(void* address, Args... all) { Ret(__thiscall * raw)(Args...) = reinterpret_cast(address); return raw(all...); } template static constexpr decltype(auto) get_wrapper() { return &wrapper; } }; } #endif /* GEODE_CORE_META_THISCALL_HPP */