#pragma once #include #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_; }; [[nodiscard]] SimulationResult run_modern_kernel(const SimulationConfig& config); } // namespace mocca