Program Listing for File StopHistoryInterval.h¶
↰ Return to documentation for file (/home/kpenev/projects/git/poet/poet_src/Evolve/StopHistoryInterval.h)
#ifndef __STOP_HISTORY_INTERVAL_H
#define __STOP_HISTORY_INTERVAL_H
#include "../Core/SharedLibraryExportMacros.h"
#include "../Core/Error.h"
#include <valarray>
#include <list>
#include <ostream>
#include <cassert>
#include <iomanip>
namespace Evolve {
class LIB_LOCAL StopHistoryInterval {
private:
size_t __num_points,
__point_i;
std::list<double>::const_iterator __first_age,
__last_age,
__history_age_end,
__discarded_age_begin,
__age_i;
std::list< std::valarray<double> >::const_iterator __first_stop_cond,
__last_stop_cond,
__stop_cond_history_end,
__stop_cond_discarded_begin,
__stop_cond_i,
__first_stop_deriv,
__last_stop_deriv,
__stop_deriv_history_end,
__stop_deriv_discarded_begin,
__stop_deriv_i;
void advance_iterator_set(std::list<double>::const_iterator &age_i,
std::list< std::valarray<double> >::const_iterator &cond_i,
std::list< std::valarray<double> >::const_iterator &deriv_i);
void retreat_iterator_set(std::list<double>::const_iterator &age_i,
std::list< std::valarray<double> >::const_iterator &cond_i,
std::list< std::valarray<double> >::const_iterator &deriv_i);
public:
StopHistoryInterval(
size_t num_points=0,
std::list<double>::const_iterator
first_age=std::list<double>::const_iterator(),
std::list<double>::const_iterator
history_age_end=std::list<double>::const_iterator(),
std::list<double>::const_iterator
discarded_age_begin=std::list<double>::const_iterator(),
std::list< std::valarray<double> >::const_iterator
first_stop_cond
=
std::list< std::valarray<double> >::const_iterator(),
std::list< std::valarray<double> >::const_iterator
stop_cond_history_end
=
std::list< std::valarray<double> >::const_iterator(),
std::list< std::valarray<double> >::const_iterator
stop_cond_discarded_begin
=
std::list< std::valarray<double> >::const_iterator(),
std::list< std::valarray<double> >::const_iterator
first_stop_deriv
=
std::list< std::valarray<double> >::const_iterator(),
std::list< std::valarray<double> >::const_iterator
stop_deriv_history_end
=
std::list< std::valarray<double> >::const_iterator(),
std::list< std::valarray<double> >::const_iterator
stop_deriv_discarded_begin
=
std::list< std::valarray<double> >::const_iterator()
);
StopHistoryInterval(const StopHistoryInterval &orig);
void reset();
StopHistoryInterval &operator++();
StopHistoryInterval operator++(int);
StopHistoryInterval &operator--();
StopHistoryInterval operator--(int);
StopHistoryInterval &operator<<(size_t n);
StopHistoryInterval &operator>>(size_t n);
StopHistoryInterval &operator=(const StopHistoryInterval &rhs);
bool operator==(const StopHistoryInterval &rhs);
void grow_left(size_t n=1);
void grow_right(size_t n=1);
size_t num_points() {return __num_points;}
size_t current_point_index() {return __point_i;}
size_t number_conditions() {return __first_stop_cond->size();}
bool end() {return __point_i==__num_points;}
double first_age() const {return *__first_age;}
double last_age() const {return *__last_age;}
double age() const {return *__age_i;}
double first_stop_condition_value(size_t condition_index) const
{return (*__first_stop_cond)[condition_index];}
double last_stop_condition_value(size_t condition_index) const
{return (*__last_stop_cond)[condition_index];}
double stop_condition_value(size_t condition_index) const
{return (*__stop_cond_i)[condition_index];}
double first_stop_condition_deriv(size_t condition_index) const
{return (*__first_stop_deriv)[condition_index];}
double last_stop_condition_deriv(size_t condition_index) const
{return (*__last_stop_deriv)[condition_index];}
double stop_condition_deriv(size_t condition_index) const
{return (*__stop_deriv_i)[condition_index];}
}; //End StopHistoryInternval class.
LIB_LOCAL std::ostream &operator<<(std::ostream &os,
StopHistoryInterval interval);
}//End Evolve namespace.
#endif