|
|
@@ -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;
|
|
|
}
|
|
|
};
|
|
|
|