Time Shield Library
C++ library for working with time
Loading...
Searching...
No Matches
enums.hpp
Go to the documentation of this file.
1// SPDX-License-Identifier: MIT
2#pragma once
3#ifndef _TIME_SHIELD_ENUMS_HPP_INCLUDED
4#define _TIME_SHIELD_ENUMS_HPP_INCLUDED
5
11
12#include <string>
13#include <array>
14
15namespace time_shield {
16
24
36
43 const char* to_cstr(Weekday value, FormatType format = UPPERCASE_NAME) {
44 static const char* const uppercase_names[] = {
45 "SUN", "MON", "TUE", "WED", "THU", "FRI", "SAT"
46 };
47 static const char* const short_names[] = {
48 "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"
49 };
50 static const char* const full_names[] = {
51 "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"
52 };
53 switch (format) {
54 default:
55 case UPPERCASE_NAME:
56 return uppercase_names[static_cast<size_t>(value)];
57 case SHORT_NAME:
58 return short_names[static_cast<size_t>(value)];
59 case FULL_NAME:
60 return full_names[static_cast<size_t>(value)];
61 };
62 }
63
70 const std::string& to_str(Weekday value, FormatType format = UPPERCASE_NAME) {
71 static const std::array<std::string, 7> uppercase_names = {
72 "SUN", "MON", "TUE", "WED", "THU", "FRI", "SAT"
73 };
74 static const std::array<std::string, 7> short_names = {
75 "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"
76 };
77 static const std::array<std::string, 7> full_names = {
78 "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"
79 };
80 switch (format) {
81 default:
82 case UPPERCASE_NAME:
83 return uppercase_names[static_cast<size_t>(value)];
84 case SHORT_NAME:
85 return short_names[static_cast<size_t>(value)];
86 case FULL_NAME:
87 return full_names[static_cast<size_t>(value)];
88 };
89 }
90
107
114 const char* to_cstr(Month value, FormatType format = UPPERCASE_NAME) {
115 static const char* const uppercase_names[] = {
116 "",
117 "JAN", "FEB", "MAR", "APR", "MAY", "JUN",
118 "JUL", "AUG", "SEP", "OCT", "NOV", "DEC"
119 };
120 static const char* const short_names[] = {
121 "",
122 "Jan", "Feb", "Mar", "Apr", "May", "Jun",
123 "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"
124 };
125 static const char* const full_names[] = {
126 "",
127 "January", "February", "March", "April", "May", "June",
128 "July", "August", "September", "October", "November", "December"
129 };
130 switch (format) {
131 default:
132 case UPPERCASE_NAME:
133 return uppercase_names[static_cast<size_t>(value)];
134 case SHORT_NAME:
135 return short_names[static_cast<size_t>(value)];
136 case FULL_NAME:
137 return full_names[static_cast<size_t>(value)];
138 };
139 }
140
147 const std::string& to_str(Month value, FormatType format = UPPERCASE_NAME) {
148 static const std::array<std::string, 13> uppercase_names = {
149 "",
150 "JAN", "FEB", "MAR", "APR", "MAY", "JUN",
151 "JUL", "AUG", "SEP", "OCT", "NOV", "DEC"
152 };
153 static const std::array<std::string, 13> short_names = {
154 "",
155 "Jan", "Feb", "Mar", "Apr", "May", "Jun",
156 "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"
157 };
158 static const std::array<std::string, 13> full_names = {
159 "",
160 "January", "February", "March", "April", "May", "June",
161 "July", "August", "September", "October", "November", "December"
162 };
163 switch (format) {
164 default:
165 case UPPERCASE_NAME:
166 return uppercase_names[static_cast<size_t>(value)];
167 case SHORT_NAME:
168 return short_names[static_cast<size_t>(value)];
169 case FULL_NAME:
170 return full_names[static_cast<size_t>(value)];
171 };
172 }
173
187
194 const char* to_cstr(TimeZone value, FormatType format = UPPERCASE_NAME) {
195 static const char* const uppercase_names[] = {
196 "GMT", "UTC", "EET", "CET", "WET", "EEST", "CEST", "WEST", "UNKNOWN"
197 };
198 static const char* const short_names[] = {
199 "GMT", "UTC", "EET", "CET", "WET", "EEST", "CEST", "WEST", "Unknown"
200 };
201 static const char* const full_names[] = {
202 "Greenwich Mean Time", "Coordinated Universal Time", "Eastern European Time",
203 "Central European Time", "Western European Time", "Eastern European Summer Time",
204 "Central European Summer Time", "Western European Summer Time", "Unknown Time Zone"
205 };
206 switch (format) {
207 default:
208 case UPPERCASE_NAME:
209 return uppercase_names[static_cast<size_t>(value)];
210 case SHORT_NAME:
211 return short_names[static_cast<size_t>(value)];
212 case FULL_NAME:
213 return full_names[static_cast<size_t>(value)];
214 }
215 }
216
223 const std::string& to_str(TimeZone value, FormatType format = UPPERCASE_NAME) {
224 static const std::array<std::string, 9> uppercase_names = {
225 "GMT", "UTC", "EET", "CET", "WET", "EEST", "CEST", "WEST", "UNKNOWN"
226 };
227 static const std::array<std::string, 9> short_names = {
228 "gmt", "utc", "eet", "cet", "wet", "eest", "cest", "west", "unknown"
229 };
230 static const std::array<std::string, 9> full_names = {
231 "Greenwich Mean Time", "Coordinated Universal Time", "Eastern European Time",
232 "Central European Time", "Western European Time", "Eastern European Summer Time",
233 "Central European Summer Time", "Western European Summer Time", "Unknown Time Zone"
234 };
235 switch (format) {
236 default:
237 case UPPERCASE_NAME:
238 return uppercase_names[static_cast<size_t>(value)];
239 case SHORT_NAME:
240 return short_names[static_cast<size_t>(value)];
241 case FULL_NAME:
242 return full_names[static_cast<size_t>(value)];
243 }
244 }
245
258
272
273}; // namespace time_shield
274
275#endif // _TIME_SHIELD_ENUMS_HPP_INCLUDED
@ SHORT_NAME
Short name.
Definition enums.hpp:21
@ FULL_NAME
Full name.
Definition enums.hpp:22
@ UPPERCASE_NAME
Uppercase short name.
Definition enums.hpp:20
const std::string & to_str(Weekday value, FormatType format=UPPERCASE_NAME)
Converts a Weekday enum value to a string.
Definition enums.hpp:70
const char * to_cstr(Weekday value, FormatType format=UPPERCASE_NAME)
Converts a Weekday enum value to a string.
Definition enums.hpp:43
@ FULL_MOON
Full Moon.
Definition enums.hpp:252
@ NEW_MOON
New Moon.
Definition enums.hpp:256
@ WAXING_GIBBOUS
Waxing Gibbous Moon.
Definition enums.hpp:251
@ FIRST_QUARTER
First Quarter Moon.
Definition enums.hpp:250
@ WANING_CRESCENT
Waning Crescent Moon.
Definition enums.hpp:255
@ WAXING_CRESCENT
Waxing Crescent Moon.
Definition enums.hpp:249
@ LAST_QUARTER
Last Quarter Moon.
Definition enums.hpp:254
@ WANING_GIBBOUS
Waning Gibbous Moon.
Definition enums.hpp:253
@ EUROPEAN_TIME
European time format (e.g., "12:30")
Definition enums.hpp:270
@ ISO8601_NO_TZ
ISO8601 format without time zone (e.g., "2024-06-06T12:30:45")
Definition enums.hpp:263
@ AMERICAN_MONTH_DAY
American date format (e.g., "06/06/2024")
Definition enums.hpp:267
@ ISO8601_WITH_TZ
ISO8601 format with time zone (e.g., "2024-06-06T12:30:45+03:00")
Definition enums.hpp:262
@ MQL5_FULL
MQL5 time format (e.g., "2024.06.06 12:30:45")
Definition enums.hpp:264
@ MQL5_DATE_ONLY
MQL5 date format (e.g., "2024.06.06")
Definition enums.hpp:265
@ MQL5_TIME_ONLY
MQL5 time format (e.g., "12:30:45")
Definition enums.hpp:266
@ AMERICAN_TIME
American time format (e.g., "12:30 PM")
Definition enums.hpp:269
@ EUROPEAN_MONTH_DAY
European date format (e.g., "06.06.2024")
Definition enums.hpp:268
@ SEP
September.
Definition enums.hpp:102
@ OCT
October.
Definition enums.hpp:103
@ FEB
February.
Definition enums.hpp:95
@ JUN
June.
Definition enums.hpp:99
@ MAY
May.
Definition enums.hpp:98
@ NOV
November.
Definition enums.hpp:104
@ MAR
March.
Definition enums.hpp:96
@ AUG
August.
Definition enums.hpp:101
@ DEC
December.
Definition enums.hpp:105
@ APR
April.
Definition enums.hpp:97
@ JAN
January.
Definition enums.hpp:94
@ JUL
July.
Definition enums.hpp:100
@ EET
Eastern European Time.
Definition enums.hpp:179
@ CEST
Central European Summer Time.
Definition enums.hpp:183
@ WEST
Western European Summer Time.
Definition enums.hpp:184
@ WET
Western European Time.
Definition enums.hpp:181
@ UNKNOWN
Unknown Time Zone.
Definition enums.hpp:185
@ UTC
Coordinated Universal Time.
Definition enums.hpp:178
@ GMT
Greenwich Mean Time.
Definition enums.hpp:177
@ EEST
Eastern European Summer Time.
Definition enums.hpp:182
@ CET
Central European Time.
Definition enums.hpp:180
@ TUE
Tuesday.
Definition enums.hpp:30
@ SUN
Sunday.
Definition enums.hpp:28
@ MON
Monday.
Definition enums.hpp:29
@ FRI
Friday.
Definition enums.hpp:33
@ SAT
Saturday.
Definition enums.hpp:34
@ THU
Thursday.
Definition enums.hpp:32
@ WED
Wednesday.
Definition enums.hpp:31
Main namespace for the Time Shield library.