docc 0.8.3 (0d44999b)
C++ API Reference
Loading...
Searching...
No Matches
dot_visualizer.h
Go to the documentation of this file.
1#pragma once
2
3#include <string>
4
14
15namespace sdfg {
16namespace visualizer {
17
18class DotVisualizer : public Visualizer {
19private:
20 struct SeqChainElem {
21 const Element* element;
22 std::string node_id;
23 std::string cluster_id;
24 };
25 struct SeqChainScope {
26 std::optional<SeqChainElem> last_chain_elem;
27 std::optional<SeqChainElem> last2_chain_elem;
28 };
29 std::list<SeqChainScope> seq_scope_stack_{SeqChainScope()};
30 bool show_block_ids = true;
31
32 void register_chain_elem(const Element& element, const std::string& node_id, const std::string& cluster_id);
33 void enter_scope();
34 void exit_scope();
35
36 virtual void visualizeSDFG(const SDFG& sdfg) override;
37
38 virtual void visualizeStructuredSDFG(const StructuredSDFG& sdfg) override;
39 virtual void visualizeBlock(const StructuredSDFG& sdfg, const structured_control_flow::Block& block) override;
40 virtual void visualizeAssignmentBlock(
42 ) override;
43 virtual void visualizeSequence(const StructuredSDFG& sdfg, const structured_control_flow::Sequence& sequence) override;
44 virtual void visualizeIfElse(const StructuredSDFG& sdfg, const structured_control_flow::IfElse& if_else) override;
45 virtual void visualizeWhile(const StructuredSDFG& sdfg, const structured_control_flow::While& while_loop) override;
46 virtual void visualizeFor(const StructuredSDFG& sdfg, const structured_control_flow::For& loop) override;
47 virtual void visualizeReturn(const StructuredSDFG& sdfg, const structured_control_flow::Return& return_node) override;
48 virtual void visualizeBreak(const StructuredSDFG& sdfg, const structured_control_flow::Break& break_node) override;
49 virtual void
50 visualizeContinue(const StructuredSDFG& sdfg, const structured_control_flow::Continue& continue_node) override;
51 virtual void visualizeMap(const StructuredSDFG& sdfg, const structured_control_flow::Map& map_node) override;
52 virtual void visualizeReduce(const StructuredSDFG& sdfg, const structured_control_flow::Reduce& reduce_node) override;
53
54 virtual void visualizeDataFlowGraph(const std::string& id, const data_flow::DataFlowGraph& dfg) override;
55
56public:
58
59 static void writeToFile(const Function& sdfg, const std::filesystem::path& file);
60 static void writeToFile(const Function& sdfg, const std::filesystem::path* file = nullptr);
61};
62
63} // namespace visualizer
64} // namespace sdfg
Definition element.h:159
Definition function.h:43
Definition sdfg.h:34
Definition structured_sdfg.h:30
Definition data_flow_graph.h:29
A control flow node representing a basic block with dataflow computations.
Definition block.h:42
Represents a break statement that exits the innermost loop.
Definition while.h:93
Represents a continue statement that skips to the next loop iteration.
Definition while.h:128
Represents a traditional for-loop with sequential execution.
Definition for.h:43
Represents a conditional if-else control flow node with multiple cases.
Definition if_else.h:47
Represents a parallel map loop with configurable scheduling.
Definition map.h:47
Represents a loop with an associative/commutative reduction carried dependency.
Definition reduce.h:106
Represents a return statement that exits the function with a value.
Definition return.h:32
A sequential container of control flow nodes.
Definition sequence.h:52
Represents a while-loop with condition-controlled iteration.
Definition while.h:37
Definition dot_visualizer.h:18
static void writeToFile(const Function &sdfg, const std::filesystem::path &file)
Visualizer(const Function &sdfg)
Definition visualizer.h:68
static void writeToFile(const Function &sdfg, const std::filesystem::path *file=nullptr)
Visualizer(const Function &sdfg)
Definition visualizer.h:68
Definition dot_visualizer.h:16
Definition analysis.h:7