1use crate::class_reader::{AttributeInfo, CodeAttribute, CpInfo};
2
3#[derive(Debug, Clone)]
4pub struct ClassNode {
5 pub minor_version: u16,
6 pub major_version: u16,
7 pub access_flags: u16,
8 pub constant_pool: Vec<CpInfo>,
9 pub this_class: u16,
10 pub super_class: u16,
11 pub name: String,
12 pub super_name: Option<String>,
13 pub source_file: Option<String>,
14 pub interfaces: Vec<String>,
15 pub interface_indices: Vec<u16>,
16 pub fields: Vec<FieldNode>,
17 pub methods: Vec<MethodNode>,
18 pub attributes: Vec<AttributeInfo>,
19}
20
21#[derive(Debug, Clone)]
22pub struct FieldNode {
23 pub access_flags: u16,
24 pub name_index: u16,
25 pub descriptor_index: u16,
26 pub name: String,
27 pub descriptor: String,
28 pub attributes: Vec<AttributeInfo>,
29}
30
31#[derive(Debug, Clone)]
32pub struct MethodNode {
33 pub access_flags: u16,
34 pub name_index: u16,
35 pub descriptor_index: u16,
36 pub name: String,
37 pub descriptor: String,
38 pub code: Option<CodeAttribute>,
39 pub attributes: Vec<AttributeInfo>,
40}