standing_relations/feedback/context/
tracker.rs

1use std::{
2    io::{self, Write},
3    sync::{Arc, RwLock},
4};
5
6use crate::core::{self, TrackingIndex};
7
8pub struct ContextTracker {
9    inner: core::ContextTracker,
10    extra_edges: Arc<RwLock<Vec<(TrackingIndex, TrackingIndex)>>>,
11}
12
13impl ContextTracker {
14    pub fn dump_dot(&self, file: impl Write) -> Result<(), io::Error> {
15        self.inner
16            .dump_dot(file, &*self.extra_edges.read().unwrap())
17    }
18
19    pub(super) fn new(
20        inner: core::ContextTracker,
21        extra_edges: Arc<RwLock<Vec<(TrackingIndex, TrackingIndex)>>>,
22    ) -> ContextTracker {
23        ContextTracker { inner, extra_edges }
24    }
25}