+typedef struct {
+ MonoObject obj;
+ MonoString *name;
+ MonoString *codebase;
+ gint32 major, minor, build, revision;
+ /* FIXME: add missing stuff */
+} MonoReflectionAssemblyName;
+
+typedef struct {
+ MonoObject obj;
+ MonoString *name;
+ MonoReflectionType *type;
+ MonoReflectionTypeBuilder *typeb;
+ MonoArray *cattrs;
+ MonoReflectionMethodBuilder *add_method;
+ MonoReflectionMethodBuilder *remove_method;
+ MonoReflectionMethodBuilder *raise_method;
+ MonoArray *other_methods;
+ guint32 attrs;
+ guint32 table_idx;
+} MonoReflectionEventBuilder;
+
+typedef struct {
+ MonoObject obj;
+ MonoReflectionMethod *ctor;
+ MonoArray *data;
+} MonoReflectionCustomAttr;
+
+typedef struct MonoTypeNameParse MonoTypeNameParse;
+
+struct MonoTypeNameParse {
+ char *name_space;
+ char *name;
+ MonoAssemblyName assembly;
+ GList *modifiers; /* 0 -> byref, -1 -> pointer, > 0 -> array rank */
+ GList *nested;
+};
+
+typedef struct {
+ MonoObject object;
+ MonoReflectionModuleBuilder *module;
+ MonoArray *arguments;
+ guint32 type;
+} MonoReflectionSigHelper;
+
+
+
+char* mono_type_get_name (MonoType *type);
+int mono_reflection_parse_type (char *name, MonoTypeNameParse *info);
+MonoType* mono_reflection_get_type (MonoImage* image, MonoTypeNameParse *info, gboolean ignorecase);
+MonoType* mono_reflection_type_from_name (char *name, MonoImage *image);
+
+void mono_image_create_pefile (MonoReflectionAssemblyBuilder *assembly);
+void mono_image_basic_init (MonoReflectionAssemblyBuilder *assembly);
+guint32 mono_image_insert_string (MonoReflectionAssemblyBuilder *assembly, MonoString *str);
+guint32 mono_image_create_token (MonoDynamicAssembly *assembly, MonoObject *obj);
+
+MonoReflectionAssembly* mono_assembly_get_object (MonoDomain *domain, MonoAssembly *assembly);
+MonoReflectionType* mono_type_get_object (MonoDomain *domain, MonoType *type);
+MonoReflectionMethod* mono_method_get_object (MonoDomain *domain, MonoMethod *method, MonoClass *refclass);
+MonoReflectionField* mono_field_get_object (MonoDomain *domain, MonoClass *klass, MonoClassField *field);
+MonoReflectionProperty* mono_property_get_object (MonoDomain *domain, MonoClass *klass, MonoProperty *property);
+MonoReflectionEvent* mono_event_get_object (MonoDomain *domain, MonoClass *klass, MonoEvent *event);
+/* note: this one is slightly different: we keep the whole array of params in the cache */
+MonoReflectionParameter** mono_param_get_objects (MonoDomain *domain, MonoMethod *method);
+
+MonoArray* mono_reflection_get_custom_attrs (MonoObject *obj);
+MonoArray* mono_reflection_get_custom_attrs_blob (MonoObject *ctor, MonoArray *ctorArgs, MonoArray *properties, MonoArray *porpValues, MonoArray *fields, MonoArray* fieldValues);
+
+void mono_reflection_setup_internal_class (MonoReflectionTypeBuilder *tb);
+
+void mono_reflection_create_internal_class (MonoReflectionTypeBuilder *tb);
+
+MonoReflectionType* mono_reflection_create_runtime_class (MonoReflectionTypeBuilder *tb);
+
+MonoArray *mono_reflection_sighelper_get_signature_local (MonoReflectionSigHelper *sig);
+
+MonoArray *mono_reflection_sighelper_get_signature_field (MonoReflectionSigHelper *sig);