use super::FamilyId;
use crate::GenericFamily;
use smallvec::SmallVec;
type FamilyVec = SmallVec<[FamilyId; 2]>;
const COUNT: usize = GenericFamily::MAX_VALUE as usize + 1;
#[derive(Clone, Default, Debug)]
pub struct GenericFamilyMap {
map: [FamilyVec; COUNT],
}
impl GenericFamilyMap {
pub fn get(&self, generic: GenericFamily) -> &[FamilyId] {
&self.map[generic as usize]
}
pub fn set(&mut self, generic: GenericFamily, families: impl Iterator<Item = FamilyId>) {
let map = &mut self.map[generic as usize];
map.clear();
map.extend(families);
}
pub fn append(&mut self, generic: GenericFamily, families: impl Iterator<Item = FamilyId>) {
self.map[generic as usize].extend(families);
}
}