128 lines
4.0 KiB
C
128 lines
4.0 KiB
C
#pragma once
|
|
|
|
#include "il2cpp-config.h"
|
|
#include <stdint.h>
|
|
#include "il2cpp-tokentype.h"
|
|
|
|
typedef int32_t TypeIndex;
|
|
typedef int32_t TypeDefinitionIndex;
|
|
typedef int32_t FieldIndex;
|
|
typedef int32_t DefaultValueIndex;
|
|
typedef int32_t DefaultValueDataIndex;
|
|
typedef int32_t CustomAttributeIndex;
|
|
typedef int32_t ParameterIndex;
|
|
typedef int32_t MethodIndex;
|
|
typedef int32_t GenericMethodIndex;
|
|
typedef int32_t PropertyIndex;
|
|
typedef int32_t EventIndex;
|
|
typedef int32_t GenericContainerIndex;
|
|
typedef int32_t GenericParameterIndex;
|
|
typedef int16_t GenericParameterConstraintIndex;
|
|
typedef int32_t NestedTypeIndex;
|
|
typedef int32_t InterfacesIndex;
|
|
typedef int32_t VTableIndex;
|
|
typedef int32_t RGCTXIndex;
|
|
typedef int32_t StringIndex;
|
|
typedef int32_t StringLiteralIndex;
|
|
typedef int32_t GenericInstIndex;
|
|
typedef int32_t ImageIndex;
|
|
typedef int32_t AssemblyIndex;
|
|
typedef int32_t InteropDataIndex;
|
|
|
|
// "Relative" indexes - based on their parent
|
|
typedef int32_t TypeFieldIndex;
|
|
typedef int32_t TypeMethodIndex;
|
|
typedef int32_t MethodParameterIndex;
|
|
typedef int32_t TypePropertyIndex;
|
|
typedef int32_t TypeEventIndex;
|
|
typedef int32_t TypeInterfaceIndex;
|
|
typedef int32_t TypeNestedTypeIndex;
|
|
typedef int32_t TypeInterfaceOffsetIndex;
|
|
typedef int32_t GenericContainerParameterIndex;
|
|
typedef int32_t AssemblyTypeIndex;
|
|
typedef int32_t AssemblyExportedTypeIndex;
|
|
|
|
static const TypeIndex kTypeIndexInvalid = -1;
|
|
static const TypeDefinitionIndex kTypeDefinitionIndexInvalid = -1;
|
|
static const DefaultValueDataIndex kDefaultValueIndexNull = -1;
|
|
static const CustomAttributeIndex kCustomAttributeIndexInvalid = -1;
|
|
static const EventIndex kEventIndexInvalid = -1;
|
|
static const FieldIndex kFieldIndexInvalid = -1;
|
|
static const MethodIndex kMethodIndexInvalid = -1;
|
|
static const PropertyIndex kPropertyIndexInvalid = -1;
|
|
static const GenericContainerIndex kGenericContainerIndexInvalid = -1;
|
|
static const GenericParameterIndex kGenericParameterIndexInvalid = -1;
|
|
static const RGCTXIndex kRGCTXIndexInvalid = -1;
|
|
static const StringLiteralIndex kStringLiteralIndexInvalid = -1;
|
|
static const InteropDataIndex kInteropDataIndexInvalid = -1;
|
|
|
|
#define PUBLIC_KEY_BYTE_LENGTH 8
|
|
static const int kPublicKeyByteLength = PUBLIC_KEY_BYTE_LENGTH;
|
|
|
|
typedef struct Il2CppMethodSpec
|
|
{
|
|
MethodIndex methodDefinitionIndex;
|
|
GenericInstIndex classIndexIndex;
|
|
GenericInstIndex methodIndexIndex;
|
|
} Il2CppMethodSpec;
|
|
|
|
typedef enum Il2CppRGCTXDataType
|
|
{
|
|
IL2CPP_RGCTX_DATA_INVALID,
|
|
IL2CPP_RGCTX_DATA_TYPE,
|
|
IL2CPP_RGCTX_DATA_CLASS,
|
|
IL2CPP_RGCTX_DATA_METHOD,
|
|
IL2CPP_RGCTX_DATA_ARRAY,
|
|
IL2CPP_RGCTX_DATA_CONSTRAINED,
|
|
} Il2CppRGCTXDataType;
|
|
|
|
typedef union Il2CppRGCTXDefinitionData
|
|
{
|
|
int32_t rgctxDataDummy;
|
|
MethodIndex __methodIndex;
|
|
TypeIndex __typeIndex;
|
|
} Il2CppRGCTXDefinitionData;
|
|
|
|
typedef struct Il2CppRGCTXConstrainedData
|
|
{
|
|
TypeIndex __typeIndex;
|
|
uint32_t __encodedMethodIndex;
|
|
} Il2CppRGCTXConstrainedData;
|
|
|
|
typedef struct Il2CppRGCTXDefinition
|
|
{
|
|
Il2CppRGCTXDataType type;
|
|
const void* data;
|
|
} Il2CppRGCTXDefinition;
|
|
|
|
typedef struct
|
|
{
|
|
MethodIndex methodIndex;
|
|
MethodIndex invokerIndex;
|
|
MethodIndex adjustorThunkIndex;
|
|
} Il2CppGenericMethodIndices;
|
|
|
|
typedef struct Il2CppGenericMethodFunctionsDefinitions
|
|
{
|
|
GenericMethodIndex genericMethodIndex;
|
|
Il2CppGenericMethodIndices indices;
|
|
} Il2CppGenericMethodFunctionsDefinitions;
|
|
|
|
static inline uint32_t GetTokenType(uint32_t token)
|
|
{
|
|
return token & 0xFF000000;
|
|
}
|
|
|
|
static inline uint32_t GetTokenRowId(uint32_t token)
|
|
{
|
|
return token & 0x00FFFFFF;
|
|
}
|
|
|
|
/* Runtime metadata tokens */
|
|
typedef const struct ___Il2CppMetadataImageHandle* Il2CppMetadataImageHandle;
|
|
typedef const struct ___Il2CppMetadataCustomAttributeHandle* Il2CppMetadataCustomAttributeHandle;
|
|
typedef const struct ___Il2CppMetadataTypeHandle* Il2CppMetadataTypeHandle;
|
|
typedef const struct ___Il2CppMetadataMethodHandle* Il2CppMetadataMethodDefinitionHandle;
|
|
typedef const struct ___Il2CppMetadataGenericContainerHandle* Il2CppMetadataGenericContainerHandle;
|
|
typedef const struct ___Il2CppMetadataGenericParameterHandle* Il2CppMetadataGenericParameterHandle;
|