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