veryl-analyzer 0.20.0

A modern hardware description language
Documentation
use crate::HashMap;
use std::cell::RefCell;
use veryl_parser::resource_table::TokenId;

#[derive(Clone, Default, Debug)]
pub struct MsbTable {
    table: HashMap<TokenId, usize>,
}

impl MsbTable {
    pub fn insert(&mut self, id: TokenId, dimension_number: usize) {
        self.table.insert(id, dimension_number);
    }

    pub fn get(&self, id: TokenId) -> Option<&usize> {
        self.table.get(&id)
    }

    pub fn clear(&mut self) {
        self.table.clear()
    }
}

thread_local!(static MSB_TABLE: RefCell<MsbTable> = RefCell::new(MsbTable::default()));

pub fn insert(id: TokenId, dimension_number: usize) {
    MSB_TABLE.with(|f| f.borrow_mut().insert(id, dimension_number))
}

pub fn get(id: TokenId) -> Option<usize> {
    MSB_TABLE.with(|f| f.borrow().get(id).cloned())
}

pub fn clear() {
    MSB_TABLE.with(|f| f.borrow_mut().clear())
}