diff options
Diffstat (limited to 'src/openvic-simulation/history/Period.cpp')
-rw-r--r-- | src/openvic-simulation/history/Period.cpp | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/src/openvic-simulation/history/Period.cpp b/src/openvic-simulation/history/Period.cpp new file mode 100644 index 0000000..cb133dd --- /dev/null +++ b/src/openvic-simulation/history/Period.cpp @@ -0,0 +1,27 @@ +#include "openvic-simulation/history/Period.hpp" + +using namespace OpenVic; + +Period::Period( + const Date new_start_date, + const std::optional<Date> new_end_date +) : start_date {new_start_date}, end_date {new_end_date} {} + +bool Period::is_date_in_period(const Date date) const { + return start_date <= date && (!end_date.has_value() || end_date.value() >= date); +} + +bool Period::try_set_end(const Date date) { + if (end_date.has_value()) { + Logger::error("Period already has end date ", end_date.value()); + return false; + } + + if (date < start_date) { + Logger::error("Proposed end date ", date, " is before start date ", start_date); + return false; + } + + end_date = date; + return true; +}
\ No newline at end of file |