The Battle for Wesnoth 1.21.0-dev
 
Loading...
Searching...
No Matches
irdya_datetime.hpp
Go to the documentation of this file.
1/*
2 Copyright (C) 2017 - 2025
3 Part of the Battle for Wesnoth Project https://www.wesnoth.org/
4
5 This program is free software; you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published by
7 the Free Software Foundation; either version 2 of the License, or
8 (at your option) any later version.
9 This program is distributed in the hope that it will be useful,
10 but WITHOUT ANY WARRANTY.
11
12 See the COPYING file for more details.
13*/
14
15#pragma once
16
18
19#include <ostream>
20#include <string>
21
22namespace utils
23{
24
25/**
26 * Calendar for handling and comparing dates using the common epoches of the storyline.
27 */
29{
30public:
31 irdya_date() = default;
32
33 irdya_date(wesnoth_epoch::type epoch, unsigned year)
34 : epoch(epoch)
35 , year(year)
36 {
37 }
38
39 static irdya_date read_date(const std::string& date);
40
41 wesnoth_epoch::type get_epoch() const
42 {
43 return epoch;
44 }
45
46 unsigned int get_year() const
47 {
48 return year;
49 }
50
51 /* There is no year 0, so use that to represent an "invalid" date. */
52 bool is_valid() const
53 {
54 return year != 0;
55 }
56
57 /* Outputs a locale-dependent string describing the year. */
58 std::string to_string() const;
59
60private:
61 wesnoth_epoch::type epoch;
62
63 unsigned int year = 0;
64
65 // TODO: Decide how many months and days there are!
66 //unsigned int month = 0;
67 //unsigned int day = 0;
68};
69
70bool operator<(const irdya_date& a, const irdya_date& b);
71bool operator<=(const irdya_date& a, const irdya_date& b);
72bool operator>(const irdya_date& a, const irdya_date& b);
73bool operator>=(const irdya_date& a, const irdya_date& b);
74bool operator==(const irdya_date& a, const irdya_date& b);
75bool operator!=(const irdya_date& a, const irdya_date& b);
76
77std::ostream& operator<<(std::ostream& s, const irdya_date& d);
78
79}
Calendar for handling and comparing dates using the common epoches of the storyline.
unsigned int get_year() const
static irdya_date read_date(const std::string &date)
wesnoth_epoch::type epoch
bool is_valid() const
std::string to_string() const
irdya_date(wesnoth_epoch::type epoch, unsigned year)
wesnoth_epoch::type get_epoch() const
irdya_date()=default
bool operator!=(const irdya_date &a, const irdya_date &b)
bool operator<=(const irdya_date &a, const irdya_date &b)
bool operator>(const irdya_date &a, const irdya_date &b)
bool operator==(const irdya_date &a, const irdya_date &b)
bool operator>=(const irdya_date &a, const irdya_date &b)
std::ostream & operator<<(std::ostream &s, const irdya_date &d)
bool operator<(const irdya_date &a, const irdya_date &b)
static map_location::direction s
#define d
#define b