litex/environment/
known_fn.rs1use crate::prelude::*;
2
3#[derive(Clone, Default)]
4pub struct KnownFnInfo {
5 pub fn_set: Option<(FnSetBody, LineFile)>,
6 pub equal_to: Option<(Obj, LineFile)>,
8 pub restrict_to: Option<Vec<(FnSetBody, LineFile)>>,
10}
11
12impl KnownFnInfo {
13 pub fn merge_fn_set_equal_to(
15 fn_set: Option<(FnSetBody, LineFile)>,
16 equal_to: Option<(Obj, LineFile)>,
17 ) -> Self {
18 KnownFnInfo {
19 fn_set,
20 equal_to,
21 restrict_to: None,
22 }
23 }
24
25 pub fn update_restrict_to(&mut self, restrict_to: FnSetBody, line_file: LineFile) {
26 match self.restrict_to.as_mut() {
27 Some(v) => v.push((restrict_to, line_file)),
28 None => self.restrict_to = Some(vec![(restrict_to, line_file)]),
29 }
30 }
31
32 pub fn update_equal_to(&mut self, equal_to: Obj, line_file: LineFile) {
33 self.equal_to = Some((equal_to, line_file));
34 }
35
36 pub fn update_fn_set(&mut self, fn_set: FnSetBody, line_file: LineFile) {
37 self.fn_set = Some((fn_set, line_file));
38 }
39}