Skip to main content

rust_asm/
nodes.rs

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}