mod error;
mod state;
use std::io::Write;
use rbx_dom_weak::{types::Ref, WeakDom};
use self::state::SerializerState;
pub use self::error::Error;
#[non_exhaustive]
pub struct Serializer {}
impl Serializer {
pub fn new() -> Self {
Serializer {}
}
pub fn serialize<W: Write>(&self, writer: W, dom: &WeakDom, refs: &[Ref]) -> Result<(), Error> {
profiling::scope!("rbx_binary::seserialize");
let mut serializer = SerializerState::new(dom, writer);
serializer.add_instances(refs)?;
serializer.generate_referents();
serializer.write_header()?;
serializer.serialize_metadata()?;
serializer.serialize_shared_strings()?;
serializer.serialize_instances()?;
serializer.serialize_properties()?;
serializer.serialize_parents()?;
serializer.serialize_end()?;
Ok(())
}
}
impl Default for Serializer {
fn default() -> Self {
Self::new()
}
}