2005-06-05 Peter Bartok <pbartok@novell.com>
[mono.git] / mono / metadata / class.h
1 #ifndef _MONO_CLI_CLASS_H_
2 #define _MONO_CLI_CLASS_H_
3
4 #include <mono/metadata/metadata.h>
5 #include <mono/metadata/image.h>
6 #include <mono/metadata/loader.h>
7
8 typedef struct MonoVTable MonoVTable;
9
10 typedef struct _MonoClassField MonoClassField;
11 typedef struct _MonoProperty MonoProperty;
12 typedef struct _MonoEvent MonoEvent;
13
14 typedef struct {
15         MonoVTable *default_vtable;
16         MonoVTable *xdomain_vtable;
17         MonoClass *proxy_class;
18         guint interface_count;
19         MonoClass **interfaces;
20         char* proxy_class_name;
21 } MonoRemoteClass;
22
23 MonoClass *
24 mono_class_get             (MonoImage *image, guint32 type_token);
25
26 MonoClass *
27 mono_class_get_full        (MonoImage *image, guint32 type_token, MonoGenericContext *context);
28
29 void
30 mono_class_init            (MonoClass *klass);
31
32 MonoVTable *
33 mono_class_vtable          (MonoDomain *domain, MonoClass *klass);
34
35 MonoClass *
36 mono_class_from_name       (MonoImage *image, const char* name_space, const char *name);
37
38 MonoClass *
39 mono_class_from_name_case  (MonoImage *image, const char* name_space, const char *name);
40
41 MonoMethod *
42 mono_class_get_method_from_name_flags (MonoClass *klass, const char *name, int param_count, int flags);
43
44 MonoClass * 
45 mono_class_from_typeref    (MonoImage *image, guint32 type_token);
46
47 MonoClass *
48 mono_class_from_generic_parameter (MonoGenericParam *param, MonoImage *image, gboolean is_mvar);
49
50 MonoType*
51 mono_class_inflate_generic_type (MonoType *type, MonoGenericContext *context);
52
53 MonoMethod*
54 mono_class_inflate_generic_method (MonoMethod *method, MonoGenericContext *context, MonoClass *klass);
55
56 MonoMethod *
57 mono_get_inflated_method (MonoMethod *method);
58
59 MonoClassField*
60 mono_field_from_token      (MonoImage *image, guint32 token, MonoClass **retklass, MonoGenericContext *context);
61
62 MonoClass *
63 mono_bounded_array_class_get (MonoClass *element_class, guint32 rank, gboolean bounded);
64
65 MonoClass *
66 mono_array_class_get       (MonoClass *element_class, guint32 rank);
67
68 MonoClass *
69 mono_ptr_class_get         (MonoType *type);
70
71 MonoClassField *
72 mono_class_get_field       (MonoClass *klass, guint32 field_token);
73
74 MonoClassField *
75 mono_class_get_field_from_name (MonoClass *klass, const char *name);
76
77 guint32
78 mono_class_get_field_token (MonoClassField *field);
79
80 guint32
81 mono_class_get_event_token (MonoEvent *event);
82
83 MonoProperty*
84 mono_class_get_property_from_name (MonoClass *klass, const char *name);
85
86 guint32
87 mono_class_get_property_token (MonoProperty *prop);
88
89 gint32
90 mono_array_element_size    (MonoClass *ac);
91
92 gint32
93 mono_class_instance_size   (MonoClass *klass);
94
95 gint32
96 mono_class_array_element_size (MonoClass *klass);
97
98 gint32
99 mono_class_data_size       (MonoClass *klass);
100
101 gint32
102 mono_class_value_size      (MonoClass *klass, guint32 *align);
103
104 gint32
105 mono_class_min_align       (MonoClass *klass);
106
107 MonoClass *
108 mono_class_from_mono_type  (MonoType *type);
109
110 gboolean
111 mono_class_is_subclass_of (MonoClass *klass, MonoClass *klassc, 
112                                                    gboolean check_interfaces);
113
114 gboolean
115 mono_class_is_assignable_from (MonoClass *klass, MonoClass *oklass);
116
117 gpointer
118 mono_ldtoken               (MonoImage *image, guint32 token, MonoClass **retclass, MonoGenericContext *context);
119
120 char*         
121 mono_type_get_name         (MonoType *type);
122
123 char*         
124 mono_type_get_full_name    (MonoType *type);
125
126 MonoType*
127 mono_type_get_underlying_type (MonoType *type);
128
129 /* MonoClass accessors */
130 MonoImage*
131 mono_class_get_image         (MonoClass *klass);
132
133 MonoClass*
134 mono_class_get_element_class (MonoClass *klass);
135
136 gboolean
137 mono_class_is_valuetype      (MonoClass *klass);
138
139 gboolean
140 mono_class_is_enum          (MonoClass *klass);
141
142 MonoType*
143 mono_class_enum_basetype    (MonoClass *klass);
144
145 MonoClass*
146 mono_class_get_parent        (MonoClass *klass);
147
148 MonoClass*
149 mono_class_get_nesting_type  (MonoClass *klass);
150
151 int
152 mono_class_get_rank          (MonoClass *klass);
153
154 guint32
155 mono_class_get_flags         (MonoClass *klass);
156
157 const char*
158 mono_class_get_name          (MonoClass *klass);
159
160 const char*
161 mono_class_get_namespace     (MonoClass *klass);
162
163 MonoType*
164 mono_class_get_type          (MonoClass *klass);
165
166 MonoType*
167 mono_class_get_byref_type    (MonoClass *klass);
168
169 int
170 mono_class_num_fields        (MonoClass *klass);
171
172 int
173 mono_class_num_methods       (MonoClass *klass);
174
175 int
176 mono_class_num_properties    (MonoClass *klass);
177
178 int
179 mono_class_num_events        (MonoClass *klass);
180
181 MonoClassField*
182 mono_class_get_fields        (MonoClass* klass, gpointer *iter);
183
184 MonoMethod*
185 mono_class_get_methods       (MonoClass* klass, gpointer *iter);
186
187 MonoProperty*
188 mono_class_get_properties    (MonoClass* klass, gpointer *iter);
189
190 MonoEvent*
191 mono_class_get_events        (MonoClass* klass, gpointer *iter);
192
193 MonoClass*
194 mono_class_get_interfaces    (MonoClass* klass, gpointer *iter);
195
196 MonoClass*
197 mono_class_get_nested_types  (MonoClass* klass, gpointer *iter);
198
199 /* MonoClassField accessors */
200 const char*
201 mono_field_get_name   (MonoClassField *field);
202
203 MonoType*
204 mono_field_get_type   (MonoClassField *field);
205
206 MonoClass*
207 mono_field_get_parent (MonoClassField *field);
208
209 guint32
210 mono_field_get_flags  (MonoClassField *field);
211
212 /* MonoProperty acessors */
213 const char*
214 mono_property_get_name       (MonoProperty *prop);
215
216 MonoMethod*
217 mono_property_get_set_method (MonoProperty *prop);
218
219 MonoMethod*
220 mono_property_get_get_method (MonoProperty *prop);
221
222 MonoClass*
223 mono_property_get_parent     (MonoProperty *prop);
224
225 guint32
226 mono_property_get_flags      (MonoProperty *prop);
227
228 /* MonoEvent accessors */
229 const char*
230 mono_event_get_name          (MonoEvent *event);
231
232 MonoMethod*
233 mono_event_get_add_method    (MonoEvent *event);
234
235 MonoMethod*
236 mono_event_get_remove_method (MonoEvent *event);
237
238 MonoMethod*
239 mono_event_get_remove_method (MonoEvent *event);
240
241 MonoMethod*
242 mono_event_get_raise_method  (MonoEvent *event);
243
244 MonoClass*
245 mono_event_get_parent        (MonoEvent *event);
246
247 guint32
248 mono_event_get_flags         (MonoEvent *event);
249
250 MonoMethod *
251 mono_class_get_method_from_name (MonoClass *klass, const char *name, int param_count);
252
253 char *
254 mono_class_name_from_token (MonoImage *image, guint32 type_token, MonoGenericContext *context);
255
256 #endif /* _MONO_CLI_CLASS_H_ */