1 #include <msp/io/print.h>
2 #include <msp/strings/utils.h>
4 #include "textwriter.h"
11 TextWriter::TextWriter(IO::Base &o):
15 void TextWriter::write(const Statement &st)
20 void TextWriter::write_(const Statement &st, unsigned level)
22 string indent(level, '\t');
24 IO::print(out, "%s%s", indent, st.keyword);
25 for(ValueArray::const_iterator i = st.args.begin(); i!=st.args.end(); ++i)
28 if(i->get_signature()==StringType::signature)
29 IO::print(out, "\"%s\"", c_escape(i->get<StringType::Store>(), false));
30 else if(i->get_signature()==BoolType::signature)
31 out.write(i->get<BoolType::Store>() ? "true" : "false");
32 else if(i->get_signature()==IntType::signature)
33 out.write(lexical_cast(i->get<IntType::Store>()));
34 else if(i->get_signature()==FloatType::signature)
35 out.write(format("%15g", (i->get<FloatType::Store>())));
36 else if(i->get_signature()==SymbolType::signature)
38 string name = i->get<SymbolType::Store>().name;
47 IO::print(out, "\n%s{\n", indent);
48 for(list<Statement>::const_iterator i = st.sub.begin(); i!=st.sub.end(); ++i)
50 IO::print(out, "%s}", indent);
55 } // namespace DataFile