Skip to main content

ebi_objects/conversions/
to_process_tree.rs

1use crate::{ActivityKey, ebi_objects::{
2    process_tree::{Node, ProcessTree}, process_tree_markup_language::ProcessTreeMarkupLanguage,
3    stochastic_process_tree::StochasticProcessTree,
4}};
5
6impl From<ProcessTreeMarkupLanguage> for ProcessTree {
7    fn from(value: ProcessTreeMarkupLanguage) -> Self {
8        value.tree
9    }
10}
11
12impl From<StochasticProcessTree> for ProcessTree {
13    fn from(value: StochasticProcessTree) -> Self {
14        Self {
15            activity_key: value.activity_key,
16            tree: value.tree,
17            transition2node: value.transition2node,
18        }
19    }
20}
21
22impl From<(ActivityKey, Vec<Node>)> for ProcessTree {
23    fn from(value: (ActivityKey, Vec<Node>)) -> Self {
24        let mut transition2node = vec![];
25        for (node_index, node) in value.1.iter().enumerate() {
26            match node {
27                Node::Tau | Node::Activity(_) => {
28                    transition2node.push(node_index);
29                }
30                Node::Operator(_, _) => {}
31            }
32        }
33
34        Self {
35            activity_key: value.0,
36            tree: value.1,
37            transition2node: transition2node,
38        }
39    }
40}