Mercurial > minori
view include/core/date.h @ 318:3b355fa948c7
config: use TOML instead of INI
unfortunately, INI is not enough, and causes some paths including
semicolons to break with our current storage of the library folders.
so, I decided to switch to TOML which does support real arrays...
author | Paper <paper@paper.us.eu.org> |
---|---|
date | Wed, 12 Jun 2024 05:25:41 -0400 |
parents | b1f4d1867ab1 |
children | d928ec7b6a0d |
line wrap: on
line source
#ifndef MINORI_CORE_DATE_H_ #define MINORI_CORE_DATE_H_ #include "json/json_fwd.hpp" #include <optional> #include <string> class QDate; /* TODO: refactor constructors, as they aren't meant * to be used in this way and may cause problems down * the line */ class Date { public: using Year = unsigned int; using Day = unsigned char; enum class Month { Jan = 0, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec }; Date(); Date(Year y); Date(Year y, Month m, Day d); Date(const std::string& str); Date(const QDate& date); Date(const nlohmann::json& json); bool IsValid() const; void SetYear(Year y); void SetMonth(Month m); void SetDay(Day d); void VoidYear(); void VoidMonth(); void VoidDay(); std::optional<Year> GetYear() const; std::optional<Month> GetMonth() const; std::optional<Day> GetDay() const; QDate GetAsQDate() const; nlohmann::json GetAsAniListJson() const; private: std::optional<Year> year; std::optional<Month> month; std::optional<Day> day; }; #endif // MINORI_CORE_DATE_H_