]> git.tdb.fi Git - libs/datafile.git/blobdiff - source/type.h
Add the target type to lexical_cast invocations
[libs/datafile.git] / source / type.h
index 701a5dc9786533f930e6c49778988f6816f83189..17545bae23ef0922669583344097a65c3e3e04cd 100644 (file)
@@ -12,7 +12,7 @@ struct Symbol
        std::string name;
 
        template<typename T>
-       Symbol(const T &n): name(lexical_cast(n)) { }
+       Symbol(const T &n): name(lexical_cast<std::string>(n)) { }
 
        template<typename T> operator T() const { return lexical_cast<T>(name); }
 };
@@ -52,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
 {
@@ -113,6 +123,12 @@ struct TypeInfo<bool, false>: BoolType { };
 template<>
 struct TypeInfo<std::string, false>: StringType { };
 
+template<>
+struct TypeInfo<char *, false>: StringType { };
+
+template<>
+struct TypeInfo<const char *, false>: StringType { };
+
 template<typename T>
 struct TypeInfo<const T, false>: TypeInfo<T> { };