1 #ifndef _MONO_CLI_CLASS_H_
2 #define _MONO_CLI_CLASS_H_
4 #include <mono/metadata/metadata.h>
5 #include <mono/metadata/image.h>
6 #include <mono/metadata/loader.h>
7 #include <mono/utils/mono-compiler.h>
8 #include <mono/utils/mono-error.h>
12 typedef struct MonoVTable MonoVTable;
14 typedef struct _MonoClassField MonoClassField;
15 typedef struct _MonoProperty MonoProperty;
16 typedef struct _MonoEvent MonoEvent;
19 MonoVTable *default_vtable;
20 MonoVTable *xdomain_vtable;
21 MonoClass *proxy_class;
22 char* proxy_class_name;
23 guint interface_count;
24 MonoClass *interfaces [MONO_ZERO_LEN_ARRAY];
27 #define MONO_SIZEOF_REMOTE_CLASS (sizeof (MonoRemoteClass) - MONO_ZERO_LEN_ARRAY * SIZEOF_VOID_P)
30 mono_class_get (MonoImage *image, guint32 type_token);
33 mono_class_get_full (MonoImage *image, guint32 type_token, MonoGenericContext *context);
36 mono_class_init (MonoClass *klass);
39 mono_class_vtable (MonoDomain *domain, MonoClass *klass);
42 mono_class_from_name (MonoImage *image, const char* name_space, const char *name);
45 mono_class_from_name_case (MonoImage *image, const char* name_space, const char *name);
48 mono_class_get_method_from_name_flags (MonoClass *klass, const char *name, int param_count, int flags);
51 mono_class_from_typeref (MonoImage *image, guint32 type_token);
54 mono_class_from_generic_parameter (MonoGenericParam *param, MonoImage *image, gboolean is_mvar);
57 mono_class_inflate_generic_type (MonoType *type, MonoGenericContext *context) MONO_DEPRECATED;
60 mono_class_inflate_generic_type_checked (MonoType *type, MonoGenericContext *context, MonoError *error);
63 mono_class_inflate_generic_method (MonoMethod *method, MonoGenericContext *context);
66 mono_get_inflated_method (MonoMethod *method);
69 mono_field_from_token (MonoImage *image, guint32 token, MonoClass **retklass, MonoGenericContext *context);
72 mono_bounded_array_class_get (MonoClass *element_class, guint32 rank, gboolean bounded);
75 mono_array_class_get (MonoClass *element_class, guint32 rank);
78 mono_ptr_class_get (MonoType *type);
81 mono_class_get_field (MonoClass *klass, guint32 field_token);
84 mono_class_get_field_from_name (MonoClass *klass, const char *name);
87 mono_class_get_field_token (MonoClassField *field);
90 mono_class_get_event_token (MonoEvent *event);
93 mono_class_get_property_from_name (MonoClass *klass, const char *name);
96 mono_class_get_property_token (MonoProperty *prop);
99 mono_array_element_size (MonoClass *ac);
102 mono_class_instance_size (MonoClass *klass);
105 mono_class_array_element_size (MonoClass *klass);
108 mono_class_data_size (MonoClass *klass);
111 mono_class_value_size (MonoClass *klass, guint32 *align);
114 mono_class_min_align (MonoClass *klass);
117 mono_class_from_mono_type (MonoType *type);
120 mono_class_is_subclass_of (MonoClass *klass, MonoClass *klassc,
121 gboolean check_interfaces);
124 mono_class_is_assignable_from (MonoClass *klass, MonoClass *oklass);
127 mono_ldtoken (MonoImage *image, guint32 token, MonoClass **retclass, MonoGenericContext *context);
130 mono_type_get_name (MonoType *type);
133 mono_type_get_underlying_type (MonoType *type);
135 /* MonoClass accessors */
137 mono_class_get_image (MonoClass *klass);
140 mono_class_get_element_class (MonoClass *klass);
143 mono_class_is_valuetype (MonoClass *klass);
146 mono_class_is_enum (MonoClass *klass);
149 mono_class_enum_basetype (MonoClass *klass);
152 mono_class_get_parent (MonoClass *klass);
155 mono_class_get_nesting_type (MonoClass *klass);
158 mono_class_get_rank (MonoClass *klass);
161 mono_class_get_flags (MonoClass *klass);
164 mono_class_get_name (MonoClass *klass);
167 mono_class_get_namespace (MonoClass *klass);
170 mono_class_get_type (MonoClass *klass);
173 mono_class_get_type_token (MonoClass *klass);
176 mono_class_get_byref_type (MonoClass *klass);
179 mono_class_num_fields (MonoClass *klass);
182 mono_class_num_methods (MonoClass *klass);
185 mono_class_num_properties (MonoClass *klass);
188 mono_class_num_events (MonoClass *klass);
191 mono_class_get_fields (MonoClass* klass, gpointer *iter);
194 mono_class_get_methods (MonoClass* klass, gpointer *iter);
197 mono_class_get_properties (MonoClass* klass, gpointer *iter);
200 mono_class_get_events (MonoClass* klass, gpointer *iter);
203 mono_class_get_interfaces (MonoClass* klass, gpointer *iter);
206 mono_class_get_nested_types (MonoClass* klass, gpointer *iter);
208 /* MonoClassField accessors */
210 mono_field_get_name (MonoClassField *field);
213 mono_field_get_type (MonoClassField *field);
216 mono_field_get_parent (MonoClassField *field);
219 mono_field_get_flags (MonoClassField *field);
222 mono_field_get_offset (MonoClassField *field);
225 mono_field_get_data (MonoClassField *field);
227 /* MonoProperty acessors */
229 mono_property_get_name (MonoProperty *prop);
232 mono_property_get_set_method (MonoProperty *prop);
235 mono_property_get_get_method (MonoProperty *prop);
238 mono_property_get_parent (MonoProperty *prop);
241 mono_property_get_flags (MonoProperty *prop);
243 /* MonoEvent accessors */
245 mono_event_get_name (MonoEvent *event);
248 mono_event_get_add_method (MonoEvent *event);
251 mono_event_get_remove_method (MonoEvent *event);
254 mono_event_get_remove_method (MonoEvent *event);
257 mono_event_get_raise_method (MonoEvent *event);
260 mono_event_get_parent (MonoEvent *event);
263 mono_event_get_flags (MonoEvent *event);
266 mono_class_get_method_from_name (MonoClass *klass, const char *name, int param_count);
269 mono_class_name_from_token (MonoImage *image, guint32 type_token);
272 mono_method_can_access_field (MonoMethod *method, MonoClassField *field);
275 mono_method_can_access_method (MonoMethod *method, MonoMethod *called);
279 #endif /* _MONO_CLI_CLASS_H_ */