37 lines
978 B
C++
37 lines
978 B
C++
#pragma once
|
|
|
|
#include <memory>
|
|
|
|
#include "mocca/api.hpp"
|
|
|
|
namespace mocca {
|
|
|
|
/**
|
|
* Modern execution façade for the cascade physics kernel.
|
|
*
|
|
* The public surface stays intentionally small: callers provide a normalized
|
|
* `SimulationConfig`, and the implementation owns the setup, propagation, and
|
|
* line-collection workflow behind a value-oriented interface.
|
|
*/
|
|
class ModernCascadeKernel {
|
|
public:
|
|
explicit ModernCascadeKernel(const SimulationConfig& config);
|
|
~ModernCascadeKernel();
|
|
|
|
ModernCascadeKernel(ModernCascadeKernel&&) noexcept;
|
|
ModernCascadeKernel& operator=(ModernCascadeKernel&&) noexcept;
|
|
|
|
ModernCascadeKernel(const ModernCascadeKernel&) = delete;
|
|
ModernCascadeKernel& operator=(const ModernCascadeKernel&) = delete;
|
|
|
|
[[nodiscard]] SimulationResult run() const;
|
|
|
|
private:
|
|
class Impl;
|
|
std::unique_ptr<Impl> impl_;
|
|
};
|
|
|
|
[[nodiscard]] SimulationResult run_modern_kernel(const SimulationConfig& config);
|
|
|
|
} // namespace mocca
|