FastMM documentation
FastMM C++ API 0.6.0
Public headers, tier 1 and tier 2
Loading...
Searching...
No Matches
fastmm::StrategyRegistry Class Reference

#include <fastmm/strategies/registry.hpp>

Public Member Functions

AddResult try_add (std::string_view name, const ParamSchema *schema, TransportKind kind, StrategyEntry::Factory factory, StrategyEntry::PublisherFactory publisher=nullptr)
 Registers factory for one transport kind of name.
 
const StrategyEntry * find (std::string_view name) const noexcept
 
const std::vector< StrategyEntry > & entries () const noexcept
 
std::unique_ptr< IEngineRunner > make (std::string_view name, TransportKind kind, RunnerDeps &deps) const
 Builds a runner; null when name or its factory for kind is missing, or the factory refuses (wrong backend).
 

Static Public Member Functions

static StrategyRegistry & instance ()
 The registry the CLIs, run_backtest(cfg, name), replay_journal and Python use.
 

Member Function Documentation

◆ instance()

static StrategyRegistry & fastmm::StrategyRegistry::instance ( )
inlinestatic

The registry the CLIs, run_backtest(cfg, name), replay_journal and Python use.

Not thread-safe for writers: register before starting threads. Tests use a local registry.

◆ try_add()

AddResult fastmm::StrategyRegistry::try_add ( std::string_view  name,
const ParamSchema *  schema,
TransportKind  kind,
StrategyEntry::Factory  factory,
StrategyEntry::PublisherFactory  publisher = nullptr 
)
inline

Registers factory for one transport kind of name.

Registering the same schema and factory again does nothing (AlreadyPresent); anything that would replace or disagree with an existing registration changes nothing and returns Conflict.

◆ find()

const StrategyEntry * fastmm::StrategyRegistry::find ( std::string_view  name) const
inlinenoexcept

◆ entries()

const std::vector< StrategyEntry > & fastmm::StrategyRegistry::entries ( ) const
inlinenoexcept

◆ make()

std::unique_ptr< IEngineRunner > fastmm::StrategyRegistry::make ( std::string_view  name,
TransportKind  kind,
RunnerDeps &  deps 
) const
inline

Builds a runner; null when name or its factory for kind is missing, or the factory refuses (wrong backend).

Throws std::invalid_argument on bad parameters (startup only).