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_name_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();