From feef563f3f2ad7f1cb5aa2e788e3ea4adfee3c56 Mon Sep 17 00:00:00 2001 From: Kyle Luce Date: Sat, 12 Mar 2016 19:13:57 -0700 Subject: [PATCH] Fixes the month consistency issue in enums and get_date etc - Also updated the docs to reflect this. - Added some vim temp files to gitignore - Changed NaCL to be consistent with the other OS_Unix::get_date implementation (added 1 to month to map to 1-12) Ticket: https://github.com/godotengine/godot/issues/4025 --- .gitignore | 3 +++ core/bind/core_bind.cpp | 7 ++++--- core/bind/core_bind.h | 4 +++- core/os/os.h | 4 +++- doc/base/classes.xml | 36 ++++++++++++++++++++++++------------ drivers/unix/os_unix.cpp | 3 +++ platform/nacl/os_nacl.cpp | 6 +++++- 7 files changed, 45 insertions(+), 18 deletions(-) diff --git a/.gitignore b/.gitignore index bf5be79d552..15ca1399168 100644 --- a/.gitignore +++ b/.gitignore @@ -65,6 +65,9 @@ platform/android/libs/play_licensing/gen/* .deps/* .dirstamp +# Vim temp files +*.swo +*.swp # QT project files *.config diff --git a/core/bind/core_bind.cpp b/core/bind/core_bind.cpp index bf611f89c91..915cbc05789 100644 --- a/core/bind/core_bind.cpp +++ b/core/bind/core_bind.cpp @@ -508,11 +508,11 @@ Dictionary _OS::get_time(bool utc) const { } /** - * Get a dictionary of time values when given epoc time + * Get a dictionary of time values when given epoch time * * Dictionary Time values will be a union if values from #get_time * and #get_date dictionaries (with the exception of dst = - * day light standard time, as it cannot be determined from epoc) + * day light standard time, as it cannot be determined from epoch) */ Dictionary _OS::get_time_from_unix_time( uint64_t unix_time_val) const { @@ -552,7 +552,8 @@ Dictionary _OS::get_time_from_unix_time( uint64_t unix_time_val) const { imonth++; } - date.month = static_cast(imonth); + /// Add 1 to month to make sure months are indexed starting at 1 + date.month = static_cast(imonth+1); date.day = dayno + 1; diff --git a/core/bind/core_bind.h b/core/bind/core_bind.h index ab11c4804c2..db5ff42cfe7 100644 --- a/core/bind/core_bind.h +++ b/core/bind/core_bind.h @@ -81,7 +81,9 @@ public: }; enum Month { - MONTH_JANUARY, + /// Start at 1 to follow Windows SYSTEMTIME structure + /// https://msdn.microsoft.com/en-us/library/windows/desktop/ms724950(v=vs.85).aspx + MONTH_JANUARY = 1, MONTH_FEBRUARY, MONTH_MARCH, MONTH_APRIL, diff --git a/core/os/os.h b/core/os/os.h index 73726feb375..160c0495bb9 100644 --- a/core/os/os.h +++ b/core/os/os.h @@ -224,7 +224,9 @@ public: }; enum Month { - MONTH_JANUARY, + /// Start at 1 to follow Windows SYSTEMTIME structure + /// https://msdn.microsoft.com/en-us/library/windows/desktop/ms724950(v=vs.85).aspx + MONTH_JANUARY = 1, MONTH_FEBRUARY, MONTH_MARCH, MONTH_APRIL, diff --git a/doc/base/classes.xml b/doc/base/classes.xml index 04e08f166e7..bc8bec4bbfd 100644 --- a/doc/base/classes.xml +++ b/doc/base/classes.xml @@ -20639,6 +20639,18 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8) + + + + + + + Get a dictionary of time values when given epoch time. + Dictionary Time values will be a union of values from [method get_time] + and [method get_date] dictionaries (with the exception of dst = + day light standard time, as it cannot be determined from epoc) + + @@ -20922,29 +20934,29 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8) - + - + - + - + - + - + - + - + - + - + - + - + diff --git a/drivers/unix/os_unix.cpp b/drivers/unix/os_unix.cpp index a004a116e05..84b6dc24dc6 100644 --- a/drivers/unix/os_unix.cpp +++ b/drivers/unix/os_unix.cpp @@ -251,6 +251,9 @@ OS::Date OS_Unix::get_date(bool utc) const { lt=localtime(&t); Date ret; ret.year=1900+lt->tm_year; + // Index starting at 1 to match OS_Unix::get_date + // and Windows SYSTEMTIME and tm_mon follows the typical structure + // of 0-11, noted here: http://www.cplusplus.com/reference/ctime/tm/ ret.month=(Month)(lt->tm_mon + 1); ret.day=lt->tm_mday; ret.weekday=(Weekday)lt->tm_wday; diff --git a/platform/nacl/os_nacl.cpp b/platform/nacl/os_nacl.cpp index de6a15525b0..e2a92ee8c7b 100644 --- a/platform/nacl/os_nacl.cpp +++ b/platform/nacl/os_nacl.cpp @@ -249,7 +249,11 @@ OS::Date OSNacl::get_date(bool utc) const { lt=localtime(&t); Date ret; ret.year=lt->tm_year; - ret.month=(Month)lt->tm_mon; + + // Index starting at 1 to match OS_Unix::get_date + // and Windows SYSTEMTIME and tm_mon follows the typical structure + // of 0-11, noted here: http://www.cplusplus.com/reference/ctime/tm/ + ret.month=(Month)(lt->tm_mon+1); ret.day=lt->tm_mday; ret.weekday=(Weekday)lt->tm_wday; ret.dst=lt->tm_isdst;