1 /** 2 * \file 3 * This file contains the various definitions for constants 4 * found on the metadata tables 5 * 6 * Author: 7 * Miguel de Icaza (miguel@ximian.com) 8 * 9 * (C) 2001 Ximian, Inc. 10 * 11 * From the ECMA documentation 12 */ 13 14 #ifndef _MONO_METADATA_TABLEDEFS_H_ 15 #define _MONO_METADATA_TABLEDEFS_H_ 16 17 /* 18 * 22.1.1 Values for AssemblyHashAlgorithm 19 */ 20 21 enum { 22 ASSEMBLY_HASH_NONE, 23 ASSEMBLY_HASH_MD5 = 0x8003, 24 ASSEMBLY_HASH_SHA1 = 0x8004 25 }; 26 27 /* 28 * 22.1.4 Flags for Event.EventAttributes 29 */ 30 31 enum { 32 EVENT_SPECIALNAME = 0x0200, 33 EVENT_RTSPECIALNAME = 0x0400 34 }; 35 36 /* 37 * 22.1.6 Flags for FileAttributes 38 */ 39 40 enum { 41 FILE_CONTAINS_METADATA = 0, 42 FILE_CONTAINS_NO_METADATA = 1 43 }; 44 45 /* keep in synch with System.Security.Permissions.SecurityAction enum 46 (except for the special non-CAS cases) */ 47 enum { 48 SECURITY_ACTION_DEMAND = 2, 49 SECURITY_ACTION_ASSERT = 3, 50 SECURITY_ACTION_DENY = 4, 51 SECURITY_ACTION_PERMITONLY = 5, 52 SECURITY_ACTION_LINKDEMAND = 6, 53 SECURITY_ACTION_INHERITDEMAND = 7, 54 SECURITY_ACTION_REQMIN = 8, 55 SECURITY_ACTION_REQOPT = 9, 56 SECURITY_ACTION_REQREFUSE = 10, 57 /* Special cases (non CAS permissions) */ 58 SECURITY_ACTION_NONCASDEMAND = 13, 59 SECURITY_ACTION_NONCASLINKDEMAND = 14, 60 SECURITY_ACTION_NONCASINHERITANCE = 15, 61 /* Fx 2.0 actions (for both CAS and non-CAS permissions) */ 62 SECURITY_ACTION_LINKDEMANDCHOICE = 16, 63 SECURITY_ACTION_INHERITDEMANDCHOICE = 17, 64 SECURITY_ACTION_DEMANDCHOICE = 18 65 }; 66 67 /* 68 * 69 * 22.1.8 Flags for ManifestResource 70 */ 71 #define MANIFEST_RESOURCE_VISIBILITY_MASK 0x00000007 72 #define MANIFEST_RESOURCE_PUBLIC 0x00000001 73 #define MANIFEST_RESOURCE_PRIVATE 0x00000002 74 75 /* 76 * Field Attributes (21.1.5). 77 */ 78 79 #define FIELD_ATTRIBUTE_FIELD_ACCESS_MASK 0x0007 80 #define FIELD_ATTRIBUTE_COMPILER_CONTROLLED 0x0000 81 #define FIELD_ATTRIBUTE_PRIVATE 0x0001 82 #define FIELD_ATTRIBUTE_FAM_AND_ASSEM 0x0002 83 #define FIELD_ATTRIBUTE_ASSEMBLY 0x0003 84 #define FIELD_ATTRIBUTE_FAMILY 0x0004 85 #define FIELD_ATTRIBUTE_FAM_OR_ASSEM 0x0005 86 #define FIELD_ATTRIBUTE_PUBLIC 0x0006 87 88 #define FIELD_ATTRIBUTE_STATIC 0x0010 89 #define FIELD_ATTRIBUTE_INIT_ONLY 0x0020 90 #define FIELD_ATTRIBUTE_LITERAL 0x0040 91 #define FIELD_ATTRIBUTE_NOT_SERIALIZED 0x0080 92 #define FIELD_ATTRIBUTE_SPECIAL_NAME 0x0200 93 #define FIELD_ATTRIBUTE_PINVOKE_IMPL 0x2000 94 95 /* For runtime use only */ 96 #define FIELD_ATTRIBUTE_RESERVED_MASK 0x9500 97 #define FIELD_ATTRIBUTE_RT_SPECIAL_NAME 0x0400 98 #define FIELD_ATTRIBUTE_HAS_FIELD_MARSHAL 0x1000 99 #define FIELD_ATTRIBUTE_HAS_DEFAULT 0x8000 100 #define FIELD_ATTRIBUTE_HAS_FIELD_RVA 0x0100 101 102 /* 103 * Type Attributes (21.1.13). 104 */ 105 #define TYPE_ATTRIBUTE_VISIBILITY_MASK 0x00000007 106 #define TYPE_ATTRIBUTE_NOT_PUBLIC 0x00000000 107 #define TYPE_ATTRIBUTE_PUBLIC 0x00000001 108 #define TYPE_ATTRIBUTE_NESTED_PUBLIC 0x00000002 109 #define TYPE_ATTRIBUTE_NESTED_PRIVATE 0x00000003 110 #define TYPE_ATTRIBUTE_NESTED_FAMILY 0x00000004 111 #define TYPE_ATTRIBUTE_NESTED_ASSEMBLY 0x00000005 112 #define TYPE_ATTRIBUTE_NESTED_FAM_AND_ASSEM 0x00000006 113 #define TYPE_ATTRIBUTE_NESTED_FAM_OR_ASSEM 0x00000007 114 115 #define TYPE_ATTRIBUTE_LAYOUT_MASK 0x00000018 116 #define TYPE_ATTRIBUTE_AUTO_LAYOUT 0x00000000 117 #define TYPE_ATTRIBUTE_SEQUENTIAL_LAYOUT 0x00000008 118 #define TYPE_ATTRIBUTE_EXPLICIT_LAYOUT 0x00000010 119 120 #define TYPE_ATTRIBUTE_CLASS_SEMANTIC_MASK 0x00000020 121 #define TYPE_ATTRIBUTE_CLASS 0x00000000 122 #define TYPE_ATTRIBUTE_INTERFACE 0x00000020 123 124 #define TYPE_ATTRIBUTE_ABSTRACT 0x00000080 125 #define TYPE_ATTRIBUTE_SEALED 0x00000100 126 #define TYPE_ATTRIBUTE_SPECIAL_NAME 0x00000400 127 128 #define TYPE_ATTRIBUTE_IMPORT 0x00001000 129 #define TYPE_ATTRIBUTE_SERIALIZABLE 0x00002000 130 #define TYPE_ATTRIBUTE_WINDOWS_RUNTIME 0x00004000 131 132 133 #define TYPE_ATTRIBUTE_STRING_FORMAT_MASK 0x00030000 134 #define TYPE_ATTRIBUTE_ANSI_CLASS 0x00000000 135 #define TYPE_ATTRIBUTE_UNICODE_CLASS 0x00010000 136 #define TYPE_ATTRIBUTE_AUTO_CLASS 0x00020000 137 138 #define TYPE_ATTRIBUTE_BEFORE_FIELD_INIT 0x00100000 139 #define TYPE_ATTRIBUTE_FORWARDER 0x00200000 140 141 #define TYPE_ATTRIBUTE_RESERVED_MASK 0x00040800 142 #define TYPE_ATTRIBUTE_RT_SPECIAL_NAME 0x00000800 143 #define TYPE_ATTRIBUTE_HAS_SECURITY 0x00040000 144 145 /* 146 * Method Attributes (22.1.9) 147 */ 148 149 #define METHOD_IMPL_ATTRIBUTE_CODE_TYPE_MASK 0x0003 150 #define METHOD_IMPL_ATTRIBUTE_IL 0x0000 151 #define METHOD_IMPL_ATTRIBUTE_NATIVE 0x0001 152 #define METHOD_IMPL_ATTRIBUTE_OPTIL 0x0002 153 #define METHOD_IMPL_ATTRIBUTE_RUNTIME 0x0003 154 155 #define METHOD_IMPL_ATTRIBUTE_MANAGED_MASK 0x0004 156 #define METHOD_IMPL_ATTRIBUTE_UNMANAGED 0x0004 157 #define METHOD_IMPL_ATTRIBUTE_MANAGED 0x0000 158 159 #define METHOD_IMPL_ATTRIBUTE_FORWARD_REF 0x0010 160 #define METHOD_IMPL_ATTRIBUTE_PRESERVE_SIG 0x0080 161 #define METHOD_IMPL_ATTRIBUTE_INTERNAL_CALL 0x1000 162 #define METHOD_IMPL_ATTRIBUTE_SYNCHRONIZED 0x0020 163 #define METHOD_IMPL_ATTRIBUTE_NOINLINING 0x0008 164 #define METHOD_IMPL_ATTRIBUTE_NOOPTIMIZATION 0x0040 165 #define METHOD_IMPL_ATTRIBUTE_MAX_METHOD_IMPL_VAL 0xffff 166 #define METHOD_IMPL_ATTRIBUTE_AGGRESSIVE_INLINING 0x0100 167 168 #define METHOD_ATTRIBUTE_MEMBER_ACCESS_MASK 0x0007 169 #define METHOD_ATTRIBUTE_COMPILER_CONTROLLED 0x0000 170 #define METHOD_ATTRIBUTE_PRIVATE 0x0001 171 #define METHOD_ATTRIBUTE_FAM_AND_ASSEM 0x0002 172 #define METHOD_ATTRIBUTE_ASSEM 0x0003 173 #define METHOD_ATTRIBUTE_FAMILY 0x0004 174 #define METHOD_ATTRIBUTE_FAM_OR_ASSEM 0x0005 175 #define METHOD_ATTRIBUTE_PUBLIC 0x0006 176 177 #define METHOD_ATTRIBUTE_STATIC 0x0010 178 #define METHOD_ATTRIBUTE_FINAL 0x0020 179 #define METHOD_ATTRIBUTE_VIRTUAL 0x0040 180 #define METHOD_ATTRIBUTE_HIDE_BY_SIG 0x0080 181 182 #define METHOD_ATTRIBUTE_VTABLE_LAYOUT_MASK 0x0100 183 #define METHOD_ATTRIBUTE_REUSE_SLOT 0x0000 184 #define METHOD_ATTRIBUTE_NEW_SLOT 0x0100 185 186 #define METHOD_ATTRIBUTE_STRICT 0x0200 187 #define METHOD_ATTRIBUTE_ABSTRACT 0x0400 188 #define METHOD_ATTRIBUTE_SPECIAL_NAME 0x0800 189 190 #define METHOD_ATTRIBUTE_PINVOKE_IMPL 0x2000 191 #define METHOD_ATTRIBUTE_UNMANAGED_EXPORT 0x0008 192 193 /* 194 * For runtime use only 195 */ 196 #define METHOD_ATTRIBUTE_RESERVED_MASK 0xd000 197 #define METHOD_ATTRIBUTE_RT_SPECIAL_NAME 0x1000 198 #define METHOD_ATTRIBUTE_HAS_SECURITY 0x4000 199 #define METHOD_ATTRIBUTE_REQUIRE_SEC_OBJECT 0x8000 200 201 202 /* 203 * Method Semantics ([MethodSemanticAttributes]) 22.1.10 204 */ 205 206 #define METHOD_SEMANTIC_SETTER 0x0001 207 #define METHOD_SEMANTIC_GETTER 0x0002 208 #define METHOD_SEMANTIC_OTHER 0x0004 209 #define METHOD_SEMANTIC_ADD_ON 0x0008 210 #define METHOD_SEMANTIC_REMOVE_ON 0x0010 211 #define METHOD_SEMANTIC_FIRE 0x0020 212 213 /* 214 * Flags for Params (22.1.12) 215 */ 216 #define PARAM_ATTRIBUTE_IN 0x0001 217 #define PARAM_ATTRIBUTE_OUT 0x0002 218 #define PARAM_ATTRIBUTE_OPTIONAL 0x0010 219 #define PARAM_ATTRIBUTE_RESERVED_MASK 0xf000 220 #define PARAM_ATTRIBUTE_HAS_DEFAULT 0x1000 221 #define PARAM_ATTRIBUTE_HAS_FIELD_MARSHAL 0x2000 222 #define PARAM_ATTRIBUTE_UNUSED 0xcfe0 223 224 /* 225 * 22.1.12 PropertyAttributes 226 */ 227 #define PROPERTY_ATTRIBUTE_SPECIAL_NAME 0x0200 228 #define PROPERTY_ATTRIBUTE_RESERVED_MASK 0xf400 229 #define PROPERTY_ATTRIBUTE_RT_SPECIAL_NAME 0x0400 230 #define PROPERTY_ATTRIBUTE_HAS_DEFAULT 0x1000 231 #define PROPERTY_ATTRIBUTE_UNUSED 0xe9ff 232 233 /* 234 * 22.1.7 Flags for ImplMap [PInvokeAttributes] 235 */ 236 #define PINVOKE_ATTRIBUTE_NO_MANGLE 0x0001 237 #define PINVOKE_ATTRIBUTE_CHAR_SET_MASK 0x0006 238 #define PINVOKE_ATTRIBUTE_CHAR_SET_NOT_SPEC 0x0000 239 #define PINVOKE_ATTRIBUTE_CHAR_SET_ANSI 0x0002 240 #define PINVOKE_ATTRIBUTE_CHAR_SET_UNICODE 0x0004 241 #define PINVOKE_ATTRIBUTE_CHAR_SET_AUTO 0x0006 242 #define PINVOKE_ATTRIBUTE_BEST_FIT_ENABLED 0x0010 243 #define PINVOKE_ATTRIBUTE_BEST_FIT_DISABLED 0x0020 244 #define PINVOKE_ATTRIBUTE_BEST_FIT_MASK 0x0030 245 #define PINVOKE_ATTRIBUTE_SUPPORTS_LAST_ERROR 0x0040 246 #define PINVOKE_ATTRIBUTE_CALL_CONV_MASK 0x0700 247 #define PINVOKE_ATTRIBUTE_CALL_CONV_WINAPI 0x0100 248 #define PINVOKE_ATTRIBUTE_CALL_CONV_CDECL 0x0200 249 #define PINVOKE_ATTRIBUTE_CALL_CONV_STDCALL 0x0300 250 #define PINVOKE_ATTRIBUTE_CALL_CONV_THISCALL 0x0400 251 #define PINVOKE_ATTRIBUTE_CALL_CONV_FASTCALL 0x0500 252 #define PINVOKE_ATTRIBUTE_THROW_ON_UNMAPPABLE_ENABLED 0x1000 253 #define PINVOKE_ATTRIBUTE_THROW_ON_UNMAPPABLE_DISABLED 0x2000 254 #define PINVOKE_ATTRIBUTE_THROW_ON_UNMAPPABLE_MASK 0x3000 255 #define PINVOKE_ATTRIBUTE_BEST_FIT_MASK 0x0030 256 #define PINVOKE_ATTRIBUTE_CALL_CONV_GENERIC 0x0010 257 #define PINVOKE_ATTRIBUTE_CALL_CONV_GENERICINST 0x000a 258 259 /** 260 * 21.5 AssemblyRefs 261 */ 262 #define ASSEMBLYREF_FULL_PUBLIC_KEY_FLAG 0x00000001 263 #define ASSEMBLYREF_RETARGETABLE_FLAG 0x00000100 264 #define ASSEMBLYREF_ENABLEJITCOMPILE_TRACKING_FLAG 0x00008000 265 #define ASSEMBLYREF_DISABLEJITCOMPILE_OPTIMIZER_FLAG 0x00004000 266 #endif 267