Time Shield Library
C++ library for working with time
Toggle main menu visibility
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_HEADER_TIME_SHIELD_ENUMS_HPP_INCLUDED
4
#define TIME_SHIELD_HEADER_TIME_SHIELD_ENUMS_HPP_INCLUDED
5
11
12
#include <string>
13
#include <array>
14
15
namespace
time_shield
{
16
19
enum
FormatType
{
20
UPPERCASE_NAME
= 0,
21
SHORT_NAME
,
22
FULL_NAME
,
23
};
24
27
enum
Weekday
{
28
SUN
= 0,
29
MON
,
30
TUE
,
31
WED
,
32
THU
,
33
FRI
,
34
SAT
35
};
36
43
inline
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
inline
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
93
enum
Month
{
94
JAN
= 1,
95
FEB
,
96
MAR
,
97
APR
,
98
MAY
,
99
JUN
,
100
JUL
,
101
AUG
,
102
SEP
,
103
OCT
,
104
NOV
,
105
DEC
106
};
107
114
inline
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
inline
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
176
enum
TimeZone
{
177
GMT
,
178
UTC
,
179
EET
,
180
CET
,
181
WET
,
182
EEST
,
183
CEST
,
184
WEST
,
185
ET
,
186
CT
,
187
IST
,
188
MYT
,
189
WIB
,
190
WITA
,
191
WIT
,
192
KZT
,
193
TRT
,
194
BYT
,
195
SGT
,
196
ICT
,
197
PHT
,
198
GST
,
199
HKT
,
200
JST
,
201
KST
,
202
UNKNOWN
203
};
204
211
inline
const
char
*
to_cstr
(
TimeZone
value,
FormatType
format =
UPPERCASE_NAME
) {
212
static
const
char
*
const
uppercase_names[] = {
213
"GMT"
,
"UTC"
,
"EET"
,
"CET"
,
"WET"
,
"EEST"
,
"CEST"
,
"WEST"
,
214
"ET"
,
"CT"
,
"IST"
,
"MYT"
,
"WIB"
,
"WITA"
,
"WIT"
,
"KZT"
,
"TRT"
,
215
"BYT"
,
"SGT"
,
"ICT"
,
"PHT"
,
"GST"
,
"HKT"
,
"JST"
,
"KST"
,
"UNKNOWN"
216
};
217
static
const
char
*
const
short_names[] = {
218
"GMT"
,
"UTC"
,
"EET"
,
"CET"
,
"WET"
,
"EEST"
,
"CEST"
,
"WEST"
,
219
"ET"
,
"CT"
,
"IST"
,
"MYT"
,
"WIB"
,
"WITA"
,
"WIT"
,
"KZT"
,
"TRT"
,
220
"BYT"
,
"SGT"
,
"ICT"
,
"PHT"
,
"GST"
,
"HKT"
,
"JST"
,
"KST"
,
"Unknown"
221
};
222
static
const
char
*
const
full_names[] = {
223
"Greenwich Mean Time"
,
"Coordinated Universal Time"
,
"Eastern European Time"
,
224
"Central European Time"
,
"Western European Time"
,
"Eastern European Summer Time"
,
225
"Central European Summer Time"
,
"Western European Summer Time"
,
226
"US Eastern Time"
,
"US Central Time"
,
"India Standard Time"
,
227
"Malaysia Time"
,
"Western Indonesia Time"
,
"Central Indonesia Time"
,
228
"Eastern Indonesia Time"
,
"Kazakhstan Time"
,
"Turkey Time"
,
229
"Belarus Time"
,
"Singapore Time"
,
"Indochina Time"
,
230
"Philippine Time"
,
"Gulf Standard Time"
,
"Hong Kong Time"
,
231
"Japan Standard Time"
,
"Korea Standard Time"
,
"Unknown Time Zone"
232
};
233
switch
(format) {
234
default
:
235
case
UPPERCASE_NAME
:
236
return
uppercase_names[
static_cast<
size_t
>
(value)];
237
case
SHORT_NAME
:
238
return
short_names[
static_cast<
size_t
>
(value)];
239
case
FULL_NAME
:
240
return
full_names[
static_cast<
size_t
>
(value)];
241
}
242
}
243
250
inline
const
std::string&
to_str
(
TimeZone
value,
FormatType
format =
UPPERCASE_NAME
) {
251
static
const
std::array<std::string, 26> uppercase_names = {
252
"GMT"
,
"UTC"
,
"EET"
,
"CET"
,
"WET"
,
"EEST"
,
"CEST"
,
"WEST"
,
253
"ET"
,
"CT"
,
"IST"
,
"MYT"
,
"WIB"
,
"WITA"
,
"WIT"
,
"KZT"
,
"TRT"
,
254
"BYT"
,
"SGT"
,
"ICT"
,
"PHT"
,
"GST"
,
"HKT"
,
"JST"
,
"KST"
,
"UNKNOWN"
255
};
256
static
const
std::array<std::string, 26> short_names = {
257
"gmt"
,
"utc"
,
"eet"
,
"cet"
,
"wet"
,
"eest"
,
"cest"
,
"west"
,
258
"et"
,
"ct"
,
"ist"
,
"myt"
,
"wib"
,
"wita"
,
"wit"
,
"kzt"
,
"trt"
,
259
"byt"
,
"sgt"
,
"ict"
,
"pht"
,
"gst"
,
"hkt"
,
"jst"
,
"kst"
,
"unknown"
260
};
261
static
const
std::array<std::string, 26> full_names = {
262
"Greenwich Mean Time"
,
"Coordinated Universal Time"
,
"Eastern European Time"
,
263
"Central European Time"
,
"Western European Time"
,
"Eastern European Summer Time"
,
264
"Central European Summer Time"
,
"Western European Summer Time"
,
265
"US Eastern Time"
,
"US Central Time"
,
"India Standard Time"
,
266
"Malaysia Time"
,
"Western Indonesia Time"
,
"Central Indonesia Time"
,
267
"Eastern Indonesia Time"
,
"Kazakhstan Time"
,
"Turkey Time"
,
268
"Belarus Time"
,
"Singapore Time"
,
"Indochina Time"
,
269
"Philippine Time"
,
"Gulf Standard Time"
,
"Hong Kong Time"
,
270
"Japan Standard Time"
,
"Korea Standard Time"
,
"Unknown Time Zone"
271
};
272
switch
(format) {
273
default
:
274
case
UPPERCASE_NAME
:
275
return
uppercase_names[
static_cast<
size_t
>
(value)];
276
case
SHORT_NAME
:
277
return
short_names[
static_cast<
size_t
>
(value)];
278
case
FULL_NAME
:
279
return
full_names[
static_cast<
size_t
>
(value)];
280
}
281
}
282
285
enum
MoonPhase
{
286
WAXING_CRESCENT
,
287
FIRST_QUARTER
,
288
WAXING_GIBBOUS
,
289
FULL_MOON
,
290
WANING_GIBBOUS
,
291
LAST_QUARTER
,
292
WANING_CRESCENT
,
293
NEW_MOON
294
};
295
298
enum
TimeFormatType
{
299
ISO8601_WITH_TZ
,
300
ISO8601_NO_TZ
,
301
MQL5_FULL
,
302
MQL5_DATE_ONLY
,
303
MQL5_TIME_ONLY
,
304
AMERICAN_MONTH_DAY
,
305
EUROPEAN_MONTH_DAY
,
306
AMERICAN_TIME
,
307
EUROPEAN_TIME
,
308
};
309
310
};
// namespace time_shield
311
312
#endif
// TIME_SHIELD_HEADER_TIME_SHIELD_ENUMS_HPP_INCLUDED
time_shield::SHORT_NAME
@ SHORT_NAME
Short name.
Definition
enums.hpp:21
time_shield::FULL_NAME
@ FULL_NAME
Full name.
Definition
enums.hpp:22
time_shield::UPPERCASE_NAME
@ UPPERCASE_NAME
Uppercase short name.
Definition
enums.hpp:20
time_shield::to_str
const std::string & to_str(Weekday value, FormatType format=UPPERCASE_NAME)
Converts a Weekday enum value to a string.
Definition
enums.hpp:70
time_shield::MoonPhase
MoonPhase
Definition
enums.hpp:285
time_shield::TimeFormatType
TimeFormatType
Definition
enums.hpp:298
time_shield::FormatType
FormatType
Definition
enums.hpp:19
time_shield::Month
Month
Definition
enums.hpp:93
time_shield::TimeZone
TimeZone
Definition
enums.hpp:176
time_shield::to_cstr
const char * to_cstr(Weekday value, FormatType format=UPPERCASE_NAME)
Converts a Weekday enum value to a string.
Definition
enums.hpp:43
time_shield::Weekday
Weekday
Definition
enums.hpp:27
time_shield::FULL_MOON
@ FULL_MOON
Full Moon.
Definition
enums.hpp:289
time_shield::NEW_MOON
@ NEW_MOON
New Moon.
Definition
enums.hpp:293
time_shield::WAXING_GIBBOUS
@ WAXING_GIBBOUS
Waxing Gibbous Moon.
Definition
enums.hpp:288
time_shield::FIRST_QUARTER
@ FIRST_QUARTER
First Quarter Moon.
Definition
enums.hpp:287
time_shield::WANING_CRESCENT
@ WANING_CRESCENT
Waning Crescent Moon.
Definition
enums.hpp:292
time_shield::WAXING_CRESCENT
@ WAXING_CRESCENT
Waxing Crescent Moon.
Definition
enums.hpp:286
time_shield::LAST_QUARTER
@ LAST_QUARTER
Last Quarter Moon.
Definition
enums.hpp:291
time_shield::WANING_GIBBOUS
@ WANING_GIBBOUS
Waning Gibbous Moon.
Definition
enums.hpp:290
time_shield::EUROPEAN_TIME
@ EUROPEAN_TIME
European time format (e.g., "12:30").
Definition
enums.hpp:307
time_shield::ISO8601_NO_TZ
@ ISO8601_NO_TZ
ISO8601 format without time zone (e.g., "2024-06-06T12:30:45").
Definition
enums.hpp:300
time_shield::AMERICAN_MONTH_DAY
@ AMERICAN_MONTH_DAY
American date format (e.g., "06/06/2024").
Definition
enums.hpp:304
time_shield::ISO8601_WITH_TZ
@ ISO8601_WITH_TZ
ISO8601 format with time zone (e.g., "2024-06-06T12:30:45+03:00").
Definition
enums.hpp:299
time_shield::MQL5_FULL
@ MQL5_FULL
MQL5 time format (e.g., "2024.06.06 12:30:45").
Definition
enums.hpp:301
time_shield::MQL5_DATE_ONLY
@ MQL5_DATE_ONLY
MQL5 date format (e.g., "2024.06.06").
Definition
enums.hpp:302
time_shield::MQL5_TIME_ONLY
@ MQL5_TIME_ONLY
MQL5 time format (e.g., "12:30:45").
Definition
enums.hpp:303
time_shield::AMERICAN_TIME
@ AMERICAN_TIME
American time format (e.g., "12:30 PM").
Definition
enums.hpp:306
time_shield::EUROPEAN_MONTH_DAY
@ EUROPEAN_MONTH_DAY
European date format (e.g., "06.06.2024").
Definition
enums.hpp:305
time_shield::SEP
@ SEP
September.
Definition
enums.hpp:102
time_shield::OCT
@ OCT
October.
Definition
enums.hpp:103
time_shield::FEB
@ FEB
February.
Definition
enums.hpp:95
time_shield::JUN
@ JUN
June.
Definition
enums.hpp:99
time_shield::MAY
@ MAY
May.
Definition
enums.hpp:98
time_shield::NOV
@ NOV
November.
Definition
enums.hpp:104
time_shield::MAR
@ MAR
March.
Definition
enums.hpp:96
time_shield::AUG
@ AUG
August.
Definition
enums.hpp:101
time_shield::DEC
@ DEC
December.
Definition
enums.hpp:105
time_shield::APR
@ APR
April.
Definition
enums.hpp:97
time_shield::JAN
@ JAN
January.
Definition
enums.hpp:94
time_shield::JUL
@ JUL
July.
Definition
enums.hpp:100
time_shield::JST
@ JST
Japan Standard Time.
Definition
enums.hpp:200
time_shield::GST
@ GST
Gulf Standard Time.
Definition
enums.hpp:198
time_shield::PHT
@ PHT
Philippine Time.
Definition
enums.hpp:197
time_shield::BYT
@ BYT
Belarus Time.
Definition
enums.hpp:194
time_shield::KST
@ KST
Korea Standard Time.
Definition
enums.hpp:201
time_shield::ET
@ ET
US Eastern Time.
Definition
enums.hpp:185
time_shield::EET
@ EET
Eastern European Time.
Definition
enums.hpp:179
time_shield::CEST
@ CEST
Central European Summer Time.
Definition
enums.hpp:183
time_shield::WIT
@ WIT
Eastern Indonesia Time.
Definition
enums.hpp:191
time_shield::WEST
@ WEST
Western European Summer Time.
Definition
enums.hpp:184
time_shield::WITA
@ WITA
Central Indonesia Time.
Definition
enums.hpp:190
time_shield::MYT
@ MYT
Malaysia Time.
Definition
enums.hpp:188
time_shield::HKT
@ HKT
Hong Kong Time.
Definition
enums.hpp:199
time_shield::WET
@ WET
Western European Time.
Definition
enums.hpp:181
time_shield::KZT
@ KZT
Kazakhstan Time.
Definition
enums.hpp:192
time_shield::UNKNOWN
@ UNKNOWN
Unknown Time Zone.
Definition
enums.hpp:202
time_shield::TRT
@ TRT
Turkey Time.
Definition
enums.hpp:193
time_shield::UTC
@ UTC
Coordinated Universal Time.
Definition
enums.hpp:178
time_shield::ICT
@ ICT
Indochina Time.
Definition
enums.hpp:196
time_shield::GMT
@ GMT
Greenwich Mean Time.
Definition
enums.hpp:177
time_shield::SGT
@ SGT
Singapore Time.
Definition
enums.hpp:195
time_shield::WIB
@ WIB
Western Indonesia Time.
Definition
enums.hpp:189
time_shield::EEST
@ EEST
Eastern European Summer Time.
Definition
enums.hpp:182
time_shield::CT
@ CT
US Central Time.
Definition
enums.hpp:186
time_shield::CET
@ CET
Central European Time.
Definition
enums.hpp:180
time_shield::IST
@ IST
India Standard Time.
Definition
enums.hpp:187
time_shield::TUE
@ TUE
Tuesday.
Definition
enums.hpp:30
time_shield::SUN
@ SUN
Sunday.
Definition
enums.hpp:28
time_shield::MON
@ MON
Monday.
Definition
enums.hpp:29
time_shield::FRI
@ FRI
Friday.
Definition
enums.hpp:33
time_shield::SAT
@ SAT
Saturday.
Definition
enums.hpp:34
time_shield::THU
@ THU
Thursday.
Definition
enums.hpp:32
time_shield::WED
@ WED
Wednesday.
Definition
enums.hpp:31
time_shield
Main namespace for the Time Shield library.
include
time_shield
enums.hpp
Generated by
1.17.0