mirror of
https://github.com/Relintai/pandemonium_engine_minimal.git
synced 2024-11-17 22:17:19 +01:00
Fix scu build.
This commit is contained in:
parent
08f3488f8d
commit
01c3093708
@ -42,28 +42,31 @@
|
|||||||
#include "core/os/keyboard.h"
|
#include "core/os/keyboard.h"
|
||||||
#include "core/os/os.h"
|
#include "core/os/os.h"
|
||||||
|
|
||||||
/**
|
#ifndef TIME_CONSTANTS_HELPERS
|
||||||
* Time constants borrowed from loc_time.h
|
#define TIME_CONSTANTS_HELPERS
|
||||||
*/
|
|
||||||
#define EPOCH_YR 1970 /* EPOCH = Jan 1 1970 00:00:00 */
|
#define UNIX_EPOCH_YEAR_AD 1970 // 1970
|
||||||
#define SECS_DAY (24L * 60L * 60L)
|
#define SECONDS_PER_DAY (24 * 60 * 60) // 86400
|
||||||
#define LEAPYEAR(year) (!((year) % 4) && (((year) % 100) || !((year) % 400)))
|
#define IS_LEAP_YEAR(year) (!((year) % 4) && (((year) % 100) || !((year) % 400)))
|
||||||
#define YEARSIZE(year) (LEAPYEAR(year) ? 366 : 365)
|
#define YEAR_SIZE(year) (IS_LEAP_YEAR(year) ? 366 : 365)
|
||||||
#define SECOND_KEY "second"
|
|
||||||
#define MINUTE_KEY "minute"
|
|
||||||
#define HOUR_KEY "hour"
|
|
||||||
#define DAY_KEY "day"
|
|
||||||
#define MONTH_KEY "month"
|
|
||||||
#define YEAR_KEY "year"
|
#define YEAR_KEY "year"
|
||||||
|
#define MONTH_KEY "month"
|
||||||
|
#define DAY_KEY "day"
|
||||||
#define WEEKDAY_KEY "weekday"
|
#define WEEKDAY_KEY "weekday"
|
||||||
|
#define HOUR_KEY "hour"
|
||||||
|
#define MINUTE_KEY "minute"
|
||||||
|
#define SECOND_KEY "second"
|
||||||
#define DST_KEY "dst"
|
#define DST_KEY "dst"
|
||||||
|
|
||||||
/// Table of number of days in each month (for regular year and leap year)
|
// Table of number of days in each month (for regular year and leap year).
|
||||||
static const unsigned int MONTH_DAYS_TABLE[2][12] = {
|
static const uint8_t MONTH_DAYS_TABLE[2][12] = {
|
||||||
{ 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 },
|
{ 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 },
|
||||||
{ 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }
|
{ 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }
|
||||||
};
|
};
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
_ResourceLoader *_ResourceLoader::singleton = nullptr;
|
_ResourceLoader *_ResourceLoader::singleton = nullptr;
|
||||||
|
|
||||||
Ref<ResourceInteractiveLoader> _ResourceLoader::load_interactive(const String &p_path, const String &p_type_hint, bool p_no_cache) {
|
Ref<ResourceInteractiveLoader> _ResourceLoader::load_interactive(const String &p_path, const String &p_type_hint, bool p_no_cache) {
|
||||||
@ -857,7 +860,7 @@ int64_t _OS::get_unix_time_from_datetime(Dictionary datetime) const {
|
|||||||
static const unsigned int MINUTES_PER_HOUR = 60;
|
static const unsigned int MINUTES_PER_HOUR = 60;
|
||||||
static const unsigned int HOURS_PER_DAY = 24;
|
static const unsigned int HOURS_PER_DAY = 24;
|
||||||
static const unsigned int SECONDS_PER_HOUR = MINUTES_PER_HOUR * SECONDS_PER_MINUTE;
|
static const unsigned int SECONDS_PER_HOUR = MINUTES_PER_HOUR * SECONDS_PER_MINUTE;
|
||||||
static const unsigned int SECONDS_PER_DAY = SECONDS_PER_HOUR * HOURS_PER_DAY;
|
static const unsigned int SECONDS_PER_DAYL = SECONDS_PER_HOUR * HOURS_PER_DAY;
|
||||||
|
|
||||||
// Get all time values from the dictionary, set to zero if it doesn't exist.
|
// Get all time values from the dictionary, set to zero if it doesn't exist.
|
||||||
// Risk incorrect calculation over throwing errors
|
// Risk incorrect calculation over throwing errors
|
||||||
@ -882,20 +885,20 @@ int64_t _OS::get_unix_time_from_datetime(Dictionary datetime) const {
|
|||||||
ERR_FAIL_COND_V_MSG(year == 0, 0, "Years before 1 AD are not supported. Value passed: " + itos(year) + ".");
|
ERR_FAIL_COND_V_MSG(year == 0, 0, "Years before 1 AD are not supported. Value passed: " + itos(year) + ".");
|
||||||
ERR_FAIL_COND_V_MSG(month > 12 || month == 0, 0, "Invalid month value of: " + itos(month) + ".");
|
ERR_FAIL_COND_V_MSG(month > 12 || month == 0, 0, "Invalid month value of: " + itos(month) + ".");
|
||||||
// Do this check after month is tested as valid
|
// Do this check after month is tested as valid
|
||||||
unsigned int days_in_month = MONTH_DAYS_TABLE[LEAPYEAR(year)][month - 1];
|
unsigned int days_in_month = MONTH_DAYS_TABLE[IS_LEAP_YEAR(year)][month - 1];
|
||||||
ERR_FAIL_COND_V_MSG(day == 0 || day > days_in_month, 0, "Invalid day value of: " + itos(day) + ". It should be comprised between 1 and " + itos(days_in_month) + " for month " + itos(month) + ".");
|
ERR_FAIL_COND_V_MSG(day == 0 || day > days_in_month, 0, "Invalid day value of: " + itos(day) + ". It should be comprised between 1 and " + itos(days_in_month) + " for month " + itos(month) + ".");
|
||||||
|
|
||||||
// Calculate all the seconds from months past in this year
|
// Calculate all the seconds from months past in this year
|
||||||
uint64_t SECONDS_FROM_MONTHS_PAST_THIS_YEAR = DAYS_PAST_THIS_YEAR_TABLE[LEAPYEAR(year)][month - 1] * SECONDS_PER_DAY;
|
uint64_t SECONDS_FROM_MONTHS_PAST_THIS_YEAR = DAYS_PAST_THIS_YEAR_TABLE[IS_LEAP_YEAR(year)][month - 1] * SECONDS_PER_DAY;
|
||||||
|
|
||||||
int64_t SECONDS_FROM_YEARS_PAST = 0;
|
int64_t SECONDS_FROM_YEARS_PAST = 0;
|
||||||
if (year >= EPOCH_YR) {
|
if (year >= UNIX_EPOCH_YEAR_AD) {
|
||||||
for (unsigned int iyear = EPOCH_YR; iyear < year; iyear++) {
|
for (unsigned int iyear = UNIX_EPOCH_YEAR_AD; iyear < year; iyear++) {
|
||||||
SECONDS_FROM_YEARS_PAST += YEARSIZE(iyear) * SECONDS_PER_DAY;
|
SECONDS_FROM_YEARS_PAST += YEAR_SIZE(iyear) * SECONDS_PER_DAYL;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
for (unsigned int iyear = EPOCH_YR - 1; iyear >= year; iyear--) {
|
for (unsigned int iyear = UNIX_EPOCH_YEAR_AD - 1; iyear >= year; iyear--) {
|
||||||
SECONDS_FROM_YEARS_PAST -= YEARSIZE(iyear) * SECONDS_PER_DAY;
|
SECONDS_FROM_YEARS_PAST -= YEAR_SIZE(iyear) * SECONDS_PER_DAYL;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -905,7 +908,7 @@ int64_t _OS::get_unix_time_from_datetime(Dictionary datetime) const {
|
|||||||
hour * SECONDS_PER_HOUR +
|
hour * SECONDS_PER_HOUR +
|
||||||
// Subtract 1 from day, since the current day isn't over yet
|
// Subtract 1 from day, since the current day isn't over yet
|
||||||
// and we cannot count all 24 hours.
|
// and we cannot count all 24 hours.
|
||||||
(day - 1) * SECONDS_PER_DAY +
|
(day - 1) * SECONDS_PER_DAYL +
|
||||||
SECONDS_FROM_MONTHS_PAST_THIS_YEAR +
|
SECONDS_FROM_MONTHS_PAST_THIS_YEAR +
|
||||||
SECONDS_FROM_YEARS_PAST;
|
SECONDS_FROM_YEARS_PAST;
|
||||||
return epoch;
|
return epoch;
|
||||||
@ -927,24 +930,24 @@ Dictionary _OS::get_datetime_from_unix_time(int64_t unix_time_val) const {
|
|||||||
OS::Time time;
|
OS::Time time;
|
||||||
|
|
||||||
long dayclock, dayno;
|
long dayclock, dayno;
|
||||||
int year = EPOCH_YR;
|
int year = UNIX_EPOCH_YEAR_AD;
|
||||||
|
|
||||||
if (unix_time_val >= 0) {
|
if (unix_time_val >= 0) {
|
||||||
dayno = unix_time_val / SECS_DAY;
|
dayno = unix_time_val / SECONDS_PER_DAY;
|
||||||
dayclock = unix_time_val % SECS_DAY;
|
dayclock = unix_time_val % SECONDS_PER_DAY;
|
||||||
/* day 0 was a thursday */
|
/* day 0 was a thursday */
|
||||||
date.weekday = static_cast<OS::Weekday>((dayno + 4) % 7);
|
date.weekday = static_cast<OS::Weekday>((dayno + 4) % 7);
|
||||||
while (dayno >= YEARSIZE(year)) {
|
while (dayno >= YEAR_SIZE(year)) {
|
||||||
dayno -= YEARSIZE(year);
|
dayno -= YEAR_SIZE(year);
|
||||||
year++;
|
year++;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
dayno = (unix_time_val - SECS_DAY + 1) / SECS_DAY;
|
dayno = (unix_time_val - SECONDS_PER_DAY + 1) / SECONDS_PER_DAY;
|
||||||
dayclock = unix_time_val - dayno * SECS_DAY;
|
dayclock = unix_time_val - dayno * SECONDS_PER_DAY;
|
||||||
date.weekday = static_cast<OS::Weekday>(((dayno % 7) + 11) % 7);
|
date.weekday = static_cast<OS::Weekday>(((dayno % 7) + 11) % 7);
|
||||||
do {
|
do {
|
||||||
year--;
|
year--;
|
||||||
dayno += YEARSIZE(year);
|
dayno += YEAR_SIZE(year);
|
||||||
} while (dayno < 0);
|
} while (dayno < 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -955,8 +958,8 @@ Dictionary _OS::get_datetime_from_unix_time(int64_t unix_time_val) const {
|
|||||||
|
|
||||||
size_t imonth = 0;
|
size_t imonth = 0;
|
||||||
|
|
||||||
while ((unsigned long)dayno >= MONTH_DAYS_TABLE[LEAPYEAR(year)][imonth]) {
|
while ((unsigned long)dayno >= MONTH_DAYS_TABLE[IS_LEAP_YEAR(year)][imonth]) {
|
||||||
dayno -= MONTH_DAYS_TABLE[LEAPYEAR(year)][imonth];
|
dayno -= MONTH_DAYS_TABLE[IS_LEAP_YEAR(year)][imonth];
|
||||||
imonth++;
|
imonth++;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -88,42 +88,53 @@ uint64_t OS::get_system_time_msecs() const {
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
#ifndef TIME_CONSTANTS_HELPERS
|
||||||
* Time constants borrowed from loc_time.h
|
#define TIME_CONSTANTS_HELPERS
|
||||||
*/
|
|
||||||
#define EPOCH_YR 1970 /* EPOCH = Jan 1 1970 00:00:00 */
|
|
||||||
#define SECS_DAY (24L * 60L * 60L)
|
|
||||||
#define LEAPYEAR(year) (!((year) % 4) && (((year) % 100) || !((year) % 400)))
|
|
||||||
#define YEARSIZE(year) (LEAPYEAR(year) ? 366 : 365)
|
|
||||||
|
|
||||||
/// Table of number of days in each month (for regular year and leap year)
|
#define UNIX_EPOCH_YEAR_AD 1970 // 1970
|
||||||
static const unsigned int MONTH_DAYS_TABLE[2][12] = {
|
#define SECONDS_PER_DAY (24 * 60 * 60) // 86400
|
||||||
|
#define IS_LEAP_YEAR(year) (!((year) % 4) && (((year) % 100) || !((year) % 400)))
|
||||||
|
#define YEAR_SIZE(year) (IS_LEAP_YEAR(year) ? 366 : 365)
|
||||||
|
|
||||||
|
#define YEAR_KEY "year"
|
||||||
|
#define MONTH_KEY "month"
|
||||||
|
#define DAY_KEY "day"
|
||||||
|
#define WEEKDAY_KEY "weekday"
|
||||||
|
#define HOUR_KEY "hour"
|
||||||
|
#define MINUTE_KEY "minute"
|
||||||
|
#define SECOND_KEY "second"
|
||||||
|
#define DST_KEY "dst"
|
||||||
|
|
||||||
|
// Table of number of days in each month (for regular year and leap year).
|
||||||
|
static const uint8_t MONTH_DAYS_TABLE[2][12] = {
|
||||||
{ 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 },
|
{ 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 },
|
||||||
{ 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }
|
{ 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }
|
||||||
};
|
};
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
OS::DateTime OS::get_datetime_from_unix_time(int64_t unix_time_val) const {
|
OS::DateTime OS::get_datetime_from_unix_time(int64_t unix_time_val) const {
|
||||||
DateTime dt;
|
DateTime dt;
|
||||||
|
|
||||||
long dayclock, dayno;
|
long dayclock, dayno;
|
||||||
int year = EPOCH_YR;
|
int year = UNIX_EPOCH_YEAR_AD;
|
||||||
|
|
||||||
if (unix_time_val >= 0) {
|
if (unix_time_val >= 0) {
|
||||||
dayno = unix_time_val / SECS_DAY;
|
dayno = unix_time_val / SECONDS_PER_DAY;
|
||||||
dayclock = unix_time_val % SECS_DAY;
|
dayclock = unix_time_val % SECONDS_PER_DAY;
|
||||||
/* day 0 was a thursday */
|
/* day 0 was a thursday */
|
||||||
dt.date.weekday = static_cast<OS::Weekday>((dayno + 4) % 7);
|
dt.date.weekday = static_cast<OS::Weekday>((dayno + 4) % 7);
|
||||||
while (dayno >= YEARSIZE(year)) {
|
while (dayno >= YEAR_SIZE(year)) {
|
||||||
dayno -= YEARSIZE(year);
|
dayno -= YEAR_SIZE(year);
|
||||||
year++;
|
year++;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
dayno = (unix_time_val - SECS_DAY + 1) / SECS_DAY;
|
dayno = (unix_time_val - SECONDS_PER_DAY + 1) / SECONDS_PER_DAY;
|
||||||
dayclock = unix_time_val - dayno * SECS_DAY;
|
dayclock = unix_time_val - dayno * SECONDS_PER_DAY;
|
||||||
dt.date.weekday = static_cast<OS::Weekday>(((dayno % 7) + 11) % 7);
|
dt.date.weekday = static_cast<OS::Weekday>(((dayno % 7) + 11) % 7);
|
||||||
do {
|
do {
|
||||||
year--;
|
year--;
|
||||||
dayno += YEARSIZE(year);
|
dayno += YEAR_SIZE(year);
|
||||||
} while (dayno < 0);
|
} while (dayno < 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -134,8 +145,8 @@ OS::DateTime OS::get_datetime_from_unix_time(int64_t unix_time_val) const {
|
|||||||
|
|
||||||
size_t imonth = 0;
|
size_t imonth = 0;
|
||||||
|
|
||||||
while ((unsigned long)dayno >= MONTH_DAYS_TABLE[LEAPYEAR(year)][imonth]) {
|
while ((unsigned long)dayno >= MONTH_DAYS_TABLE[IS_LEAP_YEAR(year)][imonth]) {
|
||||||
dayno -= MONTH_DAYS_TABLE[LEAPYEAR(year)][imonth];
|
dayno -= MONTH_DAYS_TABLE[IS_LEAP_YEAR(year)][imonth];
|
||||||
imonth++;
|
imonth++;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -153,7 +164,7 @@ int64_t OS::get_unix_time_from_datetime(const DateTime &datetime) const {
|
|||||||
static const unsigned int MINUTES_PER_HOUR = 60;
|
static const unsigned int MINUTES_PER_HOUR = 60;
|
||||||
static const unsigned int HOURS_PER_DAY = 24;
|
static const unsigned int HOURS_PER_DAY = 24;
|
||||||
static const unsigned int SECONDS_PER_HOUR = MINUTES_PER_HOUR * SECONDS_PER_MINUTE;
|
static const unsigned int SECONDS_PER_HOUR = MINUTES_PER_HOUR * SECONDS_PER_MINUTE;
|
||||||
static const unsigned int SECONDS_PER_DAY = SECONDS_PER_HOUR * HOURS_PER_DAY;
|
static const unsigned int SECONDS_PER_DAYL = SECONDS_PER_HOUR * HOURS_PER_DAY;
|
||||||
|
|
||||||
unsigned int second = static_cast<unsigned int>(datetime.time.sec);
|
unsigned int second = static_cast<unsigned int>(datetime.time.sec);
|
||||||
unsigned int minute = static_cast<unsigned int>(datetime.time.min);
|
unsigned int minute = static_cast<unsigned int>(datetime.time.min);
|
||||||
@ -176,20 +187,20 @@ int64_t OS::get_unix_time_from_datetime(const DateTime &datetime) const {
|
|||||||
ERR_FAIL_COND_V_MSG(year == 0, 0, "Years before 1 AD are not supported. Value passed: " + itos(year) + ".");
|
ERR_FAIL_COND_V_MSG(year == 0, 0, "Years before 1 AD are not supported. Value passed: " + itos(year) + ".");
|
||||||
ERR_FAIL_COND_V_MSG(month > 12 || month == 0, 0, "Invalid month value of: " + itos(month) + ".");
|
ERR_FAIL_COND_V_MSG(month > 12 || month == 0, 0, "Invalid month value of: " + itos(month) + ".");
|
||||||
// Do this check after month is tested as valid
|
// Do this check after month is tested as valid
|
||||||
unsigned int days_in_month = MONTH_DAYS_TABLE[LEAPYEAR(year)][month - 1];
|
unsigned int days_in_month = MONTH_DAYS_TABLE[IS_LEAP_YEAR(year)][month - 1];
|
||||||
ERR_FAIL_COND_V_MSG(day == 0 || day > days_in_month, 0, "Invalid day value of: " + itos(day) + ". It should be comprised between 1 and " + itos(days_in_month) + " for month " + itos(month) + ".");
|
ERR_FAIL_COND_V_MSG(day == 0 || day > days_in_month, 0, "Invalid day value of: " + itos(day) + ". It should be comprised between 1 and " + itos(days_in_month) + " for month " + itos(month) + ".");
|
||||||
|
|
||||||
// Calculate all the seconds from months past in this year
|
// Calculate all the seconds from months past in this year
|
||||||
uint64_t SECONDS_FROM_MONTHS_PAST_THIS_YEAR = DAYS_PAST_THIS_YEAR_TABLE[LEAPYEAR(year)][month - 1] * SECONDS_PER_DAY;
|
uint64_t SECONDS_FROM_MONTHS_PAST_THIS_YEAR = DAYS_PAST_THIS_YEAR_TABLE[IS_LEAP_YEAR(year)][month - 1] * SECONDS_PER_DAY;
|
||||||
|
|
||||||
int64_t SECONDS_FROM_YEARS_PAST = 0;
|
int64_t SECONDS_FROM_YEARS_PAST = 0;
|
||||||
if (year >= EPOCH_YR) {
|
if (year >= UNIX_EPOCH_YEAR_AD) {
|
||||||
for (unsigned int iyear = EPOCH_YR; iyear < year; iyear++) {
|
for (unsigned int iyear = UNIX_EPOCH_YEAR_AD; iyear < year; iyear++) {
|
||||||
SECONDS_FROM_YEARS_PAST += YEARSIZE(iyear) * SECONDS_PER_DAY;
|
SECONDS_FROM_YEARS_PAST += YEAR_SIZE(iyear) * SECONDS_PER_DAYL;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
for (unsigned int iyear = EPOCH_YR - 1; iyear >= year; iyear--) {
|
for (unsigned int iyear = UNIX_EPOCH_YEAR_AD - 1; iyear >= year; iyear--) {
|
||||||
SECONDS_FROM_YEARS_PAST -= YEARSIZE(iyear) * SECONDS_PER_DAY;
|
SECONDS_FROM_YEARS_PAST -= YEAR_SIZE(iyear) * SECONDS_PER_DAYL;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -199,7 +210,7 @@ int64_t OS::get_unix_time_from_datetime(const DateTime &datetime) const {
|
|||||||
hour * SECONDS_PER_HOUR +
|
hour * SECONDS_PER_HOUR +
|
||||||
// Subtract 1 from day, since the current day isn't over yet
|
// Subtract 1 from day, since the current day isn't over yet
|
||||||
// and we cannot count all 24 hours.
|
// and we cannot count all 24 hours.
|
||||||
(day - 1) * SECONDS_PER_DAY +
|
(day - 1) * SECONDS_PER_DAYL +
|
||||||
SECONDS_FROM_MONTHS_PAST_THIS_YEAR +
|
SECONDS_FROM_MONTHS_PAST_THIS_YEAR +
|
||||||
SECONDS_FROM_YEARS_PAST;
|
SECONDS_FROM_YEARS_PAST;
|
||||||
|
|
||||||
|
@ -32,6 +32,9 @@
|
|||||||
|
|
||||||
#include "core/os/os.h"
|
#include "core/os/os.h"
|
||||||
|
|
||||||
|
#ifndef TIME_CONSTANTS_HELPERS
|
||||||
|
#define TIME_CONSTANTS_HELPERS
|
||||||
|
|
||||||
#define UNIX_EPOCH_YEAR_AD 1970 // 1970
|
#define UNIX_EPOCH_YEAR_AD 1970 // 1970
|
||||||
#define SECONDS_PER_DAY (24 * 60 * 60) // 86400
|
#define SECONDS_PER_DAY (24 * 60 * 60) // 86400
|
||||||
#define IS_LEAP_YEAR(year) (!((year) % 4) && (((year) % 100) || !((year) % 400)))
|
#define IS_LEAP_YEAR(year) (!((year) % 4) && (((year) % 100) || !((year) % 400)))
|
||||||
@ -52,6 +55,8 @@ static const uint8_t MONTH_DAYS_TABLE[2][12] = {
|
|||||||
{ 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }
|
{ 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }
|
||||||
};
|
};
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
VARIANT_ENUM_CAST(Time::Month);
|
VARIANT_ENUM_CAST(Time::Month);
|
||||||
VARIANT_ENUM_CAST(Time::Weekday);
|
VARIANT_ENUM_CAST(Time::Weekday);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user