1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
use super::*;

flags!(FieldAttributes, u16);
impl FieldAttributes {
    pub const PRIVATE: Self = Self(0x1);
    pub const PUBLIC: Self = Self(0x6);
    pub const LITERAL: Self = Self(0x40);
    pub const STATIC: Self = Self(0x10);
    pub const SPECIAL: Self = Self(0x200);
    pub const RUNTIME_SPECIAL: Self = Self(0x400);
    pub const HAS_DEFAULT: Self = Self(0x8000);
}

flags!(MethodAttributes, u16);
impl MethodAttributes {
    pub const ABSTRACT: Self = Self(0x400);
    pub const HIDE_BY_SIG: Self = Self(0x80);
    pub const NEW_SLOT: Self = Self(0x100);
    pub const PUBLIC: Self = Self(0x6);
    pub const SPECIAL: Self = Self(0x800);
    pub const VIRTUAL: Self = Self(0x40);
}

flags!(MethodImplAttributes, usize);
impl MethodImplAttributes {
    pub const PRESERVE_SIG: Self = Self(0x80);
}

flags!(ParamAttributes, u16);
impl ParamAttributes {
    pub const INPUT: Self = Self(0x1);
    pub const OUTPUT: Self = Self(0x2);
    pub const OPTIONAL: Self = Self(0x10);
}

flags!(PInvokeAttributes, usize);
impl PInvokeAttributes {
    pub const LAST_ERROR: Self = Self(0x40);
    pub const CONV_PLATFORM: Self = Self(0x100);
    pub const CONV_CDECL: Self = Self(0x200);
    pub const CONV_STDCALL: Self = Self(0x300);
    pub const CONV_THISCALL: Self = Self(0x400);
    pub const CONV_FASTCALL: Self = Self(0x500);
}

flags!(TypeAttributes, u32);
impl TypeAttributes {
    pub const PUBLIC: Self = Self(0x1);
    pub const EXPLICIT_LAYOUT: Self = Self(0x10);
    pub const ABSTRACT: Self = Self(0x80);
    pub const SEALED: Self = Self(0x100);
    pub const WINRT: Self = Self(0x4000);
    pub const INTERFACE: Self = Self(0x20);
    pub const SEQUENTIAL_LAYOUT: Self = Self(0x8);
}