LearnWithTouch/App/LearnWithTouch_ios/Libraries/libil2cpp/include/il2cpp-runtime-metadata.h
2019-07-01 14:33:21 +02:00

106 lines
3.2 KiB
C

#pragma once
#include <stdint.h>
#include "il2cpp-blob.h"
#include "il2cpp-metadata.h"
struct Il2CppClass;
struct MethodInfo;
struct Il2CppType;
typedef struct Il2CppArrayType
{
const Il2CppType* etype;
uint8_t rank;
uint8_t numsizes;
uint8_t numlobounds;
int *sizes;
int *lobounds;
} Il2CppArrayType;
typedef struct Il2CppGenericInst
{
uint32_t type_argc;
const Il2CppType **type_argv;
} Il2CppGenericInst;
typedef struct Il2CppGenericContext
{
/* The instantiation corresponding to the class generic parameters */
const Il2CppGenericInst *class_inst;
/* The instantiation corresponding to the method generic parameters */
const Il2CppGenericInst *method_inst;
} Il2CppGenericContext;
typedef struct Il2CppGenericParameter
{
GenericContainerIndex ownerIndex; /* Type or method this parameter was defined in. */
StringIndex nameIndex;
GenericParameterConstraintIndex constraintsStart;
int16_t constraintsCount;
uint16_t num;
uint16_t flags;
} Il2CppGenericParameter;
typedef struct Il2CppGenericContainer
{
/* index of the generic type definition or the generic method definition corresponding to this container */
int32_t ownerIndex; // either index into Il2CppClass metadata array or Il2CppMethodDefinition array
int32_t type_argc;
/* If true, we're a generic method, otherwise a generic type definition. */
int32_t is_method;
/* Our type parameters. */
GenericParameterIndex genericParameterStart;
} Il2CppGenericContainer;
typedef struct Il2CppGenericClass
{
TypeDefinitionIndex typeDefinitionIndex; /* the generic type definition */
Il2CppGenericContext context; /* a context that contains the type instantiation doesn't contain any method instantiation */
Il2CppClass *cached_class; /* if present, the Il2CppClass corresponding to the instantiation. */
} Il2CppGenericClass;
typedef struct Il2CppGenericMethod
{
const MethodInfo* methodDefinition;
Il2CppGenericContext context;
} Il2CppGenericMethod;
typedef struct Il2CppType
{
union
{
// We have this dummy field first because pre C99 compilers (MSVC) can only initializer the first value in a union.
void* dummy;
TypeDefinitionIndex klassIndex; /* for VALUETYPE and CLASS */
const Il2CppType *type; /* for PTR and SZARRAY */
Il2CppArrayType *array; /* for ARRAY */
//MonoMethodSignature *method;
GenericParameterIndex genericParameterIndex; /* for VAR and MVAR */
Il2CppGenericClass *generic_class; /* for GENERICINST */
} data;
unsigned int attrs : 16; /* param attributes or field flags */
Il2CppTypeEnum type : 8;
unsigned int num_mods : 6; /* max 64 modifiers follow at the end */
unsigned int byref : 1;
unsigned int pinned : 1; /* valid when included in a local var signature */
//MonoCustomMod modifiers [MONO_ZERO_LEN_ARRAY]; /* this may grow */
} Il2CppType;
typedef enum Il2CppCallConvention
{
IL2CPP_CALL_DEFAULT,
IL2CPP_CALL_C,
IL2CPP_CALL_STDCALL,
IL2CPP_CALL_THISCALL,
IL2CPP_CALL_FASTCALL,
IL2CPP_CALL_VARARG
} Il2CppCallConvention;
typedef enum Il2CppCharSet
{
CHARSET_ANSI,
CHARSET_UNICODE,
CHARSET_NOT_SPECIFIED
} Il2CppCharSet;