/** * \file * This file contains the various definitions for constants * found on the metadata tables * * Author: * Miguel de Icaza (miguel@ximian.com) * Paolo Molaro (lupus@ximian.com) * * (C) 2001 Ximian, Inc. * (C) 2006 Novell, Inc. * * From the ECMA documentation */ #ifndef _MONO_METADATA_ATTRDEFS_H_ #define _MONO_METADATA_ATTRDEFS_H_ /* * 23.1.1 Values for AssemblyHashAlgorithm */ enum { MONO_ASSEMBLY_HASH_NONE, MONO_ASSEMBLY_HASH_MD5 = 0x8003, MONO_ASSEMBLY_HASH_SHA1 = 0x8004 }; /* * 23.1.2 AssemblyRefs */ enum { MONO_ASSEMBLYREF_FULL_PUBLIC_KEY = 0x0001, MONO_ASSEMBLYREF_RETARGETABLE = 0x0100, MONO_ASSEMBLYREF_JIT_TRACKING = 0x8000, MONO_ASSEMBLYREF_NO_JIT_OPT = 0x4000 }; /* * 23.1.4 Flags for Event.EventAttributes */ enum { MONO_EVENT_SPECIALNAME = 0x0200, MONO_EVENT_RTSPECIALNAME = 0x0400 }; /* * Field Attributes (23.1.5). */ enum { MONO_FIELD_ATTR_FIELD_ACCESS_MASK = 0x0007, MONO_FIELD_ATTR_COMPILER_CONTROLLED = 0x0000, MONO_FIELD_ATTR_PRIVATE = 0x0001, MONO_FIELD_ATTR_FAM_AND_ASSEM = 0x0002, MONO_FIELD_ATTR_ASSEMBLY = 0x0003, MONO_FIELD_ATTR_FAMILY = 0x0004, MONO_FIELD_ATTR_FAM_OR_ASSEM = 0x0005, MONO_FIELD_ATTR_PUBLIC = 0x0006, MONO_FIELD_ATTR_STATIC = 0x0010, MONO_FIELD_ATTR_INIT_ONLY = 0x0020, MONO_FIELD_ATTR_LITERAL = 0x0040, MONO_FIELD_ATTR_NOT_SERIALIZED = 0x0080, MONO_FIELD_ATTR_SPECIAL_NAME = 0x0200, MONO_FIELD_ATTR_PINVOKE_IMPL = 0x2000, /* For runtime use only */ MONO_FIELD_ATTR_RESERVED_MASK = 0x9500, MONO_FIELD_ATTR_RT_SPECIAL_NAME = 0x0400, MONO_FIELD_ATTR_HAS_MARSHAL = 0x1000, MONO_FIELD_ATTR_HAS_DEFAULT = 0x8000, MONO_FIELD_ATTR_HAS_RVA = 0x0100 }; /* * 23.1.6 Flags for FileAttributes */ enum { MONO_FILE_HAS_METADATA = 0, MONO_FILE_HAS_NO_METADATA = 1 }; /* * 23.1.7 Flags for generic parameters */ enum { MONO_GEN_PARAM_VARIANCE_MASK = 0x0003, MONO_GEN_PARAM_NON_VARIANT = 0x0000, MONO_GEN_PARAM_VARIANT = 0x0001, MONO_GEN_PARAM_COVARIANT = 0x0002, MONO_GEN_PARAM_CONSTRAINT_MASK = 0x001c, MONO_GEN_PARAM_CONSTRAINT_CLASS = 0x0004, MONO_GEN_PARAM_CONSTRAINT_VTYPE = 0x0008, MONO_GEN_PARAM_CONSTRAINT_DCTOR = 0x0010 }; /* * 23.1.8 Flags for ImplMap [PInvokeAttributes] */ enum { MONO_PINVOKE_NO_MANGLE = 0x0001, MONO_PINVOKE_CHAR_SET_MASK = 0x0006, MONO_PINVOKE_CHAR_SET_NOT_SPEC = 0x0000, MONO_PINVOKE_CHAR_SET_ANSI = 0x0002, MONO_PINVOKE_CHAR_SET_UNICODE = 0x0004, MONO_PINVOKE_CHAR_SET_AUTO = 0x0006, MONO_PINVOKE_BEST_FIT_ENABLED = 0x0010, MONO_PINVOKE_BEST_FIT_DISABLED = 0x0020, MONO_PINVOKE_BEST_FIT_MASK = 0x0030, MONO_PINVOKE_SUPPORTS_LAST_ERROR = 0x0040, MONO_PINVOKE_CALL_CONV_MASK = 0x0700, MONO_PINVOKE_CALL_CONV_WINAPI = 0x0100, MONO_PINVOKE_CALL_CONV_CDECL = 0x0200, MONO_PINVOKE_CALL_CONV_STDCALL = 0x0300, MONO_PINVOKE_CALL_CONV_THISCALL = 0x0400, MONO_PINVOKE_CALL_CONV_FASTCALL = 0x0500, MONO_PINVOKE_THROW_ON_UNMAPPABLE_ENABLED = 0x1000, MONO_PINVOKE_THROW_ON_UNMAPPABLE_DISABLED = 0x2000, MONO_PINVOKE_THROW_ON_UNMAPPABLE_MASK = 0x3000, MONO_PINVOKE_CALL_CONV_GENERIC = 0x0010, MONO_PINVOKE_CALL_CONV_GENERICINST = 0x000a }; /* * 23.1.9 Flags for ManifestResource */ enum { MONO_MANIFEST_RESOURCE_VISIBILITY_MASK = 0x00000007, MONO_MANIFEST_RESOURCE_PUBLIC = 0x00000001, MONO_MANIFEST_RESOURCE_PRIVATE = 0x00000002 }; /* * Method Attributes (23.1.10) */ enum { MONO_METHOD_ATTR_ACCESS_MASK = 0x0007, MONO_METHOD_ATTR_COMPILER_CONTROLLED = 0x0000, MONO_METHOD_ATTR_PRIVATE = 0x0001, MONO_METHOD_ATTR_FAM_AND_ASSEM = 0x0002, MONO_METHOD_ATTR_ASSEM = 0x0003, MONO_METHOD_ATTR_FAMILY = 0x0004, MONO_METHOD_ATTR_FAM_OR_ASSEM = 0x0005, MONO_METHOD_ATTR_PUBLIC = 0x0006, MONO_METHOD_ATTR_STATIC = 0x0010, MONO_METHOD_ATTR_FINAL = 0x0020, MONO_METHOD_ATTR_VIRTUAL = 0x0040, MONO_METHOD_ATTR_HIDE_BY_SIG = 0x0080, MONO_METHOD_ATTR_VTABLE_LAYOUT_MASK = 0x0100, MONO_METHOD_ATTR_REUSE_SLOT = 0x0000, MONO_METHOD_ATTR_NEW_SLOT = 0x0100, MONO_METHOD_ATTR_STRICT = 0x0200, MONO_METHOD_ATTR_ABSTRACT = 0x0400, MONO_METHOD_ATTR_SPECIAL_NAME = 0x0800, MONO_METHOD_ATTR_PINVOKE_IMPL = 0x2000, MONO_METHOD_ATTR_UNMANAGED_EXPORT = 0x0008, /* * For runtime use only */ MONO_METHOD_ATTR_RESERVED_MASK = 0xd000, MONO_METHOD_ATTR_RT_SPECIAL_NAME = 0x1000, MONO_METHOD_ATTR_HAS_SECURITY = 0x4000, MONO_METHOD_ATTR_REQUIRE_SEC_OBJECT = 0x8000 }; /* * Method Impl Attributes (23.1.11) */ enum { MONO_METHOD_IMPL_ATTR_CODE_TYPE_MASK = 0x0003, MONO_METHOD_IMPL_ATTR_IL = 0x0000, MONO_METHOD_IMPL_ATTR_NATIVE = 0x0001, MONO_METHOD_IMPL_ATTR_OPTIL = 0x0002, MONO_METHOD_IMPL_ATTR_RUNTIME = 0x0003, MONO_METHOD_IMPL_ATTR_MANAGED_MASK = 0x0004, MONO_METHOD_IMPL_ATTR_UNMANAGED = 0x0004, MONO_METHOD_IMPL_ATTR_MANAGED = 0x0000, MONO_METHOD_IMPL_ATTR_FORWARD_REF = 0x0010, MONO_METHOD_IMPL_ATTR_PRESERVE_SIG = 0x0080, MONO_METHOD_IMPL_ATTR_INTERNAL_CALL = 0x1000, MONO_METHOD_IMPL_ATTR_SYNCHRONIZED = 0x0020, MONO_METHOD_IMPL_ATTR_NOINLINING = 0x0008, MONO_METHOD_IMPL_ATTR_NOOPTIMIZATION = 0x0040, MONO_METHOD_IMPL_ATTR_MAX_METHOD_IMPL_VAL = 0xffff }; /* * Method Semantics ([MethodSemanticAttributes]) 23.1.12, */ enum { MONO_METHOD_SEMANTIC_SETTER = 0x0001, MONO_METHOD_SEMANTIC_GETTER = 0x0002, MONO_METHOD_SEMANTIC_OTHER = 0x0004, MONO_METHOD_SEMANTIC_ADD_ON = 0x0008, MONO_METHOD_SEMANTIC_REMOVE_ON = 0x0010, MONO_METHOD_SEMANTIC_FIRE = 0x0020 }; /* * Flags for Params (23.1.13) */ enum { MONO_PARAM_ATTR_IN = 0x0001, MONO_PARAM_ATTR_OUT = 0x0002, MONO_PARAM_ATTR_OPTIONAL = 0x0010, MONO_PARAM_ATTR_RESERVED_MASK = 0xf000, MONO_PARAM_ATTR_HAS_DEFAULT = 0x1000, MONO_PARAM_ATTR_HAS_MARSHAL = 0x2000, MONO_PARAM_ATTR_UNUSED = 0xcfe0 }; /* * 23.1.14 PropertyAttributes */ enum { MONO_PROPERTY_ATTR_SPECIAL_NAME = 0x0200, MONO_PROPERTY_ATTR_RESERVED_MASK = 0xf400, MONO_PROPERTY_ATTR_RT_SPECIAL_NAME = 0x0400, MONO_PROPERTY_ATTR_HAS_DEFAULT = 0x1000, MONO_PROPERTY_ATTR_UNUSED = 0xe9ff }; /* * Type Attributes (23.1.15). */ enum { MONO_TYPE_ATTR_VISIBILITY_MASK = 0x00000007, MONO_TYPE_ATTR_NOT_PUBLIC = 0x00000000, MONO_TYPE_ATTR_PUBLIC = 0x00000001, MONO_TYPE_ATTR_NESTED_PUBLIC = 0x00000002, MONO_TYPE_ATTR_NESTED_PRIVATE = 0x00000003, MONO_TYPE_ATTR_NESTED_FAMILY = 0x00000004, MONO_TYPE_ATTR_NESTED_ASSEMBLY = 0x00000005, MONO_TYPE_ATTR_NESTED_FAM_AND_ASSEM = 0x00000006, MONO_TYPE_ATTR_NESTED_FAM_OR_ASSEM = 0x00000007, MONO_TYPE_ATTR_LAYOUT_MASK = 0x00000018, MONO_TYPE_ATTR_AUTO_LAYOUT = 0x00000000, MONO_TYPE_ATTR_SEQUENTIAL_LAYOUT = 0x00000008, MONO_TYPE_ATTR_EXPLICIT_LAYOUT = 0x00000010, MONO_TYPE_ATTR_CLASS_SEMANTIC_MASK = 0x00000020, MONO_TYPE_ATTR_CLASS = 0x00000000, MONO_TYPE_ATTR_INTERFACE = 0x00000020, MONO_TYPE_ATTR_ABSTRACT = 0x00000080, MONO_TYPE_ATTR_SEALED = 0x00000100, MONO_TYPE_ATTR_SPECIAL_NAME = 0x00000400, MONO_TYPE_ATTR_IMPORT = 0x00001000, MONO_TYPE_ATTR_SERIALIZABLE = 0x00002000, MONO_TYPE_ATTR_STRING_FORMAT_MASK = 0x00030000, MONO_TYPE_ATTR_ANSI_CLASS = 0x00000000, MONO_TYPE_ATTR_UNICODE_CLASS = 0x00010000, MONO_TYPE_ATTR_AUTO_CLASS = 0x00020000, MONO_TYPE_ATTR_CUSTOM_CLASS = 0x00030000, MONO_TYPE_ATTR_CUSTOM_MASK = 0x00c00000, MONO_TYPE_ATTR_BEFORE_FIELD_INIT = 0x00100000, MONO_TYPE_ATTR_FORWARDER = 0x00200000, MONO_TYPE_ATTR_RESERVED_MASK = 0x00040800, MONO_TYPE_ATTR_RT_SPECIAL_NAME = 0x00000800, MONO_TYPE_ATTR_HAS_SECURITY = 0x00040000 }; #endif