* dis/main.c (monodis_assembly_load_hook): New.
[mono.git] / mono / metadata / metadata-internals.h
index daa6bd931e3cfd97df9e5c89246aca5cb3b4423c..c537f8c95687fb3602718186b4a99c5154627deb 100644 (file)
@@ -5,10 +5,11 @@
 #include "mono/metadata/image.h"
 #include "mono/metadata/blob.h"
 #include "mono/metadata/mempool.h"
+#include "mono/metadata/domain-internals.h"
 #include "mono/utils/mono-hash.h"
 
 struct _MonoAssembly {
-       int   ref_count;
+       int ref_count; /* use atomic operations only */
        char *basedir;
        MonoAssemblyName aname;
        GModule *aot_module;
@@ -58,10 +59,14 @@ struct _MonoImage {
        /* Whenever this is a dynamically emitted module */
        guint8 dynamic;
 
+       /* Whenever this is a reflection only image */
+       guint8 ref_only;
+
        char *name;
        const char *assembly_name;
        const char *module_name;
        const char *version;
+       gint16 md_version_major, md_version_minor;
        char *guid;
        void *image_info;
        MonoMemPool         *mempool;
@@ -233,17 +238,34 @@ struct _MonoDynamicImage {
        MonoDynamicTable tables [MONO_TABLE_NUM];
 };
 
+/* Contains information about assembly binding */
+typedef struct _MonoAssemblyBindingInfo {
+       char *name;
+       char *culture;
+       guchar public_key_token [MONO_PUBLIC_KEY_TOKEN_LENGTH];
+       int major;
+       int minor;
+       AssemblyVersionSet old_version_bottom;
+       AssemblyVersionSet old_version_top;
+       AssemblyVersionSet new_version;
+       guint has_old_version_bottom : 1;
+       guint has_old_version_top : 1;
+       guint has_new_version : 1;
+       guint is_valid : 1;
+} MonoAssemblyBindingInfo;
+
 /* for use with allocated memory blocks (assumes alignment is to 8 bytes) */
 guint mono_aligned_addr_hash (gconstpointer ptr);
 
 const char *   mono_meta_table_name              (int table);
 void           mono_metadata_compute_table_bases (MonoImage *meta);
 
-MonoClass**
+gboolean
 mono_metadata_interfaces_from_typedef_full  (MonoImage             *image,
-                                            guint32                table_index,
-                                            guint                 *count,
-                                            MonoGenericContext    *context);
+                                                                                        guint32                table_index,
+                                                                                        MonoClass           ***interfaces,
+                                                                                        guint                 *count,
+                                                                                        MonoGenericContext    *context);
 
 MonoArrayType *
 mono_metadata_parse_array_full              (MonoImage             *image,
@@ -266,12 +288,12 @@ mono_type_create_from_typespec_full         (MonoImage             *image,
 
 MonoMethodSignature *
 mono_metadata_parse_signature_full          (MonoImage             *image,
-                                            MonoGenericContext    *generic_context,
+                                            MonoGenericContainer  *generic_container,
                                             guint32                token);
 
 MonoMethodSignature *
 mono_metadata_parse_method_signature_full   (MonoImage             *image,
-                                            MonoGenericContext    *generic_context,
+                                            MonoGenericContainer  *generic_container,
                                             int                     def,
                                             const char             *ptr,
                                             const char            **rptr);
@@ -308,5 +330,15 @@ mono_metadata_inflate_generic_inst          (MonoGenericInst       *ginst,
 void mono_dynamic_stream_reset (MonoDynamicStream* stream);
 void mono_assembly_addref      (MonoAssembly *assembly);
 
+void mono_config_parse_publisher_policy (const char *filename, MonoAssemblyBindingInfo *binding_info);
+
+gboolean
+mono_assembly_name_parse_full               (const char           *name,
+                                             MonoAssemblyName     *aname,
+                                             gboolean save_public_key,
+                                             gboolean *is_version_defined);
+
+guint32 mono_metadata_get_generic_param_row (MonoImage *image, guint32 token, guint32 *owner);
+
 #endif /* __MONO_METADATA_INTERNALS_H__ */