docc 0.8.3 (0d44999b)
C++ API Reference
Loading...
Searching...
No Matches
sdfg::codegen::NodeDispatcher Class Referenceabstract

Base class for dispatching control flow nodes to code. More...

#include <sdfg/codegen/dispatchers/node_dispatcher.h>

Inheritance diagram for sdfg::codegen::NodeDispatcher:
[legend]

Public Member Functions

 NodeDispatcher (LanguageExtension &language_extension, StructuredSDFG &sdfg, analysis::AnalysisManager &analysis_manager, structured_control_flow::ControlFlowNode &node, InstrumentationPlan &instrumentation_plan, ArgCapturePlan &arg_capture_plan)
virtual ~NodeDispatcher ()=default
virtual void dispatch_node (PrettyPrinter &main_stream, PrettyPrinter &globals_stream, CodeSnippetFactory &library_snippet_factory)=0
InstrumentationInfo instrumentation_info_for_group () const
virtual void dispatch (PrettyPrinter &main_stream, PrettyPrinter &globals_stream, CodeSnippetFactory &library_snippet_factory)

Protected Member Functions

virtual bool begin_node (PrettyPrinter &stream)
virtual void end_node (PrettyPrinter &stream, bool has_declaration)
virtual InstrumentationInfo instrumentation_info () const
 Bad design.

Protected Attributes

LanguageExtension & language_extension_
StructuredSDFG & sdfg_
InstrumentationPlan & instrumentation_plan_
ArgCapturePlan & arg_capture_plan_
analysis::AnalysisManager & analysis_manager_

Detailed Description

Base class for dispatching control flow nodes to code.

NodeDispatcher provides the interface for generating code from SDFG control flow nodes. Each node type has a corresponding dispatcher implementation that knows how to generate appropriate code for that node.

Constructor & Destructor Documentation

◆ NodeDispatcher()

sdfg::codegen::NodeDispatcher::NodeDispatcher ( LanguageExtension & language_extension,
StructuredSDFG & sdfg,
analysis::AnalysisManager & analysis_manager,
structured_control_flow::ControlFlowNode & node,
InstrumentationPlan & instrumentation_plan,
ArgCapturePlan & arg_capture_plan )

◆ ~NodeDispatcher()

virtual sdfg::codegen::NodeDispatcher::~NodeDispatcher ( )
virtualdefault

Member Function Documentation

◆ begin_node()

virtual bool sdfg::codegen::NodeDispatcher::begin_node ( PrettyPrinter & stream)
protectedvirtual

◆ dispatch()

virtual void sdfg::codegen::NodeDispatcher::dispatch ( PrettyPrinter & main_stream,
PrettyPrinter & globals_stream,
CodeSnippetFactory & library_snippet_factory )
virtual

◆ dispatch_node()

◆ end_node()

virtual void sdfg::codegen::NodeDispatcher::end_node ( PrettyPrinter & stream,
bool has_declaration )
protectedvirtual

◆ instrumentation_info()

virtual InstrumentationInfo sdfg::codegen::NodeDispatcher::instrumentation_info ( ) const
protectedvirtual

Bad design.

We already have fields in this class and have to bind an instance to a single node. Just set a field to sth. of the instrumentation plan where the node can register more details. But this is a breaking change

Reimplemented in sdfg::codegen::ForDispatcher, sdfg::codegen::SchedTypeMapDispatcher, sdfg::codegen::SchedTypeReduceDispatcher, sdfg::codegen::SequentialMapDispatcher, sdfg::codegen::SequentialReduceDispatcher, sdfg::codegen::WhileDispatcher, sdfg::cuda::CUDAMapDispatcher, sdfg::gpu::GPUOffloadBaseDispatcher, sdfg::gpu::GPUReduceDispatcher, sdfg::omp::OMPMapDispatcher, sdfg::rocm::ROCMMapDispatcher, and sdfg::vectorize::VectorizeDispatcher.

◆ instrumentation_info_for_group()

InstrumentationInfo sdfg::codegen::NodeDispatcher::instrumentation_info_for_group ( ) const

Member Data Documentation

◆ analysis_manager_

analysis::AnalysisManager& sdfg::codegen::NodeDispatcher::analysis_manager_
protected

◆ arg_capture_plan_

ArgCapturePlan& sdfg::codegen::NodeDispatcher::arg_capture_plan_
protected

◆ instrumentation_plan_

InstrumentationPlan& sdfg::codegen::NodeDispatcher::instrumentation_plan_
protected

◆ language_extension_

LanguageExtension& sdfg::codegen::NodeDispatcher::language_extension_
protected

◆ sdfg_

StructuredSDFG& sdfg::codegen::NodeDispatcher::sdfg_
protected

The documentation for this class was generated from the following file: