#pragma once #include #include class IGenerationTracker { public: virtual ~IGenerationTracker() noexcept = default; [[nodiscard]] virtual uint32_t get_current_generation() const noexcept = 0; [[nodiscard]] virtual bool get_is_paused() const noexcept = 0; virtual void set_is_paused(bool is_paused) noexcept = 0; }; using IGenerationTrackerFactory = std::shared_ptr (*)(bool is_paused);