cfsp/node/
access_flag.rs

1use bitflags::bitflags;
2
3use serde::{Deserialize, Serialize};
4
5bitflags! {
6    /// Access flag for [node::class::Class].
7    ///
8    /// See [Table 4.1-B](https://docs.oracle.com/javase/specs/jvms/se20/jvms20.pdf#page=85).
9    #[derive(Debug, Copy, Clone, Eq, PartialEq, Hash, Serialize, Deserialize)]
10    pub struct ClassAccessFlag: u16 {
11        const Public = 0x0001;
12        const Final = 0x0010;
13        const Super = 0x0020;
14        const Interface = 0x0200;
15        const Abstract = 0x0400;
16        const Synthetic = 0x1000;
17        const Annotation = 0x2000;
18        const Enum = 0x4000;
19        const Module = 0x8000;
20    }
21
22    /// Access flag for [node::field::Field].
23    ///
24    /// See [Table 4.5-A](https://docs.oracle.com/javase/specs/jvms/se20/jvms20.pdf#page=110).
25    #[derive(Debug, Copy, Clone, Eq, PartialEq, Hash, Serialize, Deserialize)]
26    pub struct FieldAccessFlag: u16 {
27        const Public = 0x0001;
28        const Private = 0x0002;
29        const Protected = 0x0004;
30        const Static = 0x0008;
31        const Final = 0x0010;
32        const Volatile = 0x0040;
33        const Transient = 0x0080;
34        const Synthetic = 0x1000;
35        const Enum = 0x4000;
36    }
37
38    /// Access flag for [node::method::Method].
39    ///
40    /// See [Table 4.6-A](https://docs.oracle.com/javase/specs/jvms/se20/jvms20.pdf#page=112).
41    #[derive(Debug, Copy, Clone, Eq, PartialEq, Hash, Serialize, Deserialize)]
42    pub struct MethodAccessFlag: u16 {
43        const Public = 0x0001;
44        const Private = 0x0002;
45        const Protected = 0x0004;
46        const Static = 0x0008;
47        const Final = 0x0010;
48        const Synchronized = 0x0020;
49        const Bridge = 0x0040;
50        const Varargs = 0x0080;
51        const Native = 0x0100;
52        const Abstract = 0x0400;
53        const Strict = 0x0800;
54        const Synthetic = 0x1000;
55    }
56
57    /// Access flag for [node::attribute::InnerClass].
58    ///
59    /// See [Table 4.7.6-A](https://docs.oracle.com/javase/specs/jvms/se20/jvms20.pdf#page=138).
60    #[derive(Debug, Copy, Clone, Eq, PartialEq, Hash, Serialize, Deserialize)]
61    pub struct NestedClassAccessFlag: u16 {
62        const Public = 0x0001;
63        const Private = 0x0002;
64        const Protected = 0x0004;
65        const Static = 0x0008;
66        const Final = 0x0010;
67        const Interface = 0x0200;
68        const Abstract = 0x0400;
69        const Synthetic = 0x1000;
70        const Annotation = 0x2000;
71        const Enum = 0x4000;
72    }
73
74    /// Access flag for [node::attribute::MethodParameter].
75    ///
76    /// See [here](https://docs.oracle.com/javase/specs/jvms/se20/jvms20.pdf#page=183).
77    #[derive(Debug, Copy, Clone, Eq, PartialEq, Hash, Serialize, Deserialize)]
78    pub struct ParameterAccessFlag: u16 {
79        const Final = 0x0010;
80        const Synthetic = 0x1000;
81        const Mandated = 0x8000;
82    }
83
84    /// Access flag for [node::attribute::Module].
85    ///
86    /// See [here](https://docs.oracle.com/javase/specs/jvms/se20/jvms20.pdf#page=186).
87    #[derive(Debug, Copy, Clone, Eq, PartialEq, Hash, Serialize, Deserialize)]
88    pub struct ModuleAccessFlag: u16 {
89        const Open = 0x0020;
90        const Synthetic = 0x1000;
91        const Mandated = 0x8000;
92    }
93
94    /// Access flag for [node::attribute::module::Requires].
95    ///
96    /// See [here](https://docs.oracle.com/javase/specs/jvms/se20/jvms20.pdf#page=187).
97    #[derive(Debug, Copy, Clone, Eq, PartialEq, Hash, Serialize, Deserialize)]
98    pub struct RequiresAccessFlag: u16 {
99        const Transitive = 0x0020;
100        const StaticPhase = 0x0040;
101        const Synthetic = 0x1000;
102        const Mandated = 0x8000;
103    }
104
105    /// Access flag for [node::attribute::module::Exports].
106    ///
107    /// See [here](https://docs.oracle.com/javase/specs/jvms/se20/jvms20.pdf#page=188).
108    #[derive(Debug, Copy, Clone, Eq, PartialEq, Hash, Serialize, Deserialize)]
109    pub struct ExportsAccessFlag: u16 {
110        const Synthetic = 0x1000;
111        const Mandated = 0x8000;
112    }
113
114    /// Access flag for [node::attribute::module::Opens].
115    ///
116    /// See [here](https://docs.oracle.com/javase/specs/jvms/se20/jvms20.pdf#page=189).
117    #[derive(Debug, Copy, Clone, Eq, PartialEq, Hash, Serialize, Deserialize)]
118    pub struct OpensAccessFlag: u16 {
119        const Synthetic = 0x1000;
120        const Mandated = 0x8000;
121    }
122}