21 #include "ngraph/node.hpp"
35 using RPatternValueMap = std::map<std::shared_ptr<Node>, OutputVector>;
36 using PatternValueMap = std::map<std::shared_ptr<Node>, Output<Node>>;
37 using PatternValueMaps = std::vector<PatternValueMap>;
39 using PatternMap = std::map<std::shared_ptr<Node>, std::shared_ptr<Node>>;
41 PatternMap as_pattern_map(
const PatternValueMap& pattern_value_map);
42 PatternValueMap as_pattern_value_map(
const PatternMap& pattern_map);
45 std::function<bool(std::shared_ptr<Node>)> has_class()
47 auto pred = [](std::shared_ptr<Node> node) ->
bool {
return is_type<T>(node); };
53 std::function<bool(Output<Node>)> consumers_count(
size_t n);
56 std::function<bool(Output<Node>)> has_static_dim(
size_t pos);
59 std::function<bool(Output<Node>)> has_static_dims(
const std::vector<size_t>& dims);
62 std::function<bool(Output<Node>)> has_static_shape();
65 std::function<bool(Output<Node>)> type_matches(
const element::Type& type);
68 std::function<bool(Output<Node>)> type_matches_any(
const std::vector<element::Type>& types);
72 using NodePredicate = std::function<bool(std::shared_ptr<Node>)>;
73 using ValuePredicate = std::function<bool(
const Output<Node>& value)>;
76 ValuePredicate as_value_predicate(NodePredicate pred);
83 Pattern(
const OutputVector& patterns, ValuePredicate pred)
89 m_predicate = [](
const Output<Node>&) {
return true; };
93 Pattern(
const OutputVector& patterns)
98 virtual std::shared_ptr<Node>
99 clone_with_new_inputs(
const OutputVector& )
const override
101 throw ngraph_error(
"Uncopyable");
104 ValuePredicate get_predicate()
const;
107 ValuePredicate m_predicate;