Files
FESADev/src/fesa/analysis/linear_static_analysis.cpp
T

38 lines
1.2 KiB
C++

#include "fesa/analysis/linear_static_analysis.h"
#include <utility>
#include "fesa/analysis/linear_static_procedure.h"
#include "fesa/analysis/prepared_analysis.h"
#include "fesa/results/results_writer.h"
namespace fesa {
LinearStaticAnalysis::LinearStaticAnalysis(const ParallelFor& parallel_for,
LinearSolver& linear_solver,
ResultsWriter& results_writer)
: parallel_for_{parallel_for},
linear_solver_{linear_solver},
results_writer_{results_writer} {}
Status LinearStaticAnalysis::Run(const AnalysisRequest& request) {
Result<PreparedAnalysisInput> prepared =
PrepareAnalysisInput(request.input_path);
if (!prepared.HasValue()) {
return prepared.GetStatus();
}
LinearStaticProcedureExecutor executor(parallel_for_, linear_solver_);
Result<LinearStaticExecutionResult> execution =
executor.Execute(prepared.Value().domain);
if (!execution.HasValue()) {
return execution.GetStatus();
}
return results_writer_.Write(request.output_path, prepared.Value().domain,
execution.Value().state,
execution.Value().diagnostics);
}
} // namespace fesa