FastMM documentation
FastMM C++ API 0.6.0
Public headers, tier 1 and tier 2
Loading...
Searching...
No Matches
registry.hpp File Reference

Strategy registry (8.6, ADR-0012): name -> parameter schema + one factory per transport kind, each producing an IEngineRunner. More...

#include "fastmm/core/engine_config.hpp"
#include "fastmm/core/engine_runner.hpp"
#include "fastmm/core/instrument.hpp"
#include "fastmm/core/msg_ring.hpp"
#include "fastmm/strategies/param_publisher.hpp"
#include "fastmm/strategies/params.hpp"
#include "fastmm/strategies/strategy.hpp"
#include <array>
#include <cstddef>
#include <cstdint>
#include <memory>
#include <string_view>
#include <vector>

Go to the source code of this file.

Classes

struct  fastmm::RunnerDeps
 Everything a factory needs that is backend-independent. More...
 
struct  fastmm::StrategyEntry
 
class  fastmm::StrategyRegistry
 

Namespaces

namespace  fastmm
 

Enumerations

enum class  fastmm::TransportKind : std::uint8_t { fastmm::Sim = 0 , fastmm::Live = 1 , fastmm::Replay = 2 , fastmm::Count = 3 }
 
enum class  fastmm::AddResult : std::uint8_t { fastmm::Added , fastmm::AlreadyPresent , fastmm::Conflict , fastmm::Invalid }
 

Functions

constexpr std::string_view fastmm::to_string (TransportKind k) noexcept
 
constexpr std::string_view fastmm::to_string (AddResult r) noexcept
 
const std::vector< StrategyEntry > & fastmm::list_strategies ()
 

Variables

constexpr std::size_t fastmm::kTransportKinds = static_cast<std::size_t>(TransportKind::Count)
 

Detailed Description

Strategy registry (8.6, ADR-0012): name -> parameter schema + one factory per transport kind, each producing an IEngineRunner.

Strategies are added by a registration function (strategies/module.hpp):

void mm::register_strategies(fastmm::StrategyRegistry& r) { fastmm::register_strategy<mm::MicropriceMM>(r); // Sim + Replay + Live factories }

Nothing registers itself: apps pass their registration functions to fastmm::cli::live / backtest / replay, and the built-in strategies come from fastmm::register_builtin_strategies(). This header does not parse the Engine template; make_engine_runner<S>() lives in strategies/engine_factory.hpp.