|
FERS 1.0.0
The Flexible Extensible Radar Simulator
|
Manages the lifetime and state of a single FERS simulation scenario. More...
#include "fers_context.h"
Inheritance diagram for FersContext:Public Member Functions | |
| FersContext () | |
| Constructs a new simulation context, initializing an empty world. | |
| core::World * | getWorld () const noexcept |
| Retrieves a pointer to the simulation world. | |
| std::mt19937 & | getMasterSeeder () noexcept |
| Retrieves a mutable reference to the master random number seeder. | |
Manages the lifetime and state of a single FERS simulation scenario.
This class serves as the C++ backend for the opaque fers_context_t handle exposed by the C-API. The primary reason for its existence is to apply the "Pimpl" (Pointer to Implementation) idiom at the ABI boundary. By hiding the C++ standard library types (std::unique_ptr, std::mt19937) and the full definition of core::World from the C header, we create a stable ABI that does not break when the internal C++ implementation changes. This encapsulation ensures that clients of the C-API (like Rust) do not need to be recompiled if only the library's internals are modified.
Its secondary role is to own the core::World object, which represents the entire scenario, and the master random number generator. This guarantees that the simulation state persists in memory between API calls and that randomness can be controlled deterministically from a single source.
Definition at line 31 of file fers_context.h.
| FersContext::FersContext | ( | ) |
Constructs a new simulation context, initializing an empty world.
The master random number generator is default-constructed. This is a deliberate choice to allow the seed to be configured later, typically after parsing a scenario file. This ensures that the scenario itself can define its own seed for reproducible simulations. If no seed is provided, a random one is generated at load time.
Definition at line 44 of file fers_context.h.
|
noexcept |
Retrieves a mutable reference to the master random number seeder.
A single master generator is used to seed all other random number generators within the simulation (e.g., for noise models, RCS fluctuations). This design is crucial for ensuring that a simulation can be made fully deterministic and reproducible by controlling a single seed value at the top level.
std::mt19937 engine. Definition at line 64 of file fers_context.h.
|
noexcept |
Retrieves a pointer to the simulation world.
This provides direct, mutable access to the in-memory representation of the scenario, allowing API functions to modify it.
core::World object. Definition at line 52 of file fers_context.h.