// Copyright (C) 2022 Yehowshua Immanuel // This program is distributed under both the GPLV3 license // and the YEHOWSHUA license, both of which can be found at // the root of the folder containing the sources for this program. mod combinator_atoms; mod events; mod metadata; mod scopes; mod types; pub fn parse_vcd(file: impl std::io::Read) -> Result { let mut word_gen = super::reader::WordReader::new(file); let header = metadata::parse_metadata(&mut word_gen)?; // later, we'll need to map parsed ascii symbols to their // respective signal indexes let mut signal_map = std::collections::HashMap::new(); // after we parse metadata, we form the VCD object let mut vcd = super::types::VCD { metadata: header, tmstmps_encoded_as_u8s: vec![], all_signals: vec![], all_scopes: vec![], root_scopes: vec![], largest_timestamp: None, }; scopes::parse_scopes(&mut word_gen, &mut vcd, &mut signal_map)?; events::parse_events(&mut word_gen, &mut vcd, &mut signal_map)?; Ok(vcd) }