#![doc = include_str!("readme.md")]
#[derive(Clone, Debug, PartialEq, Eq)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub struct JasminRoot {
pub class: JasminClass,
}
#[derive(Clone, Debug, PartialEq, Eq)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub struct JasminClass {
pub modifiers: Vec<String>,
pub name: String,
pub version: Option<String>,
pub methods: Vec<JasminMethod>,
pub fields: Vec<JasminField>,
pub source_file: Option<String>,
}
#[derive(Clone, Debug, PartialEq, Eq)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub struct JasminMethod {
pub modifiers: Vec<String>,
pub name_and_descriptor: String,
pub stack_size: Option<u32>,
pub locals_count: Option<u32>,
pub instructions: Vec<JasminInstruction>,
}
#[derive(Clone, Debug, PartialEq, Eq)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub struct JasminField {
pub modifiers: Vec<String>,
pub name_and_descriptor: String,
}
#[derive(Clone, Debug, PartialEq, Eq)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub enum JasminInstruction {
Simple(String),
WithArgument {
instruction: String,
argument: String,
},
MethodCall {
instruction: String,
method_ref: String,
},
FieldAccess {
instruction: String,
field_ref: String,
},
}