3#include <boost/lexical_cast.hpp>
Element(size_t element_id, const DebugInfo &debug_info)
size_t element_id() const
const DebugInfo & debug_info() const
virtual ElementType type_id() const =0
Returns the type of the element.
Note: Even though the class references unique_ptr, it will never delete an SDFG it has a reference to...
Definition structured_sdfg_builder.h:44
static std::vector< ControlFlowNode * > parent_chain(ControlFlowNode &child)
ControlFlowNode(size_t element_id, const DebugInfo &debug_info, ControlFlowNode *parent)
Protected constructor for control flow nodes with parent.
ControlFlowNode * get_parent()
ControlFlowNode * parent_
Definition control_flow_node.h:48
ControlFlowNode(const ControlFlowNode &node)=delete
static bool classof(const Element &element)
LLVM-style RTTI predicate: true if element is a ControlFlowNode.
Definition control_flow_node.h:66
static constexpr ElementType TypeGroup
Bitmask of all concrete ElementTypes that are ControlFlowNodes.
Definition control_flow_node.h:60
const ControlFlowNode * get_parent() const
virtual ~ControlFlowNode()=default
ControlFlowNode & operator=(const ControlFlowNode &)=delete
virtual bool accept(visitor::ActualStructuredSDFGVisitor &visitor)=0
Visitor for Structured SDFG (not a builder).
Definition structured_sdfg_visitor.h:71
Definition function_builder.h:10
Definition language_extension.h:18
Definition control_flow_node.h:16
constexpr bool is_a(ElementType type, ElementType mask)
Tests whether type is contained in the category mask (efficient, branch-free type check).
Definition element.h:107
ElementType
Definition element.h:72
@ IfElse
Definition element.h:84
@ For
Definition element.h:88
@ While
Definition element.h:85
@ Sequence
Definition element.h:82
@ Map
Definition element.h:89
@ Return
Definition element.h:80
@ Continue
Definition element.h:86
@ Block
Definition element.h:81
@ Break
Definition element.h:87
@ Reduce
Definition element.h:90
Symbolic system for integer-based symbol analysis.