void Graph::ReplaceSubGraphConnections(const SubGraph& subGraph, IConnectableLayer* substituteLayer)
{
BOOST_ASSERT(substituteLayer != nullptr);
- BOOST_ASSERT_MSG(std::find(m_Layers.begin(), m_Layers.end(), substituteLayer) != m_Layers.end(),
- "Substitute layer is not a member of graph");
+ // Create a new sub-graph with only the given layer, using
+ // the given sub-graph as a reference of which parent graph to use
SubGraph substituteSubGraph(subGraph, substituteLayer);
ReplaceSubGraphConnections(subGraph, substituteSubGraph);
}
/// and relinking them via an intermediary copy layers.
void AddCopyLayers();
+ /// Substitutes the given sub-graph with either a new layer or a new sub-graph.
+ /// In either case, the given layer or all the layers in the given sub-graph must belong to this graph.
void SubstituteSubGraph(std::unique_ptr<SubGraph> subGraph, IConnectableLayer* substituteLayer);
void SubstituteSubGraph(std::unique_ptr<SubGraph> subGraph, const SubGraph& substituteSubGraph);
/// Updates this sub-graph with the contents of the whole given graph.
void Update(Graph& graph);
- /// Adds a new layer, of type LayerType, to the graph this sub-graph is a view of.
+ /// Adds a new layer, of type LayerType, to the parent graph of this sub-graph.
template <typename LayerT, typename... Args>
LayerT* AddLayer(Args&&... args) const;
private:
void CheckSubGraph();
+ /// The list of pointers to the input slots of the parent graph.
InputSlots m_InputSlots;
+
+ /// The list of pointers to the output slots of the parent graph.
OutputSlots m_OutputSlots;
+
+ /// The list of pointers to the layers of the parent graph.
Layers m_Layers;
/// Pointer to the graph this sub-graph is a view of.
infoPtr->CollectNonSelectedOutputSlots(outputs, selector);
layers.push_back(infoPtr->m_Layer);
}
+ // Create a new sub-graph with the new lists of input/output slots and layer, using
+ // the given sub-graph as a reference of which parent graph to use
result.emplace_back(std::make_unique<SubGraph>(subGraph,
std::move(inputs),
std::move(outputs),