[csproj] Fix diff rendering when XML comments appear in the diff (#8642)
[mono-project.git] / mono / metadata / class.h
blob5d7bf80d9c5715c8b0a8b91d3558cef33f9e0936
1 /**
2 * \file
3 */
5 #ifndef _MONO_CLI_CLASS_H_
6 #define _MONO_CLI_CLASS_H_
8 #include <mono/metadata/metadata.h>
9 #include <mono/metadata/image.h>
10 #include <mono/metadata/loader.h>
11 #include <mono/utils/mono-error.h>
13 MONO_BEGIN_DECLS
15 typedef struct MonoVTable MonoVTable;
17 typedef struct _MonoClassField MonoClassField;
18 typedef struct _MonoProperty MonoProperty;
19 typedef struct _MonoEvent MonoEvent;
21 MONO_RT_EXTERNAL_ONLY
22 MONO_API MonoClass *
23 mono_class_get (MonoImage *image, uint32_t type_token);
25 MONO_RT_EXTERNAL_ONLY
26 MONO_API MonoClass *
27 mono_class_get_full (MonoImage *image, uint32_t type_token, MonoGenericContext *context);
29 MONO_API mono_bool
30 mono_class_init (MonoClass *klass);
32 MONO_RT_EXTERNAL_ONLY
33 MONO_API MonoVTable *
34 mono_class_vtable (MonoDomain *domain, MonoClass *klass);
36 MONO_RT_EXTERNAL_ONLY MONO_API MonoClass *
37 mono_class_from_name (MonoImage *image, const char* name_space, const char *name);
39 MONO_RT_EXTERNAL_ONLY MONO_API MonoClass *
40 mono_class_from_name_case (MonoImage *image, const char* name_space, const char *name);
42 MONO_API MonoMethod *
43 mono_class_get_method_from_name_flags (MonoClass *klass, const char *name, int param_count, int flags);
45 MONO_RT_EXTERNAL_ONLY
46 MONO_API MonoClass *
47 mono_class_from_typeref (MonoImage *image, uint32_t type_token);
49 MONO_API MonoClass *
50 mono_class_from_typeref_checked (MonoImage *image, uint32_t type_token, MonoError *error);
52 MONO_RT_EXTERNAL_ONLY
53 MONO_API MonoClass *
54 mono_class_from_generic_parameter (MonoGenericParam *param, MonoImage *image, mono_bool is_mvar);
56 MONO_RT_EXTERNAL_ONLY MONO_API MonoType*
57 mono_class_inflate_generic_type (MonoType *type, MonoGenericContext *context) /* MONO_DEPRECATED */;
59 MONO_RT_EXTERNAL_ONLY
60 MONO_API MonoMethod*
61 mono_class_inflate_generic_method (MonoMethod *method, MonoGenericContext *context);
63 MONO_RT_EXTERNAL_ONLY
64 MONO_API MonoMethod *
65 mono_get_inflated_method (MonoMethod *method);
67 MONO_RT_EXTERNAL_ONLY
68 MONO_API MonoClassField*
69 mono_field_from_token (MonoImage *image, uint32_t token, MonoClass **retklass, MonoGenericContext *context);
71 MONO_RT_EXTERNAL_ONLY
72 MONO_API MonoClass *
73 mono_bounded_array_class_get (MonoClass *element_class, uint32_t rank, mono_bool bounded);
75 MONO_RT_EXTERNAL_ONLY
76 MONO_API MonoClass *
77 mono_array_class_get (MonoClass *element_class, uint32_t rank);
79 MONO_RT_EXTERNAL_ONLY
80 MONO_API MonoClass *
81 mono_ptr_class_get (MonoType *type);
83 MONO_API MonoClassField *
84 mono_class_get_field (MonoClass *klass, uint32_t field_token);
86 MONO_API MonoClassField *
87 mono_class_get_field_from_name (MonoClass *klass, const char *name);
89 MONO_API uint32_t
90 mono_class_get_field_token (MonoClassField *field);
92 MONO_API uint32_t
93 mono_class_get_event_token (MonoEvent *event);
95 MONO_API MonoProperty*
96 mono_class_get_property_from_name (MonoClass *klass, const char *name);
98 MONO_API uint32_t
99 mono_class_get_property_token (MonoProperty *prop);
101 MONO_API int32_t
102 mono_array_element_size (MonoClass *ac);
104 MONO_API int32_t
105 mono_class_instance_size (MonoClass *klass);
107 MONO_API int32_t
108 mono_class_array_element_size (MonoClass *klass);
110 MONO_API int32_t
111 mono_class_data_size (MonoClass *klass);
113 MONO_API int32_t
114 mono_class_value_size (MonoClass *klass, uint32_t *align);
116 MONO_API int32_t
117 mono_class_min_align (MonoClass *klass);
119 MONO_API MonoClass *
120 mono_class_from_mono_type (MonoType *type);
122 MONO_API mono_bool
123 mono_class_is_subclass_of (MonoClass *klass, MonoClass *klassc,
124 mono_bool check_interfaces);
126 MONO_API mono_bool
127 mono_class_is_assignable_from (MonoClass *klass, MonoClass *oklass);
129 MONO_RT_EXTERNAL_ONLY
130 MONO_API void*
131 mono_ldtoken (MonoImage *image, uint32_t token, MonoClass **retclass, MonoGenericContext *context);
133 MONO_API char*
134 mono_type_get_name (MonoType *type);
136 MONO_API MonoType*
137 mono_type_get_underlying_type (MonoType *type);
139 /* MonoClass accessors */
140 MONO_API MonoImage*
141 mono_class_get_image (MonoClass *klass);
143 MONO_API MonoClass*
144 mono_class_get_element_class (MonoClass *klass);
146 MONO_API mono_bool
147 mono_class_is_valuetype (MonoClass *klass);
149 MONO_API mono_bool
150 mono_class_is_enum (MonoClass *klass);
152 MONO_API MonoType*
153 mono_class_enum_basetype (MonoClass *klass);
155 MONO_API MonoClass*
156 mono_class_get_parent (MonoClass *klass);
158 MONO_API MonoClass*
159 mono_class_get_nesting_type (MonoClass *klass);
161 MONO_API int
162 mono_class_get_rank (MonoClass *klass);
164 MONO_API uint32_t
165 mono_class_get_flags (MonoClass *klass);
167 MONO_API const char*
168 mono_class_get_name (MonoClass *klass);
170 MONO_API const char*
171 mono_class_get_namespace (MonoClass *klass);
173 MONO_API MonoType*
174 mono_class_get_type (MonoClass *klass);
176 MONO_API uint32_t
177 mono_class_get_type_token (MonoClass *klass);
179 MONO_API MonoType*
180 mono_class_get_byref_type (MonoClass *klass);
182 MONO_API int
183 mono_class_num_fields (MonoClass *klass);
185 MONO_API int
186 mono_class_num_methods (MonoClass *klass);
188 MONO_API int
189 mono_class_num_properties (MonoClass *klass);
191 MONO_API int
192 mono_class_num_events (MonoClass *klass);
194 MONO_API MonoClassField*
195 mono_class_get_fields (MonoClass* klass, void **iter);
197 MONO_API MonoMethod*
198 mono_class_get_methods (MonoClass* klass, void **iter);
200 MONO_API MonoProperty*
201 mono_class_get_properties (MonoClass* klass, void **iter);
203 MONO_API MonoEvent*
204 mono_class_get_events (MonoClass* klass, void **iter);
206 MONO_API MonoClass*
207 mono_class_get_interfaces (MonoClass* klass, void **iter);
209 MONO_API MonoClass*
210 mono_class_get_nested_types (MonoClass* klass, void **iter);
212 MONO_API mono_bool
213 mono_class_is_delegate (MonoClass* klass);
215 MONO_API mono_bool
216 mono_class_implements_interface (MonoClass* klass, MonoClass* iface);
218 /* MonoClassField accessors */
219 MONO_API const char*
220 mono_field_get_name (MonoClassField *field);
222 MONO_API MonoType*
223 mono_field_get_type (MonoClassField *field);
225 MONO_API MonoClass*
226 mono_field_get_parent (MonoClassField *field);
228 MONO_API uint32_t
229 mono_field_get_flags (MonoClassField *field);
231 MONO_API uint32_t
232 mono_field_get_offset (MonoClassField *field);
234 MONO_API const char *
235 mono_field_get_data (MonoClassField *field);
237 /* MonoProperty acessors */
238 MONO_API const char*
239 mono_property_get_name (MonoProperty *prop);
241 MONO_API MonoMethod*
242 mono_property_get_set_method (MonoProperty *prop);
244 MONO_API MonoMethod*
245 mono_property_get_get_method (MonoProperty *prop);
247 MONO_API MonoClass*
248 mono_property_get_parent (MonoProperty *prop);
250 MONO_API uint32_t
251 mono_property_get_flags (MonoProperty *prop);
253 /* MonoEvent accessors */
254 MONO_API const char*
255 mono_event_get_name (MonoEvent *event);
257 MONO_API MonoMethod*
258 mono_event_get_add_method (MonoEvent *event);
260 MONO_API MonoMethod*
261 mono_event_get_remove_method (MonoEvent *event);
263 MONO_API MonoMethod*
264 mono_event_get_remove_method (MonoEvent *event);
266 MONO_API MonoMethod*
267 mono_event_get_raise_method (MonoEvent *event);
269 MONO_API MonoClass*
270 mono_event_get_parent (MonoEvent *event);
272 MONO_API uint32_t
273 mono_event_get_flags (MonoEvent *event);
275 MONO_API MonoMethod *
276 mono_class_get_method_from_name (MonoClass *klass, const char *name, int param_count);
278 MONO_API char *
279 mono_class_name_from_token (MonoImage *image, uint32_t type_token);
281 MONO_API mono_bool
282 mono_method_can_access_field (MonoMethod *method, MonoClassField *field);
284 MONO_API mono_bool
285 mono_method_can_access_method (MonoMethod *method, MonoMethod *called);
287 MONO_END_DECLS
289 #endif /* _MONO_CLI_CLASS_H_ */