view include/core/anime_season.h @ 347:a0aa8c8c4307

dep/anitomy: port to use UCS-4 rather than wide strings rationale: wide strings are not the same on every platform, and might not even be Unicode. (while they usually are, its possible that they are not) I was *going* to change StringToInt to use a string stream, but outputting to an integer doesn't seem to work at all with UCS-4, even though it ought to, so I just rolled my own that uses the arabic digits only.
author Paper <paper@paper.us.eu.org>
date Sun, 23 Jun 2024 10:32:09 -0400
parents b5d6c27c308f
children 6b0768158dcd
line wrap: on
line source

#ifndef MINORI_CORE_ANIME_SEASON_H_
#define MINORI_CORE_ANIME_SEASON_H_

#include "core/date.h" /* Date::Month */

#include <array>

namespace Anime {

class Season final {
public:
	enum class Name {
		Unknown,
		Winter,
		Spring,
		Summer,
		Autumn,
	};

	static constexpr std::array<Name, 4> Names{
		Name::Winter,
		Name::Spring,
		Name::Summer,
		Name::Autumn
	};

	Season() = default;
	Season(Name s, Date::Year y);
	explicit Season(const Date& date);

	bool operator==(const Season& o) const;
	bool operator!=(const Season& o) const;

	bool operator<(const Season& o) const;
	bool operator>(const Season& o) const;
	bool operator<=(const Season& o) const;
	bool operator>=(const Season& o) const;

	Name season = Name::Unknown;
	Date::Year year = 0;
};

} // namespace Anime

#endif // MINORI_CORE_ANIME_SEASON_H_