Skip to main content

aagtoaig/
aagtoaig.rs

1use std::io::Write;
2
3use flussab::DeferredWriter;
4
5use flussab_aiger::{
6    aig::{Renumber, RenumberConfig},
7    ascii, binary, Error,
8};
9
10fn main() {
11    if let Err(err) = main_err() {
12        eprintln!("error: {err}");
13    }
14}
15
16fn main_err() -> Result<(), Error<u32>> {
17    let stdin = std::io::stdin();
18    let stdout = std::io::stdout();
19
20    let aag_reader = ascii::Parser::<u32>::from_read(stdin.lock(), ascii::Config::default())?;
21
22    let aag = aag_reader.parse()?;
23
24    let (aig, _) = Renumber::renumber_aig(
25        RenumberConfig::default()
26            .trim(true)
27            .structural_hash(true)
28            .const_fold(true),
29        &aag,
30    )?;
31
32    let aig_writer = DeferredWriter::from_write(stdout.lock());
33    let mut aag_writer = binary::Writer::<u32>::new(aig_writer);
34
35    aag_writer.write_ordered_aig(&aig);
36
37    aag_writer.flush()?;
38    Ok(())
39}