use std::io;
use super::Bin;
use crate::BinKind;
use byteorder::{WriteBytesExt as _, LE};
use ltk_hash::WriteBytesExt as _;
use ltk_io_ext::WriterExt as _;
pub const WRITE_VERSION: u32 = 3;
impl<M: Clone> Bin<M> {
pub fn to_writer<W: io::Write + io::Seek + ?Sized>(&self, writer: &mut W) -> io::Result<()> {
writer.write_all(&BinKind::Prop.magic())?;
writer.write_u32::<LE>(WRITE_VERSION)?;
writer.write_u32::<LE>(self.dependencies.len() as _)?;
for dep in &self.dependencies {
writer.write_len_prefixed_string::<LE, _>(dep)?;
}
writer.write_u32::<LE>(self.objects.len() as _)?;
for obj in self.objects.values() {
writer.write_bin_hash::<LE>(obj.class_hash)?;
}
for obj in self.objects.values() {
obj.to_writer(writer)?;
}
Ok(())
}
}