From d116a1df8fe14edc8de157bf8088244261fca30f Mon Sep 17 00:00:00 2001 From: metamuffin Date: Fri, 14 Feb 2025 20:10:00 +0100 Subject: trying to read objects --- src/serialized_file.rs | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) (limited to 'src/serialized_file.rs') diff --git a/src/serialized_file.rs b/src/serialized_file.rs index f32b3a3..4b348e0 100644 --- a/src/serialized_file.rs +++ b/src/serialized_file.rs @@ -17,6 +17,8 @@ pub struct TypeTreeNode { pub index: i32, pub flags: i32, pub ref_type_hash: u64, + + pub children: Vec, } #[derive(Debug)] @@ -26,7 +28,7 @@ pub struct SeralizedType { pub script_type_index: i16, pub script_id: u128, - pub type_tree: Vec, + pub type_tree: Option, pub type_deps: Vec, } @@ -115,7 +117,7 @@ pub fn read_serialized_file(mut file: impl Read + Seek) -> Result Result = vec![]; for _ in 0..num_nodes { - type_tree.push(TypeTreeNode { + let node = TypeTreeNode { version: node_data.read_u16(e)?, level: node_data.read_u8()?, type_flags: node_data.read_u8()?, @@ -154,8 +157,19 @@ pub fn read_serialized_file(mut file: impl Read + Seek) -> Result node.level as usize { + let n = parents.pop().unwrap(); + parents.last_mut().unwrap().children.push(n) + } + parents.push(node); + } + while parents.len() > 1 { + let n = parents.pop().unwrap(); + parents.last_mut().unwrap().children.push(n) } + type_tree = parents.pop(); if format >= 21 { let num_deps = file.read_u32(e)?; -- cgit v1.2.3-70-g09d2