pub struct ClassWriter<W: Write> { /* private fields */ }Expand description
JVM Class file writer
Implementations§
Source§impl<W: Write> ClassWriter<W>
impl<W: Write> ClassWriter<W>
Sourcepub fn collect_attribute_constants(&mut self, attribute: &JvmAttribute)
pub fn collect_attribute_constants(&mut self, attribute: &JvmAttribute)
Collects constants from an attribute and adds them to the constant pool
Sourcepub fn collect_annotation_constants(&mut self, annotations: &[JvmAnnotation])
pub fn collect_annotation_constants(&mut self, annotations: &[JvmAnnotation])
Collects constants from annotations
Sourcepub fn collect_annotation_value_constants(&mut self, value: &JvmAnnotationValue)
pub fn collect_annotation_value_constants(&mut self, value: &JvmAnnotationValue)
Collects constants from annotation values
Sourcepub fn collect_verification_type_constants(&mut self, vt: &JvmVerificationType)
pub fn collect_verification_type_constants(&mut self, vt: &JvmVerificationType)
Collects constants from a verification type and adds them to the constant pool
Sourcepub fn write_attribute(&mut self, attribute: &JvmAttribute) -> Result<()>
pub fn write_attribute(&mut self, attribute: &JvmAttribute) -> Result<()>
Writes an attribute to the class file
Sourcepub fn write_verification_type_to_buf(
&mut self,
vt: &JvmVerificationType,
buf: &mut Vec<u8>,
) -> Result<()>
pub fn write_verification_type_to_buf( &mut self, vt: &JvmVerificationType, buf: &mut Vec<u8>, ) -> Result<()>
Writes a verification type to a buffer
Sourcepub fn write_stack_map_frame_to_buf(
&mut self,
frame: &JvmStackMapFrame,
buf: &mut Vec<u8>,
) -> Result<()>
pub fn write_stack_map_frame_to_buf( &mut self, frame: &JvmStackMapFrame, buf: &mut Vec<u8>, ) -> Result<()>
Writes a stack map frame to a buffer
Sourcepub fn write_annotation_to_buf(
&mut self,
annotation: &JvmAnnotation,
buf: &mut Vec<u8>,
) -> Result<()>
pub fn write_annotation_to_buf( &mut self, annotation: &JvmAnnotation, buf: &mut Vec<u8>, ) -> Result<()>
Writes an annotation to a buffer
Sourcepub fn write_annotation_element_to_buf(
&mut self,
element: &JvmAnnotationElement,
buf: &mut Vec<u8>,
) -> Result<()>
pub fn write_annotation_element_to_buf( &mut self, element: &JvmAnnotationElement, buf: &mut Vec<u8>, ) -> Result<()>
Writes an annotation element to a buffer
Sourcepub fn write_annotation_value_to_buf(
&mut self,
value: &JvmAnnotationValue,
buf: &mut Vec<u8>,
) -> Result<()>
pub fn write_annotation_value_to_buf( &mut self, value: &JvmAnnotationValue, buf: &mut Vec<u8>, ) -> Result<()>
Writes an annotation value to a buffer
Sourcepub fn write_code_attribute(
&mut self,
program: &JvmProgram,
method: &JvmMethod,
code_utf8_idx: u16,
) -> Result<()>
pub fn write_code_attribute( &mut self, program: &JvmProgram, method: &JvmMethod, code_utf8_idx: u16, ) -> Result<()>
Writes a Code attribute to the class file
Source§impl<W: Write> ClassWriter<W>
impl<W: Write> ClassWriter<W>
Sourcepub fn write_fields(&mut self, program: &JvmProgram) -> Result<()>
pub fn write_fields(&mut self, program: &JvmProgram) -> Result<()>
写入字段
Sourcepub fn write_methods(
&mut self,
program: &JvmProgram,
code_utf8_idx: u16,
) -> Result<()>
pub fn write_methods( &mut self, program: &JvmProgram, code_utf8_idx: u16, ) -> Result<()>
写入方法
Source§impl<W: Write> ClassWriter<W>
impl<W: Write> ClassWriter<W>
Source§impl<W: Write> ClassWriter<W>
impl<W: Write> ClassWriter<W>
Sourcepub fn add_string(&mut self, value: String) -> u16
pub fn add_string(&mut self, value: String) -> u16
Adds a String constant to the constant pool
Sourcepub fn add_name_and_type(&mut self, name: String, descriptor: String) -> u16
pub fn add_name_and_type(&mut self, name: String, descriptor: String) -> u16
Adds a NameAndType constant to the constant pool
Sourcepub fn add_field_ref(
&mut self,
class_name: String,
name: String,
descriptor: String,
) -> u16
pub fn add_field_ref( &mut self, class_name: String, name: String, descriptor: String, ) -> u16
Adds a Fieldref constant to the constant pool
Sourcepub fn add_method_ref(
&mut self,
class_name: String,
name: String,
descriptor: String,
) -> u16
pub fn add_method_ref( &mut self, class_name: String, name: String, descriptor: String, ) -> u16
Adds a Methodref constant to the constant pool
Sourcepub fn add_interface_method_ref(
&mut self,
class_name: String,
name: String,
descriptor: String,
) -> u16
pub fn add_interface_method_ref( &mut self, class_name: String, name: String, descriptor: String, ) -> u16
Adds an InterfaceMethodref constant to the constant pool
Sourcepub fn add_double(&mut self, val: f64) -> u16
pub fn add_double(&mut self, val: f64) -> u16
Adds a Double constant to the constant pool
Sourcepub fn add_method_handle(&mut self, kind: u8, ref_idx: u16) -> u16
pub fn add_method_handle(&mut self, kind: u8, ref_idx: u16) -> u16
Adds a MethodHandle constant to the constant pool
Sourcepub fn add_method_type(&mut self, descriptor: String) -> u16
pub fn add_method_type(&mut self, descriptor: String) -> u16
Adds a MethodType constant to the constant pool
Sourcepub fn add_dynamic(
&mut self,
bootstrap_method_attr_idx: u16,
name: String,
descriptor: String,
) -> u16
pub fn add_dynamic( &mut self, bootstrap_method_attr_idx: u16, name: String, descriptor: String, ) -> u16
Adds a Dynamic constant to the constant pool
Sourcepub fn add_invoke_dynamic(
&mut self,
bootstrap_method_attr_idx: u16,
name: String,
descriptor: String,
) -> u16
pub fn add_invoke_dynamic( &mut self, bootstrap_method_attr_idx: u16, name: String, descriptor: String, ) -> u16
Adds an InvokeDynamic constant to the constant pool
Sourcepub fn add_module(&mut self, name: String) -> u16
pub fn add_module(&mut self, name: String) -> u16
Adds a Module constant to the constant pool
Sourcepub fn add_package(&mut self, name: String) -> u16
pub fn add_package(&mut self, name: String) -> u16
Adds a Package constant to the constant pool
Sourcepub fn add_cp_entry(&mut self, entry: CpEntry) -> u16
pub fn add_cp_entry(&mut self, entry: CpEntry) -> u16
Adds a constant pool entry and returns its index
Sourcepub fn write_constant_pool(&mut self) -> Result<()>
pub fn write_constant_pool(&mut self) -> Result<()>
Writes the constant pool to the class file
Source§impl<W: Write> ClassWriter<W>
impl<W: Write> ClassWriter<W>
Sourcepub fn write(self, program: &JvmProgram) -> GaiaDiagnostics<W>
pub fn write(self, program: &JvmProgram) -> GaiaDiagnostics<W>
Write ClassView as binary Class format