class.h 8.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313
  1. /**
  2. * \file
  3. */
  4. #ifndef _MONO_CLI_CLASS_H_
  5. #define _MONO_CLI_CLASS_H_
  6. #include <mono/metadata/metadata.h>
  7. #include <mono/metadata/image.h>
  8. #include <mono/metadata/loader.h>
  9. #include <mono/utils/mono-error.h>
  10. MONO_BEGIN_DECLS
  11. typedef struct MonoVTable MonoVTable;
  12. typedef struct _MonoClassField MonoClassField;
  13. typedef struct _MonoProperty MonoProperty;
  14. typedef struct _MonoEvent MonoEvent;
  15. typedef enum {
  16. MONO_TYPE_NAME_FORMAT_IL,
  17. MONO_TYPE_NAME_FORMAT_REFLECTION,
  18. MONO_TYPE_NAME_FORMAT_FULL_NAME,
  19. MONO_TYPE_NAME_FORMAT_ASSEMBLY_QUALIFIED
  20. } MonoTypeNameFormat;
  21. MONO_API MONO_RT_EXTERNAL_ONLY
  22. MonoClass *
  23. mono_class_get (MonoImage *image, uint32_t type_token);
  24. MONO_API MONO_RT_EXTERNAL_ONLY
  25. MonoClass *
  26. mono_class_get_full (MonoImage *image, uint32_t type_token, MonoGenericContext *context);
  27. MONO_API MONO_RT_EXTERNAL_ONLY mono_bool
  28. mono_class_init (MonoClass *klass);
  29. MONO_API MONO_RT_EXTERNAL_ONLY
  30. MonoVTable *
  31. mono_class_vtable (MonoDomain *domain, MonoClass *klass);
  32. MONO_API MONO_RT_EXTERNAL_ONLY MonoClass *
  33. mono_class_from_name (MonoImage *image, const char* name_space, const char *name);
  34. MONO_API MONO_RT_EXTERNAL_ONLY MonoClass *
  35. mono_class_from_name_case (MonoImage *image, const char* name_space, const char *name);
  36. MONO_API MONO_RT_EXTERNAL_ONLY MonoMethod *
  37. mono_class_get_method_from_name_flags (MonoClass *klass, const char *name, int param_count, int flags);
  38. MONO_API MONO_RT_EXTERNAL_ONLY MonoClass *
  39. mono_class_from_typeref (MonoImage *image, uint32_t type_token);
  40. MONO_API MonoClass *
  41. mono_class_from_typeref_checked (MonoImage *image, uint32_t type_token, MonoError *error);
  42. MONO_API MONO_RT_EXTERNAL_ONLY
  43. MonoClass *
  44. mono_class_from_generic_parameter (MonoGenericParam *param, MonoImage *image, mono_bool is_mvar);
  45. MONO_API MONO_RT_EXTERNAL_ONLY MonoType*
  46. mono_class_inflate_generic_type (MonoType *type, MonoGenericContext *context) /* MONO_DEPRECATED */;
  47. MONO_API MONO_RT_EXTERNAL_ONLY
  48. MonoMethod*
  49. mono_class_inflate_generic_method (MonoMethod *method, MonoGenericContext *context);
  50. MONO_API MONO_RT_EXTERNAL_ONLY
  51. MonoMethod *
  52. mono_get_inflated_method (MonoMethod *method);
  53. MONO_API MONO_RT_EXTERNAL_ONLY
  54. MonoClassField*
  55. mono_field_from_token (MonoImage *image, uint32_t token, MonoClass **retklass, MonoGenericContext *context);
  56. MONO_API MONO_RT_EXTERNAL_ONLY
  57. MonoClass *
  58. mono_bounded_array_class_get (MonoClass *element_class, uint32_t rank, mono_bool bounded);
  59. MONO_API MONO_RT_EXTERNAL_ONLY
  60. MonoClass *
  61. mono_array_class_get (MonoClass *element_class, uint32_t rank);
  62. MONO_API MONO_RT_EXTERNAL_ONLY
  63. MonoClass *
  64. mono_ptr_class_get (MonoType *type);
  65. MONO_API MonoClassField *
  66. mono_class_get_field (MonoClass *klass, uint32_t field_token);
  67. MONO_API MONO_RT_EXTERNAL_ONLY
  68. MonoClassField *
  69. mono_class_get_field_from_name (MonoClass *klass, const char *name);
  70. MONO_API uint32_t
  71. mono_class_get_field_token (MonoClassField *field);
  72. MONO_API uint32_t
  73. mono_class_get_event_token (MonoEvent *event);
  74. MONO_API MONO_RT_EXTERNAL_ONLY MonoProperty *
  75. mono_class_get_property_from_name (MonoClass *klass, const char *name);
  76. MONO_API uint32_t
  77. mono_class_get_property_token (MonoProperty *prop);
  78. MONO_API int32_t
  79. mono_array_element_size (MonoClass *ac);
  80. MONO_API int32_t
  81. mono_class_instance_size (MonoClass *klass);
  82. MONO_API int32_t
  83. mono_class_array_element_size (MonoClass *klass);
  84. MONO_API int32_t
  85. mono_class_data_size (MonoClass *klass);
  86. MONO_API int32_t
  87. mono_class_value_size (MonoClass *klass, uint32_t *align);
  88. MONO_API int32_t
  89. mono_class_min_align (MonoClass *klass);
  90. MONO_API MONO_RT_EXTERNAL_ONLY MonoClass *
  91. mono_class_from_mono_type (MonoType *type);
  92. MONO_API MONO_RT_EXTERNAL_ONLY mono_bool
  93. mono_class_is_subclass_of (MonoClass *klass, MonoClass *klassc,
  94. mono_bool check_interfaces);
  95. MONO_API MONO_RT_EXTERNAL_ONLY mono_bool
  96. mono_class_is_assignable_from (MonoClass *klass, MonoClass *oklass);
  97. MONO_API MONO_RT_EXTERNAL_ONLY
  98. void*
  99. mono_ldtoken (MonoImage *image, uint32_t token, MonoClass **retclass, MonoGenericContext *context);
  100. MONO_API char *
  101. mono_type_get_name_full (MonoType *type, MonoTypeNameFormat format);
  102. MONO_API char*
  103. mono_type_get_name (MonoType *type);
  104. MONO_API MonoType*
  105. mono_type_get_underlying_type (MonoType *type);
  106. /* MonoClass accessors */
  107. MONO_API MonoImage*
  108. mono_class_get_image (MonoClass *klass);
  109. MONO_API MONO_RT_EXTERNAL_ONLY
  110. MonoClass*
  111. mono_class_get_element_class (MonoClass *klass);
  112. MONO_API MONO_RT_EXTERNAL_ONLY
  113. mono_bool
  114. mono_class_is_valuetype (MonoClass *klass);
  115. MONO_API MONO_RT_EXTERNAL_ONLY
  116. mono_bool
  117. mono_class_is_enum (MonoClass *klass);
  118. MONO_API MONO_RT_EXTERNAL_ONLY MonoType*
  119. mono_class_enum_basetype (MonoClass *klass);
  120. MONO_API MONO_RT_EXTERNAL_ONLY
  121. MonoClass*
  122. mono_class_get_parent (MonoClass *klass);
  123. MONO_API MonoClass*
  124. mono_class_get_nesting_type (MonoClass *klass);
  125. MONO_API int
  126. mono_class_get_rank (MonoClass *klass);
  127. MONO_API uint32_t
  128. mono_class_get_flags (MonoClass *klass);
  129. MONO_API MONO_RT_EXTERNAL_ONLY
  130. const char*
  131. mono_class_get_name (MonoClass *klass);
  132. MONO_API MONO_RT_EXTERNAL_ONLY
  133. const char*
  134. mono_class_get_namespace (MonoClass *klass);
  135. MONO_API MONO_RT_EXTERNAL_ONLY MonoType*
  136. mono_class_get_type (MonoClass *klass);
  137. MONO_API uint32_t
  138. mono_class_get_type_token (MonoClass *klass);
  139. MONO_API MonoType*
  140. mono_class_get_byref_type (MonoClass *klass);
  141. MONO_API int
  142. mono_class_num_fields (MonoClass *klass);
  143. MONO_API int
  144. mono_class_num_methods (MonoClass *klass);
  145. MONO_API int
  146. mono_class_num_properties (MonoClass *klass);
  147. MONO_API int
  148. mono_class_num_events (MonoClass *klass);
  149. MONO_API MONO_RT_EXTERNAL_ONLY
  150. MonoClassField*
  151. mono_class_get_fields (MonoClass* klass, void **iter);
  152. MONO_API MonoMethod*
  153. mono_class_get_methods (MonoClass* klass, void **iter);
  154. MONO_API MonoProperty*
  155. mono_class_get_properties (MonoClass* klass, void **iter);
  156. MONO_API MonoEvent*
  157. mono_class_get_events (MonoClass* klass, void **iter);
  158. MONO_API MonoClass*
  159. mono_class_get_interfaces (MonoClass* klass, void **iter);
  160. MONO_API MonoClass*
  161. mono_class_get_nested_types (MonoClass* klass, void **iter);
  162. MONO_API MONO_RT_EXTERNAL_ONLY
  163. mono_bool
  164. mono_class_is_delegate (MonoClass* klass);
  165. MONO_API MONO_RT_EXTERNAL_ONLY mono_bool
  166. mono_class_implements_interface (MonoClass* klass, MonoClass* iface);
  167. /* MonoClassField accessors */
  168. MONO_API const char*
  169. mono_field_get_name (MonoClassField *field);
  170. MONO_API MonoType*
  171. mono_field_get_type (MonoClassField *field);
  172. MONO_API MonoClass*
  173. mono_field_get_parent (MonoClassField *field);
  174. MONO_API uint32_t
  175. mono_field_get_flags (MonoClassField *field);
  176. MONO_API uint32_t
  177. mono_field_get_offset (MonoClassField *field);
  178. MONO_API const char *
  179. mono_field_get_data (MonoClassField *field);
  180. /* MonoProperty acessors */
  181. MONO_API const char*
  182. mono_property_get_name (MonoProperty *prop);
  183. MONO_API MonoMethod*
  184. mono_property_get_set_method (MonoProperty *prop);
  185. MONO_API MonoMethod*
  186. mono_property_get_get_method (MonoProperty *prop);
  187. MONO_API MonoClass*
  188. mono_property_get_parent (MonoProperty *prop);
  189. MONO_API uint32_t
  190. mono_property_get_flags (MonoProperty *prop);
  191. /* MonoEvent accessors */
  192. MONO_API const char*
  193. mono_event_get_name (MonoEvent *event);
  194. MONO_API MonoMethod*
  195. mono_event_get_add_method (MonoEvent *event);
  196. MONO_API MonoMethod*
  197. mono_event_get_remove_method (MonoEvent *event);
  198. MONO_API MonoMethod*
  199. mono_event_get_remove_method (MonoEvent *event);
  200. MONO_API MonoMethod*
  201. mono_event_get_raise_method (MonoEvent *event);
  202. MONO_API MonoClass*
  203. mono_event_get_parent (MonoEvent *event);
  204. MONO_API uint32_t
  205. mono_event_get_flags (MonoEvent *event);
  206. MONO_API MONO_RT_EXTERNAL_ONLY MonoMethod *
  207. mono_class_get_method_from_name (MonoClass *klass, const char *name, int param_count);
  208. MONO_API char *
  209. mono_class_name_from_token (MonoImage *image, uint32_t type_token);
  210. MONO_API mono_bool
  211. mono_method_can_access_field (MonoMethod *method, MonoClassField *field);
  212. MONO_API mono_bool
  213. mono_method_can_access_method (MonoMethod *method, MonoMethod *called);
  214. MONO_API mono_bool
  215. mono_class_is_nullable (MonoClass *klass);
  216. MONO_API MONO_RT_EXTERNAL_ONLY MonoClass*
  217. mono_class_get_nullable_param (MonoClass *klass);
  218. MONO_END_DECLS
  219. #endif /* _MONO_CLI_CLASS_H_ */