#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;
/* 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;
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,
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);
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__ */