Skip to content
Snippets Groups Projects
Commit 45376adb authored by Charles Villard's avatar Charles Villard
Browse files

edit: Node: fix optional inputs in node treated as input graph

parent c312252d
No related branches found
No related tags found
No related merge requests found
......@@ -229,10 +229,10 @@ public:
if ((inputCategory(i) == InputCategory::Data || inputCategory(i) == InputCategory::OptionalData)
&& input(i).second == gk_IODefaultIndex)
{
break;
return i;
}
}
return (i < nbInputs()) ? i : gk_IODefaultIndex;
return gk_IODefaultIndex;
}
......
......@@ -145,7 +145,9 @@ bool Aidge::Node::valid() const {
Aidge::IOIndex_t Aidge::Node::getNbFreeDataInputs() const {
IOIndex_t nbFreeDataIn = 0;
for (IOIndex_t i = 0; i < nbInputs(); ++i) {
if (input(i).second == gk_IODefaultIndex) {
if ((inputCategory(i) == InputCategory::Data
|| inputCategory(i) == InputCategory::OptionalData)
&& input(i).second == gk_IODefaultIndex) {
++nbFreeDataIn;
}
}
......@@ -285,10 +287,17 @@ void Aidge::Node::addChild(std::shared_ptr<Node> otherNode, const IOIndex_t outI
void Aidge::Node::addChild(std::shared_ptr<GraphView> otherView, const IOIndex_t outId,
std::pair<std::shared_ptr<Node>, IOIndex_t> otherInId) {
if (!otherInId.first) {
AIDGE_ASSERT(otherView->inputNodes().size() == 1U,
AIDGE_ASSERT(otherView->getNbFreeDataInputs() == 1U,
"Input node of GraphView {} need to be specified, because it has more than one input ({} inputs), when trying to add it as a child of node {} (of type {})",
otherView->name(), otherView->inputNodes().size(), name(), type());
otherInId.first = *(otherView->inputNodes().begin());
otherInId.first = *(std::find_if(
otherView->inputNodes().begin(),
otherView->inputNodes().end(),
[](const auto &node) {
return node->getFirstFreeDataInput() != gk_IODefaultIndex;
}
));
}
otherInId.second = (otherInId.second != gk_IODefaultIndex)
? otherInId.second
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment