forsyde_io_libforsyde/
lib.rs

1include!(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        // println!("{:?}", system_graph);
39        // println!("{}", String::from_utf8(model_handler.print_model(&system_graph, "fiodl").unwrap()).unwrap());
40    }
41}