il2cpp-api-functions.h 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245
  1. #ifndef DO_API_NO_RETURN
  2. #define DO_API_NO_RETURN(r, n, p) DO_API(r,n,p)
  3. #endif
  4. DO_API(void, il2cpp_init, (const char* domain_name));
  5. DO_API(void, il2cpp_init_utf16, (const Il2CppChar * domain_name));
  6. DO_API(void, il2cpp_shutdown, ());
  7. DO_API(void, il2cpp_set_config_dir, (const char *config_path));
  8. DO_API(void, il2cpp_set_data_dir, (const char *data_path));
  9. DO_API(void, il2cpp_set_temp_dir, (const char *temp_path));
  10. DO_API(void, il2cpp_set_commandline_arguments, (int argc, const char* const argv[], const char* basedir));
  11. DO_API(void, il2cpp_set_commandline_arguments_utf16, (int argc, const Il2CppChar * const argv[], const char* basedir));
  12. DO_API(void, il2cpp_set_config_utf16, (const Il2CppChar * executablePath));
  13. DO_API(void, il2cpp_set_config, (const char* executablePath));
  14. DO_API(void, il2cpp_set_memory_callbacks, (Il2CppMemoryCallbacks * callbacks));
  15. DO_API(const Il2CppImage*, il2cpp_get_corlib, ());
  16. DO_API(void, il2cpp_add_internal_call, (const char* name, Il2CppMethodPointer method));
  17. DO_API(Il2CppMethodPointer, il2cpp_resolve_icall, (const char* name));
  18. DO_API(void*, il2cpp_alloc, (size_t size));
  19. DO_API(void, il2cpp_free, (void* ptr));
  20. // array
  21. DO_API(Il2CppClass*, il2cpp_array_class_get, (Il2CppClass * element_class, uint32_t rank));
  22. DO_API(uint32_t, il2cpp_array_length, (Il2CppArray * array));
  23. DO_API(uint32_t, il2cpp_array_get_byte_length, (Il2CppArray * array));
  24. DO_API(Il2CppArray*, il2cpp_array_new, (Il2CppClass * elementTypeInfo, il2cpp_array_size_t length));
  25. DO_API(Il2CppArray*, il2cpp_array_new_specific, (Il2CppClass * arrayTypeInfo, il2cpp_array_size_t length));
  26. DO_API(Il2CppArray*, il2cpp_array_new_full, (Il2CppClass * array_class, il2cpp_array_size_t * lengths, il2cpp_array_size_t * lower_bounds));
  27. DO_API(Il2CppClass*, il2cpp_bounded_array_class_get, (Il2CppClass * element_class, uint32_t rank, bool bounded));
  28. DO_API(int, il2cpp_array_element_size, (const Il2CppClass * array_class));
  29. // assembly
  30. DO_API(const Il2CppImage*, il2cpp_assembly_get_image, (const Il2CppAssembly * assembly));
  31. // class
  32. DO_API(const Il2CppType*, il2cpp_class_enum_basetype, (Il2CppClass * klass));
  33. DO_API(bool, il2cpp_class_is_generic, (const Il2CppClass * klass));
  34. DO_API(bool, il2cpp_class_is_inflated, (const Il2CppClass * klass));
  35. DO_API(bool, il2cpp_class_is_assignable_from, (Il2CppClass * klass, Il2CppClass * oklass));
  36. DO_API(bool, il2cpp_class_is_subclass_of, (Il2CppClass * klass, Il2CppClass * klassc, bool check_interfaces));
  37. DO_API(bool, il2cpp_class_has_parent, (Il2CppClass * klass, Il2CppClass * klassc));
  38. DO_API(Il2CppClass*, il2cpp_class_from_il2cpp_type, (const Il2CppType * type));
  39. DO_API(Il2CppClass*, il2cpp_class_from_name, (const Il2CppImage * image, const char* namespaze, const char *name));
  40. DO_API(Il2CppClass*, il2cpp_class_from_system_type, (Il2CppReflectionType * type));
  41. DO_API(Il2CppClass*, il2cpp_class_get_element_class, (Il2CppClass * klass));
  42. DO_API(const EventInfo*, il2cpp_class_get_events, (Il2CppClass * klass, void* *iter));
  43. DO_API(FieldInfo*, il2cpp_class_get_fields, (Il2CppClass * klass, void* *iter));
  44. DO_API(Il2CppClass*, il2cpp_class_get_nested_types, (Il2CppClass * klass, void* *iter));
  45. DO_API(Il2CppClass*, il2cpp_class_get_interfaces, (Il2CppClass * klass, void* *iter));
  46. DO_API(const PropertyInfo*, il2cpp_class_get_properties, (Il2CppClass * klass, void* *iter));
  47. DO_API(const PropertyInfo*, il2cpp_class_get_property_from_name, (Il2CppClass * klass, const char *name));
  48. DO_API(FieldInfo*, il2cpp_class_get_field_from_name, (Il2CppClass * klass, const char *name));
  49. DO_API(const MethodInfo*, il2cpp_class_get_methods, (Il2CppClass * klass, void* *iter));
  50. DO_API(const MethodInfo*, il2cpp_class_get_method_from_name, (Il2CppClass * klass, const char* name, int argsCount));
  51. DO_API(const char*, il2cpp_class_get_name, (Il2CppClass * klass));
  52. DO_API(const char*, il2cpp_class_get_namespace, (Il2CppClass * klass));
  53. DO_API(Il2CppClass*, il2cpp_class_get_parent, (Il2CppClass * klass));
  54. DO_API(Il2CppClass*, il2cpp_class_get_declaring_type, (Il2CppClass * klass));
  55. DO_API(int32_t, il2cpp_class_instance_size, (Il2CppClass * klass));
  56. DO_API(size_t, il2cpp_class_num_fields, (const Il2CppClass * enumKlass));
  57. DO_API(bool, il2cpp_class_is_valuetype, (const Il2CppClass * klass));
  58. DO_API(int32_t, il2cpp_class_value_size, (Il2CppClass * klass, uint32_t * align));
  59. DO_API(bool, il2cpp_class_is_blittable, (const Il2CppClass * klass));
  60. DO_API(int, il2cpp_class_get_flags, (const Il2CppClass * klass));
  61. DO_API(bool, il2cpp_class_is_abstract, (const Il2CppClass * klass));
  62. DO_API(bool, il2cpp_class_is_interface, (const Il2CppClass * klass));
  63. DO_API(int, il2cpp_class_array_element_size, (const Il2CppClass * klass));
  64. DO_API(Il2CppClass*, il2cpp_class_from_type, (const Il2CppType * type));
  65. DO_API(const Il2CppType*, il2cpp_class_get_type, (Il2CppClass * klass));
  66. DO_API(bool, il2cpp_class_has_attribute, (Il2CppClass * klass, Il2CppClass * attr_class));
  67. DO_API(bool, il2cpp_class_has_references, (Il2CppClass * klass));
  68. DO_API(bool, il2cpp_class_is_enum, (const Il2CppClass * klass));
  69. DO_API(const Il2CppImage*, il2cpp_class_get_image, (Il2CppClass * klass));
  70. DO_API(const char*, il2cpp_class_get_assemblyname, (const Il2CppClass * klass));
  71. // testing only
  72. DO_API(size_t, il2cpp_class_get_bitmap_size, (const Il2CppClass * klass));
  73. DO_API(void, il2cpp_class_get_bitmap, (Il2CppClass * klass, size_t * bitmap));
  74. // stats
  75. DO_API(bool, il2cpp_stats_dump_to_file, (const char *path));
  76. DO_API(uint64_t, il2cpp_stats_get_value, (Il2CppStat stat));
  77. // domain
  78. DO_API(Il2CppDomain*, il2cpp_domain_get, ());
  79. DO_API(const Il2CppAssembly*, il2cpp_domain_assembly_open, (Il2CppDomain * domain, const char* name));
  80. DO_API(const Il2CppAssembly**, il2cpp_domain_get_assemblies, (const Il2CppDomain * domain, size_t * size));
  81. // exception
  82. DO_API_NO_RETURN(void, il2cpp_raise_exception, (Il2CppException*));
  83. DO_API(Il2CppException*, il2cpp_exception_from_name_msg, (const Il2CppImage * image, const char *name_space, const char *name, const char *msg));
  84. DO_API(Il2CppException*, il2cpp_get_exception_argument_null, (const char *arg));
  85. DO_API(void, il2cpp_format_exception, (const Il2CppException * ex, char* message, int message_size));
  86. DO_API(void, il2cpp_format_stack_trace, (const Il2CppException * ex, char* output, int output_size));
  87. DO_API(void, il2cpp_unhandled_exception, (Il2CppException*));
  88. // field
  89. DO_API(int, il2cpp_field_get_flags, (FieldInfo * field));
  90. DO_API(const char*, il2cpp_field_get_name, (FieldInfo * field));
  91. DO_API(Il2CppClass*, il2cpp_field_get_parent, (FieldInfo * field));
  92. DO_API(size_t, il2cpp_field_get_offset, (FieldInfo * field));
  93. DO_API(const Il2CppType*, il2cpp_field_get_type, (FieldInfo * field));
  94. DO_API(void, il2cpp_field_get_value, (Il2CppObject * obj, FieldInfo * field, void *value));
  95. DO_API(Il2CppObject*, il2cpp_field_get_value_object, (FieldInfo * field, Il2CppObject * obj));
  96. DO_API(bool, il2cpp_field_has_attribute, (FieldInfo * field, Il2CppClass * attr_class));
  97. DO_API(void, il2cpp_field_set_value, (Il2CppObject * obj, FieldInfo * field, void *value));
  98. DO_API(void, il2cpp_field_static_get_value, (FieldInfo * field, void *value));
  99. DO_API(void, il2cpp_field_static_set_value, (FieldInfo * field, void *value));
  100. DO_API(void, il2cpp_field_set_value_object, (Il2CppObject * instance, FieldInfo * field, Il2CppObject * value));
  101. // gc
  102. DO_API(void, il2cpp_gc_collect, (int maxGenerations));
  103. DO_API(int32_t, il2cpp_gc_collect_a_little, ());
  104. DO_API(void, il2cpp_gc_disable, ());
  105. DO_API(void, il2cpp_gc_enable, ());
  106. DO_API(int64_t, il2cpp_gc_get_used_size, ());
  107. DO_API(int64_t, il2cpp_gc_get_heap_size, ());
  108. // gchandle
  109. DO_API(uint32_t, il2cpp_gchandle_new, (Il2CppObject * obj, bool pinned));
  110. DO_API(uint32_t, il2cpp_gchandle_new_weakref, (Il2CppObject * obj, bool track_resurrection));
  111. DO_API(Il2CppObject*, il2cpp_gchandle_get_target , (uint32_t gchandle));
  112. DO_API(void, il2cpp_gchandle_free, (uint32_t gchandle));
  113. // liveness
  114. DO_API(void*, il2cpp_unity_liveness_calculation_begin, (Il2CppClass * filter, int max_object_count, il2cpp_register_object_callback callback, void* userdata, il2cpp_WorldChangedCallback onWorldStarted, il2cpp_WorldChangedCallback onWorldStopped));
  115. DO_API(void, il2cpp_unity_liveness_calculation_end, (void* state));
  116. DO_API(void, il2cpp_unity_liveness_calculation_from_root, (Il2CppObject * root, void* state));
  117. DO_API(void, il2cpp_unity_liveness_calculation_from_statics, (void* state));
  118. // method
  119. DO_API(const Il2CppType*, il2cpp_method_get_return_type, (const MethodInfo * method));
  120. DO_API(Il2CppClass*, il2cpp_method_get_declaring_type, (const MethodInfo * method));
  121. DO_API(const char*, il2cpp_method_get_name, (const MethodInfo * method));
  122. DO_API(Il2CppReflectionMethod*, il2cpp_method_get_object, (const MethodInfo * method, Il2CppClass * refclass));
  123. DO_API(bool, il2cpp_method_is_generic, (const MethodInfo * method));
  124. DO_API(bool, il2cpp_method_is_inflated, (const MethodInfo * method));
  125. DO_API(bool, il2cpp_method_is_instance, (const MethodInfo * method));
  126. DO_API(uint32_t, il2cpp_method_get_param_count, (const MethodInfo * method));
  127. DO_API(const Il2CppType*, il2cpp_method_get_param, (const MethodInfo * method, uint32_t index));
  128. DO_API(Il2CppClass*, il2cpp_method_get_class, (const MethodInfo * method));
  129. DO_API(bool, il2cpp_method_has_attribute, (const MethodInfo * method, Il2CppClass * attr_class));
  130. DO_API(uint32_t, il2cpp_method_get_flags, (const MethodInfo * method, uint32_t * iflags));
  131. DO_API(uint32_t, il2cpp_method_get_token, (const MethodInfo * method));
  132. DO_API(const char*, il2cpp_method_get_param_name, (const MethodInfo * method, uint32_t index));
  133. // profiler
  134. #if IL2CPP_ENABLE_PROFILER
  135. DO_API(void, il2cpp_profiler_install, (Il2CppProfiler * prof, Il2CppProfileFunc shutdown_callback));
  136. DO_API(void, il2cpp_profiler_set_events, (Il2CppProfileFlags events));
  137. DO_API(void, il2cpp_profiler_install_enter_leave, (Il2CppProfileMethodFunc enter, Il2CppProfileMethodFunc fleave));
  138. DO_API(void, il2cpp_profiler_install_allocation, (Il2CppProfileAllocFunc callback));
  139. DO_API(void, il2cpp_profiler_install_gc, (Il2CppProfileGCFunc callback, Il2CppProfileGCResizeFunc heap_resize_callback));
  140. DO_API(void, il2cpp_profiler_install_fileio, (Il2CppProfileFileIOFunc callback));
  141. #endif
  142. // property
  143. DO_API(uint32_t, il2cpp_property_get_flags, (PropertyInfo * prop));
  144. DO_API(const MethodInfo*, il2cpp_property_get_get_method, (PropertyInfo * prop));
  145. DO_API(const MethodInfo*, il2cpp_property_get_set_method, (PropertyInfo * prop));
  146. DO_API(const char*, il2cpp_property_get_name, (PropertyInfo * prop));
  147. DO_API(Il2CppClass*, il2cpp_property_get_parent, (PropertyInfo * prop));
  148. // object
  149. DO_API(Il2CppClass*, il2cpp_object_get_class, (Il2CppObject * obj));
  150. DO_API(uint32_t, il2cpp_object_get_size, (Il2CppObject * obj));
  151. DO_API(const MethodInfo*, il2cpp_object_get_virtual_method, (Il2CppObject * obj, const MethodInfo * method));
  152. DO_API(Il2CppObject*, il2cpp_object_new, (const Il2CppClass * klass));
  153. DO_API(void*, il2cpp_object_unbox, (Il2CppObject * obj));
  154. DO_API(Il2CppObject*, il2cpp_value_box, (Il2CppClass * klass, void* data));
  155. // monitor
  156. DO_API(void, il2cpp_monitor_enter, (Il2CppObject * obj));
  157. DO_API(bool, il2cpp_monitor_try_enter, (Il2CppObject * obj, uint32_t timeout));
  158. DO_API(void, il2cpp_monitor_exit, (Il2CppObject * obj));
  159. DO_API(void, il2cpp_monitor_pulse, (Il2CppObject * obj));
  160. DO_API(void, il2cpp_monitor_pulse_all, (Il2CppObject * obj));
  161. DO_API(void, il2cpp_monitor_wait, (Il2CppObject * obj));
  162. DO_API(bool, il2cpp_monitor_try_wait, (Il2CppObject * obj, uint32_t timeout));
  163. // runtime
  164. DO_API(Il2CppObject*, il2cpp_runtime_invoke, (const MethodInfo * method, void *obj, void **params, Il2CppException **exc));
  165. DO_API(Il2CppObject*, il2cpp_runtime_invoke_convert_args, (const MethodInfo * method, void *obj, Il2CppObject **params, int paramCount, Il2CppException **exc));
  166. DO_API(void, il2cpp_runtime_class_init, (Il2CppClass * klass));
  167. DO_API(void, il2cpp_runtime_object_init, (Il2CppObject * obj));
  168. DO_API(void, il2cpp_runtime_object_init_exception, (Il2CppObject * obj, Il2CppException** exc));
  169. DO_API(void, il2cpp_runtime_unhandled_exception_policy_set, (Il2CppRuntimeUnhandledExceptionPolicy value));
  170. // string
  171. DO_API(int32_t, il2cpp_string_length, (Il2CppString * str));
  172. DO_API(Il2CppChar*, il2cpp_string_chars, (Il2CppString * str));
  173. DO_API(Il2CppString*, il2cpp_string_new, (const char* str));
  174. DO_API(Il2CppString*, il2cpp_string_new_len, (const char* str, uint32_t length));
  175. DO_API(Il2CppString*, il2cpp_string_new_utf16, (const Il2CppChar * text, int32_t len));
  176. DO_API(Il2CppString*, il2cpp_string_new_wrapper, (const char* str));
  177. DO_API(Il2CppString*, il2cpp_string_intern, (Il2CppString * str));
  178. DO_API(Il2CppString*, il2cpp_string_is_interned, (Il2CppString * str));
  179. // thread
  180. DO_API(char*, il2cpp_thread_get_name, (Il2CppThread * thread, uint32_t * len));
  181. DO_API(Il2CppThread*, il2cpp_thread_current, ());
  182. DO_API(Il2CppThread*, il2cpp_thread_attach, (Il2CppDomain * domain));
  183. DO_API(void, il2cpp_thread_detach, (Il2CppThread * thread));
  184. DO_API(Il2CppThread**, il2cpp_thread_get_all_attached_threads, (size_t * size));
  185. DO_API(bool, il2cpp_is_vm_thread, (Il2CppThread * thread));
  186. // stacktrace
  187. DO_API(void, il2cpp_current_thread_walk_frame_stack, (Il2CppFrameWalkFunc func, void* user_data));
  188. DO_API(void, il2cpp_thread_walk_frame_stack, (Il2CppThread * thread, Il2CppFrameWalkFunc func, void* user_data));
  189. DO_API(bool, il2cpp_current_thread_get_top_frame, (Il2CppStackFrameInfo & frame));
  190. DO_API(bool, il2cpp_thread_get_top_frame, (Il2CppThread * thread, Il2CppStackFrameInfo & frame));
  191. DO_API(bool, il2cpp_current_thread_get_frame_at, (int32_t offset, Il2CppStackFrameInfo & frame));
  192. DO_API(bool, il2cpp_thread_get_frame_at, (Il2CppThread * thread, int32_t offset, Il2CppStackFrameInfo & frame));
  193. DO_API(int32_t, il2cpp_current_thread_get_stack_depth, ());
  194. DO_API(int32_t, il2cpp_thread_get_stack_depth, (Il2CppThread * thread));
  195. // type
  196. DO_API(Il2CppObject*, il2cpp_type_get_object, (const Il2CppType * type));
  197. DO_API(int, il2cpp_type_get_type, (const Il2CppType * type));
  198. DO_API(Il2CppClass*, il2cpp_type_get_class_or_element_class, (const Il2CppType * type));
  199. DO_API(char*, il2cpp_type_get_name, (const Il2CppType * type));
  200. // image
  201. DO_API(const Il2CppAssembly*, il2cpp_image_get_assembly, (const Il2CppImage * image));
  202. DO_API(const char*, il2cpp_image_get_name, (const Il2CppImage * image));
  203. DO_API(const char*, il2cpp_image_get_filename, (const Il2CppImage * image));
  204. DO_API(const MethodInfo*, il2cpp_image_get_entry_point, (const Il2CppImage * image));
  205. // Memory information
  206. DO_API(Il2CppManagedMemorySnapshot*, il2cpp_capture_memory_snapshot, ());
  207. DO_API(void, il2cpp_free_captured_memory_snapshot, (Il2CppManagedMemorySnapshot * snapshot));
  208. DO_API(void, il2cpp_set_find_plugin_callback, (Il2CppSetFindPlugInCallback method));
  209. // Logging
  210. DO_API(void, il2cpp_register_log_callback, (Il2CppLogCallback method));