25#include <boost/format.hpp>
40template <
typename _Environment>
47 std::vector<std::shared_ptr<Step<Environment>>> steps;
60 std::string description_string = (boost::format(
"An algorithmic step consisting of %s algorithmic steps:\n") % this->
numberOfSteps()).str();
63 const auto& step = this->steps[i];
64 description_string += (boost::format(
"\t%s. %s\n") % std::to_string(i + 1) % step->description()).str();
66 return description_string;
76 for (
const auto& step : this->steps) {
77 step->execute(environment);
91 template <
typename Z = Step<Environment>>
93 this->steps.push_back(std::make_shared<Z>(step));
104 template <
typename Z = Step<Environment>>
109 throw std::invalid_argument(
"StepCollection::insert(const Z&, const size_t): Cannot insert at the given index.");
115 const auto it = this->steps.begin();
116 this->steps.insert(it + index, std::make_shared<Z>(step));
137 this->steps.erase(this->steps.begin() + index);
147 template <
typename Z = Step<Environment>>
149 this->steps[index] = std::make_shared<Z>(step);
Definition: StepCollection.hpp:41
size_t numberOfSteps() const
Definition: StepCollection.hpp:128
enable_if_t< std::is_same< Environment, typename Z::Environment >::value, void > insert(const Z &step, const size_t index)
Definition: StepCollection.hpp:105
void execute(Environment &environment) override
Definition: StepCollection.hpp:75
std::string description() const override
Definition: StepCollection.hpp:58
enable_if_t< std::is_same< Environment, typename Z::Environment >::value, void > replace(const Z &step, const size_t index)
Definition: StepCollection.hpp:148
void remove(const size_t index)
Definition: StepCollection.hpp:136
_Environment Environment
Definition: StepCollection.hpp:43
enable_if_t< std::is_same< Environment, typename Z::Environment >::value, StepCollection< Environment > & > add(const Z &step)
Definition: StepCollection.hpp:92
Definition: BaseOneElectronIntegralBuffer.hpp:25
typename std::enable_if< B, T >::type enable_if_t
Definition: type_traits.hpp:37