Files
Upsilon/apps/shared/interval.h
Émilie Feral f0a776a670 [apps] Operations in double when precision required
Change-Id: I7168a861a76178f0bf81841e9378f7399f67914a
2017-08-17 09:31:53 +02:00

39 lines
892 B
C++

#ifndef SHARED_VALUES_INTERVAL_H
#define SHARED_VALUES_INTERVAL_H
namespace Shared {
class Interval {
public:
Interval();
// Delete the implicit copy constructor: the object is heavy
Interval(const Interval&) = delete;
int numberOfElements();
void deleteElementAtIndex(int index);
double element(int i);
double start();
double end();
double step();
void setStart(double f);
void setEnd(double f);
void setStep(double f);
void setElement(int i, double f);
// TODO: decide the max number of elements after optimization
constexpr static int k_maxNumberOfElements = 100;
private:
void computeElements();
int m_numberOfElements;
double m_intervalBuffer[k_maxNumberOfElements];
double m_start;
double m_end;
double m_step;
bool m_needCompute;
};
typedef void (Interval::*SetterPointer)(double);
typedef double (Interval::*GetterPointer)();
}
#endif