Program Listing for File evaluate.hpp
↰ Return to documentation for file (include/eat/framework/evaluate.hpp)
#pragma once
#include "process.hpp"
namespace eat::framework {
Graph flatten(const Graph &g);
void validate(const Graph &g);
class ExecStep {
public:
virtual ~ExecStep() {}
virtual void run() = 0;
virtual std::string description() = 0;
};
using ExecStepPtr = std::shared_ptr<ExecStep>;
class Plan {
public:
Plan(Graph graph, std::vector<ExecStepPtr> steps) : graph_(std::move(graph)), steps_(std::move(steps)) {}
const Graph &graph() const { return graph_; }
const std::vector<ExecStepPtr> &steps() const { return steps_; }
void run() {
for (auto &step : steps_) step->run();
}
private:
Graph graph_;
std::vector<ExecStepPtr> steps_;
};
Plan plan(const Graph &g);
void evaluate(const Graph &g);
void run_with_progress(const Plan &p);
} // namespace eat::framework