use shm_rs::static_scheme::generator::RustCode;
use shm_rs::static_scheme::init;
fn main()
{
let curdir = std::env::current_dir().unwrap();
println!("{}", curdir.display());
let schm = init::SchemeInit::new_with_path(curdir).unwrap();
let mut res = schm.run_from_file("examples/common_search/filters.shm", None).unwrap();
res.merge(schm.run_from_file("examples/common_search/logsmon.shm", None).unwrap());
let resser = res.get("filters").unwrap().clone();
let mut rc1 = RustCode::new(&["Clone", "Debug", "Serialize", "Deserialize"], &["Clone", "Debug", "Serialize", "Deserialize"]);
resser.generate_rust_structs(&mut rc1).unwrap();
let resser = res.get("logsmon").unwrap().clone();
let mut rc2 = RustCode::new(&["Clone", "Debug", "Serialize", "Deserialize"], &["Clone", "Debug", "Serialize", "Deserialize"]);
resser.generate_rust_structs(&mut rc2).unwrap();
println!("after removing commons");
let t = std::time::Instant::now();
let com_res = RustCode::search_common("super::structs::struct_common", vec!(&mut rc1, &mut rc2), &["Clone", "Debug", "Serialize", "Deserialize"], &["Clone", "Debug", "Serialize", "Deserialize"]);
let s = t.elapsed();
println!("time taken: {:?}", s);
println!("{}", rc1);
println!("{}", rc2);
if com_res.is_some() == true
{
println!("Common structs: \n\n{}", com_res.unwrap());
}
}