use crate::{debug_expect, prelude::{ByteReader, ConfigType}, Mesh};
mod header;
mod metadata;
mod entropy;
pub fn decode<W>(reader: &mut W, cfg: Config) -> Result<Mesh, Err>
where W: ByteReader
{
let header = header::decode_header(reader)
.map_err(|r| Err::HeaderError(r))?;
debug_expect!("Header done, now starting metadata.", reader);
if header.contains_metadata {
let metadata = metadata::decode_metadata(reader)
.map_err(|r| Err::MetadataError(r))?;
}
debug_expect!("Metadata done, now starting connectivity.", reader);
debug_expect!("Connectivity done, now starting attributes.", reader);
debug_expect!("All done", reader);
let mut mesh = Mesh::new();
Ok(mesh)
}
#[derive(Debug, Clone)]
pub struct Config {
}
impl ConfigType for Config {
fn default() -> Self {
Self {
}
}
}
#[remain::sorted]
#[derive(thiserror::Error, Debug)]
pub enum Err {
#[error("Header encoding error")]
HeaderError(#[from] header::Err),
#[error("Metadata encoding error")]
MetadataError(#[from] metadata::Err),
}