hydrobricks
Loading...
Searching...
No Matches
TimeSeriesData.h
1#ifndef HYDROBRICKS_TIME_SERIES_DATA_H
2#define HYDROBRICKS_TIME_SERIES_DATA_H
3
4#include "Includes.h"
5
6class TimeSeriesData : public wxObject {
7 public:
9
10 ~TimeSeriesData() override = default;
11
18 virtual bool SetValues(const vecDouble& values);
19
26 virtual double GetValueFor(double date);
27
33 virtual double GetCurrentValue();
34
40 virtual double GetSum();
41
48 virtual bool SetCursorToDate(double date) = 0;
49
55 virtual bool AdvanceOneTimeStep() = 0;
56
62 virtual double GetStart() const = 0;
63
69 virtual double GetEnd() const = 0;
70
77 [[nodiscard]] virtual bool IsValid() const = 0;
78
85 virtual void Validate() const = 0;
86
87 protected:
88 vecDouble _values;
89 int _cursor;
90};
91
93 public:
94 TimeSeriesDataRegular(double start, double end, int timeStep, TimeUnit timeStepUnit);
95
96 ~TimeSeriesDataRegular() override = default;
97
101 bool SetValues(const vecDouble& values) override;
102
106 double GetValueFor(double date) override;
107
111 double GetCurrentValue() override;
112
116 double GetSum() override;
117
121 bool SetCursorToDate(double date) override;
122
126 bool AdvanceOneTimeStep() override;
127
131 double GetStart() const override;
132
136 double GetEnd() const override;
137
141 [[nodiscard]] bool IsValid() const override;
142
146 void Validate() const override;
147
148 protected:
149 double _start;
150 double _end;
151 int _timeStep;
152 TimeUnit _timeStepUnit;
153};
154
156 public:
157 explicit TimeSeriesDataIrregular(vecDouble& dates);
158
159 ~TimeSeriesDataIrregular() override = default;
160
164 bool SetValues(const vecDouble& values) override;
165
169 double GetValueFor(double date) override;
170
174 double GetCurrentValue() override;
175
179 double GetSum() override;
180
184 bool SetCursorToDate(double date) override;
185
189 bool AdvanceOneTimeStep() override;
190
194 double GetStart() const override;
195
199 double GetEnd() const override;
200
204 [[nodiscard]] bool IsValid() const override;
205
209 void Validate() const override;
210
211 protected:
212 vecDouble _dates;
213};
214
215#endif // HYDROBRICKS_TIME_SERIES_DATA_H
Definition TimeSeriesData.h:155
double GetStart() const override
Definition TimeSeriesData.cpp:185
double GetEnd() const override
Definition TimeSeriesData.cpp:190
bool IsValid() const override
Definition TimeSeriesData.cpp:195
double GetSum() override
Definition TimeSeriesData.cpp:173
bool AdvanceOneTimeStep() override
Definition TimeSeriesData.cpp:181
void Validate() const override
Definition TimeSeriesData.cpp:227
bool SetCursorToDate(double date) override
Definition TimeSeriesData.cpp:177
bool SetValues(const vecDouble &values) override
Definition TimeSeriesData.cpp:154
double GetCurrentValue() override
Definition TimeSeriesData.cpp:168
double GetValueFor(double date) override
Definition TimeSeriesData.cpp:164
Definition TimeSeriesData.h:92
double GetSum() override
Definition TimeSeriesData.cpp:60
double GetEnd() const override
Definition TimeSeriesData.cpp:111
double GetStart() const override
Definition TimeSeriesData.cpp:107
double GetValueFor(double date) override
Definition TimeSeriesData.cpp:50
bool AdvanceOneTimeStep() override
Definition TimeSeriesData.cpp:97
void Validate() const override
Definition TimeSeriesData.cpp:137
double GetCurrentValue() override
Definition TimeSeriesData.cpp:55
bool SetValues(const vecDouble &values) override
Definition TimeSeriesData.cpp:38
bool SetCursorToDate(double date) override
Definition TimeSeriesData.cpp:67
bool IsValid() const override
Definition TimeSeriesData.cpp:115
Definition TimeSeriesData.h:6
virtual bool AdvanceOneTimeStep()=0
virtual double GetEnd() const =0
virtual double GetValueFor(double date)
Definition TimeSeriesData.cpp:15
virtual double GetStart() const =0
virtual bool IsValid() const =0
virtual void Validate() const =0
virtual double GetSum()
Definition TimeSeriesData.cpp:23
virtual double GetCurrentValue()
Definition TimeSeriesData.cpp:19
virtual bool SetValues(const vecDouble &values)
Definition TimeSeriesData.cpp:10
virtual bool SetCursorToDate(double date)=0