pub trait Transform {
    // Provided methods
    fn pattern_match(&mut self, graph: &Graph) -> Vec<Vec<i32>> { ... }
    fn try_neighbors(
        &mut self,
        graph: &Graph,
        neighbors: &HashMap<i32, Vec<String>>,
        matched: &Vec<bool>,
        subgraph_ptr: *mut Vec<i32>,
        best_subgraph_ptr: *mut Vec<i32>
    ) { ... }
    fn pattern_match_helper(
        &mut self,
        graph: &Graph,
        matched: &Vec<bool>,
        subgraph_ptr: *mut Vec<i32>,
        best_subgraph_ptr: *mut Vec<i32>
    ) { ... }
    fn pattern_rule(&mut self, g: &Graph, subgraph: &Vec<i32>, idx: i32) -> bool { ... }
    fn validator_rule(&mut self, g: &Graph, subgraph: &Vec<i32>) -> bool { ... }
    fn replace_rule(&mut self, subgraph: &Vec<i32>, g_ptr: *mut Graph) -> bool { ... }
    fn set_pattern_match_type(&mut self, ty: PatternMatchType) { ... }
    fn replace_pattern(&mut self, matches: &Vec<Vec<i32>>, graph: *mut Graph) { ... }
    fn apply_to(&mut self, orig_net: &NetDef) -> NetDef { ... }
}

Provided Methods§

source

fn pattern_match(&mut self, graph: &Graph) -> Vec<Vec<i32>>

| Generates all matches (stored as ordered | subgraphs) and returns them. | | A match is stored as vector, which | is a mapping to OperatorDefs in Graph. | The order matters. |

source

fn try_neighbors( &mut self, graph: &Graph, neighbors: &HashMap<i32, Vec<String>>, matched: &Vec<bool>, subgraph_ptr: *mut Vec<i32>, best_subgraph_ptr: *mut Vec<i32> )

| Attempts to append each neighbor to | the end of the subgraph. |

source

fn pattern_match_helper( &mut self, graph: &Graph, matched: &Vec<bool>, subgraph_ptr: *mut Vec<i32>, best_subgraph_ptr: *mut Vec<i32> )

| A helper function for PatternMatch, | which keeps track of the best subgraph | so far. |

source

fn pattern_rule(&mut self, g: &Graph, subgraph: &Vec<i32>, idx: i32) -> bool

| The PatternRule essentially answers: | | Given the current subgraph (ordered), | should we append the new node at idx? |

source

fn validator_rule(&mut self, g: &Graph, subgraph: &Vec<i32>) -> bool

| The ValidatorRule essentially answers: | | Given a subgraph, can we accept it? |

source

fn replace_rule(&mut self, subgraph: &Vec<i32>, g_ptr: *mut Graph) -> bool

| The ReplaceRule actually mutates the | graph, and applies the transformation | upon the subgraph. |

source

fn set_pattern_match_type(&mut self, ty: PatternMatchType)

source

fn replace_pattern(&mut self, matches: &Vec<Vec<i32>>, graph: *mut Graph)

| Applies the replace rule onto each of | the matches found. |

source

fn apply_to(&mut self, orig_net: &NetDef) -> NetDef

| Apply a Transform onto a NetDef. | | Returns the transformed NetDef. | | The simple interface - performs the | transformation upon a NetDef, and returns | the result. |

Implementors§