1mod asm;
2mod disasm;
3#[allow(clippy::all)]
4pub mod mlist;
5
6use mlist::MList;
7use std::fs::{read, File};
8use std::io::{prelude::*, Cursor, Error};
9use std::path::Path;
10
11pub use diff;
12pub use hash40;
13
14pub fn read_stream<R: Read + Seek>(reader: &mut R) -> Result<MList, Error> {
18 disasm::disassemble(reader)
19}
20
21pub fn write_stream<W: Write + Seek>(writer: &mut W, mlist: &MList) -> Result<(), Error> {
24 asm::assemble(writer, mlist)
25}
26
27pub fn open<P: AsRef<Path>>(file: P) -> Result<MList, Error> {
29 disasm::disassemble(&mut Cursor::new(read(file)?))
30}
31
32pub fn save<P: AsRef<Path>>(path: P, mlist: &MList) -> Result<(), Error> {
34 let mut file = File::create(path)?;
35 let mut cursor = Cursor::new(Vec::<u8>::new());
36 asm::assemble(&mut cursor, mlist)?;
37 file.write_all(&cursor.into_inner())?;
38 Ok(())
39}