use crate::{
parse::Writer,
producers::{Producer, ProducerKind},
seal::Seal,
wasm::Write as _,
};
pub trait Write<'a>: Seal {
fn producers(&mut self, producers: &[Producer<'_>]);
}
impl<'a> Write<'a> for Writer<'a> {
fn producers(&mut self, producers: &[Producer<'_>]) {
self.integer(producers.len().try_into().unwrap_or(u32::MAX));
for producer in producers {
self.name(match producer.kind {
ProducerKind::Language => "language",
ProducerKind::ProcessedBy => "processed-by",
ProducerKind::Sdk => "sdk",
});
self.integer(producer.list.len().try_into().unwrap_or(u32::MAX));
for versioned_software in &producer.list {
self.name(&versioned_software.name);
self.name(&versioned_software.version);
}
}
}
}