3#define __CP_SDK_U16STR(__mX) u##__mX
4#define CP_SDK_U16STR(__mX) __CP_SDK_U16STR(#__mX)
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"
19#include <beatsaber-hook/shared/utils/hooking.hpp>
20#include <custom-types/shared/macros.hpp>
21#include <UnityEngine/Object.hpp>
27#define CP_SDK_NO_DEF_CTORS(__mName) \
29 __mName(const __mName&) = delete; \
30 __mName(__mName&&) = delete;
33#define CP_SDK_NO_COPYMOVE_CTORS(__mName) \
34 __mName(const __mName&) = delete; \
35 __mName(__mName&&) = delete;
45 CP_SDK_NO_DEF_CTORS(
Hooks);
49 static std::vector<void (*)(Logger& logger)> m_InstalledFuncs;
54 static void Register(
void (*p_Function)(Logger&));
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
78#define CP_SDK_IL2CPP_INTERFACES(...) \
79 CP_SDK::Utils::Internals::ExtractInterfacesClasses<__VA_ARGS__>()
86#define CP_SDK_IL2CPP_INHERIT(__mNamespace, __mName, __mBaseClass, ...) \
87 __CP_SDK_IL2CPP_INHERIT(__mNamespace, __mName, __mBaseClass __VA_OPT__(,) __VA_ARGS__)
90#define CP_SDK_IL2CPP_INHERIT_HELPERS(__mName) \
91 __CP_SDK_IL2CPP_INHERIT_HELPERS(__mName)
94#define CP_SDK_IL2CPP_INHERIT_INIT(__mName) \
95 __CP_SDK_IL2CPP_INHERIT_INIT(__mName)
101#define CP_SDK_IL2CPP_CTOR_FIELD() \
102 __CP_SDK_IL2CPP_CTOR_FIELD()
105#define CP_SDK_IL2CPP_DECLARE_CTOR(__mType) \
106 __CP_SDK_IL2CPP_DECLARE_CTOR(__mType)
109#define CP_SDK_IL2CPP_DECLARE_CTOR_CHILD(__mType) \
110 __CP_SDK_IL2CPP_DECLARE_CTOR_CHILD(__mType)
113#define CP_SDK_IL2CPP_DECLARE_CTOR_IMPL(__mType) \
114 __CP_SDK_IL2CPP_DECLARE_CTOR_IMPL(__mType)
120#define CP_SDK_IL2CPP_DTOR_FIELD() \
121 __CP_SDK_IL2CPP_DTOR_FIELD()
124#define CP_SDK_IL2CPP_DECLARE_DTOR_MONOBEHAVIOUR(__mType) \
125 __CP_SDK_IL2CPP_DECLARE_DTOR_MONOBEHAVIOUR(__mType)
128#define CP_SDK_IL2CPP_DECLARE_DTOR_MONOBEHAVIOUR_CHILD(__mType) \
129 __CP_SDK_IL2CPP_DECLARE_DTOR_MONOBEHAVIOUR_CHILD(__mType)
132#define CP_SDK_IL2CPP_DECLARE_DTOR_MONOBEHAVIOUR_IMPL(__mType) \
133 __CP_SDK_IL2CPP_DECLARE_DTOR_MONOBEHAVIOUR_IMPL(__mType)
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__)
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__)
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__)
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__)
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__)
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.