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

Registry for library node dispatchers. More...

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

Public Member Functions

void register_library_node_dispatcher (std::string library_node_code, LibraryNodeDispatcherFn fn)
void register_library_node_dispatcher (const data_flow::LibraryNodeCode &code, const data_flow::ImplementationType &impl_type, LibraryNodeDispatcherFn fn)
 Designed to make the way the lookup of impl-type specific dispatchers work implementation detail.
LibraryNodeDispatcherFn get_library_node_dispatcher (std::string library_node_code) const
size_t size () const

Static Public Member Functions

static LibraryNodeDispatcherRegistry & instance ()

Detailed Description

Registry for library node dispatchers.

This registry maps library node codes (operation identifiers like "GEMM", "Memcpy") to dispatcher factory functions. Each library node type can register a custom dispatcher that generates the appropriate code for that operation.

The registry is thread-safe and follows the singleton pattern. Dispatchers are registered at program startup and looked up during code generation.

Usage

Register a dispatcher:

"MyOperation",
[](LanguageExtension& lang, const Function& func,
return std::make_unique<MyOperationDispatcher>(lang, func, dfg, node);
}
);
Definition function.h:43
Definition language_extension.h:39
void register_library_node_dispatcher(std::string library_node_code, LibraryNodeDispatcherFn fn)
Definition node_dispatcher_registry.h:264
static LibraryNodeDispatcherRegistry & instance()
Definition node_dispatcher_registry.h:251
Definition data_flow_graph.h:29
Base class for all library nodes in the dataflow graph.
Definition library_node.h:106

Lookup a dispatcher:

.get_library_node_dispatcher("MyOperation");
if (factory) {
auto dispatcher = factory(lang, func, dfg, node);
// Use dispatcher...
}
LibraryNodeDispatcherFn get_library_node_dispatcher(std::string library_node_code) const
Definition node_dispatcher_registry.h:291

Member Function Documentation

◆ get_library_node_dispatcher()

LibraryNodeDispatcherFn sdfg::codegen::LibraryNodeDispatcherRegistry::get_library_node_dispatcher ( std::string library_node_code) const
inline

◆ instance()

LibraryNodeDispatcherRegistry & sdfg::codegen::LibraryNodeDispatcherRegistry::instance ( )
inlinestatic

◆ register_library_node_dispatcher() [1/2]

void sdfg::codegen::LibraryNodeDispatcherRegistry::register_library_node_dispatcher ( const data_flow::LibraryNodeCode & code,
const data_flow::ImplementationType & impl_type,
LibraryNodeDispatcherFn fn )
inline

Designed to make the way the lookup of impl-type specific dispatchers work implementation detail.

Parameters
codeJust the LibraryNodeCode
impl_typeThe ImplementationType
fn

◆ register_library_node_dispatcher() [2/2]

void sdfg::codegen::LibraryNodeDispatcherRegistry::register_library_node_dispatcher ( std::string library_node_code,
LibraryNodeDispatcherFn fn )
inline
Parameters
library_node_codeCompound string of LibraryNodeCode + "::" + ImplementationType
Deprecated
to decouple how this registry indexes from its users

◆ size()

size_t sdfg::codegen::LibraryNodeDispatcherRegistry::size ( ) const
inline

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