pub struct JvmProgram {
pub name: String,
pub access_flags: JvmAccessFlags,
pub super_class: Option<String>,
pub interfaces: Vec<String>,
pub fields: Vec<JvmField>,
pub methods: Vec<JvmMethod>,
pub attributes: Vec<JvmAttribute>,
pub constant_pool: JvmConstantPool,
pub version: JvmVersion,
pub source_file: Option<String>,
pub inner_classes: Vec<JvmInnerClass>,
pub enclosing_method: Option<(String, Option<String>, Option<String>)>,
}Expand description
High-level representation of a JVM program
Fields§
§name: StringProgram name (class name)
access_flags: JvmAccessFlagsAccess flags
super_class: Option<String>Super class name
interfaces: Vec<String>List of implemented interfaces
fields: Vec<JvmField>List of fields
methods: Vec<JvmMethod>List of methods
attributes: Vec<JvmAttribute>List of attributes
constant_pool: JvmConstantPoolConstant pool (high-level representation)
version: JvmVersionVersion information
source_file: Option<String>Source file information
inner_classes: Vec<JvmInnerClass>List of inner classes
enclosing_method: Option<(String, Option<String>, Option<String>)>Enclosing method information
Implementations§
Source§impl JvmProgram
impl JvmProgram
Sourcepub fn set_version(&mut self, major: u16, minor: u16)
pub fn set_version(&mut self, major: u16, minor: u16)
Sets JVM version
Sourcepub fn set_super_class(&mut self, super_class: String)
pub fn set_super_class(&mut self, super_class: String)
Sets super class name
Sourcepub fn add_interface(&mut self, interface: String)
pub fn add_interface(&mut self, interface: String)
Adds an interface to the program
Sourcepub fn add_method(&mut self, method: JvmMethod)
pub fn add_method(&mut self, method: JvmMethod)
Adds a method to the program
Sourcepub fn add_attribute(&mut self, attribute: JvmAttribute)
pub fn add_attribute(&mut self, attribute: JvmAttribute)
Adds an attribute to the program
Sourcepub fn set_source_file(&mut self, filename: String)
pub fn set_source_file(&mut self, filename: String)
Sets source file name and adds SourceFile attribute
Sourcepub fn add_bootstrap_method(&mut self, method_ref: u16, arguments: Vec<u16>)
pub fn add_bootstrap_method(&mut self, method_ref: u16, arguments: Vec<u16>)
Adds a bootstrap method to the program
Sourcepub fn create_lambda_method(
&mut self,
name: String,
descriptor: String,
instructions: Vec<JvmInstruction>,
) -> JvmMethod
pub fn create_lambda_method( &mut self, name: String, descriptor: String, instructions: Vec<JvmInstruction>, ) -> JvmMethod
Creates a synthetic method for lambda expression
Sourcepub fn create_method_reference_bootstrap(
&mut self,
method_ref: u16,
method_type: u16,
)
pub fn create_method_reference_bootstrap( &mut self, method_ref: u16, method_type: u16, )
Creates a method reference bootstrap method
Sourcepub fn add_inner_class(&mut self, inner_class: JvmInnerClass)
pub fn add_inner_class(&mut self, inner_class: JvmInnerClass)
Adds an inner class to the program
Sourcepub fn add_inner_classes_attribute(&mut self)
pub fn add_inner_classes_attribute(&mut self)
Adds InnerClasses attribute to the program
Sourcepub fn set_enclosing_method(
&mut self,
class_name: String,
method_name: Option<String>,
method_descriptor: Option<String>,
)
pub fn set_enclosing_method( &mut self, class_name: String, method_name: Option<String>, method_descriptor: Option<String>, )
Sets enclosing method information
Sourcepub fn add_enclosing_method_attribute(&mut self)
pub fn add_enclosing_method_attribute(&mut self)
Adds EnclosingMethod attribute to the program
Trait Implementations§
Source§impl Clone for JvmProgram
impl Clone for JvmProgram
Source§fn clone(&self) -> JvmProgram
fn clone(&self) -> JvmProgram
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more