19 #include "ngraph/node.hpp"
20 #include "ngraph/pattern/op/pattern.hpp"
31 static constexpr
NodeTypeInfo type_info{
"patternAnyType", 0};
35 const ValuePredicate& pred =
37 const OutputVector& input_values = {})
38 : Pattern(input_values, pred)
39 , m_wrapped_types({wrapped_type})
44 explicit WrapType(std::vector<NodeTypeInfo> wrapped_types,
45 const ValuePredicate& pred =
46 [](
const Output<Node>& output) {
return true; },
47 const OutputVector& input_values = {})
48 : Pattern(input_values, pred)
49 , m_wrapped_types(std::move(wrapped_types))
54 bool match_value(pattern::Matcher* matcher,
55 const Output<Node>& pattern_value,
56 const Output<Node>& graph_value)
override;
58 NodeTypeInfo get_wrapped_type()
const;
60 const std::vector<NodeTypeInfo>& get_wrapped_types()
const;
63 std::vector<NodeTypeInfo> m_wrapped_types;
67 template <
class... Args>
68 std::shared_ptr<Node> wrap_type(
const OutputVector& inputs,
69 const pattern::op::ValuePredicate& pred)
71 std::vector<DiscreteTypeInfo> info{Args::type_info...};
72 return std::make_shared<op::WrapType>(info, pred, inputs);
75 template <
class... Args>
76 std::shared_ptr<Node> wrap_type(
const OutputVector& inputs = {})
78 return wrap_type<Args...>(inputs, [](
const Output<Node>& output) {
return true; });
81 template <
class... Args>
82 std::shared_ptr<Node> wrap_type(
const pattern::op::ValuePredicate& pred)
84 return wrap_type<Args...>({}, pred);
A handle for one of a node's outputs.
Definition: node_output.hpp:42
static PartialShape dynamic(Rank r=Rank::dynamic())
Construct a PartialShape with the given rank and all dimensions (if any) dynamic.
Definition: pattern.hpp:82
Definition: wrap_type.hpp:29
const NodeTypeInfo & get_type_info() const override
The Intel nGraph C++ API.
Definition: attribute_adapter.hpp:28