#pragma once #include "fesa/core/AnalysisState.hpp" #include "fesa/core/Domain.hpp" namespace fesa::analysis { class Analysis { public: virtual ~Analysis() = default; virtual const char* name() const noexcept = 0; void run(const fesa::core::Domain& domain, fesa::core::AnalysisState& state) { doRun(domain, state); } protected: virtual void doRun(const fesa::core::Domain& domain, fesa::core::AnalysisState& state) = 0; }; } // namespace fesa::analysis