annotate src/core/anime_season.cc @ 393:963047512d34

*: clang-format
author Paper <paper@tflc.us>
date Fri, 07 Nov 2025 07:16:15 -0500
parents 47c9f8502269
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
281
3ede7be4f449 anime_season: forgot these
Paper <paper@paper.us.eu.org>
parents:
diff changeset
1 #include "core/anime_season.h"
327
b5d6c27c308f anime: refactor Anime::SeriesSeason to Season class
Paper <paper@paper.us.eu.org>
parents: 326
diff changeset
2 #include "core/session.h"
281
3ede7be4f449 anime_season: forgot these
Paper <paper@paper.us.eu.org>
parents:
diff changeset
3
3ede7be4f449 anime_season: forgot these
Paper <paper@paper.us.eu.org>
parents:
diff changeset
4 namespace Anime {
3ede7be4f449 anime_season: forgot these
Paper <paper@paper.us.eu.org>
parents:
diff changeset
5
369
47c9f8502269 *: clang-format all the things
Paper <paper@tflc.us>
parents: 348
diff changeset
6 static bool WinterStartsInDecember()
47c9f8502269 *: clang-format all the things
Paper <paper@tflc.us>
parents: 348
diff changeset
7 {
327
b5d6c27c308f anime: refactor Anime::SeriesSeason to Season class
Paper <paper@paper.us.eu.org>
parents: 326
diff changeset
8 switch (session.config.service) {
393
963047512d34 *: clang-format
Paper <paper@tflc.us>
parents: 369
diff changeset
9 case Service::MyAnimeList:
963047512d34 *: clang-format
Paper <paper@tflc.us>
parents: 369
diff changeset
10 return false;
963047512d34 *: clang-format
Paper <paper@tflc.us>
parents: 369
diff changeset
11 default:
963047512d34 *: clang-format
Paper <paper@tflc.us>
parents: 369
diff changeset
12 return true;
327
b5d6c27c308f anime: refactor Anime::SeriesSeason to Season class
Paper <paper@paper.us.eu.org>
parents: 326
diff changeset
13 }
b5d6c27c308f anime: refactor Anime::SeriesSeason to Season class
Paper <paper@paper.us.eu.org>
parents: 326
diff changeset
14 }
b5d6c27c308f anime: refactor Anime::SeriesSeason to Season class
Paper <paper@paper.us.eu.org>
parents: 326
diff changeset
15
369
47c9f8502269 *: clang-format all the things
Paper <paper@tflc.us>
parents: 348
diff changeset
16 static Season::Name GetSeasonForMonth(Date::Month month)
47c9f8502269 *: clang-format all the things
Paper <paper@tflc.us>
parents: 348
diff changeset
17 {
327
b5d6c27c308f anime: refactor Anime::SeriesSeason to Season class
Paper <paper@paper.us.eu.org>
parents: 326
diff changeset
18 if (WinterStartsInDecember()) {
b5d6c27c308f anime: refactor Anime::SeriesSeason to Season class
Paper <paper@paper.us.eu.org>
parents: 326
diff changeset
19 switch (month) {
393
963047512d34 *: clang-format
Paper <paper@tflc.us>
parents: 369
diff changeset
20 case Date::Month::Dec:
963047512d34 *: clang-format
Paper <paper@tflc.us>
parents: 369
diff changeset
21 case Date::Month::Jan:
963047512d34 *: clang-format
Paper <paper@tflc.us>
parents: 369
diff changeset
22 case Date::Month::Feb:
963047512d34 *: clang-format
Paper <paper@tflc.us>
parents: 369
diff changeset
23 return Season::Name::Winter;
963047512d34 *: clang-format
Paper <paper@tflc.us>
parents: 369
diff changeset
24 case Date::Month::Mar:
963047512d34 *: clang-format
Paper <paper@tflc.us>
parents: 369
diff changeset
25 case Date::Month::Apr:
963047512d34 *: clang-format
Paper <paper@tflc.us>
parents: 369
diff changeset
26 case Date::Month::May:
963047512d34 *: clang-format
Paper <paper@tflc.us>
parents: 369
diff changeset
27 return Season::Name::Spring;
963047512d34 *: clang-format
Paper <paper@tflc.us>
parents: 369
diff changeset
28 case Date::Month::Jun:
963047512d34 *: clang-format
Paper <paper@tflc.us>
parents: 369
diff changeset
29 case Date::Month::Jul:
963047512d34 *: clang-format
Paper <paper@tflc.us>
parents: 369
diff changeset
30 case Date::Month::Aug:
963047512d34 *: clang-format
Paper <paper@tflc.us>
parents: 369
diff changeset
31 return Season::Name::Summer;
963047512d34 *: clang-format
Paper <paper@tflc.us>
parents: 369
diff changeset
32 case Date::Month::Sep:
963047512d34 *: clang-format
Paper <paper@tflc.us>
parents: 369
diff changeset
33 case Date::Month::Oct:
963047512d34 *: clang-format
Paper <paper@tflc.us>
parents: 369
diff changeset
34 case Date::Month::Nov:
963047512d34 *: clang-format
Paper <paper@tflc.us>
parents: 369
diff changeset
35 return Season::Name::Autumn;
963047512d34 *: clang-format
Paper <paper@tflc.us>
parents: 369
diff changeset
36 default:
963047512d34 *: clang-format
Paper <paper@tflc.us>
parents: 369
diff changeset
37 return Season::Name::Unknown;
327
b5d6c27c308f anime: refactor Anime::SeriesSeason to Season class
Paper <paper@paper.us.eu.org>
parents: 326
diff changeset
38 }
b5d6c27c308f anime: refactor Anime::SeriesSeason to Season class
Paper <paper@paper.us.eu.org>
parents: 326
diff changeset
39 } else {
b5d6c27c308f anime: refactor Anime::SeriesSeason to Season class
Paper <paper@paper.us.eu.org>
parents: 326
diff changeset
40 switch (month) {
393
963047512d34 *: clang-format
Paper <paper@tflc.us>
parents: 369
diff changeset
41 case Date::Month::Jan:
963047512d34 *: clang-format
Paper <paper@tflc.us>
parents: 369
diff changeset
42 case Date::Month::Feb:
963047512d34 *: clang-format
Paper <paper@tflc.us>
parents: 369
diff changeset
43 case Date::Month::Mar:
963047512d34 *: clang-format
Paper <paper@tflc.us>
parents: 369
diff changeset
44 return Season::Name::Winter;
963047512d34 *: clang-format
Paper <paper@tflc.us>
parents: 369
diff changeset
45 case Date::Month::Apr:
963047512d34 *: clang-format
Paper <paper@tflc.us>
parents: 369
diff changeset
46 case Date::Month::May:
963047512d34 *: clang-format
Paper <paper@tflc.us>
parents: 369
diff changeset
47 case Date::Month::Jun:
963047512d34 *: clang-format
Paper <paper@tflc.us>
parents: 369
diff changeset
48 return Season::Name::Spring;
963047512d34 *: clang-format
Paper <paper@tflc.us>
parents: 369
diff changeset
49 case Date::Month::Jul:
963047512d34 *: clang-format
Paper <paper@tflc.us>
parents: 369
diff changeset
50 case Date::Month::Aug:
963047512d34 *: clang-format
Paper <paper@tflc.us>
parents: 369
diff changeset
51 case Date::Month::Sep:
963047512d34 *: clang-format
Paper <paper@tflc.us>
parents: 369
diff changeset
52 return Season::Name::Summer;
963047512d34 *: clang-format
Paper <paper@tflc.us>
parents: 369
diff changeset
53 case Date::Month::Oct:
963047512d34 *: clang-format
Paper <paper@tflc.us>
parents: 369
diff changeset
54 case Date::Month::Nov:
963047512d34 *: clang-format
Paper <paper@tflc.us>
parents: 369
diff changeset
55 case Date::Month::Dec:
963047512d34 *: clang-format
Paper <paper@tflc.us>
parents: 369
diff changeset
56 return Season::Name::Autumn;
963047512d34 *: clang-format
Paper <paper@tflc.us>
parents: 369
diff changeset
57 default:
963047512d34 *: clang-format
Paper <paper@tflc.us>
parents: 369
diff changeset
58 return Season::Name::Unknown;
327
b5d6c27c308f anime: refactor Anime::SeriesSeason to Season class
Paper <paper@paper.us.eu.org>
parents: 326
diff changeset
59 }
281
3ede7be4f449 anime_season: forgot these
Paper <paper@paper.us.eu.org>
parents:
diff changeset
60 }
3ede7be4f449 anime_season: forgot these
Paper <paper@paper.us.eu.org>
parents:
diff changeset
61 }
3ede7be4f449 anime_season: forgot these
Paper <paper@paper.us.eu.org>
parents:
diff changeset
62
369
47c9f8502269 *: clang-format all the things
Paper <paper@tflc.us>
parents: 348
diff changeset
63 Season::Season(Season::Name s, Date::Year y)
47c9f8502269 *: clang-format all the things
Paper <paper@tflc.us>
parents: 348
diff changeset
64 {
327
b5d6c27c308f anime: refactor Anime::SeriesSeason to Season class
Paper <paper@paper.us.eu.org>
parents: 326
diff changeset
65 season = s;
b5d6c27c308f anime: refactor Anime::SeriesSeason to Season class
Paper <paper@paper.us.eu.org>
parents: 326
diff changeset
66 year = y;
281
3ede7be4f449 anime_season: forgot these
Paper <paper@paper.us.eu.org>
parents:
diff changeset
67 }
327
b5d6c27c308f anime: refactor Anime::SeriesSeason to Season class
Paper <paper@paper.us.eu.org>
parents: 326
diff changeset
68
369
47c9f8502269 *: clang-format all the things
Paper <paper@tflc.us>
parents: 348
diff changeset
69 Season::Season(const Date &date)
47c9f8502269 *: clang-format all the things
Paper <paper@tflc.us>
parents: 348
diff changeset
70 {
327
b5d6c27c308f anime: refactor Anime::SeriesSeason to Season class
Paper <paper@paper.us.eu.org>
parents: 326
diff changeset
71 std::optional<Date::Month> month = date.GetMonth();
b5d6c27c308f anime: refactor Anime::SeriesSeason to Season class
Paper <paper@paper.us.eu.org>
parents: 326
diff changeset
72 if (month)
b5d6c27c308f anime: refactor Anime::SeriesSeason to Season class
Paper <paper@paper.us.eu.org>
parents: 326
diff changeset
73 season = GetSeasonForMonth(month.value());
b5d6c27c308f anime: refactor Anime::SeriesSeason to Season class
Paper <paper@paper.us.eu.org>
parents: 326
diff changeset
74
b5d6c27c308f anime: refactor Anime::SeriesSeason to Season class
Paper <paper@paper.us.eu.org>
parents: 326
diff changeset
75 std::optional<Date::Year> y = date.GetYear();
b5d6c27c308f anime: refactor Anime::SeriesSeason to Season class
Paper <paper@paper.us.eu.org>
parents: 326
diff changeset
76 if (y)
b5d6c27c308f anime: refactor Anime::SeriesSeason to Season class
Paper <paper@paper.us.eu.org>
parents: 326
diff changeset
77 year = y.value();
b5d6c27c308f anime: refactor Anime::SeriesSeason to Season class
Paper <paper@paper.us.eu.org>
parents: 326
diff changeset
78 }
b5d6c27c308f anime: refactor Anime::SeriesSeason to Season class
Paper <paper@paper.us.eu.org>
parents: 326
diff changeset
79
369
47c9f8502269 *: clang-format all the things
Paper <paper@tflc.us>
parents: 348
diff changeset
80 bool Season::operator==(const Season &o) const
47c9f8502269 *: clang-format all the things
Paper <paper@tflc.us>
parents: 348
diff changeset
81 {
327
b5d6c27c308f anime: refactor Anime::SeriesSeason to Season class
Paper <paper@paper.us.eu.org>
parents: 326
diff changeset
82 return (season == o.season && year == o.year);
b5d6c27c308f anime: refactor Anime::SeriesSeason to Season class
Paper <paper@paper.us.eu.org>
parents: 326
diff changeset
83 }
b5d6c27c308f anime: refactor Anime::SeriesSeason to Season class
Paper <paper@paper.us.eu.org>
parents: 326
diff changeset
84
369
47c9f8502269 *: clang-format all the things
Paper <paper@tflc.us>
parents: 348
diff changeset
85 bool Season::operator!=(const Season &o) const
47c9f8502269 *: clang-format all the things
Paper <paper@tflc.us>
parents: 348
diff changeset
86 {
327
b5d6c27c308f anime: refactor Anime::SeriesSeason to Season class
Paper <paper@paper.us.eu.org>
parents: 326
diff changeset
87 return !(*this == o);
b5d6c27c308f anime: refactor Anime::SeriesSeason to Season class
Paper <paper@paper.us.eu.org>
parents: 326
diff changeset
88 }
b5d6c27c308f anime: refactor Anime::SeriesSeason to Season class
Paper <paper@paper.us.eu.org>
parents: 326
diff changeset
89
369
47c9f8502269 *: clang-format all the things
Paper <paper@tflc.us>
parents: 348
diff changeset
90 bool Season::operator<(const Season &o) const
47c9f8502269 *: clang-format all the things
Paper <paper@tflc.us>
parents: 348
diff changeset
91 {
327
b5d6c27c308f anime: refactor Anime::SeriesSeason to Season class
Paper <paper@paper.us.eu.org>
parents: 326
diff changeset
92 return std::tie(season, year) < std::tie(o.season, o.year);
b5d6c27c308f anime: refactor Anime::SeriesSeason to Season class
Paper <paper@paper.us.eu.org>
parents: 326
diff changeset
93 }
b5d6c27c308f anime: refactor Anime::SeriesSeason to Season class
Paper <paper@paper.us.eu.org>
parents: 326
diff changeset
94
369
47c9f8502269 *: clang-format all the things
Paper <paper@tflc.us>
parents: 348
diff changeset
95 bool Season::operator>(const Season &o) const
47c9f8502269 *: clang-format all the things
Paper <paper@tflc.us>
parents: 348
diff changeset
96 {
327
b5d6c27c308f anime: refactor Anime::SeriesSeason to Season class
Paper <paper@paper.us.eu.org>
parents: 326
diff changeset
97 return (o < *this);
b5d6c27c308f anime: refactor Anime::SeriesSeason to Season class
Paper <paper@paper.us.eu.org>
parents: 326
diff changeset
98 }
b5d6c27c308f anime: refactor Anime::SeriesSeason to Season class
Paper <paper@paper.us.eu.org>
parents: 326
diff changeset
99
369
47c9f8502269 *: clang-format all the things
Paper <paper@tflc.us>
parents: 348
diff changeset
100 bool Season::operator<=(const Season &o) const
47c9f8502269 *: clang-format all the things
Paper <paper@tflc.us>
parents: 348
diff changeset
101 {
327
b5d6c27c308f anime: refactor Anime::SeriesSeason to Season class
Paper <paper@paper.us.eu.org>
parents: 326
diff changeset
102 return !(o > *this);
b5d6c27c308f anime: refactor Anime::SeriesSeason to Season class
Paper <paper@paper.us.eu.org>
parents: 326
diff changeset
103 }
b5d6c27c308f anime: refactor Anime::SeriesSeason to Season class
Paper <paper@paper.us.eu.org>
parents: 326
diff changeset
104
369
47c9f8502269 *: clang-format all the things
Paper <paper@tflc.us>
parents: 348
diff changeset
105 bool Season::operator>=(const Season &o) const
47c9f8502269 *: clang-format all the things
Paper <paper@tflc.us>
parents: 348
diff changeset
106 {
327
b5d6c27c308f anime: refactor Anime::SeriesSeason to Season class
Paper <paper@paper.us.eu.org>
parents: 326
diff changeset
107 return !(*this < o);
b5d6c27c308f anime: refactor Anime::SeriesSeason to Season class
Paper <paper@paper.us.eu.org>
parents: 326
diff changeset
108 }
b5d6c27c308f anime: refactor Anime::SeriesSeason to Season class
Paper <paper@paper.us.eu.org>
parents: 326
diff changeset
109
369
47c9f8502269 *: clang-format all the things
Paper <paper@tflc.us>
parents: 348
diff changeset
110 Season &Season::operator++()
47c9f8502269 *: clang-format all the things
Paper <paper@tflc.us>
parents: 348
diff changeset
111 {
348
6b0768158dcd text: redesign almost every widget
Paper <paper@paper.us.eu.org>
parents: 327
diff changeset
112 switch (season) {
393
963047512d34 *: clang-format
Paper <paper@tflc.us>
parents: 369
diff changeset
113 case Season::Name::Winter:
963047512d34 *: clang-format
Paper <paper@tflc.us>
parents: 369
diff changeset
114 season = Season::Name::Spring;
963047512d34 *: clang-format
Paper <paper@tflc.us>
parents: 369
diff changeset
115 break;
963047512d34 *: clang-format
Paper <paper@tflc.us>
parents: 369
diff changeset
116 case Season::Name::Spring:
963047512d34 *: clang-format
Paper <paper@tflc.us>
parents: 369
diff changeset
117 season = Season::Name::Summer;
963047512d34 *: clang-format
Paper <paper@tflc.us>
parents: 369
diff changeset
118 break;
963047512d34 *: clang-format
Paper <paper@tflc.us>
parents: 369
diff changeset
119 case Season::Name::Summer:
963047512d34 *: clang-format
Paper <paper@tflc.us>
parents: 369
diff changeset
120 season = Season::Name::Autumn;
963047512d34 *: clang-format
Paper <paper@tflc.us>
parents: 369
diff changeset
121 break;
963047512d34 *: clang-format
Paper <paper@tflc.us>
parents: 369
diff changeset
122 case Season::Name::Autumn:
963047512d34 *: clang-format
Paper <paper@tflc.us>
parents: 369
diff changeset
123 season = Season::Name::Winter;
963047512d34 *: clang-format
Paper <paper@tflc.us>
parents: 369
diff changeset
124 year++;
963047512d34 *: clang-format
Paper <paper@tflc.us>
parents: 369
diff changeset
125 break;
963047512d34 *: clang-format
Paper <paper@tflc.us>
parents: 369
diff changeset
126 default:
963047512d34 *: clang-format
Paper <paper@tflc.us>
parents: 369
diff changeset
127 season = Season::Name::Unknown;
963047512d34 *: clang-format
Paper <paper@tflc.us>
parents: 369
diff changeset
128 break;
348
6b0768158dcd text: redesign almost every widget
Paper <paper@paper.us.eu.org>
parents: 327
diff changeset
129 }
6b0768158dcd text: redesign almost every widget
Paper <paper@paper.us.eu.org>
parents: 327
diff changeset
130
6b0768158dcd text: redesign almost every widget
Paper <paper@paper.us.eu.org>
parents: 327
diff changeset
131 return *this;
327
b5d6c27c308f anime: refactor Anime::SeriesSeason to Season class
Paper <paper@paper.us.eu.org>
parents: 326
diff changeset
132 }
348
6b0768158dcd text: redesign almost every widget
Paper <paper@paper.us.eu.org>
parents: 327
diff changeset
133
369
47c9f8502269 *: clang-format all the things
Paper <paper@tflc.us>
parents: 348
diff changeset
134 Season &Season::operator--()
47c9f8502269 *: clang-format all the things
Paper <paper@tflc.us>
parents: 348
diff changeset
135 {
348
6b0768158dcd text: redesign almost every widget
Paper <paper@paper.us.eu.org>
parents: 327
diff changeset
136 switch (season) {
393
963047512d34 *: clang-format
Paper <paper@tflc.us>
parents: 369
diff changeset
137 case Season::Name::Winter:
963047512d34 *: clang-format
Paper <paper@tflc.us>
parents: 369
diff changeset
138 season = Season::Name::Autumn;
963047512d34 *: clang-format
Paper <paper@tflc.us>
parents: 369
diff changeset
139 year--;
963047512d34 *: clang-format
Paper <paper@tflc.us>
parents: 369
diff changeset
140 break;
963047512d34 *: clang-format
Paper <paper@tflc.us>
parents: 369
diff changeset
141 case Season::Name::Spring:
963047512d34 *: clang-format
Paper <paper@tflc.us>
parents: 369
diff changeset
142 season = Season::Name::Winter;
963047512d34 *: clang-format
Paper <paper@tflc.us>
parents: 369
diff changeset
143 break;
963047512d34 *: clang-format
Paper <paper@tflc.us>
parents: 369
diff changeset
144 case Season::Name::Summer:
963047512d34 *: clang-format
Paper <paper@tflc.us>
parents: 369
diff changeset
145 season = Season::Name::Spring;
963047512d34 *: clang-format
Paper <paper@tflc.us>
parents: 369
diff changeset
146 break;
963047512d34 *: clang-format
Paper <paper@tflc.us>
parents: 369
diff changeset
147 case Season::Name::Autumn:
963047512d34 *: clang-format
Paper <paper@tflc.us>
parents: 369
diff changeset
148 season = Season::Name::Summer;
963047512d34 *: clang-format
Paper <paper@tflc.us>
parents: 369
diff changeset
149 break;
963047512d34 *: clang-format
Paper <paper@tflc.us>
parents: 369
diff changeset
150 default:
963047512d34 *: clang-format
Paper <paper@tflc.us>
parents: 369
diff changeset
151 season = Season::Name::Unknown;
963047512d34 *: clang-format
Paper <paper@tflc.us>
parents: 369
diff changeset
152 break;
348
6b0768158dcd text: redesign almost every widget
Paper <paper@paper.us.eu.org>
parents: 327
diff changeset
153 }
6b0768158dcd text: redesign almost every widget
Paper <paper@paper.us.eu.org>
parents: 327
diff changeset
154
6b0768158dcd text: redesign almost every widget
Paper <paper@paper.us.eu.org>
parents: 327
diff changeset
155 return *this;
6b0768158dcd text: redesign almost every widget
Paper <paper@paper.us.eu.org>
parents: 327
diff changeset
156 }
6b0768158dcd text: redesign almost every widget
Paper <paper@paper.us.eu.org>
parents: 327
diff changeset
157
369
47c9f8502269 *: clang-format all the things
Paper <paper@tflc.us>
parents: 348
diff changeset
158 } // namespace Anime