comparison src/core/anime_season.cc @ 369:47c9f8502269

*: clang-format all the things I've edited the formatting a bit. Now pointer asterisks (and reference ampersands) are on the variable instead of the type, as well as having newlines for function braces (but nothing else)
author Paper <paper@tflc.us>
date Fri, 25 Jul 2025 10:16:02 -0400
parents 6b0768158dcd
children
comparison
equal deleted inserted replaced
368:6d37a998cf91 369:47c9f8502269
1 #include "core/anime_season.h" 1 #include "core/anime_season.h"
2 #include "core/session.h" 2 #include "core/session.h"
3 3
4 namespace Anime { 4 namespace Anime {
5 5
6 static bool WinterStartsInDecember() { 6 static bool WinterStartsInDecember()
7 {
7 switch (session.config.service) { 8 switch (session.config.service) {
8 case Service::MyAnimeList: 9 case Service::MyAnimeList: return false;
9 return false; 10 default: return true;
10 default:
11 return true;
12 } 11 }
13 } 12 }
14 13
15 static Season::Name GetSeasonForMonth(Date::Month month) { 14 static Season::Name GetSeasonForMonth(Date::Month month)
15 {
16 if (WinterStartsInDecember()) { 16 if (WinterStartsInDecember()) {
17 switch (month) { 17 switch (month) {
18 case Date::Month::Dec: case Date::Month::Jan: case Date::Month::Feb: 18 case Date::Month::Dec:
19 return Season::Name::Winter; 19 case Date::Month::Jan:
20 case Date::Month::Mar: case Date::Month::Apr: case Date::Month::May: 20 case Date::Month::Feb: return Season::Name::Winter;
21 return Season::Name::Spring; 21 case Date::Month::Mar:
22 case Date::Month::Jun: case Date::Month::Jul: case Date::Month::Aug: 22 case Date::Month::Apr:
23 return Season::Name::Summer; 23 case Date::Month::May: return Season::Name::Spring;
24 case Date::Month::Sep: case Date::Month::Oct: case Date::Month::Nov: 24 case Date::Month::Jun:
25 return Season::Name::Autumn; 25 case Date::Month::Jul:
26 case Date::Month::Aug: return Season::Name::Summer;
27 case Date::Month::Sep:
28 case Date::Month::Oct:
29 case Date::Month::Nov: return Season::Name::Autumn;
26 default: return Season::Name::Unknown; 30 default: return Season::Name::Unknown;
27 } 31 }
28 } else { 32 } else {
29 switch (month) { 33 switch (month) {
30 case Date::Month::Jan: case Date::Month::Feb: case Date::Month::Mar: 34 case Date::Month::Jan:
31 return Season::Name::Winter; 35 case Date::Month::Feb:
32 case Date::Month::Apr: case Date::Month::May: case Date::Month::Jun: 36 case Date::Month::Mar: return Season::Name::Winter;
33 return Season::Name::Spring; 37 case Date::Month::Apr:
34 case Date::Month::Jul: case Date::Month::Aug: case Date::Month::Sep: 38 case Date::Month::May:
35 return Season::Name::Summer; 39 case Date::Month::Jun: return Season::Name::Spring;
36 case Date::Month::Oct: case Date::Month::Nov: case Date::Month::Dec: 40 case Date::Month::Jul:
37 return Season::Name::Autumn; 41 case Date::Month::Aug:
42 case Date::Month::Sep: return Season::Name::Summer;
43 case Date::Month::Oct:
44 case Date::Month::Nov:
45 case Date::Month::Dec: return Season::Name::Autumn;
38 default: return Season::Name::Unknown; 46 default: return Season::Name::Unknown;
39 } 47 }
40 } 48 }
41 } 49 }
42 50
43 Season::Season(Season::Name s, Date::Year y) { 51 Season::Season(Season::Name s, Date::Year y)
52 {
44 season = s; 53 season = s;
45 year = y; 54 year = y;
46 } 55 }
47 56
48 Season::Season(const Date& date) { 57 Season::Season(const Date &date)
58 {
49 std::optional<Date::Month> month = date.GetMonth(); 59 std::optional<Date::Month> month = date.GetMonth();
50 if (month) 60 if (month)
51 season = GetSeasonForMonth(month.value()); 61 season = GetSeasonForMonth(month.value());
52 62
53 std::optional<Date::Year> y = date.GetYear(); 63 std::optional<Date::Year> y = date.GetYear();
54 if (y) 64 if (y)
55 year = y.value(); 65 year = y.value();
56 } 66 }
57 67
58 bool Season::operator==(const Season& o) const { 68 bool Season::operator==(const Season &o) const
69 {
59 return (season == o.season && year == o.year); 70 return (season == o.season && year == o.year);
60 } 71 }
61 72
62 bool Season::operator!=(const Season& o) const { 73 bool Season::operator!=(const Season &o) const
74 {
63 return !(*this == o); 75 return !(*this == o);
64 } 76 }
65 77
66 bool Season::operator<(const Season& o) const { 78 bool Season::operator<(const Season &o) const
79 {
67 return std::tie(season, year) < std::tie(o.season, o.year); 80 return std::tie(season, year) < std::tie(o.season, o.year);
68 } 81 }
69 82
70 bool Season::operator>(const Season& o) const { 83 bool Season::operator>(const Season &o) const
84 {
71 return (o < *this); 85 return (o < *this);
72 } 86 }
73 87
74 bool Season::operator<=(const Season& o) const { 88 bool Season::operator<=(const Season &o) const
89 {
75 return !(o > *this); 90 return !(o > *this);
76 } 91 }
77 92
78 bool Season::operator>=(const Season& o) const { 93 bool Season::operator>=(const Season &o) const
94 {
79 return !(*this < o); 95 return !(*this < o);
80 } 96 }
81 97
82 Season& Season::operator++() { 98 Season &Season::operator++()
99 {
83 switch (season) { 100 switch (season) {
84 case Season::Name::Winter: season = Season::Name::Spring; break; 101 case Season::Name::Winter: season = Season::Name::Spring; break;
85 case Season::Name::Spring: season = Season::Name::Summer; break; 102 case Season::Name::Spring: season = Season::Name::Summer; break;
86 case Season::Name::Summer: season = Season::Name::Autumn; break; 103 case Season::Name::Summer: season = Season::Name::Autumn; break;
87 case Season::Name::Autumn: season = Season::Name::Winter; year++; break; 104 case Season::Name::Autumn:
105 season = Season::Name::Winter;
106 year++;
107 break;
88 default: season = Season::Name::Unknown; break; 108 default: season = Season::Name::Unknown; break;
89 } 109 }
90 110
91 return *this; 111 return *this;
92 } 112 }
93 113
94 Season& Season::operator--() { 114 Season &Season::operator--()
115 {
95 switch (season) { 116 switch (season) {
96 case Season::Name::Winter: season = Season::Name::Autumn; year--; break; 117 case Season::Name::Winter:
118 season = Season::Name::Autumn;
119 year--;
120 break;
97 case Season::Name::Spring: season = Season::Name::Winter; break; 121 case Season::Name::Spring: season = Season::Name::Winter; break;
98 case Season::Name::Summer: season = Season::Name::Spring; break; 122 case Season::Name::Summer: season = Season::Name::Spring; break;
99 case Season::Name::Autumn: season = Season::Name::Summer; break; 123 case Season::Name::Autumn: season = Season::Name::Summer; break;
100 default: season = Season::Name::Unknown; break; 124 default: season = Season::Name::Unknown; break;
101 } 125 }
102 126
103 return *this; 127 return *this;
104 } 128 }
105 129
106 } 130 } // namespace Anime