use crate::ir::AppendOnlyVec;
use wasmparser::{CanonicalFunction, ComponentAlias, ComponentType};
#[derive(Debug, Default)]
pub struct Aliases<'a> {
pub items: AppendOnlyVec<ComponentAlias<'a>>,
}
impl<'a> Aliases<'a> {
pub fn new(items: AppendOnlyVec<ComponentAlias<'a>>) -> Self {
Self { items }
}
pub(crate) fn add(&mut self, alias: ComponentAlias<'a>) -> usize {
let idx = self.items.len();
self.items.push(alias);
idx
}
}
#[derive(Debug, Default)]
pub struct Canons {
pub items: AppendOnlyVec<CanonicalFunction>,
}
impl Canons {
pub fn new(items: AppendOnlyVec<CanonicalFunction>) -> Self {
Self { items }
}
pub(crate) fn add(&mut self, canon: CanonicalFunction) -> usize {
let idx = self.items.len();
self.items.push(canon);
idx
}
}
#[derive(Debug, Default)]
pub struct ComponentTypes<'a> {
pub items: AppendOnlyVec<Box<ComponentType<'a>>>,
}
impl<'a> ComponentTypes<'a> {
pub fn new(items: AppendOnlyVec<Box<ComponentType<'a>>>) -> Self {
Self { items }
}
pub(crate) fn add(&mut self, ty: ComponentType<'a>) -> usize {
let idx = self.items.len();
self.items.push(Box::new(ty));
idx
}
}