+struct MonoVTable {
+ MonoClass *klass;
+ /*
+ * According to comments in gc_gcj.h, this should be the second word in
+ * the vtable.
+ */
+ void *gc_descr;
+ MonoDomain *domain; /* each object/vtable belongs to exactly one domain */
+ guint max_interface_id;
+ gpointer *interface_offsets;
+ gpointer data; /* to store static class data */
+ guint remote : 1; /* class is remotely activated */
+ /* do not add any fields after vtable, the structure is dynamically extended */
+ gpointer vtable [MONO_ZERO_LEN_ARRAY];
+};
+
+typedef struct {
+ gulong new_object_count;
+ gulong initialized_class_count;
+ gulong used_class_count;
+ gulong class_vtable_size;
+ gulong class_static_data_size;
+} MonoStats;
+
+extern MonoStats mono_stats;
+
+typedef gpointer (*MonoTrampoline) (MonoMethod *method);
+
+typedef gpointer (*MonoLookupDynamicToken) (MonoImage *image, guint32 token);
+
+MonoClass *
+mono_class_get (MonoImage *image, guint32 type_token);
+
+void
+mono_class_init (MonoClass *klass);
+
+void
+mono_class_layout_fields (MonoClass *klass);
+
+void
+mono_class_setup_vtable (MonoClass *klass, MonoMethod **overrides, int onum);
+
+MonoVTable *
+mono_class_vtable (MonoDomain *domain, MonoClass *klass);
+
+MonoVTable *
+mono_class_proxy_vtable (MonoDomain *domain, MonoClass *klass);
+
+void
+mono_class_setup_mono_type (MonoClass *klass);
+
+void
+mono_class_setup_parent (MonoClass *klass, MonoClass *parent);
+
+void
+mono_class_setup_supertypes (MonoClass *klass);
+
+MonoClass *
+mono_class_from_name (MonoImage *image, const char* name_space, const char *name);
+
+MonoClass *
+mono_class_from_name_case (MonoImage *image, const char* name_space, const char *name);
+
+MonoClass *
+mono_class_from_typeref (MonoImage *image, guint32 type_token);
+
+MonoClassField*
+mono_field_from_memberref (MonoImage *image, guint32 token, MonoClass **retklass);
+
+MonoClassField*
+mono_field_from_token (MonoImage *image, guint32 token, MonoClass **retklass);
+
+MonoMethod**
+mono_class_get_overrides (MonoImage *image, guint32 type_token, gint32 *num_overrides);
+
+MonoClass *
+mono_array_class_get (MonoType *element_type, guint32 rank);
+
+MonoClass *
+mono_ptr_class_get (MonoType *type);
+
+MonoClassField *
+mono_class_get_field (MonoClass *klass, guint32 field_token);
+
+MonoClassField *
+mono_class_get_field_from_name (MonoClass *klass, const char *name);
+
+MonoProperty*
+mono_class_get_property_from_name (MonoClass *klass, const char *name);
+
+gint32
+mono_array_element_size (MonoClass *ac);
+
+gint32
+mono_class_instance_size (MonoClass *klass);
+
+gint32
+mono_class_array_element_size (MonoClass *klass);
+
+gint32
+mono_class_data_size (MonoClass *klass);
+
+gint32
+mono_class_value_size (MonoClass *klass, guint32 *align);
+
+gint32
+mono_class_native_size (MonoClass *klass, guint32 *align);
+
+MonoMarshalType *
+mono_marshal_load_type_info (MonoClass* klass);
+
+gint32
+mono_class_min_align (MonoClass *klass);
+
+MonoClass *
+mono_class_from_mono_type (MonoType *type);
+
+gboolean
+mono_class_is_subclass_of (MonoClass *klass, MonoClass *klassc,
+ gboolean check_interfaces);
+
+gpointer
+mono_ldtoken (MonoImage *image, guint32 token, MonoClass **retclass);
+
+void
+mono_install_trampoline (MonoTrampoline func);
+
+void
+mono_install_remoting_trampoline (MonoTrampoline func);
+
+gpointer
+mono_lookup_dynamic_token (MonoImage *image, guint32 token);
+
+void
+mono_install_lookup_dynamic_token (MonoLookupDynamicToken func);