diff --git a/include/aidge/graph/OpArgs.hpp b/include/aidge/graph/OpArgs.hpp index bf14d39af34c2e14d98906a663edf335c30c6f12..70a431b5621270a6b6083a436aba145ce9dafbf3 100644 --- a/include/aidge/graph/OpArgs.hpp +++ b/include/aidge/graph/OpArgs.hpp @@ -12,8 +12,10 @@ #ifndef AIDGE_CORE_GRAPH_OPARGS_H_ #define AIDGE_CORE_GRAPH_OPARGS_H_ -#include <memory> #include <cassert> +#include <memory> +#include <string> +#include <vector> namespace Aidge { class Node; @@ -56,20 +58,22 @@ public: * one in a sequential way. Nodes linked with the Sequential graph * generation instructions must have a single output. * Sequential(A, B, C) returns A-->B-->C. - * @param inputs List of Node and GraphView to link sequentially. + * @param[in] inputs List of Node and GraphView to link sequentially. + * @param[in] name : name of the graphview to return * @return std::shared_ptr<GraphView> Pointer to the generated view. */ -std::shared_ptr<GraphView> Sequential(std::vector<OpArgs> inputs); +std::shared_ptr<GraphView> Sequential(std::vector<OpArgs> inputs, std::string name = ""); ///////////////////////////// // Parallel /** * @brief Creates a GraphView with provided Nodes without linking them. - * @param inputs List of Node and GraphView to link sequentially. + * @param[in] inputs List of Node and GraphView to link sequentially. + * @param[in] name : name of the graphview to return * @return std::shared_ptr<GraphView> pointer to the generated view. */ -std::shared_ptr<GraphView> Parallel(std::vector<OpArgs> inputs); +std::shared_ptr<GraphView> Parallel(std::vector<OpArgs> inputs, std::string name = ""); ///////////////////////////// // Residual @@ -81,9 +85,10 @@ std::shared_ptr<GraphView> Parallel(std::vector<OpArgs> inputs); * generation instructions must have a single output. * Recursive(A, B, C) returns A-->B-->C , A-->C. * @param inputs List of Node and GraphView to link sequentially. + * @param[in] name : name of the graphview to return * @return std::shared_ptr<GraphView> pointer to the generated view. */ -std::shared_ptr<GraphView> Residual(std::vector<OpArgs> inputs); +std::shared_ptr<GraphView> Residual(std::vector<OpArgs> inputs, std::string name = ""); } diff --git a/python_binding/graph/pybind_OpArgs.cpp b/python_binding/graph/pybind_OpArgs.cpp index 6ea89f91945ac44f2142c5b9e8440b11ec6a1663..a129ca51c27367ceb1f7518ca85afe134e98cc4a 100644 --- a/python_binding/graph/pybind_OpArgs.cpp +++ b/python_binding/graph/pybind_OpArgs.cpp @@ -31,9 +31,9 @@ void init_OpArgs(py::module& m){ py::implicitly_convertible<Node, OpArgs>(); py::implicitly_convertible<GraphView, OpArgs>(); - m.def("sequential", &Sequential, py::arg("inputs")); - m.def("parallel", &Parallel, py::arg("inputs")); - m.def("residual", &Residual, py::arg("inputs")); + m.def("sequential", &Sequential, py::arg("inputs"), py::arg("name") = ""); + m.def("parallel", &Parallel, py::arg("inputs"), py::arg("name") = ""); + m.def("residual", &Residual, py::arg("inputs"), py::arg("name") = ""); } } diff --git a/src/graph/OpArgs.cpp b/src/graph/OpArgs.cpp index cffd14c35a0fe11055198236eba6e344c0ff782c..6fe2320ea0ed6a71b6c4fad6a3fab4e1b6472abf 100644 --- a/src/graph/OpArgs.cpp +++ b/src/graph/OpArgs.cpp @@ -9,16 +9,20 @@ * ********************************************************************************/ -#include "aidge/graph/Node.hpp" -#include "aidge/graph/GraphView.hpp" #include "aidge/graph/OpArgs.hpp" +#include <memory> +#include <string> + +#include "aidge/graph/GraphView.hpp" +#include "aidge/graph/Node.hpp" + Aidge::OpArgs::OpArgs(const OpArgs&) = default; Aidge::OpArgs& Aidge::OpArgs::operator=(const OpArgs&) = default; Aidge::OpArgs::~OpArgs() noexcept = default; -std::shared_ptr<Aidge::GraphView> Aidge::Sequential(std::vector<OpArgs> inputs) { - std::shared_ptr<GraphView> gv = std::make_shared<GraphView>(); +std::shared_ptr<Aidge::GraphView> Aidge::Sequential(std::vector<OpArgs> inputs, std::string name) { + std::shared_ptr<GraphView> gv = std::make_shared<GraphView>(name); for (const OpArgs& elt : inputs) { if(elt.node() != nullptr) { // Connect the first output (ordered) of each output node (ordered) @@ -61,8 +65,8 @@ std::shared_ptr<Aidge::GraphView> Aidge::Sequential(std::vector<OpArgs> inputs) } -std::shared_ptr<Aidge::GraphView> Aidge::Parallel(std::vector<OpArgs> inputs) { - std::shared_ptr<GraphView> gv = std::make_shared<GraphView>(); +std::shared_ptr<Aidge::GraphView> Aidge::Parallel(std::vector<OpArgs> inputs, std::string name) { + std::shared_ptr<GraphView> gv = std::make_shared<GraphView>(name); for(const OpArgs& elt : inputs) { if (elt.node()!=nullptr) gv->add(elt.node()); @@ -73,8 +77,8 @@ std::shared_ptr<Aidge::GraphView> Aidge::Parallel(std::vector<OpArgs> inputs) { } -std::shared_ptr<Aidge::GraphView> Aidge::Residual(std::vector<OpArgs> inputs) { - std::shared_ptr<GraphView> gv = Sequential(inputs); +std::shared_ptr<Aidge::GraphView> Aidge::Residual(std::vector<OpArgs> inputs, std::string name) { + std::shared_ptr<GraphView> gv = Sequential(inputs,name); AIDGE_ASSERT(gv->outputNodes().size() == 1U, "Residual(): Zero or more than one output Node for the GraphView, don't know which one to choose from for the residual connection"); std::shared_ptr<Node> lastNode = *gv->outputNodes().begin();