Badminton-Scoreboard/Libraries/libil2cpp/include/metadata/GenericMethod.h
2023-10-08 10:24:48 +08:00

43 lines
1.7 KiB
C++

#pragma once
#include <string>
#include "il2cpp-class-internals.h"
#include "os/Mutex.h"
struct MethodInfo;
struct Il2CppGenericMethod;
struct Il2CppGenericContext;
struct Il2CppGenericInst;
namespace il2cpp
{
namespace metadata
{
class GenericMethod
{
public:
// exported
public:
//internal
static const MethodInfo* GetGenericVirtualMethod(const MethodInfo* vtableSlotMethod, const MethodInfo* genericVirtualMethod);
static const MethodInfo* GetMethod(const MethodInfo* methodDefinition, const Il2CppGenericInst* classInst, const Il2CppGenericInst* methodInst);
static const MethodInfo* GetMethod(const Il2CppGenericMethod* gmethod);
static MethodInfo* AllocateNewMethodInfo(const MethodInfo* methodDefinition, const Il2CppGenericInst* classInst, const Il2CppGenericInst* methodInst);
static bool IsGenericAmbiguousMethodInfo(const MethodInfo* method);
static Il2CppMethodPointer GetVirtualCallMethodPointer(const MethodInfo* method);
static const Il2CppGenericContext* GetContext(const Il2CppGenericMethod* gmethod);
static std::string GetFullName(const Il2CppGenericMethod* gmethod);
static void ClearStatics();
static const Il2CppRGCTXData* InflateRGCTX(const MethodInfo* method);
private:
static const MethodInfo* GetMethod(const Il2CppGenericMethod* gmethod, bool copyMethodPtr);
static const MethodInfo* CreateMethodLocked(const Il2CppGenericMethod* gmethod, bool copyMethodPtr);
static const Il2CppRGCTXData* InflateRGCTXLocked(const Il2CppGenericMethod* gmethod, const il2cpp::os::FastAutoLock& lock);
};
} /* namespace vm */
} /* namespace il2cpp */