#[cfg(feature = "unstable-v2")]
use crate::MltError;
use crate::MltResult;
use crate::encoder::model::StagedLayer;
use crate::encoder::property::encode::write_prop;
use crate::encoder::{Codecs, Encoder, StagedId};
pub(crate) fn encode_into01(
layer: StagedLayer,
mut enc: Encoder,
codecs: &mut Codecs,
) -> MltResult<Encoder> {
let column_count = usize::from(!matches!(layer.id, StagedId::None))
+ 1 + layer.properties.len();
#[cfg(feature = "unstable-v2")]
if !layer.m_values.is_empty() {
return Err(MltError::MValuesNeedV2(layer.name));
}
#[cfg(feature = "unstable-v2")]
if !layer.nested.is_empty() {
return Err(MltError::NestedNeedsV2(layer.name));
}
let StagedLayer {
name,
extent,
id,
geometry,
properties,
#[cfg(feature = "unstable-v2")]
m_values: _,
#[cfg(feature = "unstable-v2")]
nested: _,
} = layer;
id.write_to(&mut enc, codecs)?;
geometry.write_to(&mut enc, codecs)?;
for prop in properties {
write_prop(&prop, &mut enc, codecs)?;
}
enc.write_header01(&name, extent.get(), column_count)?;
Ok(enc)
}