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
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 =
¶ms[params_outer_transform.index(params_outer_coord)];
T* out_outer = &out[out_outer_transform.index(*out_outer_coord_iter)];
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)];
}
}
+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()
{