Mercurial > minori
comparison include/core/date.h @ 196:f0ff06a45c42
date: use std::optional for values
author | Paper <mrpapersonic@gmail.com> |
---|---|
date | Thu, 07 Dec 2023 16:28:11 -0500 |
parents | 9613d72b097e |
children | c4ca035c565d |
comparison
equal
deleted
inserted
replaced
195:975a3f0965e2 | 196:f0ff06a45c42 |
---|---|
1 #ifndef __core__date_h | 1 #ifndef __core__date_h |
2 #define __core__date_h | 2 #define __core__date_h |
3 | 3 |
4 #include "json/json_fwd.hpp" | 4 #include "json/json_fwd.hpp" |
5 | |
6 #include <optional> | |
5 | 7 |
6 class QDate; | 8 class QDate; |
7 | 9 |
8 class Date { | 10 class Date { |
9 public: | 11 public: |
28 bool operator>(const Date& other) const; | 30 bool operator>(const Date& other) const; |
29 bool operator<=(const Date& other) const; | 31 bool operator<=(const Date& other) const; |
30 bool operator>=(const Date& other) const; | 32 bool operator>=(const Date& other) const; |
31 | 33 |
32 private: | 34 private: |
33 /* this implementation sucks and we should really use a struct instead */ | 35 std::optional<unsigned int> year; |
34 template<typename T> | 36 std::optional<unsigned int> month; |
35 struct OptionalNumber { | 37 std::optional<unsigned int> day; |
36 public: | |
37 T Get() const { return enabled ? num : 0; } | |
38 bool Enabled() const { return enabled; } | |
39 void Set(T n) { num = n; enabled = true; } | |
40 void Void() { num = 0; enabled = false; } | |
41 | |
42 protected: | |
43 T num = 0; | |
44 bool enabled = false; | |
45 }; | |
46 | |
47 OptionalNumber<unsigned int> year; | |
48 OptionalNumber<unsigned int> month; | |
49 OptionalNumber<unsigned int> day; | |
50 }; | 38 }; |
51 | 39 |
52 #endif // __core__date_h | 40 #endif // __core__date_h |