ChatPlexSDK-BS
1.0.1-v6.2.0
C++ ChatPlex BeatSaber SDK
Loading...
Searching...
No Matches
shared
CP_SDK
Utils
Internals
il2cpp_hook.hpp
1
#pragma once
2
3
#define __CP_SDK_IL2CPP_HOOK_AUTO_INSTALL_ORIG(__mName) \
4
struct Auto_Hook_##__mName \
5
{ \
6
Auto_Hook_##__mName() \
7
{ \
8
::CP_SDK::Utils::Hooks::Register(::Hooking::InstallOrigHook<Hook_##__mName>); \
9
} \
10
}; \
11
static Auto_Hook_##__mName Auto_Hook_Instance_##__mName;
12
13
#define __CP_SDK_IL2CPP_HOOK_AUTO_INSTALL(__mName) \
14
struct Auto_Hook_##__mName \
15
{ \
16
Auto_Hook_##__mName() \
17
{ \
18
::CP_SDK::Utils::Hooks::Register(::Hooking::InstallHook<Hook_##__mName>); \
19
} \
20
}; \
21
static Auto_Hook_##__mName Auto_Hook_Instance_##__mName;
22
25
26
#define __CP_SDK_IL2CPP_HOOK_MAKE_AUTO_HOOK_MATCH(__mName, __mPtr, __mRetval, ...) \
27
struct Hook_##__mName \
28
{ \
29
using funcType = __mRetval (*)(__VA_ARGS__); \
30
static_assert(std::is_same_v<funcType, ::Hooking::InternalMethodCheck<decltype(__mPtr)>::funcType>, "Hook method signature does not match!"); \
31
constexpr static const char* name() { return #__mName; } \
32
static const MethodInfo* getInfo() { return ::il2cpp_utils::il2cpp_type_check::MetadataGetter<__mPtr>::get(); } \
33
static funcType* trampoline() { return &__mName; } \
34
static inline __mRetval (*__mName)(__VA_ARGS__) = nullptr; \
35
static funcType hook() { return hook_##__mName; } \
36
static __mRetval hook_##__mName(__VA_ARGS__); \
37
}; \
38
__CP_SDK_IL2CPP_HOOK_AUTO_INSTALL(__mName); \
39
__mRetval Hook_##__mName::hook_##__mName(__VA_ARGS__)
40
41
#define __CP_SDK_IL2CPP_HOOK_MAKE_AUTO_HOOK_ORIG_MATCH(__mName, __mPtr, __mRetval, ...) \
42
struct Hook_##__mName \
43
{ \
44
using funcType = __mRetval (*)(__VA_ARGS__); \
45
static_assert(std::is_same_v<funcType, ::Hooking::InternalMethodCheck<decltype(__mPtr)>::funcType>, "Hook method signature does not match!"); \
46
constexpr static const char* name() { return #__mName; } \
47
static const MethodInfo* getInfo() { return ::il2cpp_utils::il2cpp_type_check::MetadataGetter<__mPtr>::get(); } \
48
static funcType* trampoline() { return &__mName; } \
49
static inline __mRetval (*__mName)(__VA_ARGS__) = nullptr; \
50
static funcType hook() { return hook_##__mName; } \
51
static __mRetval hook_##__mName(__VA_ARGS__); \
52
}; \
53
__CP_SDK_IL2CPP_HOOK_AUTO_INSTALL_ORIG(__mName); \
54
__mRetval Hook_##__mName::hook_##__mName(__VA_ARGS__)
Generated by
1.9.8