2003-04-24 Martin Baulig <martin@ximian.com>
[mono.git] / mono / metadata / reflection.h
index f15d66a28319e1137f06a319d133dff3b23b8df1..a15d3c7ac89e85fd09b0960030c1198ffcf892f5 100644 (file)
@@ -16,6 +16,7 @@ typedef struct {
 } MonoDynamicStream;
 
 typedef struct {
+       guint32 alloc_rows;
        guint32 rows;
        guint32 row_size; /*  calculated later with column_sizes */
        guint32 columns;
@@ -263,9 +264,14 @@ typedef struct {
        } sections [MONO_SECTION_MAX];
        GHashTable *typeref;
        GHashTable *handleref;
-       GHashTable *tokens;
+       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;
@@ -302,6 +308,7 @@ typedef struct {
        guint32 flags;
        guint32 pekind;
        MonoBoolean delay_sign;
+       guint32 access;
 } MonoReflectionAssemblyBuilder;
 
 typedef struct {
@@ -348,6 +355,8 @@ typedef struct {
        MonoArray *guid;
        guint32    table_idx;
        MonoReflectionAssemblyBuilder *assemblyb;
+       MonoArray *global_methods;
+       MonoArray *global_fields;
 } MonoReflectionModuleBuilder;
 
 typedef struct {
@@ -426,8 +435,22 @@ typedef struct {
        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);
@@ -439,6 +462,7 @@ 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);
@@ -453,6 +477,16 @@ MonoReflectionParameter** mono_param_get_objects  (MonoDomain *domain, MonoMetho
 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);
@@ -463,5 +497,11 @@ MonoArray  *mono_reflection_sighelper_get_signature_local (MonoReflectionSigHelp
 
 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__ */