]> git.tdb.fi Git - libs/datafile.git/blobdiff - source/textwriter.cpp
Add an abstraction layer for output
[libs/datafile.git] / source / textwriter.cpp
index 65f4870ea6e466816ee25d9dd40dbc550d00faa8..5212c9760488330de78807ab7e4eb97bc3727827 100644 (file)
@@ -1,5 +1,6 @@
 #include <msp/io/print.h>
 #include <msp/strings/utils.h>
+#include "output.h"
 #include "statement.h"
 #include "textwriter.h"
 
@@ -8,7 +9,7 @@ using namespace std;
 namespace Msp {
 namespace DataFile {
 
-TextWriter::TextWriter(IO::Base &o):
+TextWriter::TextWriter(Output &o):
        WriterMode(o),
        float_format("%#.7g")
 { }
@@ -27,12 +28,12 @@ void TextWriter::write_(const Statement &st, unsigned level)
 {
        string indent(level, '\t');
 
-       IO::print(out, "%s%s", indent, st.keyword);
+       out.write(format("%s%s", indent, st.keyword));
        for(ValueArray::const_iterator i = st.args.begin(); i!=st.args.end(); ++i)
        {
                out.put(' ');
                if(i->get_signature()==StringType::signature)
-                       IO::print(out, "\"%s\"", c_escape(i->get<StringType::Store>(), false));
+                       out.write(format("\"%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)
@@ -50,12 +51,12 @@ void TextWriter::write_(const Statement &st, unsigned level)
        }
        if(!st.sub.empty())
        {
-               IO::print(out, "\n%s{\n", indent);
+               out.write(format("\n%s{\n", indent));
                for(list<Statement>::const_iterator i = st.sub.begin(); i!=st.sub.end(); ++i)
                        write_(*i, level+1);
-               IO::print(out, "%s}", indent);
+               out.write(format("%s}", indent));
        }
-       out.write(";\n", 2);
+       out.write(";\n");
 }
 
 } // namespace DataFile