X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=mono%2Fmetadata%2Fmetadata.h;h=1c611f430070d99e83fc233d765162e3dcbffa6f;hb=d455c0d23462d34352e4accd9953b1f487351c7f;hp=4b880c7bab42bb5aa733d70d0358604471524b29;hpb=6352c16dd5306ccb8bedc742bf99505688695dc6;p=mono.git diff --git a/mono/metadata/metadata.h b/mono/metadata/metadata.h index 4b880c7bab4..1c611f43007 100644 --- a/mono/metadata/metadata.h +++ b/mono/metadata/metadata.h @@ -10,27 +10,14 @@ MONO_BEGIN_DECLS -/* - * When embedding, you have to define MONO_ZERO_LEN_ARRAY before including any - * other Mono header file if you use a different compiler from the one used to - * build Mono. - */ -#ifndef MONO_ZERO_LEN_ARRAY -#ifdef __GNUC__ -#define MONO_ZERO_LEN_ARRAY 0 -#else -#define MONO_ZERO_LEN_ARRAY 1 -#endif -#endif - #define MONO_TYPE_ISSTRUCT(t) mono_type_is_struct (t) #define MONO_TYPE_IS_VOID(t) mono_type_is_void (t) #define MONO_TYPE_IS_POINTER(t) mono_type_is_pointer (t) #define MONO_TYPE_IS_REFERENCE(t) mono_type_is_reference (t) -#define MONO_CLASS_IS_INTERFACE(c) ((c->flags & TYPE_ATTRIBUTE_INTERFACE) || (c->byval_arg.type == MONO_TYPE_VAR) || (c->byval_arg.type == MONO_TYPE_MVAR)) +#define MONO_CLASS_IS_INTERFACE(c) ((mono_class_get_flags (c) & TYPE_ATTRIBUTE_INTERFACE) || (c->byval_arg.type == MONO_TYPE_VAR) || (c->byval_arg.type == MONO_TYPE_MVAR)) -#define MONO_CLASS_IS_IMPORT(c) ((c->flags & TYPE_ATTRIBUTE_IMPORT)) +#define MONO_CLASS_IS_IMPORT(c) ((mono_class_get_flags (c) & TYPE_ATTRIBUTE_IMPORT)) typedef struct _MonoClass MonoClass; typedef struct _MonoDomain MonoDomain; @@ -89,6 +76,9 @@ typedef enum { MONO_NATIVE_LPSTRUCT = 0x2b, MONO_NATIVE_CUSTOM = 0x2c, MONO_NATIVE_ERROR = 0x2d, + // TODO: MONO_NATIVE_IINSPECTABLE = 0x2e + // TODO: MONO_NATIVE_HSTRING = 0x2f + MONO_NATIVE_UTF8STR = 0x30, MONO_NATIVE_MAX = 0x50 /* no info */ } MonoMarshalNative; @@ -175,9 +165,16 @@ typedef enum { MONO_MARSHAL_FREE_ARRAY, MONO_MARSHAL_CONV_BSTR_STR, MONO_MARSHAL_CONV_SAFEHANDLE, - MONO_MARSHAL_CONV_HANDLEREF + MONO_MARSHAL_CONV_HANDLEREF, + MONO_MARSHAL_CONV_STR_UTF8STR, + MONO_MARSHAL_CONV_SB_UTF8STR, + MONO_MARSHAL_CONV_UTF8STR_STR, + MONO_MARSHAL_CONV_UTF8STR_SB, + MONO_MARSHAL_CONV_FIXED_BUFFER } MonoMarshalConv; +#define MONO_MARSHAL_CONV_INVALID ((MonoMarshalConv)-1) + typedef struct { MonoMarshalNative native; union { @@ -190,6 +187,7 @@ typedef struct { struct { char *custom_name; char *cookie; + MonoImage *image; } custom_data; struct { MonoMarshalVariant elem_type; @@ -294,7 +292,6 @@ typedef struct { typedef struct _MonoType MonoType; typedef struct _MonoGenericInst MonoGenericInst; typedef struct _MonoGenericClass MonoGenericClass; -typedef struct _MonoDynamicGenericClass MonoDynamicGenericClass; typedef struct _MonoGenericContext MonoGenericContext; typedef struct _MonoGenericContainer MonoGenericContainer; typedef struct _MonoGenericParam MonoGenericParam; @@ -311,7 +308,10 @@ typedef struct { struct _MonoArrayType { MonoClass *eklass; + // Number of dimensions of the array uint8_t rank; + + // Arrays recording known upper and lower index bounds for each dimension uint8_t numsizes; uint8_t numlobounds; int *sizes; @@ -357,6 +357,7 @@ MONO_API mono_bool mono_type_is_struct (MonoType *type); MONO_API mono_bool mono_type_is_void (MonoType *type); MONO_API mono_bool mono_type_is_pointer (MonoType *type); MONO_API mono_bool mono_type_is_reference (MonoType *type); +mono_bool mono_type_is_generic_parameter (MonoType *type); MONO_API MonoType* mono_signature_get_return_type (MonoMethodSignature *sig); @@ -389,21 +390,25 @@ MONO_API int mono_metadata_parse_custom_mod (MonoImage *m, MonoCustomMod *dest, const char *ptr, const char **rptr); +MONO_RT_EXTERNAL_ONLY MONO_API MonoArrayType *mono_metadata_parse_array (MonoImage *m, const char *ptr, const char **rptr); MONO_API void mono_metadata_free_array (MonoArrayType *array); +MONO_RT_EXTERNAL_ONLY MONO_API MonoType *mono_metadata_parse_type (MonoImage *m, MonoParseTypeMode mode, short opt_attrs, const char *ptr, const char **rptr); +MONO_RT_EXTERNAL_ONLY MONO_API MonoType *mono_metadata_parse_param (MonoImage *m, const char *ptr, const char **rptr); MONO_API MonoType *mono_metadata_parse_ret_type (MonoImage *m, const char *ptr, const char **rptr); +MONO_RT_EXTERNAL_ONLY MONO_API MonoType *mono_metadata_parse_field_type (MonoImage *m, short field_flags, const char *ptr, @@ -428,6 +433,7 @@ MONO_API MonoMethodSignature *mono_metadata_signature_alloc (MonoImage *image, MONO_API MonoMethodSignature *mono_metadata_signature_dup (MonoMethodSignature *sig); +MONO_RT_EXTERNAL_ONLY MONO_API MonoMethodSignature *mono_metadata_parse_signature (MonoImage *image, uint32_t token); @@ -442,6 +448,7 @@ MONO_API mono_bool mono_metadata_signature_equal (MonoMethodSignature * MONO_API unsigned int mono_signature_hash (MonoMethodSignature *sig); +MONO_RT_EXTERNAL_ONLY MONO_API MonoMethodHeader *mono_metadata_parse_mh (MonoImage *m, const char *ptr); MONO_API void mono_metadata_free_mh (MonoMethodHeader *mh); @@ -484,6 +491,8 @@ MONO_API uint32_t mono_metadata_token_from_dor (uint32_t dor_index); MONO_API char *mono_guid_to_string (const uint8_t *guid); +MONO_API char *mono_guid_to_string_minimal (const uint8_t *guid); + MONO_API uint32_t mono_metadata_declsec_from_index (MonoImage *meta, uint32_t idx); MONO_API uint32_t mono_metadata_translate_token_index (MonoImage *image, int table, uint32_t idx);