24 #include "ngraph/factory.hpp"
25 #include "ngraph/ngraph_visibility.hpp"
26 #include "ngraph/node.hpp"
33 static std::mutex& get_mutex();
37 std::set<NodeTypeInfo>::size_type size()
const
39 std::lock_guard<std::mutex> guard(get_mutex());
40 return m_op_types.size();
45 FactoryRegistry<Node>::Factory factory)
47 std::lock_guard<std::mutex> guard(get_mutex());
48 m_op_types.insert(type_info);
49 m_name_type_info_map[name] = type_info;
50 m_case_insensitive_type_info_map[to_upper_name(name)] = type_info;
51 m_factory_registry.register_factory(type_info, factory);
55 template <
typename OP_TYPE>
62 template <
typename OP_TYPE>
65 insert<OP_TYPE>(OP_TYPE::type_info.name);
68 const std::set<NodeTypeInfo>& get_types_info()
const {
return m_op_types; }
78 std::lock_guard<std::mutex> guard(get_mutex());
79 return m_op_types.find(type_info) != m_op_types.end();
83 template <
typename OP_TYPE>
86 return contains_type(OP_TYPE::type_info);
92 std::lock_guard<std::mutex> guard(get_mutex());
93 return m_name_type_info_map.find(name) != m_name_type_info_map.end();
99 std::lock_guard<std::mutex> guard(get_mutex());
100 return m_case_insensitive_type_info_map.find(to_upper_name(name)) !=
101 m_case_insensitive_type_info_map.end();
107 std::lock_guard<std::mutex> guard(get_mutex());
108 return m_op_types.find(node->
get_type_info()) != m_op_types.end();
111 const std::set<NodeTypeInfo>& get_type_info_set()
const {
return m_op_types; }
114 static std::string to_upper_name(
const std::string& name)
116 std::string upper_name = name;
118 std::transform(upper_name.begin(),
121 [&loc](
char c) { return std::toupper(c, loc); });
126 std::set<NodeTypeInfo> m_op_types;
127 std::map<std::string, NodeTypeInfo> m_name_type_info_map;
128 std::map<std::string, NodeTypeInfo> m_case_insensitive_type_info_map;
131 const NGRAPH_API OpSet& get_opset1();
132 const NGRAPH_API OpSet& get_opset2();
133 const NGRAPH_API OpSet& get_opset3();
134 const NGRAPH_API OpSet& get_opset4();
135 const NGRAPH_API OpSet& get_opset5();
136 const NGRAPH_API OpSet& get_opset6();
Registry of factories that can construct objects derived from BASE_TYPE.
Definition: factory.hpp:32
virtual const type_info_t & get_type_info() const =0
Run-time opset information.
Definition: opset.hpp:32
void insert(const std::string &name)
Insert OP_TYPE into the opset with a special name and the default factory.
Definition: opset.hpp:56
ngraph::Node * create(const std::string &name) const
Create the op named name using it's factory.
void insert()
Insert OP_TYPE into the opset with the default name and factory.
Definition: opset.hpp:63
void insert(const std::string &name, const NodeTypeInfo &type_info, FactoryRegistry< Node >::Factory factory)
Insert an op into the opset with a particular name and factory.
Definition: opset.hpp:43
bool contains_type_insensitive(const std::string &name) const
Return true if name is in the opset.
Definition: opset.hpp:97
ngraph::Node * create_insensitive(const std::string &name) const
Create the op named name using it's factory.
bool contains_op_type(const Node *node) const
Return true if node's type is in the opset.
Definition: opset.hpp:105
bool contains_type(const NodeTypeInfo &type_info) const
Return true if OP_TYPE is in the opset.
Definition: opset.hpp:76
bool contains_type() const
Return true if OP_TYPE is in the opset.
Definition: opset.hpp:84
bool contains_type(const std::string &name) const
Return true if name is in the opset.
Definition: opset.hpp:90
The Intel nGraph C++ API.
Definition: attribute_adapter.hpp:28