annotate src/core/anime_season.cc @ 372:a65a43766b22

dep/animone: atspi a11y impl didn't work at all and hit an assertion because paper can't code
author Paper <paper@tflc.us>
date Fri, 25 Jul 2025 11:02:29 -0400
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) {
369
47c9f8502269 *: clang-format all the things
Paper <paper@tflc.us>
parents: 348
diff changeset
9 case Service::MyAnimeList: return false;
47c9f8502269 *: clang-format all the things
Paper <paper@tflc.us>
parents: 348
diff changeset
10 default: return true;
327
b5d6c27c308f anime: refactor Anime::SeriesSeason to Season class
Paper <paper@paper.us.eu.org>
parents: 326
diff changeset
11 }
b5d6c27c308f anime: refactor Anime::SeriesSeason to Season class
Paper <paper@paper.us.eu.org>
parents: 326
diff changeset
12 }
b5d6c27c308f anime: refactor Anime::SeriesSeason to Season class
Paper <paper@paper.us.eu.org>
parents: 326
diff changeset
13
369
47c9f8502269 *: clang-format all the things
Paper <paper@tflc.us>
parents: 348
diff changeset
14 static Season::Name GetSeasonForMonth(Date::Month month)
47c9f8502269 *: clang-format all the things
Paper <paper@tflc.us>
parents: 348
diff changeset
15 {
327
b5d6c27c308f anime: refactor Anime::SeriesSeason to Season class
Paper <paper@paper.us.eu.org>
parents: 326
diff changeset
16 if (WinterStartsInDecember()) {
b5d6c27c308f anime: refactor Anime::SeriesSeason to Season class
Paper <paper@paper.us.eu.org>
parents: 326
diff changeset
17 switch (month) {
369
47c9f8502269 *: clang-format all the things
Paper <paper@tflc.us>
parents: 348
diff changeset
18 case Date::Month::Dec:
47c9f8502269 *: clang-format all the things
Paper <paper@tflc.us>
parents: 348
diff changeset
19 case Date::Month::Jan:
47c9f8502269 *: clang-format all the things
Paper <paper@tflc.us>
parents: 348
diff changeset
20 case Date::Month::Feb: return Season::Name::Winter;
47c9f8502269 *: clang-format all the things
Paper <paper@tflc.us>
parents: 348
diff changeset
21 case Date::Month::Mar:
47c9f8502269 *: clang-format all the things
Paper <paper@tflc.us>
parents: 348
diff changeset
22 case Date::Month::Apr:
47c9f8502269 *: clang-format all the things
Paper <paper@tflc.us>
parents: 348
diff changeset
23 case Date::Month::May: return Season::Name::Spring;
47c9f8502269 *: clang-format all the things
Paper <paper@tflc.us>
parents: 348
diff changeset
24 case Date::Month::Jun:
47c9f8502269 *: clang-format all the things
Paper <paper@tflc.us>
parents: 348
diff changeset
25 case Date::Month::Jul:
47c9f8502269 *: clang-format all the things
Paper <paper@tflc.us>
parents: 348
diff changeset
26 case Date::Month::Aug: return Season::Name::Summer;
47c9f8502269 *: clang-format all the things
Paper <paper@tflc.us>
parents: 348
diff changeset
27 case Date::Month::Sep:
47c9f8502269 *: clang-format all the things
Paper <paper@tflc.us>
parents: 348
diff changeset
28 case Date::Month::Oct:
47c9f8502269 *: clang-format all the things
Paper <paper@tflc.us>
parents: 348
diff changeset
29 case Date::Month::Nov: return Season::Name::Autumn;
327
b5d6c27c308f anime: refactor Anime::SeriesSeason to Season class
Paper <paper@paper.us.eu.org>
parents: 326
diff changeset
30 default: return Season::Name::Unknown;
b5d6c27c308f anime: refactor Anime::SeriesSeason to Season class
Paper <paper@paper.us.eu.org>
parents: 326
diff changeset
31 }
b5d6c27c308f anime: refactor Anime::SeriesSeason to Season class
Paper <paper@paper.us.eu.org>
parents: 326
diff changeset
32 } else {
b5d6c27c308f anime: refactor Anime::SeriesSeason to Season class
Paper <paper@paper.us.eu.org>
parents: 326
diff changeset
33 switch (month) {
369
47c9f8502269 *: clang-format all the things
Paper <paper@tflc.us>
parents: 348
diff changeset
34 case Date::Month::Jan:
47c9f8502269 *: clang-format all the things
Paper <paper@tflc.us>
parents: 348
diff changeset
35 case Date::Month::Feb:
47c9f8502269 *: clang-format all the things
Paper <paper@tflc.us>
parents: 348
diff changeset
36 case Date::Month::Mar: return Season::Name::Winter;
47c9f8502269 *: clang-format all the things
Paper <paper@tflc.us>
parents: 348
diff changeset
37 case Date::Month::Apr:
47c9f8502269 *: clang-format all the things
Paper <paper@tflc.us>
parents: 348
diff changeset
38 case Date::Month::May:
47c9f8502269 *: clang-format all the things
Paper <paper@tflc.us>
parents: 348
diff changeset
39 case Date::Month::Jun: return Season::Name::Spring;
47c9f8502269 *: clang-format all the things
Paper <paper@tflc.us>
parents: 348
diff changeset
40 case Date::Month::Jul:
47c9f8502269 *: clang-format all the things
Paper <paper@tflc.us>
parents: 348
diff changeset
41 case Date::Month::Aug:
47c9f8502269 *: clang-format all the things
Paper <paper@tflc.us>
parents: 348
diff changeset
42 case Date::Month::Sep: return Season::Name::Summer;
47c9f8502269 *: clang-format all the things
Paper <paper@tflc.us>
parents: 348
diff changeset
43 case Date::Month::Oct:
47c9f8502269 *: clang-format all the things
Paper <paper@tflc.us>
parents: 348
diff changeset
44 case Date::Month::Nov:
47c9f8502269 *: clang-format all the things
Paper <paper@tflc.us>
parents: 348
diff changeset
45 case Date::Month::Dec: return Season::Name::Autumn;
327
b5d6c27c308f anime: refactor Anime::SeriesSeason to Season class
Paper <paper@paper.us.eu.org>
parents: 326
diff changeset
46 default: return Season::Name::Unknown;
b5d6c27c308f anime: refactor Anime::SeriesSeason to Season class
Paper <paper@paper.us.eu.org>
parents: 326
diff changeset
47 }
281
3ede7be4f449 anime_season: forgot these
Paper <paper@paper.us.eu.org>
parents:
diff changeset
48 }
3ede7be4f449 anime_season: forgot these
Paper <paper@paper.us.eu.org>
parents:
diff changeset
49 }
3ede7be4f449 anime_season: forgot these
Paper <paper@paper.us.eu.org>
parents:
diff changeset
50
369
47c9f8502269 *: clang-format all the things
Paper <paper@tflc.us>
parents: 348
diff changeset
51 Season::Season(Season::Name s, Date::Year y)
47c9f8502269 *: clang-format all the things
Paper <paper@tflc.us>
parents: 348
diff changeset
52 {
327
b5d6c27c308f anime: refactor Anime::SeriesSeason to Season class
Paper <paper@paper.us.eu.org>
parents: 326
diff changeset
53 season = s;
b5d6c27c308f anime: refactor Anime::SeriesSeason to Season class
Paper <paper@paper.us.eu.org>
parents: 326
diff changeset
54 year = y;
281
3ede7be4f449 anime_season: forgot these
Paper <paper@paper.us.eu.org>
parents:
diff changeset
55 }
327
b5d6c27c308f anime: refactor Anime::SeriesSeason to Season class
Paper <paper@paper.us.eu.org>
parents: 326
diff changeset
56
369
47c9f8502269 *: clang-format all the things
Paper <paper@tflc.us>
parents: 348
diff changeset
57 Season::Season(const Date &date)
47c9f8502269 *: clang-format all the things
Paper <paper@tflc.us>
parents: 348
diff changeset
58 {
327
b5d6c27c308f anime: refactor Anime::SeriesSeason to Season class
Paper <paper@paper.us.eu.org>
parents: 326
diff changeset
59 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
60 if (month)
b5d6c27c308f anime: refactor Anime::SeriesSeason to Season class
Paper <paper@paper.us.eu.org>
parents: 326
diff changeset
61 season = GetSeasonForMonth(month.value());
b5d6c27c308f anime: refactor Anime::SeriesSeason to Season class
Paper <paper@paper.us.eu.org>
parents: 326
diff changeset
62
b5d6c27c308f anime: refactor Anime::SeriesSeason to Season class
Paper <paper@paper.us.eu.org>
parents: 326
diff changeset
63 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
64 if (y)
b5d6c27c308f anime: refactor Anime::SeriesSeason to Season class
Paper <paper@paper.us.eu.org>
parents: 326
diff changeset
65 year = y.value();
b5d6c27c308f anime: refactor Anime::SeriesSeason to Season class
Paper <paper@paper.us.eu.org>
parents: 326
diff changeset
66 }
b5d6c27c308f anime: refactor Anime::SeriesSeason to Season class
Paper <paper@paper.us.eu.org>
parents: 326
diff changeset
67
369
47c9f8502269 *: clang-format all the things
Paper <paper@tflc.us>
parents: 348
diff changeset
68 bool Season::operator==(const Season &o) const
47c9f8502269 *: clang-format all the things
Paper <paper@tflc.us>
parents: 348
diff changeset
69 {
327
b5d6c27c308f anime: refactor Anime::SeriesSeason to Season class
Paper <paper@paper.us.eu.org>
parents: 326
diff changeset
70 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
71 }
b5d6c27c308f anime: refactor Anime::SeriesSeason to Season class
Paper <paper@paper.us.eu.org>
parents: 326
diff changeset
72
369
47c9f8502269 *: clang-format all the things
Paper <paper@tflc.us>
parents: 348
diff changeset
73 bool Season::operator!=(const Season &o) const
47c9f8502269 *: clang-format all the things
Paper <paper@tflc.us>
parents: 348
diff changeset
74 {
327
b5d6c27c308f anime: refactor Anime::SeriesSeason to Season class
Paper <paper@paper.us.eu.org>
parents: 326
diff changeset
75 return !(*this == o);
b5d6c27c308f anime: refactor Anime::SeriesSeason to Season class
Paper <paper@paper.us.eu.org>
parents: 326
diff changeset
76 }
b5d6c27c308f anime: refactor Anime::SeriesSeason to Season class
Paper <paper@paper.us.eu.org>
parents: 326
diff changeset
77
369
47c9f8502269 *: clang-format all the things
Paper <paper@tflc.us>
parents: 348
diff changeset
78 bool Season::operator<(const Season &o) const
47c9f8502269 *: clang-format all the things
Paper <paper@tflc.us>
parents: 348
diff changeset
79 {
327
b5d6c27c308f anime: refactor Anime::SeriesSeason to Season class
Paper <paper@paper.us.eu.org>
parents: 326
diff changeset
80 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
81 }
b5d6c27c308f anime: refactor Anime::SeriesSeason to Season class
Paper <paper@paper.us.eu.org>
parents: 326
diff changeset
82
369
47c9f8502269 *: clang-format all the things
Paper <paper@tflc.us>
parents: 348
diff changeset
83 bool Season::operator>(const Season &o) const
47c9f8502269 *: clang-format all the things
Paper <paper@tflc.us>
parents: 348
diff changeset
84 {
327
b5d6c27c308f anime: refactor Anime::SeriesSeason to Season class
Paper <paper@paper.us.eu.org>
parents: 326
diff changeset
85 return (o < *this);
b5d6c27c308f anime: refactor Anime::SeriesSeason to Season class
Paper <paper@paper.us.eu.org>
parents: 326
diff changeset
86 }
b5d6c27c308f anime: refactor Anime::SeriesSeason to Season class
Paper <paper@paper.us.eu.org>
parents: 326
diff changeset
87
369
47c9f8502269 *: clang-format all the things
Paper <paper@tflc.us>
parents: 348
diff changeset
88 bool Season::operator<=(const Season &o) const
47c9f8502269 *: clang-format all the things
Paper <paper@tflc.us>
parents: 348
diff changeset
89 {
327
b5d6c27c308f anime: refactor Anime::SeriesSeason to Season class
Paper <paper@paper.us.eu.org>
parents: 326
diff changeset
90 return !(o > *this);
b5d6c27c308f anime: refactor Anime::SeriesSeason to Season class
Paper <paper@paper.us.eu.org>
parents: 326
diff changeset
91 }
b5d6c27c308f anime: refactor Anime::SeriesSeason to Season class
Paper <paper@paper.us.eu.org>
parents: 326
diff changeset
92
369
47c9f8502269 *: clang-format all the things
Paper <paper@tflc.us>
parents: 348
diff changeset
93 bool Season::operator>=(const Season &o) const
47c9f8502269 *: clang-format all the things
Paper <paper@tflc.us>
parents: 348
diff changeset
94 {
327
b5d6c27c308f anime: refactor Anime::SeriesSeason to Season class
Paper <paper@paper.us.eu.org>
parents: 326
diff changeset
95 return !(*this < o);
b5d6c27c308f anime: refactor Anime::SeriesSeason to Season class
Paper <paper@paper.us.eu.org>
parents: 326
diff changeset
96 }
b5d6c27c308f anime: refactor Anime::SeriesSeason to Season class
Paper <paper@paper.us.eu.org>
parents: 326
diff changeset
97
369
47c9f8502269 *: clang-format all the things
Paper <paper@tflc.us>
parents: 348
diff changeset
98 Season &Season::operator++()
47c9f8502269 *: clang-format all the things
Paper <paper@tflc.us>
parents: 348
diff changeset
99 {
348
6b0768158dcd text: redesign almost every widget
Paper <paper@paper.us.eu.org>
parents: 327
diff changeset
100 switch (season) {
6b0768158dcd text: redesign almost every widget
Paper <paper@paper.us.eu.org>
parents: 327
diff changeset
101 case Season::Name::Winter: season = Season::Name::Spring; break;
6b0768158dcd text: redesign almost every widget
Paper <paper@paper.us.eu.org>
parents: 327
diff changeset
102 case Season::Name::Spring: season = Season::Name::Summer; break;
6b0768158dcd text: redesign almost every widget
Paper <paper@paper.us.eu.org>
parents: 327
diff changeset
103 case Season::Name::Summer: season = Season::Name::Autumn; break;
369
47c9f8502269 *: clang-format all the things
Paper <paper@tflc.us>
parents: 348
diff changeset
104 case Season::Name::Autumn:
47c9f8502269 *: clang-format all the things
Paper <paper@tflc.us>
parents: 348
diff changeset
105 season = Season::Name::Winter;
47c9f8502269 *: clang-format all the things
Paper <paper@tflc.us>
parents: 348
diff changeset
106 year++;
47c9f8502269 *: clang-format all the things
Paper <paper@tflc.us>
parents: 348
diff changeset
107 break;
348
6b0768158dcd text: redesign almost every widget
Paper <paper@paper.us.eu.org>
parents: 327
diff changeset
108 default: season = Season::Name::Unknown; break;
6b0768158dcd text: redesign almost every widget
Paper <paper@paper.us.eu.org>
parents: 327
diff changeset
109 }
6b0768158dcd text: redesign almost every widget
Paper <paper@paper.us.eu.org>
parents: 327
diff changeset
110
6b0768158dcd text: redesign almost every widget
Paper <paper@paper.us.eu.org>
parents: 327
diff changeset
111 return *this;
327
b5d6c27c308f anime: refactor Anime::SeriesSeason to Season class
Paper <paper@paper.us.eu.org>
parents: 326
diff changeset
112 }
348
6b0768158dcd text: redesign almost every widget
Paper <paper@paper.us.eu.org>
parents: 327
diff changeset
113
369
47c9f8502269 *: clang-format all the things
Paper <paper@tflc.us>
parents: 348
diff changeset
114 Season &Season::operator--()
47c9f8502269 *: clang-format all the things
Paper <paper@tflc.us>
parents: 348
diff changeset
115 {
348
6b0768158dcd text: redesign almost every widget
Paper <paper@paper.us.eu.org>
parents: 327
diff changeset
116 switch (season) {
369
47c9f8502269 *: clang-format all the things
Paper <paper@tflc.us>
parents: 348
diff changeset
117 case Season::Name::Winter:
47c9f8502269 *: clang-format all the things
Paper <paper@tflc.us>
parents: 348
diff changeset
118 season = Season::Name::Autumn;
47c9f8502269 *: clang-format all the things
Paper <paper@tflc.us>
parents: 348
diff changeset
119 year--;
47c9f8502269 *: clang-format all the things
Paper <paper@tflc.us>
parents: 348
diff changeset
120 break;
348
6b0768158dcd text: redesign almost every widget
Paper <paper@paper.us.eu.org>
parents: 327
diff changeset
121 case Season::Name::Spring: season = Season::Name::Winter; break;
6b0768158dcd text: redesign almost every widget
Paper <paper@paper.us.eu.org>
parents: 327
diff changeset
122 case Season::Name::Summer: season = Season::Name::Spring; break;
6b0768158dcd text: redesign almost every widget
Paper <paper@paper.us.eu.org>
parents: 327
diff changeset
123 case Season::Name::Autumn: season = Season::Name::Summer; break;
6b0768158dcd text: redesign almost every widget
Paper <paper@paper.us.eu.org>
parents: 327
diff changeset
124 default: season = Season::Name::Unknown; break;
6b0768158dcd text: redesign almost every widget
Paper <paper@paper.us.eu.org>
parents: 327
diff changeset
125 }
6b0768158dcd text: redesign almost every widget
Paper <paper@paper.us.eu.org>
parents: 327
diff changeset
126
6b0768158dcd text: redesign almost every widget
Paper <paper@paper.us.eu.org>
parents: 327
diff changeset
127 return *this;
6b0768158dcd text: redesign almost every widget
Paper <paper@paper.us.eu.org>
parents: 327
diff changeset
128 }
6b0768158dcd text: redesign almost every widget
Paper <paper@paper.us.eu.org>
parents: 327
diff changeset
129
369
47c9f8502269 *: clang-format all the things
Paper <paper@tflc.us>
parents: 348
diff changeset
130 } // namespace Anime