19 #include "ngraph/node.hpp"
20 #include "ngraph/pattern/op/pattern.hpp"
31 static constexpr NodeTypeInfo type_info{
"patternAnyType", 0};
34 explicit WrapType(NodeTypeInfo wrapped_type,
35 const ValuePredicate& pred =
36 [](
const Output<Node>& output) {
return true; },
37 const OutputVector& input_values = {})
38 : Pattern(input_values, pred)
39 , m_wrapped_type(wrapped_type)
44 bool match_value(pattern::Matcher* matcher,
45 const Output<Node>& pattern_value,
46 const Output<Node>& graph_value)
override;
48 NodeTypeInfo get_wrapped_type()
const {
return m_wrapped_type; }
50 NodeTypeInfo m_wrapped_type;
55 std::shared_ptr<Node> wrap_type(
const OutputVector& inputs,
56 const pattern::op::ValuePredicate& pred)
58 static_assert(std::is_base_of<Node, T>::value,
"Unexpected template type");
59 return std::make_shared<op::WrapType>(T::type_info, pred, inputs);
63 std::shared_ptr<Node> wrap_type(
const OutputVector& inputs = {})
65 return wrap_type<T>(inputs, [](
const Output<Node>& output) {
return true; });
69 std::shared_ptr<Node> wrap_type(
const pattern::op::ValuePredicate& pred)
71 return wrap_type<T>({}, pred);