35 lines
898 B
C++
35 lines
898 B
C++
#ifndef AE625BF8_B0F9_452E_8772_8819F311CB57
|
|
#define AE625BF8_B0F9_452E_8772_8819F311CB57
|
|
|
|
#include <stdexcept>
|
|
|
|
struct GHStubException : public std::exception {
|
|
GHStubException(const char *msg);
|
|
};
|
|
|
|
void *gh_stub_impl_ptr(void *ptr);
|
|
|
|
template <typename T, typename... Args>
|
|
T gh_stub_impl_cdecl(void *ptr, Args... args) {
|
|
#if RE_DBG_INJECTED
|
|
using Callable = __cdecl T (*)(Args...);
|
|
static Callable *ptr = (Callable *)gh_stub_impl_ptr(ptr);
|
|
return ptr(args...);
|
|
#else
|
|
throw GHStubException("Function not implemented");
|
|
#endif
|
|
}
|
|
|
|
template <typename T, typename... Args>
|
|
T gh_stub_impl_stdcall(void *ptr, Args... args) {
|
|
#if RE_DBG_INJECTED
|
|
using Callable = __stdcall T (*)(Args...);
|
|
static Callable *ptr = (Callable *)gh_stub_impl_ptr(ptr);
|
|
return ptr(args...);
|
|
#else
|
|
throw GHStubException("Function not implemented");
|
|
#endif
|
|
}
|
|
|
|
#endif /* AE625BF8_B0F9_452E_8772_8819F311CB57 */
|