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
7 public:
9
10 virtual ~TimeSeriesData() = default;
11
18 virtual bool SetValues(vecDouble values);
19
26 [[nodiscard]] virtual double GetValueFor(double date);
27
33 [[nodiscard]] virtual double GetCurrentValue() const;
34
40 [[nodiscard]] virtual double GetSum();
41
48 virtual bool SetCursorToDate(double date) = 0;
49
55 virtual bool AdvanceOneTimeStep() = 0;
56
62 [[nodiscard]] virtual double GetStart() const = 0;
63
69 [[nodiscard]] 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(vecDouble values) override;
102
106 double GetValueFor(double date) override;
107
111 double GetCurrentValue() const 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(vecDouble values) override;
165
169 double GetValueFor(double date) override;
170
174 double GetCurrentValue() const 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:187
double GetCurrentValue() const override
Definition TimeSeriesData.cpp:170
double GetEnd() const override
Definition TimeSeriesData.cpp:192
bool IsValid() const override
Definition TimeSeriesData.cpp:197
double GetSum() override
Definition TimeSeriesData.cpp:175
bool AdvanceOneTimeStep() override
Definition TimeSeriesData.cpp:183
bool SetValues(vecDouble values) override
Definition TimeSeriesData.cpp:156
void Validate() const override
Definition TimeSeriesData.cpp:229
bool SetCursorToDate(double date) override
Definition TimeSeriesData.cpp:179
double GetValueFor(double date) override
Definition TimeSeriesData.cpp:166
Definition TimeSeriesData.h:92
double GetSum() override
Definition TimeSeriesData.cpp:62
double GetEnd() const override
Definition TimeSeriesData.cpp:113
double GetStart() const override
Definition TimeSeriesData.cpp:109
double GetValueFor(double date) override
Definition TimeSeriesData.cpp:52
bool AdvanceOneTimeStep() override
Definition TimeSeriesData.cpp:99
double GetCurrentValue() const override
Definition TimeSeriesData.cpp:57
void Validate() const override
Definition TimeSeriesData.cpp:139
bool SetCursorToDate(double date) override
Definition TimeSeriesData.cpp:69
bool IsValid() const override
Definition TimeSeriesData.cpp:117
bool SetValues(vecDouble values) override
Definition TimeSeriesData.cpp:40
Definition TimeSeriesData.h:6
virtual bool AdvanceOneTimeStep()=0
virtual double GetCurrentValue() const
Definition TimeSeriesData.cpp:21
virtual double GetEnd() const =0
virtual double GetValueFor(double date)
Definition TimeSeriesData.cpp:17
virtual double GetStart() const =0
virtual bool IsValid() const =0
virtual void Validate() const =0
virtual double GetSum()
Definition TimeSeriesData.cpp:25
virtual bool SetValues(vecDouble values)
Definition TimeSeriesData.cpp:12
virtual bool SetCursorToDate(double date)=0