use crate::derives::*;
use crate::selector_map::{MaybeCaseInsensitiveHashMap, PrecomputedHashMap};
use crate::{Atom, LocalName, ShrinkIfNeeded};
#[derive(Clone, Debug, MallocSizeOf)]
pub struct SimpleBucketsMap<T> {
pub classes: MaybeCaseInsensitiveHashMap<Atom, T>,
pub ids: MaybeCaseInsensitiveHashMap<Atom, T>,
pub local_names: PrecomputedHashMap<LocalName, T>,
}
impl<T> Default for SimpleBucketsMap<T> {
fn default() -> Self {
Self {
classes: Default::default(),
ids: Default::default(),
local_names: Default::default(),
}
}
}
impl<T> SimpleBucketsMap<T> {
#[inline(always)]
pub fn clear(&mut self) {
self.classes.clear();
self.ids.clear();
self.local_names.clear();
}
#[inline(always)]
pub fn shrink_if_needed(&mut self) {
self.classes.shrink_if_needed();
self.ids.shrink_if_needed();
self.local_names.shrink_if_needed();
}
#[inline(always)]
pub fn is_empty(&self) -> bool {
self.classes.is_empty() && self.ids.is_empty() && self.local_names.is_empty()
}
}