Bläddra i källkod

Variant: Add bool, double, int64 types, remove word.

Michael Ragazzon 5 år sedan
förälder
incheckning
d94d17be4e
3 ändrade filer med 40 tillägg och 11 borttagningar
  1. 6 2
      Include/RmlUi/Core/Variant.h
  2. 12 4
      Include/RmlUi/Core/Variant.inl
  3. 22 5
      Source/Core/Variant.cpp

+ 6 - 2
Include/RmlUi/Core/Variant.h

@@ -53,12 +53,14 @@ public:
 	enum Type : size_t
 	{
 		NONE = '-',
+		BOOL = 'B',
 		BYTE = 'b',
 		CHAR = 'c',
 		FLOAT = 'f',
+		DOUBLE = 'd',
 		INT = 'i',
+		INT64 = 'I',
 		STRING = 's',
-		WORD = 'w',
 		VECTOR2 = '2',
 		VECTOR3 = '3',
 		VECTOR4 = '4',
@@ -121,11 +123,13 @@ private:
 	void Set(const Variant& copy);
 	void Set(Variant&& other);
 
+	void Set(const bool value);
 	void Set(const byte value);
 	void Set(const char value);
 	void Set(const float value);
+	void Set(const double value);
 	void Set(const int value);
-	void Set(const Character value);
+	void Set(const int64_t value);
 	void Set(const char* value);
 	void Set(void* value);
 	void Set(const Vector2f& value);

+ 12 - 4
Include/RmlUi/Core/Variant.inl

@@ -54,6 +54,10 @@ bool Variant::GetInto(T& value) const
 {
 	switch (type)
 	{
+	case BOOL:
+		return TypeConverter< bool, T >::Convert(*(bool*)data, value);
+		break;
+
 	case BYTE:
 		return TypeConverter< byte, T >::Convert(*(byte*)data, value);
 		break;
@@ -66,16 +70,20 @@ bool Variant::GetInto(T& value) const
 		return TypeConverter< float, T >::Convert(*(float*)data, value);
 		break;
 
+	case DOUBLE:
+		return TypeConverter< double, T >::Convert(*(double*)data, value);
+		break;
+
 	case INT:
 		return TypeConverter< int, T >::Convert(*(int*)data, value);
 		break;
 
-	case STRING:
-		return TypeConverter< String, T >::Convert(*(String*)data, value);
+	case INT64:
+		return TypeConverter< int64_t, T >::Convert(*(int64_t*)data, value);
 		break;
 
-	case WORD:
-		return TypeConverter< Character, T >::Convert(*(Character*)data, value);
+	case STRING:
+		return TypeConverter< String, T >::Convert(*(String*)data, value);
 		break;
 
 	case VECTOR2:

+ 22 - 5
Source/Core/Variant.cpp

@@ -192,6 +192,12 @@ void Variant::Set(Variant&& other)
 	RMLUI_ASSERT(type == other.type);
 }
 
+void Variant::Set(const bool value)
+{
+	type = BOOL;
+	SET_VARIANT(bool);
+}
+
 void Variant::Set(const byte value)
 {
 	type = BYTE;
@@ -210,15 +216,22 @@ void Variant::Set(const float value)
 	SET_VARIANT(float);
 }
 
+void Variant::Set(const double value)
+{
+	type = DOUBLE;
+	SET_VARIANT(double);
+}
+
 void Variant::Set(const int value)
 {
 	type = INT;
 	SET_VARIANT(int);
 }
-void Variant::Set(const Character value)
+
+void Variant::Set(const int64_t value)
 {
-	type = WORD;
-	SET_VARIANT(Character);
+	type = INT64;
+	SET_VARIANT(int64_t);
 }
 
 void Variant::Set(const char* value) 
@@ -444,18 +457,22 @@ bool Variant::operator==(const Variant & other) const
 
 	switch (type)
 	{
+	case BOOL:
+		return DEFAULT_VARIANT_COMPARE(bool);
 	case BYTE:
 		return DEFAULT_VARIANT_COMPARE(byte);
 	case CHAR:
 		return DEFAULT_VARIANT_COMPARE(char);
 	case FLOAT:
 		return DEFAULT_VARIANT_COMPARE(float);
+	case DOUBLE:
+		return DEFAULT_VARIANT_COMPARE(double);
 	case INT:
 		return DEFAULT_VARIANT_COMPARE(int);
+	case INT64:
+		return DEFAULT_VARIANT_COMPARE(int64_t);
 	case STRING:
 		return DEFAULT_VARIANT_COMPARE(String);
-	case WORD:
-		return DEFAULT_VARIANT_COMPARE(Character);
 	case VECTOR2:
 		return DEFAULT_VARIANT_COMPARE(Vector2f);
 	case VECTOR3: