2009-02-03 Geoff Norton <gnorton@novell.com>
[mono-project.git] / mono / metadata / class.h
blob471967a4ea2cac991e949ed5a8220637677df655
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 G_BEGIN_DECLS
10 typedef struct MonoVTable MonoVTable;
12 typedef struct _MonoClassField MonoClassField;
13 typedef struct _MonoProperty MonoProperty;
14 typedef struct _MonoEvent MonoEvent;
16 typedef struct {
17 MonoVTable *default_vtable;
18 MonoVTable *xdomain_vtable;
19 MonoClass *proxy_class;
20 char* proxy_class_name;
21 guint interface_count;
22 MonoClass *interfaces [MONO_ZERO_LEN_ARRAY];
23 } MonoRemoteClass;
25 MonoClass *
26 mono_class_get (MonoImage *image, guint32 type_token);
28 MonoClass *
29 mono_class_get_full (MonoImage *image, guint32 type_token, MonoGenericContext *context);
31 gboolean
32 mono_class_init (MonoClass *klass);
34 MonoVTable *
35 mono_class_vtable (MonoDomain *domain, MonoClass *klass);
37 MonoClass *
38 mono_class_from_name (MonoImage *image, const char* name_space, const char *name);
40 MonoClass *
41 mono_class_from_name_case (MonoImage *image, const char* name_space, const char *name);
43 MonoMethod *
44 mono_class_get_method_from_name_flags (MonoClass *klass, const char *name, int param_count, int flags);
46 MonoClass *
47 mono_class_from_typeref (MonoImage *image, guint32 type_token);
49 MonoClass *
50 mono_class_from_generic_parameter (MonoGenericParam *param, MonoImage *image, gboolean is_mvar);
52 MonoType*
53 mono_class_inflate_generic_type (MonoType *type, MonoGenericContext *context);
55 MonoMethod*
56 mono_class_inflate_generic_method (MonoMethod *method, MonoGenericContext *context);
58 MonoMethod *
59 mono_get_inflated_method (MonoMethod *method);
61 MonoClassField*
62 mono_field_from_token (MonoImage *image, guint32 token, MonoClass **retklass, MonoGenericContext *context);
64 MonoClass *
65 mono_bounded_array_class_get (MonoClass *element_class, guint32 rank, gboolean bounded);
67 MonoClass *
68 mono_array_class_get (MonoClass *element_class, guint32 rank);
70 MonoClass *
71 mono_ptr_class_get (MonoType *type);
73 MonoClassField *
74 mono_class_get_field (MonoClass *klass, guint32 field_token);
76 MonoClassField *
77 mono_class_get_field_from_name (MonoClass *klass, const char *name);
79 guint32
80 mono_class_get_field_token (MonoClassField *field);
82 guint32
83 mono_class_get_event_token (MonoEvent *event);
85 MonoProperty*
86 mono_class_get_property_from_name (MonoClass *klass, const char *name);
88 guint32
89 mono_class_get_property_token (MonoProperty *prop);
91 gint32
92 mono_array_element_size (MonoClass *ac);
94 gint32
95 mono_class_instance_size (MonoClass *klass);
97 gint32
98 mono_class_array_element_size (MonoClass *klass);
100 gint32
101 mono_class_data_size (MonoClass *klass);
103 gint32
104 mono_class_value_size (MonoClass *klass, guint32 *align);
106 gint32
107 mono_class_min_align (MonoClass *klass);
109 MonoClass *
110 mono_class_from_mono_type (MonoType *type);
112 gboolean
113 mono_class_is_subclass_of (MonoClass *klass, MonoClass *klassc,
114 gboolean check_interfaces);
116 gboolean
117 mono_class_is_assignable_from (MonoClass *klass, MonoClass *oklass);
119 gpointer
120 mono_ldtoken (MonoImage *image, guint32 token, MonoClass **retclass, MonoGenericContext *context);
122 char*
123 mono_type_get_name (MonoType *type);
125 MonoType*
126 mono_type_get_underlying_type (MonoType *type);
128 /* MonoClass accessors */
129 MonoImage*
130 mono_class_get_image (MonoClass *klass);
132 MonoClass*
133 mono_class_get_element_class (MonoClass *klass);
135 gboolean
136 mono_class_is_valuetype (MonoClass *klass);
138 gboolean
139 mono_class_is_enum (MonoClass *klass);
141 MonoType*
142 mono_class_enum_basetype (MonoClass *klass);
144 MonoClass*
145 mono_class_get_parent (MonoClass *klass);
147 MonoClass*
148 mono_class_get_nesting_type (MonoClass *klass);
151 mono_class_get_rank (MonoClass *klass);
153 guint32
154 mono_class_get_flags (MonoClass *klass);
156 const char*
157 mono_class_get_name (MonoClass *klass);
159 const char*
160 mono_class_get_namespace (MonoClass *klass);
162 MonoType*
163 mono_class_get_type (MonoClass *klass);
165 guint32
166 mono_class_get_type_token (MonoClass *klass);
168 MonoType*
169 mono_class_get_byref_type (MonoClass *klass);
172 mono_class_num_fields (MonoClass *klass);
175 mono_class_num_methods (MonoClass *klass);
178 mono_class_num_properties (MonoClass *klass);
181 mono_class_num_events (MonoClass *klass);
183 MonoClassField*
184 mono_class_get_fields (MonoClass* klass, gpointer *iter);
186 MonoMethod*
187 mono_class_get_methods (MonoClass* klass, gpointer *iter);
189 MonoProperty*
190 mono_class_get_properties (MonoClass* klass, gpointer *iter);
192 MonoEvent*
193 mono_class_get_events (MonoClass* klass, gpointer *iter);
195 MonoClass*
196 mono_class_get_interfaces (MonoClass* klass, gpointer *iter);
198 MonoClass*
199 mono_class_get_nested_types (MonoClass* klass, gpointer *iter);
201 /* MonoClassField accessors */
202 const char*
203 mono_field_get_name (MonoClassField *field);
205 MonoType*
206 mono_field_get_type (MonoClassField *field);
208 MonoClass*
209 mono_field_get_parent (MonoClassField *field);
211 guint32
212 mono_field_get_flags (MonoClassField *field);
214 guint32
215 mono_field_get_offset (MonoClassField *field);
217 const char *
218 mono_field_get_data (MonoClassField *field);
220 /* MonoProperty acessors */
221 const char*
222 mono_property_get_name (MonoProperty *prop);
224 MonoMethod*
225 mono_property_get_set_method (MonoProperty *prop);
227 MonoMethod*
228 mono_property_get_get_method (MonoProperty *prop);
230 MonoClass*
231 mono_property_get_parent (MonoProperty *prop);
233 guint32
234 mono_property_get_flags (MonoProperty *prop);
236 /* MonoEvent accessors */
237 const char*
238 mono_event_get_name (MonoEvent *event);
240 MonoMethod*
241 mono_event_get_add_method (MonoEvent *event);
243 MonoMethod*
244 mono_event_get_remove_method (MonoEvent *event);
246 MonoMethod*
247 mono_event_get_remove_method (MonoEvent *event);
249 MonoMethod*
250 mono_event_get_raise_method (MonoEvent *event);
252 MonoClass*
253 mono_event_get_parent (MonoEvent *event);
255 guint32
256 mono_event_get_flags (MonoEvent *event);
258 MonoMethod *
259 mono_class_get_method_from_name (MonoClass *klass, const char *name, int param_count);
261 char *
262 mono_class_name_from_token (MonoImage *image, guint32 type_token);
264 gboolean
265 mono_method_can_access_field (MonoMethod *method, MonoClassField *field);
267 gboolean
268 mono_method_can_access_method (MonoMethod *method, MonoMethod *called);
270 G_END_DECLS
272 #endif /* _MONO_CLI_CLASS_H_ */