2
0
Эх сурвалжийг харах

Add type converters for double, int64_t

Michael Ragazzon 5 жил өмнө
parent
commit
012309ccfc

+ 43 - 6
Include/RmlUi/Core/TypeConverter.inl

@@ -72,7 +72,9 @@ public: \
 /////////////////////////////////////////////////
 PASS_THROUGH(int);
 PASS_THROUGH(unsigned int);
+PASS_THROUGH(int64_t);
 PASS_THROUGH(float);
+PASS_THROUGH(double);
 PASS_THROUGH(bool);
 PASS_THROUGH(char);
 PASS_THROUGH(Character);
@@ -98,16 +100,34 @@ PASS_THROUGH(voidPtr);
 /////////////////////////////////////////////////
 BASIC_CONVERTER(bool, int);
 BASIC_CONVERTER(bool, unsigned int);
+BASIC_CONVERTER(bool, int64_t);
 BASIC_CONVERTER(bool, float);
+BASIC_CONVERTER(bool, double);
 
-BASIC_CONVERTER(int, unsigned int);
 BASIC_CONVERTER_BOOL(int, bool);
+BASIC_CONVERTER(int, unsigned int);
+BASIC_CONVERTER(int, int64_t);
 BASIC_CONVERTER(int, float);
+BASIC_CONVERTER(int, double);
+
+BASIC_CONVERTER_BOOL(int64_t, bool);
+BASIC_CONVERTER(int64_t, int);
+BASIC_CONVERTER(int64_t, float);
+BASIC_CONVERTER(int64_t, double);
+BASIC_CONVERTER(int64_t, unsigned int);
 
 BASIC_CONVERTER_BOOL(float, bool);
 BASIC_CONVERTER(float, int);
+BASIC_CONVERTER(float, int64_t);
+BASIC_CONVERTER(float, double);
 BASIC_CONVERTER(float, unsigned int);
 
+BASIC_CONVERTER_BOOL(double, bool);
+BASIC_CONVERTER(double, int);
+BASIC_CONVERTER(double, int64_t);
+BASIC_CONVERTER(double, float);
+BASIC_CONVERTER(double, unsigned int);
+
 BASIC_CONVERTER(char, Character);
 
 /////////////////////////////////////////////////
@@ -148,16 +168,23 @@ public:
 	}
 };
 
+template<>
+class TypeConverter< String, int64_t >
+{
+public:
+	static bool Convert(const String& src, int64_t& dest)
+	{
+		return sscanf(src.c_str(), "%lld", &dest) == 1;
+	}
+};
+
 template<>
 class TypeConverter< String, byte >
 {
 public:
 	static bool Convert(const String& src, byte& dest)
 	{
-		int value;
-		bool ret = sscanf(src.c_str(), "%d", &value) == 1;
-		dest = (byte) value;
-		return ret && (value <= 255);
+		return sscanf(src.c_str(), "%hhu", &dest) == 1;
 	}
 };
 
@@ -258,13 +285,23 @@ public:
 	}
 };
 
+template<>
+class TypeConverter< int64_t, String >
+{
+public:
+	static bool Convert(const int64_t& src, String& dest)
+	{
+		return FormatString(dest, 32, "%lld", src) > 0;
+	}
+};
+
 template<>
 class TypeConverter< byte, String >
 {
 public:
 	static bool Convert(const byte& src, String& dest)
 	{
-		return FormatString(dest, 32, "%u", src) > 0;
+		return FormatString(dest, 32, "%hhu", src) > 0;
 	}
 };