view include/core/date.h @ 137:69db40272acd

dep/animia: [WIP] huge refactor this WILL NOT compile, because lots of code has been changed and every API in the original codebase has been removed. note that this api setup is not exactly permanent...
author Paper <mrpapersonic@gmail.com>
date Fri, 10 Nov 2023 13:52:47 -0500
parents c69230dc2b5d
children f88eda79c60a
line wrap: on
line source

#ifndef __core__date_h
#define __core__date_h

#include "json.h"
#include <QDate>
#include <cstdint>

class Date {
	public:
		Date();
		Date(unsigned int y);
		Date(unsigned int y, unsigned int m, unsigned int d);
		Date(const QDate& date);
		bool IsValid() const;
		void SetYear(unsigned int y);
		void SetMonth(unsigned int m);
		void SetDay(unsigned int d);
		void VoidYear();
		void VoidMonth();
		void VoidDay();
		unsigned int GetYear() const;
		unsigned int GetMonth() const;
		unsigned int GetDay() const;
		QDate GetAsQDate() const;
		nlohmann::json GetAsAniListJson() const;
		bool operator<(const Date& other) const;
		bool operator>(const Date& other) const;
		bool operator<=(const Date& other) const;
		bool operator>=(const Date& other) const;

	private:
		/* note: it might be worth it to change these all to int, as
		   large bit precisions aren't exactly useful here... */
		std::shared_ptr<unsigned int> year;
		std::shared_ptr<unsigned int> month;
		std::shared_ptr<unsigned int> day;
};

#endif // __core__date_h