From bb4d0a8b49aed021fe8f13893d2e651923368c23 Mon Sep 17 00:00:00 2001 From: Thomas Voss Date: Sun, 15 Mar 2026 23:07:01 +0100 Subject: New DepMap type --- oryxc/src/depmap.rs | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 oryxc/src/depmap.rs (limited to 'oryxc/src/depmap.rs') diff --git a/oryxc/src/depmap.rs b/oryxc/src/depmap.rs new file mode 100644 index 0000000..60e358e --- /dev/null +++ b/oryxc/src/depmap.rs @@ -0,0 +1,31 @@ +use boxcar; +use dashmap::DashMap; + +use crate::compiler::Job; +use crate::prelude::*; + +pub struct DepMap(DashMap>); + +#[derive(Eq, Hash, PartialEq)] +pub enum Dependency { + Symbol(SymbolId), +} + +impl DepMap { + pub fn with_capacity(n: usize) -> Self { + return Self(DashMap::with_capacity(n)); + } + + pub fn add(&self, d: Dependency, j: Job) { + self.0 + .entry(d) + .and_modify(|v| { + v.push(j.clone()); + }) + .or_insert_with(|| boxcar::vec![j]); + } + + pub fn pop(&self, d: Dependency) -> Option> { + return self.0.remove(&d).map(|(_, v)| v); + } +} -- cgit v1.2.3