Browse Source

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
Kyle Luce 9 years ago
parent
commit
feef563f3f
7 changed files with 45 additions and 18 deletions
  1. 3 0
      .gitignore
  2. 4 3
      core/bind/core_bind.cpp
  3. 3 1
      core/bind/core_bind.h
  4. 3 1
      core/os/os.h
  5. 24 12
      doc/base/classes.xml
  6. 3 0
      drivers/unix/os_unix.cpp
  7. 5 1
      platform/nacl/os_nacl.cpp

+ 3 - 0
.gitignore

@@ -65,6 +65,9 @@ platform/android/libs/play_licensing/gen/*
 .deps/*
 .dirstamp
 
+# Vim temp files
+*.swo
+*.swp
 
 # QT project files
 *.config

+ 4 - 3
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<OS::Month>(imonth);
+	/// Add 1 to month to make sure months are indexed starting at 1
+	date.month = static_cast<OS::Month>(imonth+1);
 
 	date.day = dayno + 1;
 

+ 3 - 1
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,

+ 3 - 1
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,

+ 24 - 12
doc/base/classes.xml

@@ -20639,6 +20639,18 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8)
 			<description>
 			</description>
 		</method>
+		<method name="get_time_from_unix_time" qualifiers="const">
+			<return type="Dictionary">
+			</return>
+			<argument index="0" name="unix_time_val" type="int">
+			</argument>
+			<description>
+			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)
+			</description>
+		</method>
 		<method name="get_time_zone_info" qualifiers="const">
 			<return type="Dictionary">
 			</return>
@@ -20922,29 +20934,29 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8)
 		</constant>
 		<constant name="DAY_SATURDAY" value="6">
 		</constant>
-		<constant name="MONTH_JANUARY" value="0">
+		<constant name="MONTH_JANUARY" value="1">
 		</constant>
-		<constant name="MONTH_FEBRUARY" value="1">
+		<constant name="MONTH_FEBRUARY" value="2">
 		</constant>
-		<constant name="MONTH_MARCH" value="2">
+		<constant name="MONTH_MARCH" value="3">
 		</constant>
-		<constant name="MONTH_APRIL" value="3">
+		<constant name="MONTH_APRIL" value="4">
 		</constant>
-		<constant name="MONTH_MAY" value="4">
+		<constant name="MONTH_MAY" value="5">
 		</constant>
-		<constant name="MONTH_JUNE" value="5">
+		<constant name="MONTH_JUNE" value="6">
 		</constant>
-		<constant name="MONTH_JULY" value="6">
+		<constant name="MONTH_JULY" value="7">
 		</constant>
-		<constant name="MONTH_AUGUST" value="7">
+		<constant name="MONTH_AUGUST" value="8">
 		</constant>
-		<constant name="MONTH_SEPTEMBER" value="8">
+		<constant name="MONTH_SEPTEMBER" value="9">
 		</constant>
-		<constant name="MONTH_OCTOBER" value="9">
+		<constant name="MONTH_OCTOBER" value="10">
 		</constant>
-		<constant name="MONTH_NOVEMBER" value="10">
+		<constant name="MONTH_NOVEMBER" value="11">
 		</constant>
-		<constant name="MONTH_DECEMBER" value="11">
+		<constant name="MONTH_DECEMBER" value="12">
 		</constant>
 		<constant name="SCREEN_ORIENTATION_LANDSCAPE" value="0">
 		</constant>

+ 3 - 0
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;

+ 5 - 1
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;