diff --git a/src/specctra/structure.rs b/src/specctra/structure.rs index d0a6c36..258d286 100644 --- a/src/specctra/structure.rs +++ b/src/specctra/structure.rs @@ -44,11 +44,23 @@ pub struct NetOut { pub via: Vec, } -#[derive(ReadDsn, WriteSes, Debug)] +#[derive(WriteSes, Debug)] pub struct DsnFile { pub pcb: Pcb, } +impl ReadDsn for DsnFile { + fn read_dsn(tokenizer: &mut ListTokenizer) -> Result { + let mut pcb_type_name = tokenizer.consume_token()?.expect_any_start()?; + if !pcb_type_name.eq_ignore_ascii_case("pcb") { + return Err(ParseError::ExpectedStartOfList("pcb")); + } + let pcb = tokenizer.read_value::()?; + tokenizer.consume_token()?.expect_end()?; + Ok(Self { pcb }) + } +} + #[derive(ReadDsn, WriteSes, Debug)] pub struct Pcb { #[anon]