Mercurial > minori
comparison include/core/date.h @ 202:71832ffe425a
animia: re-add kvm fd source
this is all being merged from my wildly out-of-date laptop. SORRY!
in other news, I edited the CI file to install the wayland client
as well, so the linux CI build might finally get wayland stuff.
| author | Paper <paper@paper.us.eu.org> |
|---|---|
| date | Tue, 02 Jan 2024 06:05:06 -0500 |
| parents | c4ca035c565d |
| children | 862d0d8619f6 |
comparison
equal
deleted
inserted
replaced
| 201:8f6f8dd2eb23 | 202:71832ffe425a |
|---|---|
| 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.h" | 4 #include "json/json_fwd.hpp" |
| 5 #include <QDate> | 5 |
| 6 #include <cstdint> | 6 #include <optional> |
| 7 | |
| 8 class QDate; | |
| 7 | 9 |
| 8 class Date { | 10 class Date { |
| 9 public: | 11 public: |
| 10 Date(); | 12 Date(); |
| 11 Date(unsigned int y); | 13 Date(unsigned int y); |
| 12 Date(unsigned int y, unsigned int m, unsigned int d); | 14 Date(unsigned int y, unsigned int m, unsigned int d); |
| 13 Date(const QDate& date); | 15 Date(const QDate& date); |
| 16 Date(const nlohmann::json& json); | |
| 14 bool IsValid() const; | 17 bool IsValid() const; |
| 15 void SetYear(unsigned int y); | 18 void SetYear(unsigned int y); |
| 16 void SetMonth(unsigned int m); | 19 void SetMonth(unsigned int m); |
| 17 void SetDay(unsigned int d); | 20 void SetDay(unsigned int d); |
| 18 void VoidYear(); | 21 void VoidYear(); |
| 19 void VoidMonth(); | 22 void VoidMonth(); |
| 20 void VoidDay(); | 23 void VoidDay(); |
| 21 unsigned int GetYear() const; | 24 std::optional<unsigned int> GetYear() const; |
| 22 unsigned int GetMonth() const; | 25 std::optional<unsigned int> GetMonth() const; |
| 23 unsigned int GetDay() const; | 26 std::optional<unsigned int> GetDay() const; |
| 24 QDate GetAsQDate() const; | 27 QDate GetAsQDate() const; |
| 25 nlohmann::json GetAsAniListJson() const; | 28 nlohmann::json GetAsAniListJson() const; |
| 26 bool operator<(const Date& other) const; | |
| 27 bool operator>(const Date& other) const; | |
| 28 bool operator<=(const Date& other) const; | |
| 29 bool operator>=(const Date& other) const; | |
| 30 | 29 |
| 31 private: | 30 private: |
| 32 /* note: it might be worth it to change these all to int, as | 31 std::optional<unsigned int> year; |
| 33 large bit precisions aren't exactly useful here... */ | 32 std::optional<unsigned int> month; |
| 34 std::shared_ptr<unsigned int> year; | 33 std::optional<unsigned int> day; |
| 35 std::shared_ptr<unsigned int> month; | |
| 36 std::shared_ptr<unsigned int> day; | |
| 37 }; | 34 }; |
| 38 | 35 |
| 39 #endif // __core__date_h | 36 #endif // __core__date_h |
