2010-04-07 Rodrigo Kumpera <rkumpera@novell.com>
[mono.git] / mono / metadata / class.h
blob1142dca5bdf308c2c70d46f0632167d8fb429a67
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>
8 MONO_BEGIN_DECLS
10 typedef struct MonoVTable MonoVTable;
12 typedef struct _MonoClassField MonoClassField;
13 typedef struct _MonoProperty MonoProperty;
14 typedef struct _MonoEvent MonoEvent;
16 MonoClass *
17 mono_class_get (MonoImage *image, uint32_t type_token);
19 MonoClass *
20 mono_class_get_full (MonoImage *image, uint32_t type_token, MonoGenericContext *context);
22 mono_bool
23 mono_class_init (MonoClass *klass);
25 MonoVTable *
26 mono_class_vtable (MonoDomain *domain, MonoClass *klass);
28 MonoClass *
29 mono_class_from_name (MonoImage *image, const char* name_space, const char *name);
31 MonoClass *
32 mono_class_from_name_case (MonoImage *image, const char* name_space, const char *name);
34 MonoMethod *
35 mono_class_get_method_from_name_flags (MonoClass *klass, const char *name, int param_count, int flags);
37 MonoClass *
38 mono_class_from_typeref (MonoImage *image, uint32_t type_token);
40 MonoClass *
41 mono_class_from_generic_parameter (MonoGenericParam *param, MonoImage *image, mono_bool is_mvar);
43 MonoType*
44 mono_class_inflate_generic_type (MonoType *type, MonoGenericContext *context) /* MONO_DEPRECATED */;
46 MonoMethod*
47 mono_class_inflate_generic_method (MonoMethod *method, MonoGenericContext *context);
49 MonoMethod *
50 mono_get_inflated_method (MonoMethod *method);
52 MonoClassField*
53 mono_field_from_token (MonoImage *image, uint32_t token, MonoClass **retklass, MonoGenericContext *context);
55 MonoClass *
56 mono_bounded_array_class_get (MonoClass *element_class, uint32_t rank, mono_bool bounded);
58 MonoClass *
59 mono_array_class_get (MonoClass *element_class, uint32_t rank);
61 MonoClass *
62 mono_ptr_class_get (MonoType *type);
64 MonoClassField *
65 mono_class_get_field (MonoClass *klass, uint32_t field_token);
67 MonoClassField *
68 mono_class_get_field_from_name (MonoClass *klass, const char *name);
70 uint32_t
71 mono_class_get_field_token (MonoClassField *field);
73 uint32_t
74 mono_class_get_event_token (MonoEvent *event);
76 MonoProperty*
77 mono_class_get_property_from_name (MonoClass *klass, const char *name);
79 uint32_t
80 mono_class_get_property_token (MonoProperty *prop);
82 int32_t
83 mono_array_element_size (MonoClass *ac);
85 int32_t
86 mono_class_instance_size (MonoClass *klass);
88 int32_t
89 mono_class_array_element_size (MonoClass *klass);
91 int32_t
92 mono_class_data_size (MonoClass *klass);
94 int32_t
95 mono_class_value_size (MonoClass *klass, uint32_t *align);
97 int32_t
98 mono_class_min_align (MonoClass *klass);
100 MonoClass *
101 mono_class_from_mono_type (MonoType *type);
103 mono_bool
104 mono_class_is_subclass_of (MonoClass *klass, MonoClass *klassc,
105 mono_bool check_interfaces);
107 mono_bool
108 mono_class_is_assignable_from (MonoClass *klass, MonoClass *oklass);
110 void*
111 mono_ldtoken (MonoImage *image, uint32_t token, MonoClass **retclass, MonoGenericContext *context);
113 char*
114 mono_type_get_name (MonoType *type);
116 MonoType*
117 mono_type_get_underlying_type (MonoType *type);
119 /* MonoClass accessors */
120 MonoImage*
121 mono_class_get_image (MonoClass *klass);
123 MonoClass*
124 mono_class_get_element_class (MonoClass *klass);
126 mono_bool
127 mono_class_is_valuetype (MonoClass *klass);
129 mono_bool
130 mono_class_is_enum (MonoClass *klass);
132 MonoType*
133 mono_class_enum_basetype (MonoClass *klass);
135 MonoClass*
136 mono_class_get_parent (MonoClass *klass);
138 MonoClass*
139 mono_class_get_nesting_type (MonoClass *klass);
142 mono_class_get_rank (MonoClass *klass);
144 uint32_t
145 mono_class_get_flags (MonoClass *klass);
147 const char*
148 mono_class_get_name (MonoClass *klass);
150 const char*
151 mono_class_get_namespace (MonoClass *klass);
153 MonoType*
154 mono_class_get_type (MonoClass *klass);
156 uint32_t
157 mono_class_get_type_token (MonoClass *klass);
159 MonoType*
160 mono_class_get_byref_type (MonoClass *klass);
163 mono_class_num_fields (MonoClass *klass);
166 mono_class_num_methods (MonoClass *klass);
169 mono_class_num_properties (MonoClass *klass);
172 mono_class_num_events (MonoClass *klass);
174 MonoClassField*
175 mono_class_get_fields (MonoClass* klass, void **iter);
177 MonoMethod*
178 mono_class_get_methods (MonoClass* klass, void **iter);
180 MonoProperty*
181 mono_class_get_properties (MonoClass* klass, void **iter);
183 MonoEvent*
184 mono_class_get_events (MonoClass* klass, void **iter);
186 MonoClass*
187 mono_class_get_interfaces (MonoClass* klass, void **iter);
189 MonoClass*
190 mono_class_get_nested_types (MonoClass* klass, void **iter);
192 /* MonoClassField accessors */
193 const char*
194 mono_field_get_name (MonoClassField *field);
196 MonoType*
197 mono_field_get_type (MonoClassField *field);
199 MonoClass*
200 mono_field_get_parent (MonoClassField *field);
202 uint32_t
203 mono_field_get_flags (MonoClassField *field);
205 uint32_t
206 mono_field_get_offset (MonoClassField *field);
208 const char *
209 mono_field_get_data (MonoClassField *field);
211 /* MonoProperty acessors */
212 const char*
213 mono_property_get_name (MonoProperty *prop);
215 MonoMethod*
216 mono_property_get_set_method (MonoProperty *prop);
218 MonoMethod*
219 mono_property_get_get_method (MonoProperty *prop);
221 MonoClass*
222 mono_property_get_parent (MonoProperty *prop);
224 uint32_t
225 mono_property_get_flags (MonoProperty *prop);
227 /* MonoEvent accessors */
228 const char*
229 mono_event_get_name (MonoEvent *event);
231 MonoMethod*
232 mono_event_get_add_method (MonoEvent *event);
234 MonoMethod*
235 mono_event_get_remove_method (MonoEvent *event);
237 MonoMethod*
238 mono_event_get_remove_method (MonoEvent *event);
240 MonoMethod*
241 mono_event_get_raise_method (MonoEvent *event);
243 MonoClass*
244 mono_event_get_parent (MonoEvent *event);
246 uint32_t
247 mono_event_get_flags (MonoEvent *event);
249 MonoMethod *
250 mono_class_get_method_from_name (MonoClass *klass, const char *name, int param_count);
252 char *
253 mono_class_name_from_token (MonoImage *image, uint32_t type_token);
255 mono_bool
256 mono_method_can_access_field (MonoMethod *method, MonoClassField *field);
258 mono_bool
259 mono_method_can_access_method (MonoMethod *method, MonoMethod *called);
261 MONO_END_DECLS
263 #endif /* _MONO_CLI_CLASS_H_ */