use std::io;
use super::BinTree;
use byteorder::{WriteBytesExt, LE};
use ltk_io_ext::WriterExt;
pub const WRITE_VERSION: u32 = 3;
impl BinTree {
pub fn to_writer<W: io::Write + io::Seek + ?Sized>(&self, writer: &mut W) -> io::Result<()> {
match self.is_override {
true => todo!("implement is_override BinTree write"),
false => {
writer.write_u32::<LE>(Self::PROP)?;
}
}
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_u32::<LE>(obj.class_hash)?;
}
for obj in self.objects.values() {
obj.to_writer(writer)?;
}
if self.is_override {
writer.write_u32::<LE>(self.data_overrides.len() as _)?;
}
Ok(())
}
}