]> git.tdb.fi Git - libs/datafile.git/blobdiff - source/textwriter.cpp
Rewrite the type system
[libs/datafile.git] / source / textwriter.cpp
index 2768462297e6fed397e31b8a7ae58e96b3110113..08909a1c6ed952b190754063d628f4e0e3dbe3dc 100644 (file)
@@ -1,7 +1,7 @@
 /* $Id$
 
 This file is part of libmspdatafile
-Copyright © 2006  Mikko Rasa, Mikkosoft Productions
+Copyright © 2007-2008, 2010  Mikko Rasa, Mikkosoft Productions
 Distributed under the LGPL
 */
 
@@ -32,12 +32,16 @@ void TextWriter::write_(const Statement &st, unsigned level)
        for(ValueArray::const_iterator i = st.args.begin(); i!=st.args.end(); ++i)
        {
                out.put(' ');
-               if(i->get_type()==STRING)
-                       IO::print(out, "\"%s\"", c_escape(i->get_raw(), false));
-               else if(i->get_type()==BOOLEAN)
-                       out.write(i->get<bool>() ? "true" : "false");
-               else
-                       out.write(i->get_raw());
+               if(i->get_signature()==StringType::signature)
+                       IO::print(out, "\"%s\"", c_escape(i->get<StringType::Store>(), false));
+               else if(i->get_signature()==BoolType::signature)
+                       out.write(i->get<BoolType::Store>() ? "true" : "false");
+               else if(i->get_signature()==IntType::signature)
+                       out.write(lexical_cast(i->get<IntType::Store>()));
+               else if(i->get_signature()==FloatType::signature)
+                       out.write(format("%15g", (i->get<FloatType::Store>())));
+               else if(i->get_signature()==SymbolType::signature)
+                       out.write(i->get<SymbolType::Store>().name);
        }
        if(!st.sub.empty())
        {