21#ifndef HEDGEHOG_PRINTER_H
22#define HEDGEHOG_PRINTER_H
34namespace abstraction {
36#ifndef DOXYGEN_SHOULD_SKIP_THIS
54 std::unique_ptr<std::set<core::abstraction::NodeAbstraction const * >>
59 Printer() :
uniqueNodes_(std::make_unique<std::set<core::abstraction::NodeAbstraction const * >>()) {}
93 std::string
const &edgeType,
94 size_t const &queueSize,
size_t const &maxQueueSize) = 0;
100 std::vector<core::abstraction::NodeAbstraction *>
const &group) = 0;
Printer abstraction to get a snapshot of the metrics of the Hedgehog graph.
Printer()
Default constructor.
std::unique_ptr< std::set< core::abstraction::NodeAbstraction const * > > uniqueNodes_
Uniques Nodes registered (already printed)
virtual void printSource(core::abstraction::NodeAbstraction const *source)=0
Print outer graph source.
virtual void printGraphFooter(core::abstraction::GraphNodeAbstraction const *graph)=0
Print graph footer.
bool registerNode(core::abstraction::NodeAbstraction const *nodeAbstraction)
Register a visited node.
virtual void printSink(core::abstraction::NodeAbstraction const *sink)=0
Print outer graph sink.
virtual void printExecutionPipelineFooter()=0
Print execution pipeline footer.
virtual void printGroup(core::abstraction::NodeAbstraction *representative, std::vector< core::abstraction::NodeAbstraction * > const &group)=0
Print group of nodes.
virtual void printNodeInformation(core::abstraction::NodeAbstraction const *node)=0
Print node information.
virtual void printEdge(core::abstraction::NodeAbstraction const *from, core::abstraction::NodeAbstraction const *to, std::string const &edgeType, size_t const &queueSize, size_t const &maxQueueSize)=0
Print edge information.
virtual ~Printer()=default
Default destructor.
virtual void printGraphHeader(core::abstraction::GraphNodeAbstraction const *graph)=0
Print graph header.
virtual void printExecutionPipelineHeader(core::abstraction::ExecutionPipelineNodeAbstraction const *ep, core::abstraction::NodeAbstraction const *switchNode)=0
Print execution pipeline header.
Abstraction for cores/nodes that can form groups.
Abstraction specialized for the execution pipeline.
Base graph node abstraction.
Base core node abstraction.