FastMM documentation
FastMM C++ API 0.6.0
Public headers, tier 1 and tier 2
Loading...
Searching...
No Matches
factory_replay.hpp
Go to the documentation of this file.
1#pragma once
2// Definition of fastmm::replay_factory<S> (declared in strategies/module.hpp): builds
3// Engine<S, SimClock, ReplayTransport, JournalFeed> on the sim::ReplayBackend that
4// RunnerDeps::backend points at. Needs fastmm::sim.
5#include "fastmm/sim/sim_backend.hpp"
7
8#include <memory>
9
10namespace fastmm {
11
12template <class S>
13std::unique_ptr<IEngineRunner> replay_factory(TransportKind kind, RunnerDeps& deps) {
14 static_assert(StrategyLike<S>,
15 "fastmm: replay_factory<S> needs a strategy: static name(), static schema() and a "
16 "default constructor");
17 if (kind != TransportKind::Replay || deps.backend == nullptr) return nullptr;
18 return static_cast<sim::ReplayBackend*>(deps.backend)->template make_runner<S>(deps);
19}
20
21} // namespace fastmm
Strategy modules (ADR-0012, section 5): one registration function per strategy library.
Definition strategy.hpp:16
std::unique_ptr< IEngineRunner > replay_factory(TransportKind kind, RunnerDeps &deps)
Definition factory_replay.hpp:15
TransportKind
Definition registry.hpp:33