#ifndef _MONO_METADATA_TABLEDEFS_H_
#define _MONO_METADATA_TABLEDEFS_H_
+/*
+ * 22.1.1 Values for AssemblyHashAlgorithm
+ */
+
+enum {
+ ASSEMBLY_HASH_NONE,
+ ASSEMBLY_HASH_MD5 = 0x8003,
+ ASSEMBLY_HASH_SHA1 = 0x8004
+};
+
+/*
+ * 22.1.4 Flags for Event.EventAttributes
+ */
+
+enum {
+ EVENT_SPECIALNAME = 0x0200,
+ EVENT_RTSPECIALNAME = 0x0400
+};
+
+/*
+ * 22.1.6 Flags for FileAttributes
+ */
+
+enum {
+ FILE_CONTAINS_METADATA = 0,
+ FILE_CONTAINS_NO_METADATA = 1
+};
+
+/* keep in synch with System.Security.Permissions.SecurityAction enum
+ (except for the special non-CAS cases) */
+enum {
+ SECURITY_ACTION_DEMAND = 2,
+ SECURITY_ACTION_ASSERT = 3,
+ SECURITY_ACTION_DENY = 4,
+ SECURITY_ACTION_PERMITONLY = 5,
+ SECURITY_ACTION_LINKDEMAND = 6,
+ SECURITY_ACTION_INHERITDEMAND = 7,
+ SECURITY_ACTION_REQMIN = 8,
+ SECURITY_ACTION_REQOPT = 9,
+ SECURITY_ACTION_REQREFUSE = 10,
+ /* Special cases (non CAS permissions) */
+ SECURITY_ACTION_NONCASDEMAND = 13,
+ SECURITY_ACTION_NONCASLINKDEMAND = 14,
+ SECURITY_ACTION_NONCASINHERITANCE = 15,
+ /* Fx 2.0 actions (for both CAS and non-CAS permissions) */
+ SECURITY_ACTION_LINKDEMANDCHOICE = 16,
+ SECURITY_ACTION_INHERITDEMANDCHOICE = 17,
+ SECURITY_ACTION_DEMANDCHOICE = 18
+};
+
+/*
+ *
+ * 22.1.8 Flags for ManifestResource
+ */
+#define MANIFEST_RESOURCE_VISIBILITY_MASK 0x00000007
+#define MANIFEST_RESOURCE_PUBLIC 0x00000001
+#define MANIFEST_RESOURCE_PRIVATE 0x00000002
/*
* Field Attributes (21.1.5).
#define TYPE_ATTRIBUTE_AUTO_CLASS 0x00020000
#define TYPE_ATTRIBUTE_BEFORE_FIELD_INIT 0x00100000
+#define TYPE_ATTRIBUTE_FORWARDER 0x00200000
#define TYPE_ATTRIBUTE_RESERVED_MASK 0x00040800
#define TYPE_ATTRIBUTE_RT_SPECIAL_NAME 0x00000800
#define METHOD_ATTRIBUTE_REUSE_SLOT 0x0000
#define METHOD_ATTRIBUTE_NEW_SLOT 0x0100
+#define METHOD_ATTRIBUTE_STRICT 0x0200
#define METHOD_ATTRIBUTE_ABSTRACT 0x0400
#define METHOD_ATTRIBUTE_SPECIAL_NAME 0x0800
#define METHOD_SEMANTIC_FIRE 0x0020
/*
- * Flags for Params (22.1.11)
+ * Flags for Params (22.1.12)
*/
#define PARAM_ATTRIBUTE_IN 0x0001
#define PARAM_ATTRIBUTE_OUT 0x0002
-#define PARAM_ATTRIBUTE_OPTIONAL 0x0004
+#define PARAM_ATTRIBUTE_OPTIONAL 0x0010
#define PARAM_ATTRIBUTE_RESERVED_MASK 0xf000
#define PARAM_ATTRIBUTE_HAS_DEFAULT 0x1000
#define PARAM_ATTRIBUTE_HAS_FIELD_MARSHAL 0x2000
#define PINVOKE_ATTRIBUTE_CHAR_SET_ANSI 0x0002
#define PINVOKE_ATTRIBUTE_CHAR_SET_UNICODE 0x0004
#define PINVOKE_ATTRIBUTE_CHAR_SET_AUTO 0x0006
+#define PINVOKE_ATTRIBUTE_BEST_FIT_ENABLED 0x0010
+#define PINVOKE_ATTRIBUTE_BEST_FIT_DISABLED 0x0020
+#define PINVOKE_ATTRIBUTE_BEST_FIT_MASK 0x0030
#define PINVOKE_ATTRIBUTE_SUPPORTS_LAST_ERROR 0x0040
#define PINVOKE_ATTRIBUTE_CALL_CONV_MASK 0x0700
#define PINVOKE_ATTRIBUTE_CALL_CONV_WINAPI 0x0100
#define PINVOKE_ATTRIBUTE_CALL_CONV_STDCALL 0x0300
#define PINVOKE_ATTRIBUTE_CALL_CONV_THISCALL 0x0400
#define PINVOKE_ATTRIBUTE_CALL_CONV_FASTCALL 0x0500
+#define PINVOKE_ATTRIBUTE_THROW_ON_UNMAPPABLE_ENABLED 0x1000
+#define PINVOKE_ATTRIBUTE_THROW_ON_UNMAPPABLE_DISABLED 0x2000
+#define PINVOKE_ATTRIBUTE_THROW_ON_UNMAPPABLE_MASK 0x3000
+#define PINVOKE_ATTRIBUTE_BEST_FIT_MASK 0x0030
+#define PINVOKE_ATTRIBUTE_CALL_CONV_GENERIC 0x0010
+#define PINVOKE_ATTRIBUTE_CALL_CONV_GENERICINST 0x000a
+/**
+ * 21.5 AssemblyRefs
+ */
+#define ASSEMBLYREF_FULL_PUBLIC_KEY_FLAG 0x00000001
+#define ASSEMBLYREF_RETARGETABLE_FLAG 0x00000100
+#define ASSEMBLYREF_ENABLEJITCOMPILE_TRACKING_FLAG 0x00008000
+#define ASSEMBLYREF_DISABLEJITCOMPILE_OPTIMIZER_FLAG 0x00004000
#endif