litex/runtime/
runtime_get_definitions.rs1use crate::prelude::*;
2
3impl Runtime {
4 pub fn get_prop_definition_by_name(&self, predicate_name: &str) -> Option<&DefPropStmt> {
5 let parts = predicate_name.split(MOD_SIGN).collect::<Vec<&str>>();
6 if parts.len() != 1 {
7 unimplemented!();
8 }
9
10 for environment in self.iter_environments_from_top() {
11 if let Some(definition) = environment.defined_def_props.get(predicate_name) {
12 return Some(definition);
13 }
14 }
15
16 None
17 }
18
19 pub fn get_abstract_prop_definition_by_name(
21 &self,
22 predicate_name: &str,
23 ) -> Option<&DefAbstractPropStmt> {
24 let parts = predicate_name.split(MOD_SIGN).collect::<Vec<&str>>();
25 if parts.len() != 1 {
26 unimplemented!();
27 }
28
29 for environment in self.iter_environments_from_top() {
30 if let Some(definition) = environment.defined_abstract_props.get(predicate_name) {
31 return Some(definition);
32 }
33 }
34
35 None
36 }
37
38 pub fn get_algo_definition_by_name(&self, algo_name: &str) -> Option<&DefAlgoStmt> {
39 for environment in self.iter_environments_from_top() {
40 if let Some(definition) = environment.defined_algorithms.get(algo_name) {
41 return Some(definition);
42 }
43 }
44 None
45 }
46
47 pub fn get_family_definition_by_name(&self, family_name: &str) -> Option<&DefFamilyStmt> {
48 let parts = family_name.split(MOD_SIGN).collect::<Vec<&str>>();
49 if parts.len() != 1 {
50 unimplemented!();
51 }
52
53 for environment in self.iter_environments_from_top() {
54 if let Some(definition) = environment.defined_families.get(family_name) {
55 return Some(definition);
56 }
57 }
58
59 None
60 }
61
62 pub fn get_cloned_family_definition_by_name(&self, family_name: &str) -> Option<DefFamilyStmt> {
63 let parts = family_name.split(MOD_SIGN).collect::<Vec<&str>>();
64 if parts.len() != 1 {
65 unimplemented!();
66 }
67
68 for environment in self.iter_environments_from_top() {
69 if let Some(definition) = environment.defined_families.get(family_name) {
70 return Some(definition.clone());
71 }
72 }
73
74 None
75 }
76}