ChatPlexSDK-BS 1.0.1-v6.2.0
C++ ChatPlex BeatSaber SDK
Loading...
Searching...
No Matches
Il2cpp.hpp
1#pragma once
2
3#define __CP_SDK_U16STR(__mX) u##__mX
4#define CP_SDK_U16STR(__mX) __CP_SDK_U16STR(#__mX)
5
6#include "../Logging/BMBFLogger.hpp"
7#include "Internals/Il2cpp_enum.hpp"
8#include "Internals/il2cpp_customtype.hpp"
9#include "Internals/il2cpp_hook.hpp"
10#include "Internals/Il2cpp_string.hpp"
11
12#include <vector>
13#include <stdint.h>
14#include <array>
15#include <string>
16#include <algorithm>
17#include <memory>
18
19#include <beatsaber-hook/shared/utils/hooking.hpp>
20#include <custom-types/shared/macros.hpp>
21#include <UnityEngine/Object.hpp>
22
25
27#define CP_SDK_NO_DEF_CTORS(__mName) \
28 __mName() = delete; \
29 __mName(const __mName&) = delete; \
30 __mName(__mName&&) = delete;
31
33#define CP_SDK_NO_COPYMOVE_CTORS(__mName) \
34 __mName(const __mName&) = delete; \
35 __mName(__mName&&) = delete;
36
39
40namespace CP_SDK::Utils {
41
43 class Hooks
44 {
45 CP_SDK_NO_DEF_CTORS(Hooks);
46
47 private:
49 static std::vector<void (*)(Logger& logger)> m_InstalledFuncs;
50
51 public:
54 static void Register(void (*p_Function)(Logger&));
56 static void InstallHooks();
57
58 };
59
60}
61
64
66#define CP_SDK_PRIV_TAG() struct __this_is_private { explicit __this_is_private(int) {} };
68#define CP_SDK_PRIV_TAG_ARG() const __this_is_private & __pvTag
70#define CP_SDK_PRIV_TAG_VAL() __this_is_private{0}
72#define CP_SDK_PRIV_TAG_FWD() __pvTag
73
76
78#define CP_SDK_IL2CPP_INTERFACES(...) \
79 CP_SDK::Utils::Internals::ExtractInterfacesClasses<__VA_ARGS__>()
80
83
86#define CP_SDK_IL2CPP_INHERIT(__mNamespace, __mName, __mBaseClass, ...) \
87 __CP_SDK_IL2CPP_INHERIT(__mNamespace, __mName, __mBaseClass __VA_OPT__(,) __VA_ARGS__)
88
90#define CP_SDK_IL2CPP_INHERIT_HELPERS(__mName) \
91 __CP_SDK_IL2CPP_INHERIT_HELPERS(__mName)
92
94#define CP_SDK_IL2CPP_INHERIT_INIT(__mName) \
95 __CP_SDK_IL2CPP_INHERIT_INIT(__mName)
96
99
101#define CP_SDK_IL2CPP_CTOR_FIELD() \
102 __CP_SDK_IL2CPP_CTOR_FIELD()
103
105#define CP_SDK_IL2CPP_DECLARE_CTOR(__mType) \
106 __CP_SDK_IL2CPP_DECLARE_CTOR(__mType)
107
109#define CP_SDK_IL2CPP_DECLARE_CTOR_CHILD(__mType) \
110 __CP_SDK_IL2CPP_DECLARE_CTOR_CHILD(__mType)
111
113#define CP_SDK_IL2CPP_DECLARE_CTOR_IMPL(__mType) \
114 __CP_SDK_IL2CPP_DECLARE_CTOR_IMPL(__mType)
115
118
120#define CP_SDK_IL2CPP_DTOR_FIELD() \
121 __CP_SDK_IL2CPP_DTOR_FIELD()
122
124#define CP_SDK_IL2CPP_DECLARE_DTOR_MONOBEHAVIOUR(__mType) \
125 __CP_SDK_IL2CPP_DECLARE_DTOR_MONOBEHAVIOUR(__mType)
126
128#define CP_SDK_IL2CPP_DECLARE_DTOR_MONOBEHAVIOUR_CHILD(__mType) \
129 __CP_SDK_IL2CPP_DECLARE_DTOR_MONOBEHAVIOUR_CHILD(__mType)
130
132#define CP_SDK_IL2CPP_DECLARE_DTOR_MONOBEHAVIOUR_IMPL(__mType) \
133 __CP_SDK_IL2CPP_DECLARE_DTOR_MONOBEHAVIOUR_IMPL(__mType)
134
137
139#define CP_SDK_IL2CPP_OVERRIDE_METHOD(__mBaseClass, __mRet, __mMethodName, ...) \
140 __CP_SDK_IL2CPP_OVERRIDE_METHOD(__mBaseClass, __mRet, __mMethodName, il2cpp_utils::il2cpp_type_check::MetadataGetter<&__mBaseClass::__mMethodName>::get() __VA_OPT__(,) __VA_ARGS__)
141
143#define CP_SDK_IL2CPP_OVERRIDE_METHOD_EX(__mNamespace, __mBaseClass, __mRet, __mMethodName, ...) \
144 __CP_SDK_IL2CPP_OVERRIDE_METHOD(__mBaseClass, __mRet, __mMethodName, il2cpp_utils::il2cpp_type_check::MetadataGetter<&__mNamespace::__mBaseClass::__mMethodName>::get() __VA_OPT__(,) __VA_ARGS__)
145
148
150#define CP_SDK_IL2CPP_CALL_BASE_METHOD(__mBaseClass, __mMethodName, ...) \
151 __CP_SDK_IL2CPP_CALL_BASE_METHOD(true, classof(__mBaseClass*), CP_SDK_U16STR(__mBaseClass), __mMethodName __VA_OPT__(,) __VA_ARGS__)
152
157
159#define CP_SDK_IL2CPP_HOOK_MAKE_AUTO_HOOK_MATCH(__mName, __mPtr, __mRetval, ...) \
160 __CP_SDK_IL2CPP_HOOK_MAKE_AUTO_HOOK_MATCH(__mName, __mPtr, __mRetval __VA_OPT__(,) __VA_ARGS__)
161
163#define CP_SDK_IL2CPP_HOOK_MAKE_AUTO_HOOK_ORIG_MATCH(__mName, __mPtr, __mRetval, ...) \
164 __CP_SDK_IL2CPP_HOOK_MAKE_AUTO_HOOK_ORIG_MATCH(__mName, __mPtr, __mRetval __VA_OPT__(,) __VA_ARGS__)
Hook manager.
Definition Il2cpp.hpp:44
static void InstallHooks()
Install all hooks.
static void Register(void(*p_Function)(Logger &))
Register a hook.
Various platform utils like Delegate/Action/Function/Event system.
Definition Delegate.hpp:8