FastMM documentation
FastMM C++ API 0.6.0
Public headers, tier 1 and tier 2
Loading...
Searching...
No Matches
factory_sim.hpp
Go to the documentation of this file.
1#pragma once
2// Definition of fastmm::sim_factory<S> (declared in strategies/module.hpp): builds
3// Engine<S, SimClock, SimTransport, InlineFeed> on the sim::SimBackend that RunnerDeps::backend
4// 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> sim_factory(TransportKind kind, RunnerDeps& deps) {
14 static_assert(StrategyLike<S>,
15 "fastmm: sim_factory<S> needs a strategy: static name(), static schema() and a "
16 "default constructor");
17 if (kind != TransportKind::Sim || deps.backend == nullptr) return nullptr;
18 return static_cast<sim::SimBackend*>(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
TransportKind
Definition registry.hpp:33
std::unique_ptr< IEngineRunner > sim_factory(TransportKind kind, RunnerDeps &deps)
Declared template <class S>, not template <StrategyLike S>: GCC and Clang mangle constrained template...
Definition factory_sim.hpp:15