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
;
23 mono_class_get (MonoImage
*image
, uint32_t type_token
);
27 mono_class_get_full (MonoImage
*image
, uint32_t type_token
, MonoGenericContext
*context
);
30 mono_class_init (MonoClass
*klass
);
34 mono_class_vtable (MonoDomain
*domain
, MonoClass
*klass
);
36 MONO_RT_EXTERNAL_ONLY MONO_API MonoClass
*
37 mono_class_from_name (MonoImage
*image
, const char* name_space
, const char *name
);
39 MONO_RT_EXTERNAL_ONLY MONO_API MonoClass
*
40 mono_class_from_name_case (MonoImage
*image
, const char* name_space
, const char *name
);
43 mono_class_get_method_from_name_flags (MonoClass
*klass
, const char *name
, int param_count
, int flags
);
47 mono_class_from_typeref (MonoImage
*image
, uint32_t type_token
);
50 mono_class_from_typeref_checked (MonoImage
*image
, uint32_t type_token
, MonoError
*error
);
54 mono_class_from_generic_parameter (MonoGenericParam
*param
, MonoImage
*image
, mono_bool is_mvar
);
56 MONO_RT_EXTERNAL_ONLY MONO_API MonoType
*
57 mono_class_inflate_generic_type (MonoType
*type
, MonoGenericContext
*context
) /* MONO_DEPRECATED */;
61 mono_class_inflate_generic_method (MonoMethod
*method
, MonoGenericContext
*context
);
65 mono_get_inflated_method (MonoMethod
*method
);
68 MONO_API MonoClassField
*
69 mono_field_from_token (MonoImage
*image
, uint32_t token
, MonoClass
**retklass
, MonoGenericContext
*context
);
73 mono_bounded_array_class_get (MonoClass
*element_class
, uint32_t rank
, mono_bool bounded
);
77 mono_array_class_get (MonoClass
*element_class
, uint32_t rank
);
81 mono_ptr_class_get (MonoType
*type
);
83 MONO_API MonoClassField
*
84 mono_class_get_field (MonoClass
*klass
, uint32_t field_token
);
86 MONO_API MonoClassField
*
87 mono_class_get_field_from_name (MonoClass
*klass
, const char *name
);
90 mono_class_get_field_token (MonoClassField
*field
);
93 mono_class_get_event_token (MonoEvent
*event
);
95 MONO_API MonoProperty
*
96 mono_class_get_property_from_name (MonoClass
*klass
, const char *name
);
99 mono_class_get_property_token (MonoProperty
*prop
);
102 mono_array_element_size (MonoClass
*ac
);
105 mono_class_instance_size (MonoClass
*klass
);
108 mono_class_array_element_size (MonoClass
*klass
);
111 mono_class_data_size (MonoClass
*klass
);
114 mono_class_value_size (MonoClass
*klass
, uint32_t *align
);
117 mono_class_min_align (MonoClass
*klass
);
120 mono_class_from_mono_type (MonoType
*type
);
123 mono_class_is_subclass_of (MonoClass
*klass
, MonoClass
*klassc
,
124 mono_bool check_interfaces
);
127 mono_class_is_assignable_from (MonoClass
*klass
, MonoClass
*oklass
);
129 MONO_RT_EXTERNAL_ONLY
131 mono_ldtoken (MonoImage
*image
, uint32_t token
, MonoClass
**retclass
, MonoGenericContext
*context
);
134 mono_type_get_name (MonoType
*type
);
137 mono_type_get_underlying_type (MonoType
*type
);
139 /* MonoClass accessors */
141 mono_class_get_image (MonoClass
*klass
);
144 mono_class_get_element_class (MonoClass
*klass
);
147 mono_class_is_valuetype (MonoClass
*klass
);
150 mono_class_is_enum (MonoClass
*klass
);
153 mono_class_enum_basetype (MonoClass
*klass
);
156 mono_class_get_parent (MonoClass
*klass
);
159 mono_class_get_nesting_type (MonoClass
*klass
);
162 mono_class_get_rank (MonoClass
*klass
);
165 mono_class_get_flags (MonoClass
*klass
);
168 mono_class_get_name (MonoClass
*klass
);
171 mono_class_get_namespace (MonoClass
*klass
);
174 mono_class_get_type (MonoClass
*klass
);
177 mono_class_get_type_token (MonoClass
*klass
);
180 mono_class_get_byref_type (MonoClass
*klass
);
183 mono_class_num_fields (MonoClass
*klass
);
186 mono_class_num_methods (MonoClass
*klass
);
189 mono_class_num_properties (MonoClass
*klass
);
192 mono_class_num_events (MonoClass
*klass
);
194 MONO_API MonoClassField
*
195 mono_class_get_fields (MonoClass
* klass
, void **iter
);
198 mono_class_get_methods (MonoClass
* klass
, void **iter
);
200 MONO_API MonoProperty
*
201 mono_class_get_properties (MonoClass
* klass
, void **iter
);
204 mono_class_get_events (MonoClass
* klass
, void **iter
);
207 mono_class_get_interfaces (MonoClass
* klass
, void **iter
);
210 mono_class_get_nested_types (MonoClass
* klass
, void **iter
);
213 mono_class_is_delegate (MonoClass
* klass
);
216 mono_class_implements_interface (MonoClass
* klass
, MonoClass
* iface
);
218 /* MonoClassField accessors */
220 mono_field_get_name (MonoClassField
*field
);
223 mono_field_get_type (MonoClassField
*field
);
226 mono_field_get_parent (MonoClassField
*field
);
229 mono_field_get_flags (MonoClassField
*field
);
232 mono_field_get_offset (MonoClassField
*field
);
234 MONO_API
const char *
235 mono_field_get_data (MonoClassField
*field
);
237 /* MonoProperty acessors */
239 mono_property_get_name (MonoProperty
*prop
);
242 mono_property_get_set_method (MonoProperty
*prop
);
245 mono_property_get_get_method (MonoProperty
*prop
);
248 mono_property_get_parent (MonoProperty
*prop
);
251 mono_property_get_flags (MonoProperty
*prop
);
253 /* MonoEvent accessors */
255 mono_event_get_name (MonoEvent
*event
);
258 mono_event_get_add_method (MonoEvent
*event
);
261 mono_event_get_remove_method (MonoEvent
*event
);
264 mono_event_get_remove_method (MonoEvent
*event
);
267 mono_event_get_raise_method (MonoEvent
*event
);
270 mono_event_get_parent (MonoEvent
*event
);
273 mono_event_get_flags (MonoEvent
*event
);
275 MONO_API MonoMethod
*
276 mono_class_get_method_from_name (MonoClass
*klass
, const char *name
, int param_count
);
279 mono_class_name_from_token (MonoImage
*image
, uint32_t type_token
);
282 mono_method_can_access_field (MonoMethod
*method
, MonoClassField
*field
);
285 mono_method_can_access_method (MonoMethod
*method
, MonoMethod
*called
);
289 #endif /* _MONO_CLI_CLASS_H_ */