From ddbb6af66e30e896f07a39503a1bb935e462c095 Mon Sep 17 00:00:00 2001 From: wvpm <24685035+wvpm@users.noreply.github.com> Date: Sun, 7 Jan 2024 13:49:20 +0100 Subject: Reparations & optional end date --- src/openvic-simulation/history/Period.cpp | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 src/openvic-simulation/history/Period.cpp (limited to 'src/openvic-simulation/history/Period.cpp') 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 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 -- cgit v1.2.3-56-ga3b1