Browse Source

Merge pull request #67694 from aaronfranke/its-time

Remove duplicate Month and Weekday enums
Rémi Verschelde 2 years ago
parent
commit
565ae3b767
8 changed files with 71 additions and 167 deletions
  1. 0 21
      core/core_bind.cpp
  2. 0 29
      core/core_bind.h
  3. 1 27
      core/os/os.h
  4. 2 2
      core/os/time.cpp
  5. 1 27
      core/os/time.h
  6. 63 0
      core/os/time_enums.h
  7. 0 57
      doc/classes/OS.xml
  8. 4 4
      tests/core/test_time.h

+ 0 - 21
core/core_bind.cpp

@@ -613,27 +613,6 @@ void OS::_bind_methods() {
 	BIND_ENUM_CONSTANT(RENDERING_DRIVER_VULKAN);
 	BIND_ENUM_CONSTANT(RENDERING_DRIVER_VULKAN);
 	BIND_ENUM_CONSTANT(RENDERING_DRIVER_OPENGL3);
 	BIND_ENUM_CONSTANT(RENDERING_DRIVER_OPENGL3);
 
 
-	BIND_ENUM_CONSTANT(DAY_SUNDAY);
-	BIND_ENUM_CONSTANT(DAY_MONDAY);
-	BIND_ENUM_CONSTANT(DAY_TUESDAY);
-	BIND_ENUM_CONSTANT(DAY_WEDNESDAY);
-	BIND_ENUM_CONSTANT(DAY_THURSDAY);
-	BIND_ENUM_CONSTANT(DAY_FRIDAY);
-	BIND_ENUM_CONSTANT(DAY_SATURDAY);
-
-	BIND_ENUM_CONSTANT(MONTH_JANUARY);
-	BIND_ENUM_CONSTANT(MONTH_FEBRUARY);
-	BIND_ENUM_CONSTANT(MONTH_MARCH);
-	BIND_ENUM_CONSTANT(MONTH_APRIL);
-	BIND_ENUM_CONSTANT(MONTH_MAY);
-	BIND_ENUM_CONSTANT(MONTH_JUNE);
-	BIND_ENUM_CONSTANT(MONTH_JULY);
-	BIND_ENUM_CONSTANT(MONTH_AUGUST);
-	BIND_ENUM_CONSTANT(MONTH_SEPTEMBER);
-	BIND_ENUM_CONSTANT(MONTH_OCTOBER);
-	BIND_ENUM_CONSTANT(MONTH_NOVEMBER);
-	BIND_ENUM_CONSTANT(MONTH_DECEMBER);
-
 	BIND_ENUM_CONSTANT(SYSTEM_DIR_DESKTOP);
 	BIND_ENUM_CONSTANT(SYSTEM_DIR_DESKTOP);
 	BIND_ENUM_CONSTANT(SYSTEM_DIR_DCIM);
 	BIND_ENUM_CONSTANT(SYSTEM_DIR_DCIM);
 	BIND_ENUM_CONSTANT(SYSTEM_DIR_DOCUMENTS);
 	BIND_ENUM_CONSTANT(SYSTEM_DIR_DOCUMENTS);

+ 0 - 29
core/core_bind.h

@@ -129,33 +129,6 @@ public:
 		RENDERING_DRIVER_OPENGL3,
 		RENDERING_DRIVER_OPENGL3,
 	};
 	};
 
 
-	enum Weekday {
-		DAY_SUNDAY,
-		DAY_MONDAY,
-		DAY_TUESDAY,
-		DAY_WEDNESDAY,
-		DAY_THURSDAY,
-		DAY_FRIDAY,
-		DAY_SATURDAY
-	};
-
-	enum Month {
-		// 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,
-		MONTH_MAY,
-		MONTH_JUNE,
-		MONTH_JULY,
-		MONTH_AUGUST,
-		MONTH_SEPTEMBER,
-		MONTH_OCTOBER,
-		MONTH_NOVEMBER,
-		MONTH_DECEMBER
-	};
-
 	virtual PackedStringArray get_connected_midi_inputs();
 	virtual PackedStringArray get_connected_midi_inputs();
 	virtual void open_midi_inputs();
 	virtual void open_midi_inputs();
 	virtual void close_midi_inputs();
 	virtual void close_midi_inputs();
@@ -583,8 +556,6 @@ VARIANT_ENUM_CAST(core_bind::ResourceLoader::CacheMode);
 VARIANT_BITFIELD_CAST(core_bind::ResourceSaver::SaverFlags);
 VARIANT_BITFIELD_CAST(core_bind::ResourceSaver::SaverFlags);
 
 
 VARIANT_ENUM_CAST(core_bind::OS::RenderingDriver);
 VARIANT_ENUM_CAST(core_bind::OS::RenderingDriver);
-VARIANT_ENUM_CAST(core_bind::OS::Weekday);
-VARIANT_ENUM_CAST(core_bind::OS::Month);
 VARIANT_ENUM_CAST(core_bind::OS::SystemDir);
 VARIANT_ENUM_CAST(core_bind::OS::SystemDir);
 
 
 VARIANT_ENUM_CAST(core_bind::Geometry2D::PolyBooleanOperation);
 VARIANT_ENUM_CAST(core_bind::Geometry2D::PolyBooleanOperation);

+ 1 - 27
core/os/os.h

@@ -34,6 +34,7 @@
 #include "core/config/engine.h"
 #include "core/config/engine.h"
 #include "core/io/image.h"
 #include "core/io/image.h"
 #include "core/io/logger.h"
 #include "core/io/logger.h"
+#include "core/os/time_enums.h"
 #include "core/string/ustring.h"
 #include "core/string/ustring.h"
 #include "core/templates/list.h"
 #include "core/templates/list.h"
 #include "core/templates/vector.h"
 #include "core/templates/vector.h"
@@ -185,33 +186,6 @@ public:
 
 
 	virtual void yield();
 	virtual void yield();
 
 
-	enum Weekday : uint8_t {
-		WEEKDAY_SUNDAY,
-		WEEKDAY_MONDAY,
-		WEEKDAY_TUESDAY,
-		WEEKDAY_WEDNESDAY,
-		WEEKDAY_THURSDAY,
-		WEEKDAY_FRIDAY,
-		WEEKDAY_SATURDAY,
-	};
-
-	enum Month : uint8_t {
-		/// 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,
-		MONTH_MAY,
-		MONTH_JUNE,
-		MONTH_JULY,
-		MONTH_AUGUST,
-		MONTH_SEPTEMBER,
-		MONTH_OCTOBER,
-		MONTH_NOVEMBER,
-		MONTH_DECEMBER,
-	};
-
 	struct DateTime {
 	struct DateTime {
 		int64_t year;
 		int64_t year;
 		Month month;
 		Month month;

+ 2 - 2
core/os/time.cpp

@@ -52,8 +52,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 }
 };
 };
 
 
-VARIANT_ENUM_CAST(Time::Month);
-VARIANT_ENUM_CAST(Time::Weekday);
+VARIANT_ENUM_CAST(Month);
+VARIANT_ENUM_CAST(Weekday);
 
 
 #define UNIX_TIME_TO_HMS                                                     \
 #define UNIX_TIME_TO_HMS                                                     \
 	uint8_t hour, minute, second;                                            \
 	uint8_t hour, minute, second;                                            \

+ 1 - 27
core/os/time.h

@@ -32,6 +32,7 @@
 #define TIME_H
 #define TIME_H
 
 
 #include "core/object/class_db.h"
 #include "core/object/class_db.h"
+#include "time_enums.h"
 
 
 // This Time class conforms with as many of the ISO 8601 standards as possible.
 // This Time class conforms with as many of the ISO 8601 standards as possible.
 // * As per ISO 8601:2004 4.3.2.1, all dates follow the Proleptic Gregorian
 // * As per ISO 8601:2004 4.3.2.1, all dates follow the Proleptic Gregorian
@@ -51,33 +52,6 @@ class Time : public Object {
 public:
 public:
 	static Time *get_singleton();
 	static Time *get_singleton();
 
 
-	enum Month {
-		/// 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,
-		MONTH_MAY,
-		MONTH_JUNE,
-		MONTH_JULY,
-		MONTH_AUGUST,
-		MONTH_SEPTEMBER,
-		MONTH_OCTOBER,
-		MONTH_NOVEMBER,
-		MONTH_DECEMBER,
-	};
-
-	enum Weekday : uint8_t {
-		WEEKDAY_SUNDAY,
-		WEEKDAY_MONDAY,
-		WEEKDAY_TUESDAY,
-		WEEKDAY_WEDNESDAY,
-		WEEKDAY_THURSDAY,
-		WEEKDAY_FRIDAY,
-		WEEKDAY_SATURDAY,
-	};
-
 	// Methods that convert times.
 	// Methods that convert times.
 	Dictionary get_datetime_dict_from_unix_time(int64_t p_unix_time_val) const;
 	Dictionary get_datetime_dict_from_unix_time(int64_t p_unix_time_val) const;
 	Dictionary get_date_dict_from_unix_time(int64_t p_unix_time_val) const;
 	Dictionary get_date_dict_from_unix_time(int64_t p_unix_time_val) const;

+ 63 - 0
core/os/time_enums.h

@@ -0,0 +1,63 @@
+/*************************************************************************/
+/*  time_enums.h                                                         */
+/*************************************************************************/
+/*                       This file is part of:                           */
+/*                           GODOT ENGINE                                */
+/*                      https://godotengine.org                          */
+/*************************************************************************/
+/* Copyright (c) 2007-2022 Juan Linietsky, Ariel Manzur.                 */
+/* Copyright (c) 2014-2022 Godot Engine contributors (cf. AUTHORS.md).   */
+/*                                                                       */
+/* Permission is hereby granted, free of charge, to any person obtaining */
+/* a copy of this software and associated documentation files (the       */
+/* "Software"), to deal in the Software without restriction, including   */
+/* without limitation the rights to use, copy, modify, merge, publish,   */
+/* distribute, sublicense, and/or sell copies of the Software, and to    */
+/* permit persons to whom the Software is furnished to do so, subject to */
+/* the following conditions:                                             */
+/*                                                                       */
+/* The above copyright notice and this permission notice shall be        */
+/* included in all copies or substantial portions of the Software.       */
+/*                                                                       */
+/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,       */
+/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF    */
+/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
+/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY  */
+/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,  */
+/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE     */
+/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.                */
+/*************************************************************************/
+
+#ifndef TIME_ENUMS_H
+#define TIME_ENUMS_H
+
+#include <cstdint>
+
+enum Month {
+	/// 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,
+	MONTH_MAY,
+	MONTH_JUNE,
+	MONTH_JULY,
+	MONTH_AUGUST,
+	MONTH_SEPTEMBER,
+	MONTH_OCTOBER,
+	MONTH_NOVEMBER,
+	MONTH_DECEMBER,
+};
+
+enum Weekday : uint8_t {
+	WEEKDAY_SUNDAY,
+	WEEKDAY_MONDAY,
+	WEEKDAY_TUESDAY,
+	WEEKDAY_WEDNESDAY,
+	WEEKDAY_THURSDAY,
+	WEEKDAY_FRIDAY,
+	WEEKDAY_SATURDAY,
+};
+
+#endif // TIME_ENUMS_H

+ 0 - 57
doc/classes/OS.xml

@@ -654,63 +654,6 @@
 		<constant name="RENDERING_DRIVER_OPENGL3" value="1" enum="RenderingDriver">
 		<constant name="RENDERING_DRIVER_OPENGL3" value="1" enum="RenderingDriver">
 			The OpenGL 3 rendering driver. It uses OpenGL 3.3 Core Profile on desktop platforms, OpenGL ES 3.0 on mobile devices, and WebGL 2.0 on Web.
 			The OpenGL 3 rendering driver. It uses OpenGL 3.3 Core Profile on desktop platforms, OpenGL ES 3.0 on mobile devices, and WebGL 2.0 on Web.
 		</constant>
 		</constant>
-		<constant name="DAY_SUNDAY" value="0" enum="Weekday">
-			Sunday.
-		</constant>
-		<constant name="DAY_MONDAY" value="1" enum="Weekday">
-			Monday.
-		</constant>
-		<constant name="DAY_TUESDAY" value="2" enum="Weekday">
-			Tuesday.
-		</constant>
-		<constant name="DAY_WEDNESDAY" value="3" enum="Weekday">
-			Wednesday.
-		</constant>
-		<constant name="DAY_THURSDAY" value="4" enum="Weekday">
-			Thursday.
-		</constant>
-		<constant name="DAY_FRIDAY" value="5" enum="Weekday">
-			Friday.
-		</constant>
-		<constant name="DAY_SATURDAY" value="6" enum="Weekday">
-			Saturday.
-		</constant>
-		<constant name="MONTH_JANUARY" value="1" enum="Month">
-			January.
-		</constant>
-		<constant name="MONTH_FEBRUARY" value="2" enum="Month">
-			February.
-		</constant>
-		<constant name="MONTH_MARCH" value="3" enum="Month">
-			March.
-		</constant>
-		<constant name="MONTH_APRIL" value="4" enum="Month">
-			April.
-		</constant>
-		<constant name="MONTH_MAY" value="5" enum="Month">
-			May.
-		</constant>
-		<constant name="MONTH_JUNE" value="6" enum="Month">
-			June.
-		</constant>
-		<constant name="MONTH_JULY" value="7" enum="Month">
-			July.
-		</constant>
-		<constant name="MONTH_AUGUST" value="8" enum="Month">
-			August.
-		</constant>
-		<constant name="MONTH_SEPTEMBER" value="9" enum="Month">
-			September.
-		</constant>
-		<constant name="MONTH_OCTOBER" value="10" enum="Month">
-			October.
-		</constant>
-		<constant name="MONTH_NOVEMBER" value="11" enum="Month">
-			November.
-		</constant>
-		<constant name="MONTH_DECEMBER" value="12" enum="Month">
-			December.
-		</constant>
 		<constant name="SYSTEM_DIR_DESKTOP" value="0" enum="SystemDir">
 		<constant name="SYSTEM_DIR_DESKTOP" value="0" enum="SystemDir">
 			Desktop directory path.
 			Desktop directory path.
 		</constant>
 		</constant>

+ 4 - 4
tests/core/test_time.h

@@ -91,7 +91,7 @@ TEST_CASE("[Time] Datetime dictionary conversion methods") {
 	datetime[YEAR_KEY] = 2014;
 	datetime[YEAR_KEY] = 2014;
 	datetime[MONTH_KEY] = 2;
 	datetime[MONTH_KEY] = 2;
 	datetime[DAY_KEY] = 9;
 	datetime[DAY_KEY] = 9;
-	datetime[WEEKDAY_KEY] = Time::Weekday::WEEKDAY_SUNDAY;
+	datetime[WEEKDAY_KEY] = Weekday::WEEKDAY_SUNDAY;
 	datetime[HOUR_KEY] = 22;
 	datetime[HOUR_KEY] = 22;
 	datetime[MINUTE_KEY] = 10;
 	datetime[MINUTE_KEY] = 10;
 	datetime[SECOND_KEY] = 30;
 	datetime[SECOND_KEY] = 30;
@@ -100,7 +100,7 @@ TEST_CASE("[Time] Datetime dictionary conversion methods") {
 	date_only[YEAR_KEY] = 2014;
 	date_only[YEAR_KEY] = 2014;
 	date_only[MONTH_KEY] = 2;
 	date_only[MONTH_KEY] = 2;
 	date_only[DAY_KEY] = 9;
 	date_only[DAY_KEY] = 9;
-	date_only[WEEKDAY_KEY] = Time::Weekday::WEEKDAY_SUNDAY;
+	date_only[WEEKDAY_KEY] = Weekday::WEEKDAY_SUNDAY;
 
 
 	Dictionary time_only;
 	Dictionary time_only;
 	time_only[HOUR_KEY] = 22;
 	time_only[HOUR_KEY] = 22;
@@ -115,8 +115,8 @@ TEST_CASE("[Time] Datetime dictionary conversion methods") {
 	CHECK_MESSAGE(time->get_date_dict_from_unix_time(1391904000).hash() == date_only.hash(), "Time get_date_dict_from_unix_time: The date timestamp for GODOT IS OPEN SOURCE is converted to a dictionary as expected.");
 	CHECK_MESSAGE(time->get_date_dict_from_unix_time(1391904000).hash() == date_only.hash(), "Time get_date_dict_from_unix_time: The date timestamp for GODOT IS OPEN SOURCE is converted to a dictionary as expected.");
 	CHECK_MESSAGE(time->get_time_dict_from_unix_time(79830).hash() == time_only.hash(), "Time get_time_dict_from_unix_time: The time timestamp for GODOT IS OPEN SOURCE is converted to a dictionary as expected.");
 	CHECK_MESSAGE(time->get_time_dict_from_unix_time(79830).hash() == time_only.hash(), "Time get_time_dict_from_unix_time: The time timestamp for GODOT IS OPEN SOURCE is converted to a dictionary as expected.");
 
 
-	CHECK_MESSAGE((Time::Weekday)(int)time->get_datetime_dict_from_unix_time(0)[WEEKDAY_KEY] == Time::Weekday::WEEKDAY_THURSDAY, "Time get_datetime_dict_from_unix_time: The weekday for the Unix epoch is a Thursday as expected.");
-	CHECK_MESSAGE((Time::Weekday)(int)time->get_datetime_dict_from_unix_time(1391983830)[WEEKDAY_KEY] == Time::Weekday::WEEKDAY_SUNDAY, "Time get_datetime_dict_from_unix_time: The weekday for GODOT IS OPEN SOURCE is a Sunday as expected.");
+	CHECK_MESSAGE((Weekday)(int)time->get_datetime_dict_from_unix_time(0)[WEEKDAY_KEY] == Weekday::WEEKDAY_THURSDAY, "Time get_datetime_dict_from_unix_time: The weekday for the Unix epoch is a Thursday as expected.");
+	CHECK_MESSAGE((Weekday)(int)time->get_datetime_dict_from_unix_time(1391983830)[WEEKDAY_KEY] == Weekday::WEEKDAY_SUNDAY, "Time get_datetime_dict_from_unix_time: The weekday for GODOT IS OPEN SOURCE is a Sunday as expected.");
 
 
 	CHECK_MESSAGE(time->get_datetime_dict_from_datetime_string("2014-02-09T22:10:30").hash() == datetime.hash(), "Time get_datetime_dict_from_string: The dictionary from string for GODOT IS OPEN SOURCE works as expected.");
 	CHECK_MESSAGE(time->get_datetime_dict_from_datetime_string("2014-02-09T22:10:30").hash() == datetime.hash(), "Time get_datetime_dict_from_string: The dictionary from string for GODOT IS OPEN SOURCE works as expected.");
 	CHECK_MESSAGE(!time->get_datetime_dict_from_datetime_string("2014-02-09T22:10:30", false).has(WEEKDAY_KEY), "Time get_datetime_dict_from_string: The dictionary from string for GODOT IS OPEN SOURCE without weekday doesn't contain the weekday key as expected.");
 	CHECK_MESSAGE(!time->get_datetime_dict_from_datetime_string("2014-02-09T22:10:30", false).has(WEEKDAY_KEY), "Time get_datetime_dict_from_string: The dictionary from string for GODOT IS OPEN SOURCE without weekday doesn't contain the weekday key as expected.");