]> git.tdb.fi Git - libs/datafile.git/blobdiff - source/statement.cpp
Force correct conversion of symbols
[libs/datafile.git] / source / statement.cpp
index 9dfb54421a47c6f041b344cc175a6c67e232f43c..e6b31a72b1096e71d71adf7ea24fc7db290f5cb6 100644 (file)
@@ -32,15 +32,15 @@ string Statement::get_location() const
 string Statement::get_signature() const
 {
        string result;
-       for(Arguments::const_iterator i = args.begin(); i!=args.end(); ++i)
-               result += i->get_signature();
+       for(const Value &a: args)
+               result += a.get_signature();
        return result;
 }
 
 Statement &Statement::append_from_token(const Token &token)
 {
        if(token.type==Token::INTEGER)
-               return append(lexical_cast<IntType::Store>(token.str));
+               return append(lexical_cast<IntType::Store>(token.str, Fmt().autobase()));
        else if(token.type==Token::FLOAT)
                return append(lexical_cast<FloatType::Store>(token.str));
        else if(token.type==Token::STRING)
@@ -52,7 +52,7 @@ Statement &Statement::append_from_token(const Token &token)
                else if(token.str=="false")
                        return append(false);
                else
-                       return append(Symbol(token.str));
+                       return append(Value(Symbol(token.str)));
        }
        else
                throw invalid_argument("Statement::append_from_token");
@@ -67,10 +67,10 @@ StatementInfo::StatementInfo(const string &k, const string &s):
        key(k, s),
        args_size(0)
 {
-       for(string::const_iterator i=key.signature.begin(); i!=key.signature.end(); ++i)
+       for(char c: key.signature)
        {
                arg_offsets.push_back(args_size);
-               switch(*i)
+               switch(c)
                {
                case IntType::signature:
                        args_size += sizeof(IntType::Store);