#include <mono/metadata/metadata.h>
#include <mono/metadata/image.h>
#include <mono/metadata/loader.h>
+#include <mono/utils/mono-error.h>
-G_BEGIN_DECLS
+MONO_BEGIN_DECLS
typedef struct MonoVTable MonoVTable;
typedef struct _MonoProperty MonoProperty;
typedef struct _MonoEvent MonoEvent;
-typedef struct {
- MonoVTable *default_vtable;
- MonoVTable *xdomain_vtable;
- MonoClass *proxy_class;
- char* proxy_class_name;
- guint interface_count;
- MonoClass *interfaces [MONO_ZERO_LEN_ARRAY];
-} MonoRemoteClass;
+MONO_API MonoClass *
+mono_class_get (MonoImage *image, uint32_t type_token);
-MonoClass *
-mono_class_get (MonoImage *image, guint32 type_token);
+MONO_API MonoClass *
+mono_class_get_full (MonoImage *image, uint32_t type_token, MonoGenericContext *context);
-MonoClass *
-mono_class_get_full (MonoImage *image, guint32 type_token, MonoGenericContext *context);
-
-gboolean
+MONO_API mono_bool
mono_class_init (MonoClass *klass);
-MonoVTable *
+MONO_API MonoVTable *
mono_class_vtable (MonoDomain *domain, MonoClass *klass);
-MonoClass *
+MONO_API MonoClass *
mono_class_from_name (MonoImage *image, const char* name_space, const char *name);
-MonoClass *
+MONO_API MonoClass *
mono_class_from_name_case (MonoImage *image, const char* name_space, const char *name);
-MonoMethod *
+MONO_API MonoMethod *
mono_class_get_method_from_name_flags (MonoClass *klass, const char *name, int param_count, int flags);
-MonoClass *
-mono_class_from_typeref (MonoImage *image, guint32 type_token);
+MONO_API MonoClass *
+mono_class_from_typeref (MonoImage *image, uint32_t type_token);
+
+MONO_API MonoClass *
+mono_class_from_typeref_checked (MonoImage *image, uint32_t type_token, MonoError *error);
-MonoClass *
-mono_class_from_generic_parameter (MonoGenericParam *param, MonoImage *image, gboolean is_mvar);
+MONO_API MonoClass *
+mono_class_from_generic_parameter (MonoGenericParam *param, MonoImage *image, mono_bool is_mvar);
-MonoType*
-mono_class_inflate_generic_type (MonoType *type, MonoGenericContext *context);
+MONO_API MonoType*
+mono_class_inflate_generic_type (MonoType *type, MonoGenericContext *context) /* MONO_DEPRECATED */;
-MonoMethod*
+MONO_API MonoMethod*
mono_class_inflate_generic_method (MonoMethod *method, MonoGenericContext *context);
-MonoMethod *
+MONO_API MonoMethod *
mono_get_inflated_method (MonoMethod *method);
-MonoClassField*
-mono_field_from_token (MonoImage *image, guint32 token, MonoClass **retklass, MonoGenericContext *context);
+MONO_API MonoClassField*
+mono_field_from_token (MonoImage *image, uint32_t token, MonoClass **retklass, MonoGenericContext *context);
-MonoClass *
-mono_bounded_array_class_get (MonoClass *element_class, guint32 rank, gboolean bounded);
+MONO_API MonoClass *
+mono_bounded_array_class_get (MonoClass *element_class, uint32_t rank, mono_bool bounded);
-MonoClass *
-mono_array_class_get (MonoClass *element_class, guint32 rank);
+MONO_API MonoClass *
+mono_array_class_get (MonoClass *element_class, uint32_t rank);
-MonoClass *
+MONO_API MonoClass *
mono_ptr_class_get (MonoType *type);
-MonoClassField *
-mono_class_get_field (MonoClass *klass, guint32 field_token);
+MONO_API MonoClassField *
+mono_class_get_field (MonoClass *klass, uint32_t field_token);
-MonoClassField *
+MONO_API MonoClassField *
mono_class_get_field_from_name (MonoClass *klass, const char *name);
-guint32
+MONO_API uint32_t
mono_class_get_field_token (MonoClassField *field);
-guint32
+MONO_API uint32_t
mono_class_get_event_token (MonoEvent *event);
-MonoProperty*
+MONO_API MonoProperty*
mono_class_get_property_from_name (MonoClass *klass, const char *name);
-guint32
+MONO_API uint32_t
mono_class_get_property_token (MonoProperty *prop);
-gint32
+MONO_API int32_t
mono_array_element_size (MonoClass *ac);
-gint32
+MONO_API int32_t
mono_class_instance_size (MonoClass *klass);
-gint32
+MONO_API int32_t
mono_class_array_element_size (MonoClass *klass);
-gint32
+MONO_API int32_t
mono_class_data_size (MonoClass *klass);
-gint32
-mono_class_value_size (MonoClass *klass, guint32 *align);
+MONO_API int32_t
+mono_class_value_size (MonoClass *klass, uint32_t *align);
-gint32
+MONO_API int32_t
mono_class_min_align (MonoClass *klass);
-MonoClass *
+MONO_API MonoClass *
mono_class_from_mono_type (MonoType *type);
-gboolean
+MONO_API mono_bool
mono_class_is_subclass_of (MonoClass *klass, MonoClass *klassc,
- gboolean check_interfaces);
+ mono_bool check_interfaces);
-gboolean
+MONO_API mono_bool
mono_class_is_assignable_from (MonoClass *klass, MonoClass *oklass);
-gpointer
-mono_ldtoken (MonoImage *image, guint32 token, MonoClass **retclass, MonoGenericContext *context);
+MONO_API void*
+mono_ldtoken (MonoImage *image, uint32_t token, MonoClass **retclass, MonoGenericContext *context);
-char*
+MONO_API char*
mono_type_get_name (MonoType *type);
-MonoType*
+MONO_API MonoType*
mono_type_get_underlying_type (MonoType *type);
/* MonoClass accessors */
-MonoImage*
+MONO_API MonoImage*
mono_class_get_image (MonoClass *klass);
-MonoClass*
+MONO_API MonoClass*
mono_class_get_element_class (MonoClass *klass);
-gboolean
+MONO_API mono_bool
mono_class_is_valuetype (MonoClass *klass);
-gboolean
+MONO_API mono_bool
mono_class_is_enum (MonoClass *klass);
-MonoType*
+MONO_API MonoType*
mono_class_enum_basetype (MonoClass *klass);
-MonoClass*
+MONO_API MonoClass*
mono_class_get_parent (MonoClass *klass);
-MonoClass*
+MONO_API MonoClass*
mono_class_get_nesting_type (MonoClass *klass);
-int
+MONO_API int
mono_class_get_rank (MonoClass *klass);
-guint32
+MONO_API uint32_t
mono_class_get_flags (MonoClass *klass);
-const char*
+MONO_API const char*
mono_class_get_name (MonoClass *klass);
-const char*
+MONO_API const char*
mono_class_get_namespace (MonoClass *klass);
-MonoType*
+MONO_API MonoType*
mono_class_get_type (MonoClass *klass);
-guint32
+MONO_API uint32_t
mono_class_get_type_token (MonoClass *klass);
-MonoType*
+MONO_API MonoType*
mono_class_get_byref_type (MonoClass *klass);
-int
+MONO_API int
mono_class_num_fields (MonoClass *klass);
-int
+MONO_API int
mono_class_num_methods (MonoClass *klass);
-int
+MONO_API int
mono_class_num_properties (MonoClass *klass);
-int
+MONO_API int
mono_class_num_events (MonoClass *klass);
-MonoClassField*
-mono_class_get_fields (MonoClass* klass, gpointer *iter);
+MONO_API MonoClassField*
+mono_class_get_fields (MonoClass* klass, void **iter);
+
+MONO_API MonoMethod*
+mono_class_get_methods (MonoClass* klass, void **iter);
-MonoMethod*
-mono_class_get_methods (MonoClass* klass, gpointer *iter);
+MONO_API MonoProperty*
+mono_class_get_properties (MonoClass* klass, void **iter);
-MonoProperty*
-mono_class_get_properties (MonoClass* klass, gpointer *iter);
+MONO_API MonoEvent*
+mono_class_get_events (MonoClass* klass, void **iter);
-MonoEvent*
-mono_class_get_events (MonoClass* klass, gpointer *iter);
+MONO_API MonoClass*
+mono_class_get_interfaces (MonoClass* klass, void **iter);
-MonoClass*
-mono_class_get_interfaces (MonoClass* klass, gpointer *iter);
+MONO_API MonoClass*
+mono_class_get_nested_types (MonoClass* klass, void **iter);
-MonoClass*
-mono_class_get_nested_types (MonoClass* klass, gpointer *iter);
+MONO_API mono_bool
+mono_class_is_delegate (MonoClass* klass);
+
+MONO_API mono_bool
+mono_class_implements_interface (MonoClass* klass, MonoClass* iface);
/* MonoClassField accessors */
-const char*
+MONO_API const char*
mono_field_get_name (MonoClassField *field);
-MonoType*
+MONO_API MonoType*
mono_field_get_type (MonoClassField *field);
-MonoClass*
+MONO_API MonoClass*
mono_field_get_parent (MonoClassField *field);
-guint32
+MONO_API uint32_t
mono_field_get_flags (MonoClassField *field);
-const char *
+MONO_API uint32_t
+mono_field_get_offset (MonoClassField *field);
+
+MONO_API const char *
mono_field_get_data (MonoClassField *field);
/* MonoProperty acessors */
-const char*
+MONO_API const char*
mono_property_get_name (MonoProperty *prop);
-MonoMethod*
+MONO_API MonoMethod*
mono_property_get_set_method (MonoProperty *prop);
-MonoMethod*
+MONO_API MonoMethod*
mono_property_get_get_method (MonoProperty *prop);
-MonoClass*
+MONO_API MonoClass*
mono_property_get_parent (MonoProperty *prop);
-guint32
+MONO_API uint32_t
mono_property_get_flags (MonoProperty *prop);
/* MonoEvent accessors */
-const char*
+MONO_API const char*
mono_event_get_name (MonoEvent *event);
-MonoMethod*
+MONO_API MonoMethod*
mono_event_get_add_method (MonoEvent *event);
-MonoMethod*
+MONO_API MonoMethod*
mono_event_get_remove_method (MonoEvent *event);
-MonoMethod*
+MONO_API MonoMethod*
mono_event_get_remove_method (MonoEvent *event);
-MonoMethod*
+MONO_API MonoMethod*
mono_event_get_raise_method (MonoEvent *event);
-MonoClass*
+MONO_API MonoClass*
mono_event_get_parent (MonoEvent *event);
-guint32
+MONO_API uint32_t
mono_event_get_flags (MonoEvent *event);
-MonoMethod *
+MONO_API MonoMethod *
mono_class_get_method_from_name (MonoClass *klass, const char *name, int param_count);
-char *
-mono_class_name_from_token (MonoImage *image, guint32 type_token);
+MONO_API char *
+mono_class_name_from_token (MonoImage *image, uint32_t type_token);
-gboolean
+MONO_API mono_bool
mono_method_can_access_field (MonoMethod *method, MonoClassField *field);
-gboolean
+MONO_API mono_bool
mono_method_can_access_method (MonoMethod *method, MonoMethod *called);
-G_END_DECLS
+MONO_END_DECLS
#endif /* _MONO_CLI_CLASS_H_ */