} MonoDynamicStream;
typedef struct {
+ guint32 alloc_rows;
guint32 rows;
guint32 row_size; /* calculated later with column_sizes */
guint32 columns;
MonoObject object;
MonoMethod *method;
MonoString *name;
+ MonoReflectionType *reftype;
};
-typedef struct {
+struct _MonoDelegate {
MonoObject object;
MonoObject *target_type;
MonoObject *target;
gpointer method_ptr;
gpointer delegate_trampoline;
MonoReflectionMethod *method_info;
-} MonoDelegate;
+};
typedef struct _MonoMulticastDelegate MonoMulticastDelegate;
struct _MonoMulticastDelegate {
guint32 attrs;
} MonoPropertyInfo;
+typedef struct {
+ MonoReflectionType *parent;
+ MonoString *name;
+ MonoReflectionMethod *add_method;
+ MonoReflectionMethod *remove_method;
+ MonoReflectionMethod *raise_method;
+ guint32 attrs;
+} MonoEventInfo;
+
typedef struct {
MonoReflectionType *parent;
MonoReflectionType *type;
typedef struct {
MonoString *name;
MonoString *name_space;
- MonoReflectionType *parent;
MonoReflectionType *etype;
+ MonoReflectionType *nested_in;
MonoReflectionAssembly *assembly;
- guint32 attrs;
guint32 rank;
- MonoBoolean isbyref, ispointer, isprimitive;
+ MonoBoolean isprimitive;
} MonoTypeInfo;
typedef struct {
MonoString *name;
} MonoReflectionLocalBuilder;
+typedef struct {
+ MonoObject object;
+ gint32 count;
+ gint32 type;
+ gint32 eltype;
+} MonoReflectionMarshal;
+
typedef struct {
MonoObject object;
MonoObject* methodb;
MonoString *name;
MonoArray *cattrs;
+ MonoReflectionMarshal *marshal_info;
guint32 attrs;
int position;
guint32 table_idx;
typedef struct {
MonoObject object;
+ MonoMethod *mhandle;
MonoReflectionILGen *ilgen;
MonoArray *parameters;
guint32 attrs;
MonoBoolean init_locals;
} MonoReflectionMethodBuilder;
+typedef struct {
+ MonoObject object;
+ MonoMethod *mhandle;
+ MonoReflectionType *parent;
+ MonoReflectionType *ret;
+ MonoArray *parameters;
+ MonoString *name;
+ guint32 table_idx;
+ guint32 call_conv;
+} MonoReflectionArrayMethod;
+
+enum {
+ MONO_SECTION_TEXT,
+ MONO_SECTION_RSRC,
+ MONO_SECTION_RELOC,
+ MONO_SECTION_MAX
+};
+
typedef struct {
MonoAssembly assembly;
guint32 meta_size;
guint32 text_rva;
guint32 metadata_rva;
+ guint32 image_base;
+ guint32 cli_header_offset;
+ guint32 iat_offset;
+ guint32 idt_offset;
+ guint32 ilt_offset;
+ guint32 imp_names_offset;
+ struct {
+ guint32 rva;
+ guint32 size;
+ guint32 offset;
+ guint32 attrs;
+ } sections [MONO_SECTION_MAX];
GHashTable *typeref;
GHashTable *handleref;
+ MonoGHashTable *tokens;
+ MonoGHashTable *blob_cache;
+ GList *array_methods;
MonoGHashTable *token_fixups;
+ MonoGHashTable *method_to_table_idx;
+ MonoGHashTable *field_to_table_idx;
+ gboolean run;
+ gboolean save;
+ char *strong_name;
+ guint32 strong_name_size;
+ MonoDynamicStream pefile;
MonoDynamicStream sheap;
MonoDynamicStream code; /* used to store method headers and bytecode */
+ MonoDynamicStream resources; /* managed embedded resources */
MonoDynamicStream us;
MonoDynamicStream blob;
MonoDynamicStream tstream;
MonoDynamicTable tables [64];
} MonoDynamicAssembly;
+typedef struct {
+ MonoArray *data;
+ MonoString *name;
+ MonoString *filename;
+ guint32 attrs;
+} MonoReflectionResource;
+
typedef struct {
MonoReflectionAssembly assembly;
MonoDynamicAssembly *dynamic_assembly;
MonoString *name;
MonoString *dir;
MonoArray *cattrs;
+ MonoArray *resources;
+ MonoString *keyfile;
+ MonoString *version;
+ MonoString *culture;
+ guint32 algid;
+ guint32 flags;
+ guint32 pekind;
+ MonoBoolean delay_sign;
+ guint32 access;
} MonoReflectionAssemblyBuilder;
typedef struct {
MonoReflectionType *typeb;
MonoArray *rva_data;
MonoArray *cattrs;
+ MonoReflectionMarshal *marshal_info;
+ MonoClassField *handle;
} MonoReflectionFieldBuilder;
typedef struct {
typedef struct {
MonoObject obj;
MonoImage *image;
- MonoObject *assembly;
+ MonoReflectionAssembly *assembly;
MonoString *fqname;
MonoString *name;
MonoString *scopename;
MonoArray *guid;
guint32 table_idx;
MonoReflectionAssemblyBuilder *assemblyb;
+ MonoArray *global_methods;
+ MonoArray *global_fields;
} MonoReflectionModuleBuilder;
typedef struct {
MonoString *name;
MonoString *nspace;
MonoReflectionType *parent;
+ MonoReflectionType *nesting_type;
MonoArray *interfaces;
MonoArray *methods;
MonoArray *ctors;
MonoString *codebase;
gint32 major, minor, build, revision;
/* FIXME: add missing stuff */
+/* CultureInfo cultureinfo;
+ AssemblyNameFlags flags;
+ AssemblyHashAlgorithm hashalg;
+ StrongNameKeyPair keypair;
+ AssemblyVersionCompatibility versioncompat;*/
+ MonoObject *cultureInfo;
+ MonoObject *flags;
+ MonoObject *hashalg;
+ MonoObject *keypair;
+ MonoArray *publicKey;
+ MonoArray *keyToken;
+ MonoObject *versioncompat;
} MonoReflectionAssemblyName;
typedef struct {
MonoArray *data;
} MonoReflectionCustomAttr;
-typedef struct {
- char *nest_name_space;
- char *nest_name;
+typedef struct MonoTypeNameParse MonoTypeNameParse;
+
+struct MonoTypeNameParse {
char *name_space;
char *name;
- char *assembly;
+ MonoAssemblyName assembly;
GList *modifiers; /* 0 -> byref, -1 -> pointer, > 0 -> array rank */
-} MonoTypeNameParse;
+ GList *nested;
+};
typedef struct {
MonoObject object;
MonoReflectionModuleBuilder *module;
MonoArray *arguments;
guint32 type;
+ MonoReflectionType *return_type;
+ guint32 call_conv;
+ guint32 unmanaged_call_conv;
} MonoReflectionSigHelper;
+typedef struct {
+ MonoMethod *ctor;
+ guint32 data_size;
+ const guchar* data;
+} MonoCustomAttrEntry;
+
+typedef struct {
+ int num_attrs;
+ MonoImage *image;
+ MonoCustomAttrEntry attrs [MONO_ZERO_LEN_ARRAY];
+} MonoCustomAttrInfo;
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);
-int mono_image_get_header (MonoReflectionAssemblyBuilder *assembly, char *buffer, int maxsize);
+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);
+void mono_image_module_basic_init (MonoReflectionModuleBuilder *module);
MonoReflectionAssembly* mono_assembly_get_object (MonoDomain *domain, MonoAssembly *assembly);
+MonoReflectionModule* mono_module_get_object (MonoDomain *domain, MonoImage *image);
MonoReflectionType* mono_type_get_object (MonoDomain *domain, MonoType *type);
-MonoReflectionMethod* mono_method_get_object (MonoDomain *domain, MonoMethod *method);
+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);
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);
+MonoArray* mono_custom_attrs_construct (MonoCustomAttrInfo *cinfo);
+MonoCustomAttrInfo* mono_custom_attrs_from_index (MonoImage *image, guint32 idx);
+MonoCustomAttrInfo* mono_custom_attrs_from_method (MonoMethod *method);
+MonoCustomAttrInfo* mono_custom_attrs_from_class (MonoClass *klass);
+MonoCustomAttrInfo* mono_custom_attrs_from_assembly (MonoAssembly *assembly);
+MonoCustomAttrInfo* mono_custom_attrs_from_property (MonoClass *klass, MonoProperty *property);
+MonoCustomAttrInfo* mono_custom_attrs_from_event (MonoClass *klass, MonoEvent *event);
+MonoCustomAttrInfo* mono_custom_attrs_from_field (MonoClass *klass, MonoClassField *field);
+MonoCustomAttrInfo* mono_custom_attrs_from_param (MonoMethod *method, guint32 param);
+
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);
+gpointer
+mono_reflection_lookup_dynamic_token (MonoImage *image, guint32 token);
+
+void
+mono_image_build_metadata (MonoReflectionAssemblyBuilder *assemblyb);
+
#endif /* __METADATA_REFLECTION_H__ */