use crate::engine::vm::OpArray;
use std::collections::HashMap;
pub struct FunctionTable {
functions: HashMap<String, OpArray>,
}
impl FunctionTable {
pub fn new() -> Self {
Self {
functions: HashMap::new(),
}
}
pub fn store_function(&mut self, name: &str, op_array: OpArray) {
let lower_name = name.to_lowercase();
self.functions.insert(lower_name, op_array);
}
pub fn lookup_function(&self, name: &str) -> Option<&OpArray> {
let lower_name = name.to_lowercase();
self.functions.get(&lower_name)
}
pub fn has_function(&self, name: &str) -> bool {
let lower_name = name.to_lowercase();
self.functions.contains_key(&lower_name)
}
pub fn get_function_names(&self) -> Vec<String> {
self.functions.keys().cloned().collect()
}
}
impl Default for FunctionTable {
fn default() -> Self {
Self::new()
}
}