Files
Upsilon/apps/shared/interval.h
Hugo Saint-Vignes 776edd4dd8 [apps/shared] Extend function table view to 101 cells
Increasing the lenght of graph table view to give users more
possibilities

Change-Id: I4023a5f81974b8302bf81b56d2610908e207241f
2020-11-04 14:45:35 +01:00

48 lines
1.3 KiB
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);
class IntervalParameters {
public:
void setStart(double f) { m_start = f; }
void setEnd(double f) { m_end = f; }
void setStep(double f) { m_step = f; }
double start() const { return m_start; }
double end() const { return m_end; }
double step() const { return m_step; }
private:
double m_start;
double m_end;
double m_step;
};
double element(int i);
IntervalParameters * parameters() { return &m_parameters; }
void setParameters(IntervalParameters parameters) { m_parameters = parameters; }
void setElement(int i, double f);
void forceRecompute(){ m_needCompute = true;}
void reset();
void clear();
constexpr static int k_maxNumberOfElements = 101;
private:
void computeElements();
int m_numberOfElements;
double m_intervalBuffer[k_maxNumberOfElements];
bool m_needCompute;
IntervalParameters m_parameters;
};
typedef void (Interval::IntervalParameters::*SetterPointer)(double);
typedef double (Interval::IntervalParameters::*GetterPointer)() const;
}
#endif