9 #include <boost/core/ignore_unused.hpp> 13 namespace optimizations
16 template <
typename Comparable>
26 boost::ignore_unused(graph);
29 if (!child.IsOutputUnconnected())
35 auto& comparableChild = *boost::polymorphic_downcast<Comparable*>(&child);
37 Layer* lowestPriorityChild = &child;
40 Layer* sibling = &it->GetOwningLayer();
41 if ((sibling != lowestPriorityChild) && comparableChild.IsEqual(*sibling))
43 if (sibling->
GetPriority() < lowestPriorityChild->GetPriority())
49 for (
auto lowestPriorityChildOut = lowestPriorityChild->BeginOutputSlots();
50 lowestPriorityChildOut != lowestPriorityChild->EndOutputSlots(); ++lowestPriorityChildOut)
52 siblingOut->MoveAllConnections(*lowestPriorityChildOut);
SquashEqualSiblingsImpl()=default
LayerPriority GetPriority() const
~SquashEqualSiblingsImpl()=default
unsigned int GetNumConnections() const override
void Run(Graph &graph, InputSlot &connection) const
void swap(OriginsDescriptor &first, OriginsDescriptor &second)
const std::vector< InputSlot * > & GetConnections() const
std::vector< OutputSlot >::iterator BeginOutputSlots()