use morok_ir::{UOp, UOpKey};
use std::collections::HashMap;
use std::sync::Arc;
#[derive(Default)]
pub struct RangeifyContext {
pub range_map: HashMap<UOpKey, Arc<UOp>>,
pub range_counter: usize,
}
impl RangeifyContext {
pub fn new() -> Self {
Self::default()
}
pub fn next_range_id(&mut self) -> usize {
let id = self.range_counter;
self.range_counter += 1;
id
}
pub fn record_transform(&mut self, original: Arc<UOp>, rangeified: Arc<UOp>) {
self.range_map.insert(UOpKey(original), rangeified);
}
pub fn get_rangeified(&self, original: &Arc<UOp>) -> Option<&Arc<UOp>> {
self.range_map.get(&UOpKey(original.clone()))
}
}