19#ifndef HEDGEHOG_CLONABLE_ABSTRACTION_H_
20#define HEDGEHOG_CLONABLE_ABSTRACTION_H_
29namespace abstraction {
34 std::unique_ptr<std::vector<std::shared_ptr<abstraction::NodeAbstraction>>>
54 virtual std::shared_ptr<abstraction::NodeAbstraction>
clone(
55 std::map<
NodeAbstraction *, std::shared_ptr<NodeAbstraction>> &correspondenceMap) = 0;
Core abstraction for clonable nodes, nodes duplicated by execution pipeline.
std::unique_ptr< std::vector< std::shared_ptr< abstraction::NodeAbstraction > > > cloneStorage_
Storage to cloned cores.
ClonableAbstraction()
Default constructor.
void storeClone(std::shared_ptr< abstraction::NodeAbstraction > const &clone)
Store a core clone.
virtual void duplicateEdge(std::map< NodeAbstraction *, std::shared_ptr< NodeAbstraction > > &mapping)=0
Duplicate the output edges of a node.
virtual ~ClonableAbstraction()=default
Default destructor.
virtual std::shared_ptr< abstraction::NodeAbstraction > clone(std::map< NodeAbstraction *, std::shared_ptr< NodeAbstraction > > &correspondenceMap)=0
Clone virtual function.
Base core node abstraction.