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