5 #ifndef _MONO_CLI_CLASS_H_
6 #define _MONO_CLI_CLASS_H_
8 #include <mono/metadata/metadata.h>
9 #include <mono/metadata/image.h>
10 #include <mono/metadata/loader.h>
11 #include <mono/utils/mono-error.h>
15 typedef struct MonoVTable MonoVTable;
17 typedef struct _MonoClassField MonoClassField;
18 typedef struct _MonoProperty MonoProperty;
19 typedef struct _MonoEvent MonoEvent;
22 mono_class_get (MonoImage *image, uint32_t type_token);
25 mono_class_get_full (MonoImage *image, uint32_t type_token, MonoGenericContext *context);
28 mono_class_init (MonoClass *klass);
31 mono_class_vtable (MonoDomain *domain, MonoClass *klass);
33 MONO_RT_EXTERNAL_ONLY MONO_API MonoClass *
34 mono_class_from_name (MonoImage *image, const char* name_space, const char *name);
36 MONO_RT_EXTERNAL_ONLY MONO_API MonoClass *
37 mono_class_from_name_case (MonoImage *image, const char* name_space, const char *name);
40 mono_class_get_method_from_name_flags (MonoClass *klass, const char *name, int param_count, int flags);
43 mono_class_from_typeref (MonoImage *image, uint32_t type_token);
46 mono_class_from_typeref_checked (MonoImage *image, uint32_t type_token, MonoError *error);
49 mono_class_from_generic_parameter (MonoGenericParam *param, MonoImage *image, mono_bool is_mvar);
51 MONO_RT_EXTERNAL_ONLY MONO_API MonoType*
52 mono_class_inflate_generic_type (MonoType *type, MonoGenericContext *context) /* MONO_DEPRECATED */;
55 mono_class_inflate_generic_method (MonoMethod *method, MonoGenericContext *context);
58 mono_get_inflated_method (MonoMethod *method);
60 MONO_API MonoClassField*
61 mono_field_from_token (MonoImage *image, uint32_t token, MonoClass **retklass, MonoGenericContext *context);
64 mono_bounded_array_class_get (MonoClass *element_class, uint32_t rank, mono_bool bounded);
67 mono_array_class_get (MonoClass *element_class, uint32_t rank);
70 mono_ptr_class_get (MonoType *type);
72 MONO_API MonoClassField *
73 mono_class_get_field (MonoClass *klass, uint32_t field_token);
75 MONO_API MonoClassField *
76 mono_class_get_field_from_name (MonoClass *klass, const char *name);
79 mono_class_get_field_token (MonoClassField *field);
82 mono_class_get_event_token (MonoEvent *event);
84 MONO_API MonoProperty*
85 mono_class_get_property_from_name (MonoClass *klass, const char *name);
88 mono_class_get_property_token (MonoProperty *prop);
91 mono_array_element_size (MonoClass *ac);
94 mono_class_instance_size (MonoClass *klass);
97 mono_class_array_element_size (MonoClass *klass);
100 mono_class_data_size (MonoClass *klass);
103 mono_class_value_size (MonoClass *klass, uint32_t *align);
106 mono_class_min_align (MonoClass *klass);
109 mono_class_from_mono_type (MonoType *type);
112 mono_class_is_subclass_of (MonoClass *klass, MonoClass *klassc,
113 mono_bool check_interfaces);
116 mono_class_is_assignable_from (MonoClass *klass, MonoClass *oklass);
119 mono_ldtoken (MonoImage *image, uint32_t token, MonoClass **retclass, MonoGenericContext *context);
122 mono_type_get_name (MonoType *type);
125 mono_type_get_underlying_type (MonoType *type);
127 /* MonoClass accessors */
129 mono_class_get_image (MonoClass *klass);
132 mono_class_get_element_class (MonoClass *klass);
135 mono_class_is_valuetype (MonoClass *klass);
138 mono_class_is_enum (MonoClass *klass);
141 mono_class_enum_basetype (MonoClass *klass);
144 mono_class_get_parent (MonoClass *klass);
147 mono_class_get_nesting_type (MonoClass *klass);
150 mono_class_get_rank (MonoClass *klass);
153 mono_class_get_flags (MonoClass *klass);
156 mono_class_get_name (MonoClass *klass);
159 mono_class_get_namespace (MonoClass *klass);
162 mono_class_get_type (MonoClass *klass);
165 mono_class_get_type_token (MonoClass *klass);
168 mono_class_get_byref_type (MonoClass *klass);
171 mono_class_num_fields (MonoClass *klass);
174 mono_class_num_methods (MonoClass *klass);
177 mono_class_num_properties (MonoClass *klass);
180 mono_class_num_events (MonoClass *klass);
182 MONO_API MonoClassField*
183 mono_class_get_fields (MonoClass* klass, void **iter);
186 mono_class_get_methods (MonoClass* klass, void **iter);
188 MONO_API MonoProperty*
189 mono_class_get_properties (MonoClass* klass, void **iter);
192 mono_class_get_events (MonoClass* klass, void **iter);
195 mono_class_get_interfaces (MonoClass* klass, void **iter);
198 mono_class_get_nested_types (MonoClass* klass, void **iter);
201 mono_class_is_delegate (MonoClass* klass);
204 mono_class_implements_interface (MonoClass* klass, MonoClass* iface);
206 /* MonoClassField accessors */
208 mono_field_get_name (MonoClassField *field);
211 mono_field_get_type (MonoClassField *field);
214 mono_field_get_parent (MonoClassField *field);
217 mono_field_get_flags (MonoClassField *field);
220 mono_field_get_offset (MonoClassField *field);
222 MONO_API const char *
223 mono_field_get_data (MonoClassField *field);
225 /* MonoProperty acessors */
227 mono_property_get_name (MonoProperty *prop);
230 mono_property_get_set_method (MonoProperty *prop);
233 mono_property_get_get_method (MonoProperty *prop);
236 mono_property_get_parent (MonoProperty *prop);
239 mono_property_get_flags (MonoProperty *prop);
241 /* MonoEvent accessors */
243 mono_event_get_name (MonoEvent *event);
246 mono_event_get_add_method (MonoEvent *event);
249 mono_event_get_remove_method (MonoEvent *event);
252 mono_event_get_remove_method (MonoEvent *event);
255 mono_event_get_raise_method (MonoEvent *event);
258 mono_event_get_parent (MonoEvent *event);
261 mono_event_get_flags (MonoEvent *event);
263 MONO_API MonoMethod *
264 mono_class_get_method_from_name (MonoClass *klass, const char *name, int param_count);
267 mono_class_name_from_token (MonoImage *image, uint32_t type_token);
270 mono_method_can_access_field (MonoMethod *method, MonoClassField *field);
273 mono_method_can_access_method (MonoMethod *method, MonoMethod *called);
277 #endif /* _MONO_CLI_CLASS_H_ */