X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Ftextwriter.cpp;h=0e5b6742653d80599809d645b77e1f91b9f60675;hb=818ead7b6ccef1e4d2435cc959bc07f910fcde46;hp=890c4172162ea17631d8bc69fad7be8ce3a28788;hpb=6dd94a7fe90c6467024685fbac769067ddb74688;p=libs%2Fdatafile.git diff --git a/source/textwriter.cpp b/source/textwriter.cpp index 890c417..0e5b674 100644 --- a/source/textwriter.cpp +++ b/source/textwriter.cpp @@ -1,10 +1,3 @@ -/* $Id$ - -This file is part of libmspdatafile -Copyright © 2006 Mikko Rasa, Mikkosoft Productions -Distributed under the LGPL -*/ - #include #include #include "statement.h" @@ -29,20 +22,30 @@ void TextWriter::write_(const Statement &st, unsigned level) string indent(level, '\t'); IO::print(out, "%s%s", indent, st.keyword); - for(ValueArray::const_iterator i=st.args.begin(); i!=st.args.end(); ++i) + 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() ? "true" : "false"); - else - out.write(i->get_raw()); + if(i->get_signature()==StringType::signature) + IO::print(out, "\"%s\"", c_escape(i->get(), false)); + else if(i->get_signature()==BoolType::signature) + out.write(i->get() ? "true" : "false"); + else if(i->get_signature()==IntType::signature) + out.write(lexical_cast(i->get())); + else if(i->get_signature()==FloatType::signature) + out.write(format("%15g", (i->get()))); + else if(i->get_signature()==SymbolType::signature) + { + string name = i->get().name; + if(isdigit(name[0])) + out.write("\\"+name); + else + out.write(name); + } } if(!st.sub.empty()) { IO::print(out, "\n%s{\n", indent); - for(list::const_iterator i=st.sub.begin(); i!=st.sub.end(); ++i) + for(list::const_iterator i = st.sub.begin(); i!=st.sub.end(); ++i) write_(*i, level+1); IO::print(out, "%s}", indent); }