forsyde_io_libforsyde/
lib.rs1include!(concat!(env!("OUT_DIR"), "/libforsyde_gen.rs"));
2
3use forsyde_io_core::ModelHandler;
4
5
6pub fn register_libforsyde(model_handler: &mut ModelHandler) {
7 model_handler.trait_converters.push(Box::new(ForSyDeHierarchy::trait_from_str));
8}
9
10
11#[cfg(test)]
12mod tests {
13 use forsyde_io_core::VertexViewer;
14 use crate::ForSyDeHierarchy::IsSDFChannel;
15
16 use crate::{register_libforsyde, ForSyDeHierarchy};
17
18
19 #[test]
20 fn read() {
21 let mut model_handler = forsyde_io_core::ModelHandler::default();
22 register_libforsyde(&mut model_handler);
23 let system_graph = model_handler.load_model("../examples/sdf/toy_sdf_tiny2.fiodl").unwrap();
24 for v in system_graph.node_weights() {
25 if let Some(viewer) = ForSyDeHierarchy::SDFActorViewer::try_view(v, &system_graph) {
26 println!("Actor {} is an SDF actor", viewer.get_identifier());
27 }
28 if let Some(viewer) = ForSyDeHierarchy::SDFChannelViewer::try_view(v, &system_graph) {
29 println!("Channel {} is an SDF channel with {} initial tokens", viewer.get_identifier(), viewer.get_numInitialTokens());
30 if let Some(p) = viewer.get_producer() {
31 println!("Producer: {}", p.get_identifier());
32 }
33 if let Some(c) = viewer.get_consumer() {
34 println!("Consumer: {}", c.get_identifier());
35 }
36 }
37 }
38 }
41}