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