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}