Fixed KW warning and review issues (#2263)
authorIlya Churaev <ilya.churaev@intel.com>
Wed, 16 Sep 2020 12:33:23 +0000 (15:33 +0300)
committerGitHub <noreply@github.com>
Wed, 16 Sep 2020 12:33:23 +0000 (15:33 +0300)
ngraph/core/include/ngraph/node.hpp
ngraph/core/reference/include/ngraph/runtime/reference/gather.hpp
ngraph/core/src/node.cpp

index 8a9c92a..31c2ca2 100644 (file)
@@ -155,9 +155,11 @@ namespace ngraph
 
     protected:
         /// \brief Construct an unitialized Node
-        Node() {}
+        Node() = default;
         /// \brief Copying a node
         Node(const Node&);
+        /// \brief Assignment operator
+        Node& operator=(const Node&);
 
         /// \brief Construct an unitialized Node
         /// \param output_size Number of outputs for this node
index 4ad4aa9..3dbfecf 100644 (file)
@@ -149,6 +149,8 @@ namespace ngraph
                 auto out_outer_coord_iter = out_outer_transform.begin();
                 for (const Coordinate& params_outer_coord : params_outer_transform)
                 {
+                    if (out_outer_coord_iter == out_outer_transform.end())
+                        break;
                     const T* params_prime =
                         &params[params_outer_transform.index(params_outer_coord)];
                     T* out_outer = &out[out_outer_transform.index(*out_outer_coord_iter)];
@@ -156,6 +158,8 @@ namespace ngraph
                     auto out_inner_coord_iter = out_inner_transform.begin();
                     for (const Coordinate& indices_outer_coord : indices_outer_transform)
                     {
+                        if (out_inner_coord_iter == out_inner_transform.end())
+                            break;
                         const U* indices_prime =
                             &indices[indices_outer_transform.index(indices_outer_coord)];
                         T* out_prime = &out_outer[out_inner_transform.index(*out_inner_coord_iter)];
index dd66060..487b410 100644 (file)
@@ -55,6 +55,26 @@ Node::Node(const Node& node)
     }
 }
 
+Node& Node::operator=(const Node& node)
+{
+    this->m_control_dependents = node.m_control_dependents;
+    this->m_control_dependencies = node.m_control_dependencies;
+    this->m_instance_id = m_next_instance_id.fetch_add(1);
+    this->m_friendly_name = node.m_friendly_name;
+    this->m_provenance_tags = node.m_provenance_tags;
+    this->m_provenance_group = node.m_provenance_group;
+    this->m_inputs = node.m_inputs;
+    this->m_op_annotations = node.m_op_annotations;
+    this->m_rt_info = node.m_rt_info;
+    // cannot do it without copying node.m_inputs first due to too limiting const qualifiers
+    for (auto& input : m_inputs)
+    {
+        input = descriptor::Input(this, input.get_index(), input.get_output());
+        input.get_output().add_input(&input);
+    }
+    return *this;
+}
+
 Node::Node(size_t output_size)
     : Node()
 {