printelements/printelements.rs
1use rjvm::bytecode::pool::ConstantPool;
2use rjvm::bytecode::reader::containers::read_classfile;
3use rjvm::bytecode::reader::BufferedReader;
4
5fn main() {
6 let input = include_bytes!("./testdata/org/example/Simple.class");
7 let mut buffer = BufferedReader::new(input);
8 let mut cp = ConstantPool::new();
9 let cf = read_classfile(&mut buffer, &mut cp).unwrap();
10
11 println!("Class name: {}", cp.text_of(cf.this_class).unwrap());
12
13 cf.fields.iter().for_each(|field| {
14 println!("Field {} - {}", field.name, field.descriptor);
15 });
16
17 // cf.methods.iter().for_each(|method| {
18 // let parameters: Vec<Descriptor> = method
19 // .descriptor
20 // .clone()
21 // .into_iter()
22 // .filter(|desc| desc.kind == DescriptorKind::Parameter)
23 // .collect();
24 // let return_ty: Descriptor = method
25 // .descriptor
26 // .clone()
27 // .into_iter()
28 // .find(|desc| desc.kind == DescriptorKind::Return)
29 // .unwrap_or(Descriptor {
30 // kind: DescriptorKind::Return,
31 // ty: FieldType::Base(BaseType::Void),
32 // });
33 //
34 // println!(
35 // "{} {}({})",
36 // return_ty,
37 // method.name,
38 // parameters
39 // .iter()
40 // .map(|p| p.ty.to_string())
41 // .collect::<Vec<String>>()
42 // .join(", ")
43 // );
44 // });
45}