Program Listing for File InterpSolutionIterator.h¶
↰ Return to documentation for file (/home/kpenev/projects/git/poet/poet_src/Core/InterpSolutionIterator.h)
#ifndef __INTERP_SOLUTION_ITERATOR_H
#define __INTERP_SOLUTION_ITERATOR_H
#include "../Core/SharedLibraryExportMacros.h"
#include "SerializableSpline1dInterpolant.h"
#include "Common.h"
#include <valarray>
namespace Core {
class LIB_LOCAL InterpSolutionIterator :
public std::iterator<std::input_iterator_tag, double, ptrdiff_t,
const double*, const double&>
{
private:
const alglib_impl::spline1dinterpolant *spline;
int node_index;
double min_diff,
y;
std::list<double>::const_iterator solution_iter;
std::list<double> solutions;
bool is_out_of_range;
void get_solutions();
public:
InterpSolutionIterator() {};
InterpSolutionIterator(const InterpSolutionIterator &rhs);
InterpSolutionIterator(
const alglib::spline1dinterpolant &spline_var,
double offset, double min_sol_distance=1e-8
);
InterpSolutionIterator &operator++();
InterpSolutionIterator operator++(int);
InterpSolutionIterator &operator--();
InterpSolutionIterator operator--(int);
const double &operator*() const;
bool operator==(const InterpSolutionIterator &rhs) const;
bool operator!=(const InterpSolutionIterator &rhs) const;
bool out_of_range() const;
}; //End InterpSolutionIterator class.
} //End Core namespace.
#endif