C++: Include IL2CPP intrinsics of .NET managed types (#79)
This commit is contained in:
@@ -839,28 +839,523 @@ typedef struct Il2CppRuntimeStats
|
||||
bool enabled;
|
||||
} Il2CppRuntimeStats;
|
||||
extern Il2CppRuntimeStats il2cpp_runtime_stats;
|
||||
|
||||
struct MonitorData;
|
||||
struct Il2CppObject {
|
||||
struct Il2CppClass *klass;
|
||||
struct MonitorData *monitor;
|
||||
};
|
||||
typedef struct Il2CppClass Il2CppClass;
|
||||
typedef struct MethodInfo MethodInfo;
|
||||
typedef struct PropertyInfo PropertyInfo;
|
||||
typedef struct FieldInfo FieldInfo;
|
||||
typedef struct EventInfo EventInfo;
|
||||
typedef struct Il2CppType Il2CppType;
|
||||
typedef struct Il2CppAssembly Il2CppAssembly;
|
||||
typedef struct Il2CppException Il2CppException;
|
||||
typedef struct Il2CppImage Il2CppImage;
|
||||
typedef struct Il2CppDomain Il2CppDomain;
|
||||
typedef struct Il2CppString Il2CppString;
|
||||
typedef struct Il2CppReflectionMethod Il2CppReflectionMethod;
|
||||
typedef struct Il2CppAsyncCall Il2CppAsyncCall;
|
||||
typedef struct MonitorData MonitorData;
|
||||
typedef struct FastMutex FastMutex;
|
||||
typedef struct Thread Thread;
|
||||
typedef struct Il2CppReflectionAssembly Il2CppReflectionAssembly;
|
||||
typedef struct Il2CppObject
|
||||
{
|
||||
Il2CppClass *klass;
|
||||
MonitorData *monitor;
|
||||
} Il2CppObject;
|
||||
typedef int32_t il2cpp_array_lower_bound_t;
|
||||
struct Il2CppArrayBounds {
|
||||
il2cpp_array_size_t length;
|
||||
il2cpp_array_lower_bound_t lower_bound;
|
||||
};
|
||||
struct Il2CppArray {
|
||||
struct Il2CppObject obj;
|
||||
struct Il2CppArrayBounds *bounds;
|
||||
il2cpp_array_size_t max_length;
|
||||
/* vector must be 8-byte aligned.
|
||||
On 64-bit platforms, this happens naturally.
|
||||
On 32-bit platforms, sizeof(obj)=8, sizeof(bounds)=4 and sizeof(max_length)=4 so it's also already aligned. */
|
||||
void *vector[32];
|
||||
};
|
||||
struct Il2CppString {
|
||||
struct Il2CppObject object;
|
||||
int32_t length;
|
||||
uint16_t chars[32];
|
||||
};
|
||||
typedef struct Il2CppArrayBounds
|
||||
{
|
||||
il2cpp_array_size_t length;
|
||||
il2cpp_array_lower_bound_t lower_bound;
|
||||
} Il2CppArrayBounds;
|
||||
typedef struct Il2CppArray
|
||||
{
|
||||
Il2CppObject obj;
|
||||
Il2CppArrayBounds *bounds;
|
||||
il2cpp_array_size_t max_length;
|
||||
double vector[32];
|
||||
} Il2CppArray;
|
||||
typedef struct Il2CppString
|
||||
{
|
||||
Il2CppObject object;
|
||||
int32_t length;
|
||||
uint16_t chars[32];
|
||||
} Il2CppString;
|
||||
typedef struct Il2CppDataSegmentString
|
||||
{
|
||||
Il2CppObject object;
|
||||
} Il2CppDataSegmentString;
|
||||
typedef struct Il2CppReflectionType
|
||||
{
|
||||
Il2CppObject object;
|
||||
const Il2CppType *type;
|
||||
} Il2CppReflectionType;
|
||||
typedef struct Il2CppReflectionMonoType
|
||||
{
|
||||
Il2CppReflectionType type;
|
||||
Il2CppObject *type_info;
|
||||
} Il2CppReflectionMonoType;
|
||||
typedef struct Il2CppReflectionEvent
|
||||
{
|
||||
Il2CppObject object;
|
||||
Il2CppObject *cached_add_event;
|
||||
} Il2CppReflectionEvent;
|
||||
typedef struct Il2CppReflectionMonoEvent
|
||||
{
|
||||
Il2CppReflectionEvent event;
|
||||
Il2CppReflectionType* reflectedType;
|
||||
const EventInfo* eventInfo;
|
||||
} Il2CppReflectionMonoEvent;
|
||||
typedef struct Il2CppReflectionMonoEventInfo
|
||||
{
|
||||
Il2CppReflectionType* declaringType;
|
||||
Il2CppReflectionType* reflectedType;
|
||||
Il2CppString* name;
|
||||
Il2CppReflectionMethod* addMethod;
|
||||
Il2CppReflectionMethod* removeMethod;
|
||||
Il2CppReflectionMethod* raiseMethod;
|
||||
uint32_t eventAttributes;
|
||||
Il2CppArray* otherMethods;
|
||||
} Il2CppReflectionMonoEventInfo;
|
||||
typedef struct Il2CppEnumInfo
|
||||
{
|
||||
Il2CppReflectionType *utype;
|
||||
Il2CppArray *values;
|
||||
Il2CppArray *names;
|
||||
void* name_hash;
|
||||
} Il2CppEnumInfo;
|
||||
typedef struct Il2CppReflectionField
|
||||
{
|
||||
Il2CppObject object;
|
||||
Il2CppClass *klass;
|
||||
FieldInfo *field;
|
||||
Il2CppString *name;
|
||||
Il2CppReflectionType *type;
|
||||
uint32_t attrs;
|
||||
} Il2CppReflectionField;
|
||||
typedef struct Il2CppReflectionProperty
|
||||
{
|
||||
Il2CppObject object;
|
||||
Il2CppClass *klass;
|
||||
const PropertyInfo *property;
|
||||
} Il2CppReflectionProperty;
|
||||
typedef struct Il2CppReflectionMethod
|
||||
{
|
||||
Il2CppObject object;
|
||||
const MethodInfo *method;
|
||||
Il2CppString *name;
|
||||
Il2CppReflectionType *reftype;
|
||||
} Il2CppReflectionMethod;
|
||||
typedef struct Il2CppReflectionGenericMethod
|
||||
{
|
||||
Il2CppReflectionMethod base;
|
||||
} Il2CppReflectionGenericMethod;
|
||||
typedef struct Il2CppMethodInfo
|
||||
{
|
||||
Il2CppReflectionType *parent;
|
||||
Il2CppReflectionType *ret;
|
||||
uint32_t attrs;
|
||||
uint32_t implattrs;
|
||||
uint32_t callconv;
|
||||
} Il2CppMethodInfo;
|
||||
typedef struct Il2CppPropertyInfo
|
||||
{
|
||||
Il2CppReflectionType *parent;
|
||||
Il2CppString *name;
|
||||
Il2CppReflectionMethod *get;
|
||||
Il2CppReflectionMethod *set;
|
||||
uint32_t attrs;
|
||||
} Il2CppPropertyInfo;
|
||||
typedef struct Il2CppReflectionParameter
|
||||
{
|
||||
Il2CppObject object;
|
||||
Il2CppReflectionType *ClassImpl;
|
||||
Il2CppObject *DefaultValueImpl;
|
||||
Il2CppObject *MemberImpl;
|
||||
Il2CppString *NameImpl;
|
||||
int32_t PositionImpl;
|
||||
uint32_t AttrsImpl;
|
||||
Il2CppObject *MarshalAsImpl;
|
||||
} Il2CppReflectionParameter;
|
||||
typedef struct Il2CppReflectionModule
|
||||
{
|
||||
Il2CppObject obj;
|
||||
const Il2CppImage* image;
|
||||
Il2CppReflectionAssembly* assembly;
|
||||
Il2CppString* fqname;
|
||||
Il2CppString* name;
|
||||
Il2CppString* scopename;
|
||||
bool is_resource;
|
||||
uint32_t token;
|
||||
} Il2CppReflectionModule;
|
||||
typedef struct Il2CppReflectionAssemblyName
|
||||
{
|
||||
Il2CppObject obj;
|
||||
Il2CppString *name;
|
||||
Il2CppString *codebase;
|
||||
int32_t major, minor, build, revision;
|
||||
Il2CppObject *cultureInfo;
|
||||
uint32_t flags;
|
||||
uint32_t hashalg;
|
||||
Il2CppObject *keypair;
|
||||
Il2CppArray *publicKey;
|
||||
Il2CppArray *keyToken;
|
||||
uint32_t versioncompat;
|
||||
Il2CppObject *version;
|
||||
uint32_t processor_architecture;
|
||||
} Il2CppReflectionAssemblyName;
|
||||
typedef struct Il2CppReflectionAssembly
|
||||
{
|
||||
Il2CppObject object;
|
||||
const Il2CppAssembly *assembly;
|
||||
Il2CppObject *resolve_event_holder;
|
||||
Il2CppObject *evidence;
|
||||
Il2CppObject *minimum;
|
||||
Il2CppObject *optional;
|
||||
Il2CppObject *refuse;
|
||||
Il2CppObject *granted;
|
||||
Il2CppObject *denied;
|
||||
bool from_byte_array;
|
||||
Il2CppString *name;
|
||||
} Il2CppReflectionAssembly;
|
||||
typedef struct Il2CppReflectionMarshal
|
||||
{
|
||||
Il2CppObject object;
|
||||
int32_t count;
|
||||
int32_t type;
|
||||
int32_t eltype;
|
||||
Il2CppString* guid;
|
||||
Il2CppString* mcookie;
|
||||
Il2CppString* marshaltype;
|
||||
Il2CppObject* marshaltyperef;
|
||||
int32_t param_num;
|
||||
bool has_size;
|
||||
} Il2CppReflectionMarshal;
|
||||
typedef struct Il2CppReflectionPointer
|
||||
{
|
||||
Il2CppObject object;
|
||||
void* data;
|
||||
Il2CppReflectionType* type;
|
||||
} Il2CppReflectionPointer;
|
||||
typedef struct Il2CppIntPtr
|
||||
{
|
||||
void* m_value;
|
||||
static Il2CppIntPtr Zero;
|
||||
} Il2CppIntPtr;
|
||||
typedef struct Il2CppThread
|
||||
{
|
||||
Il2CppObject obj;
|
||||
int lock_thread_id;
|
||||
Thread* handle;
|
||||
Il2CppArray *cached_culture_info;
|
||||
void* unused1;
|
||||
bool threadpool_thread;
|
||||
uint16_t* name;
|
||||
uint32_t name_len;
|
||||
uint32_t state;
|
||||
Il2CppObject* abort_exc;
|
||||
int abort_state_handle;
|
||||
uint64_t tid;
|
||||
void* start_notify;
|
||||
void* stack_ptr;
|
||||
void* *static_data;
|
||||
void* jit_data;
|
||||
void* lock_data;
|
||||
Il2CppObject* current_appcontext;
|
||||
int stack_size;
|
||||
Il2CppObject* start_obj;
|
||||
void* appdomain_refs;
|
||||
int32_t interruption_requested;
|
||||
void* suspend_event;
|
||||
void* suspended_event;
|
||||
void* resume_event;
|
||||
FastMutex* synch_cs;
|
||||
uint8_t* serialized_culture_info;
|
||||
uint32_t serialized_culture_info_len;
|
||||
uint8_t* serialized_ui_culture_info;
|
||||
uint32_t serialized_ui_culture_info_len;
|
||||
bool thread_dump_requested;
|
||||
void* end_stack;
|
||||
bool thread_interrupt_requested;
|
||||
uint8_t apartment_state;
|
||||
int32_t critical_region_level;
|
||||
uint32_t small_id;
|
||||
void* manage_callback;
|
||||
Il2CppException *pending_exception;
|
||||
Il2CppObject *ec_to_set;
|
||||
void* interrupt_on_stop;
|
||||
void* unused3;
|
||||
void* unused4;
|
||||
void* unused5;
|
||||
void* unused6;
|
||||
} Il2CppThread;
|
||||
typedef struct Il2CppException
|
||||
{
|
||||
Il2CppObject object;
|
||||
Il2CppArray *trace_ips;
|
||||
Il2CppObject *inner_ex;
|
||||
Il2CppString *message;
|
||||
Il2CppString *help_link;
|
||||
Il2CppString *class_name;
|
||||
Il2CppString *stack_trace;
|
||||
Il2CppString *remote_stack_trace;
|
||||
int32_t remote_stack_index;
|
||||
int32_t hresult;
|
||||
Il2CppString *source;
|
||||
Il2CppObject *_data;
|
||||
} Il2CppException;
|
||||
typedef struct Il2CppSystemException
|
||||
{
|
||||
Il2CppException base;
|
||||
} Il2CppSystemException;
|
||||
typedef struct Il2CppArgumentException
|
||||
{
|
||||
Il2CppException base;
|
||||
Il2CppString *argName;
|
||||
} Il2CppArgumentException;
|
||||
typedef struct Il2CppTypedRef
|
||||
{
|
||||
Il2CppType *type;
|
||||
void* value;
|
||||
Il2CppClass *klass;
|
||||
} Il2CppTypedRef;
|
||||
typedef struct Il2CppDelegate
|
||||
{
|
||||
Il2CppObject object;
|
||||
methodPointerType method_ptr;
|
||||
void* (*invoke_impl)(const MethodInfo*, void*, void**);
|
||||
Il2CppObject *target;
|
||||
const MethodInfo *method;
|
||||
void* delegate_trampoline;
|
||||
uint8_t **method_code;
|
||||
Il2CppReflectionMethod *method_info;
|
||||
Il2CppReflectionMethod *original_method_info;
|
||||
Il2CppObject *data;
|
||||
} Il2CppDelegate;
|
||||
typedef struct Il2CppMarshalByRefObject
|
||||
{
|
||||
Il2CppObject obj;
|
||||
Il2CppObject *identity;
|
||||
} Il2CppMarshalByRefObject;
|
||||
typedef struct Il2CppAppDomain
|
||||
{
|
||||
Il2CppMarshalByRefObject mbr;
|
||||
Il2CppDomain *data;
|
||||
} Il2CppAppDomain;
|
||||
typedef struct Il2CppStackFrame
|
||||
{
|
||||
Il2CppObject obj;
|
||||
int32_t il_offset;
|
||||
int32_t native_offset;
|
||||
Il2CppReflectionMethod *method;
|
||||
Il2CppString *filename;
|
||||
int32_t line;
|
||||
int32_t column;
|
||||
Il2CppString *internal_method_name;
|
||||
} Il2CppStackFrame;
|
||||
typedef struct Il2CppDateTimeFormatInfo
|
||||
{
|
||||
Il2CppObject obj;
|
||||
bool readOnly;
|
||||
Il2CppString* AMDesignator;
|
||||
Il2CppString* PMDesignator;
|
||||
Il2CppString* DateSeparator;
|
||||
Il2CppString* TimeSeparator;
|
||||
Il2CppString* ShortDatePattern;
|
||||
Il2CppString* LongDatePattern;
|
||||
Il2CppString* ShortTimePattern;
|
||||
Il2CppString* LongTimePattern;
|
||||
Il2CppString* MonthDayPattern;
|
||||
Il2CppString* YearMonthPattern;
|
||||
Il2CppString* FullDateTimePattern;
|
||||
Il2CppString* RFC1123Pattern;
|
||||
Il2CppString* SortableDateTimePattern;
|
||||
Il2CppString* UniversalSortableDateTimePattern;
|
||||
uint32_t FirstDayOfWeek;
|
||||
Il2CppObject* Calendar;
|
||||
uint32_t CalendarWeekRule;
|
||||
Il2CppArray* AbbreviatedDayNames;
|
||||
Il2CppArray* DayNames;
|
||||
Il2CppArray* MonthNames;
|
||||
Il2CppArray* AbbreviatedMonthNames;
|
||||
Il2CppArray* ShortDatePatterns;
|
||||
Il2CppArray* LongDatePatterns;
|
||||
Il2CppArray* ShortTimePatterns;
|
||||
Il2CppArray* LongTimePatterns;
|
||||
Il2CppArray* MonthDayPatterns;
|
||||
Il2CppArray* YearMonthPatterns;
|
||||
Il2CppArray* shortDayNames;
|
||||
} Il2CppDateTimeFormatInfo;
|
||||
typedef struct Il2CppNumberFormatInfo
|
||||
{
|
||||
Il2CppObject obj;
|
||||
bool readOnly;
|
||||
Il2CppString* decimalFormats;
|
||||
Il2CppString* currencyFormats;
|
||||
Il2CppString* percentFormats;
|
||||
Il2CppString* digitPattern;
|
||||
Il2CppString* zeroPattern;
|
||||
int32_t currencyDecimalDigits;
|
||||
Il2CppString* currencyDecimalSeparator;
|
||||
Il2CppString* currencyGroupSeparator;
|
||||
Il2CppArray* currencyGroupSizes;
|
||||
int32_t currencyNegativePattern;
|
||||
int32_t currencyPositivePattern;
|
||||
Il2CppString* currencySymbol;
|
||||
Il2CppString* naNSymbol;
|
||||
Il2CppString* negativeInfinitySymbol;
|
||||
Il2CppString* negativeSign;
|
||||
uint32_t numberDecimalDigits;
|
||||
Il2CppString* numberDecimalSeparator;
|
||||
Il2CppString* numberGroupSeparator;
|
||||
Il2CppArray* numberGroupSizes;
|
||||
int32_t numberNegativePattern;
|
||||
int32_t percentDecimalDigits;
|
||||
Il2CppString* percentDecimalSeparator;
|
||||
Il2CppString* percentGroupSeparator;
|
||||
Il2CppArray* percentGroupSizes;
|
||||
int32_t percentNegativePattern;
|
||||
int32_t percentPositivePattern;
|
||||
Il2CppString* percentSymbol;
|
||||
Il2CppString* perMilleSymbol;
|
||||
Il2CppString* positiveInfinitySymbol;
|
||||
Il2CppString* positiveSign;
|
||||
} Il2CppNumberFormatInfo;
|
||||
typedef struct Il2CppCultureInfo
|
||||
{
|
||||
Il2CppObject obj;
|
||||
bool is_read_only;
|
||||
int32_t lcid;
|
||||
int32_t parent_lcid;
|
||||
int32_t specific_lcid;
|
||||
int32_t datetime_index;
|
||||
int32_t number_index;
|
||||
bool use_user_override;
|
||||
Il2CppNumberFormatInfo* number_format;
|
||||
Il2CppDateTimeFormatInfo* datetime_format;
|
||||
Il2CppObject* textinfo;
|
||||
Il2CppString* name;
|
||||
Il2CppString* displayname;
|
||||
Il2CppString* englishname;
|
||||
Il2CppString* nativename;
|
||||
Il2CppString* iso3lang;
|
||||
Il2CppString* iso2lang;
|
||||
Il2CppString* icu_name;
|
||||
Il2CppString* win3lang;
|
||||
Il2CppString* territory;
|
||||
Il2CppString* compareinfo;
|
||||
const int32_t* calendar_data;
|
||||
const void* text_info_data;
|
||||
} Il2CppCultureInfo;
|
||||
typedef struct Il2CppWaitHandle
|
||||
{
|
||||
Il2CppMarshalByRefObject object;
|
||||
void* handle;
|
||||
bool disposed;
|
||||
} Il2CppWaitHandle;
|
||||
typedef struct Il2CppSafeHandle
|
||||
{
|
||||
Il2CppObject base;
|
||||
void* handle;
|
||||
void* invalid_handle_value;
|
||||
int refcount;
|
||||
bool owns_handle;
|
||||
} Il2CppSafeHandle;
|
||||
typedef struct Il2CppStringBuilder
|
||||
{
|
||||
Il2CppObject object;
|
||||
int32_t length;
|
||||
Il2CppString *str;
|
||||
Il2CppString *cached_str;
|
||||
int32_t max_capacity;
|
||||
} Il2CppStringBuilder;
|
||||
typedef struct Il2CppSocketAddress
|
||||
{
|
||||
Il2CppObject base;
|
||||
Il2CppArray* data;
|
||||
} Il2CppSocketAddress;
|
||||
typedef struct Il2CppSortKey
|
||||
{
|
||||
Il2CppObject base;
|
||||
Il2CppString *str;
|
||||
int32_t options;
|
||||
Il2CppArray *key;
|
||||
int32_t lcid;
|
||||
} Il2CppSortKey;
|
||||
typedef struct Il2CppAsyncResult
|
||||
{
|
||||
Il2CppObject base;
|
||||
Il2CppObject *async_state;
|
||||
Il2CppWaitHandle *handle;
|
||||
Il2CppDelegate *async_delegate;
|
||||
void* data;
|
||||
Il2CppAsyncCall *object_data;
|
||||
bool sync_completed;
|
||||
bool completed;
|
||||
bool endinvoke_called;
|
||||
Il2CppObject *async_callback;
|
||||
Il2CppObject *execution_context;
|
||||
Il2CppObject *original_context;
|
||||
} Il2CppAsyncResult;
|
||||
typedef struct Il2CppAsyncCall
|
||||
{
|
||||
Il2CppObject base;
|
||||
void *msg;
|
||||
MethodInfo *cb_method;
|
||||
Il2CppDelegate *cb_target;
|
||||
Il2CppObject *state;
|
||||
Il2CppObject *res;
|
||||
Il2CppArray *out_args;
|
||||
uint64_t wait_event;
|
||||
} Il2CppAsyncCall;
|
||||
typedef struct Il2CppExceptionWrapper
|
||||
{
|
||||
Il2CppException* ex;
|
||||
} Il2CppExceptionWrapper;
|
||||
typedef struct Il2CppSocketAsyncResult
|
||||
{
|
||||
Il2CppObject base;
|
||||
Il2CppObject *socket;
|
||||
Il2CppIntPtr handle;
|
||||
Il2CppObject *state;
|
||||
Il2CppDelegate *callback;
|
||||
Il2CppWaitHandle *wait_handle;
|
||||
Il2CppException *delayed_exc;
|
||||
Il2CppObject *ep;
|
||||
Il2CppArray *buffer;
|
||||
int32_t offset;
|
||||
int32_t size;
|
||||
int32_t socket_flags;
|
||||
Il2CppObject *accept_reuse_socket;
|
||||
Il2CppArray *addresses;
|
||||
int32_t port;
|
||||
Il2CppObject *buffers;
|
||||
bool reusesocket;
|
||||
Il2CppObject *acc_socket;
|
||||
int32_t total;
|
||||
bool completed_synch;
|
||||
bool completed;
|
||||
bool blocking;
|
||||
int32_t error;
|
||||
int32_t operation;
|
||||
Il2CppAsyncResult *ares;
|
||||
} Il2CppSocketAsyncResult;
|
||||
typedef enum Il2CppResourceLocation
|
||||
{
|
||||
RESOURCE_LOCATION_EMBEDDED = 1,
|
||||
RESOURCE_LOCATION_ANOTHER_ASSEMBLY = 2,
|
||||
RESOURCE_LOCATION_IN_MANIFEST = 4
|
||||
} Il2CppResourceLocation;
|
||||
typedef struct Il2CppManifestResourceInfo
|
||||
{
|
||||
Il2CppObject object;
|
||||
Il2CppReflectionAssembly* assembly;
|
||||
Il2CppString* filename;
|
||||
uint32_t location;
|
||||
} Il2CppManifestResourceInfo;
|
||||
typedef struct Il2CppAppContext
|
||||
{
|
||||
Il2CppObject obj;
|
||||
int32_t domain_id;
|
||||
int32_t context_id;
|
||||
void* static_data;
|
||||
} Il2CppAppContext;
|
||||
|
||||
Reference in New Issue
Block a user