1use crate::enums::{
2 AccessFlag, Attribute, ElementValue, StackMapFrameType, TargetInfo, VerificationType,
3};
4
5#[derive(Debug, Clone)]
6pub struct MemberData {
7 pub access_flags: Vec<AccessFlag>,
8 pub name: u16,
9 pub descriptor: u16,
10 pub attributes: Vec<Attribute>,
11}
12
13#[derive(Debug, Clone)]
14pub struct Field(pub MemberData);
15
16#[derive(Debug, Clone)]
17pub struct Method(pub MemberData);
18
19#[derive(Debug, Clone)]
20pub struct LineNumber {
21 pub start_pc: u16,
22 pub line_number: u16,
23}
24
25#[derive(Debug, Clone)]
26pub struct Annotation {
27 pub type_index: u16,
28 pub element_value_pairs: Vec<ElementValuePair>,
29}
30
31#[derive(Debug, Clone)]
32pub struct ElementValuePair {
33 pub element_name_index: u16,
34 pub value: ElementValue,
35}
36
37#[derive(Debug, Clone)]
38pub struct LookupSwitchPair {
39 pub value: u32,
40 pub target: u32,
41}
42
43#[derive(Debug, Clone)]
44pub struct BootstrapMethod {
45 pub bootstrap_method_ref: u16,
46 pub bootstrap_arguments: Vec<u16>,
47}
48
49#[derive(Debug, Clone)]
50pub struct InnerClass {
51 pub inner_class_info_index: u16,
52 pub outer_class_info_index: u16,
53 pub inner_name_index: u16,
54 pub inner_class_access_flags: Vec<AccessFlag>,
55}
56
57#[derive(Debug, Clone)]
58pub struct StackMapFrame {
59 pub frame_type: StackMapFrameType,
60 pub offset_delta: u16,
61 pub locals: Vec<VerificationType>,
62 pub stack: Vec<VerificationType>,
63}
64
65#[derive(Debug, Clone)]
66pub struct LocalVariable {
67 pub start_pc: u16,
68 pub length: u16,
69 pub name_index: u16,
70 pub descriptor_index: u16,
71 pub index: u16,
72}
73
74#[derive(Debug, Clone)]
75pub struct LocalVariableType {
76 pub start_pc: u16,
77 pub length: u16,
78 pub name_index: u16,
79 pub signature_index: u16,
80 pub index: u16,
81}
82
83#[derive(Debug, Clone)]
84pub struct MethodParameter {
85 pub name_index: u16,
86 pub access_flags: Vec<AccessFlag>,
87}
88
89#[derive(Debug, Clone)]
90pub struct ModuleRequires {
91 pub requires_index: u16,
92 pub requires_flags: Vec<AccessFlag>,
93 pub requires_version_index: u16,
94}
95
96#[derive(Debug, Clone)]
97pub struct ModuleExports {
98 pub exports_index: u16,
99 pub exports_flags: Vec<AccessFlag>,
100 pub exports_to_index: Vec<u16>,
101}
102
103#[derive(Debug, Clone)]
104pub struct ModuleOpens {
105 pub opens_index: u16,
106 pub opens_flags: Vec<AccessFlag>,
107 pub opens_to_index: Vec<u16>,
108}
109
110#[derive(Debug, Clone)]
111pub struct ModuleProvides {
112 pub provides_index: u16,
113 pub provides_with_index: Vec<u16>,
114}
115
116#[derive(Debug, Clone)]
117pub struct RecordComponent {
118 pub name_index: u16,
119 pub descriptor_index: u16,
120 pub attributes: Vec<Attribute>,
121}
122
123#[derive(Debug, Clone)]
124pub struct LocalVar {
125 pub start_pc: u16,
126 pub length: u16,
127 pub index: u16,
128}
129
130#[derive(Debug, Clone)]
131pub struct TypePath {
132 pub type_path_kind: u8,
133 pub type_argument_index: u8,
134}
135
136#[derive(Debug, Clone)]
137pub struct TypeAnnotation {
138 pub target_info: TargetInfo,
139 pub target_path: Vec<TypePath>,
140 pub annotation: Annotation,
141}
142
143#[derive(Debug, Clone)]
144pub struct ExceptionTableEntry {
145 pub start_pc: u16,
146 pub end_pc: u16,
147 pub handler_pc: u16,
148 pub catch_type: u16,
149}