]> git.tdb.fi Git - libs/datafile.git/blobdiff - source/type.h
More senseful validity checks for keyword and string definitions
[libs/datafile.git] / source / type.h
index 72d148a0e16631b2440747fd2c20a1556597b728..58766289bc172a0e214917c961452976fac5645e 100644 (file)
@@ -1,6 +1,7 @@
 #ifndef MSP_DATAFILE_TYPE_H_
 #define MSP_DATAFILE_TYPE_H_
 
+#include <msp/core/inttypes.h>
 #include <msp/strings/lexicalcast.h>
 
 namespace Msp {
@@ -19,11 +20,7 @@ struct Symbol
 struct IntType
 {
        static const char signature = 'i';
-#ifdef MSVC
-       typedef __int64 Store;
-#else
-       typedef long long int Store;
-#endif
+       typedef Int64 Store;
        typedef Store Load;
 };
 
@@ -55,6 +52,16 @@ struct SymbolType
        typedef Symbol Store;
 };
 
+const char valid_signatures[] =
+{
+       IntType::signature,
+       FloatType::signature,
+       BoolType::signature,
+       StringType::signature,
+       SymbolType::signature,
+       0
+};
+
 template<typename T>
 struct HasLoadType
 {
@@ -90,13 +97,13 @@ struct TypeInfo<long int, false>: IntType { };
 template<>
 struct TypeInfo<unsigned long int, false>: IntType { };
 
-#ifdef MSVC
+#if defined(_MSC_VER)
 template<>
 struct TypeInfo<__int64, false>: IntType { };
 
 template<>
 struct TypeInfo<unsigned __int64, false>: IntType { };
-#else
+#elif defined(__GNUC__)
 template<>
 struct TypeInfo<long long int, false>: IntType { };