1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
use super::{ChunkVisitor, Origin};
use crate::{
    chunks::{PackageWrapper, StringTableWrapper, TableTypeWrapper, TypeSpecWrapper},
    model::{StringTable, TableType, TypeSpec},
};

#[allow(dead_code)]
#[derive(Debug)]
pub struct PrintVisitor;

impl<'a> ChunkVisitor<'a> for PrintVisitor {
    fn visit_string_table(&mut self, string_table: StringTableWrapper, origin: Origin) {
        println!("String Table!");
        println!(
            "\tLength ({:?}): {} ",
            origin,
            string_table.get_strings_len()
        );
    }

    fn visit_package(&mut self, package: PackageWrapper) {
        println!("Package!");
        println!("\tId: {}", package.get_id().unwrap());
        println!("\tName: {}", package.get_name().unwrap());
    }

    fn visit_table_type(&mut self, table_type: TableTypeWrapper) {
        println!("Table type!");
        println!("\tId: {}", table_type.get_id().unwrap());
    }

    fn visit_type_spec(&mut self, type_spec: TypeSpecWrapper) {
        println!("Type spec!");
        println!("\tId: {}", type_spec.get_id().unwrap());
    }
}