X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fwriter.cpp;h=ff4f2248bee7e7d3035c3a4174e44a52251d2450;hb=HEAD;hp=cdd78b62e18e5e636994f0bf674da9aba39d3676;hpb=27630d44298cb67e075c166f4421288cc8ca117e;p=libs%2Fdatafile.git diff --git a/source/writer.cpp b/source/writer.cpp index cdd78b6..bb3ff5e 100644 --- a/source/writer.cpp +++ b/source/writer.cpp @@ -1,10 +1,4 @@ -/* $Id$ - -This file is part of libmspdatafile -Copyright © 2006 Mikko Rasa, Mikkosoft Productions -Distributed under the LGPL -*/ - +#include #include "binarywriter.h" #include "statement.h" #include "textwriter.h" @@ -15,12 +9,16 @@ using namespace std; namespace Msp { namespace DataFile { -Writer::Writer(ostream &o): +Writer::Writer(IO::Base &o): out(o), - mode(new TextWriter(out)), - binary(false) + mode(new TextWriter(out)) { } +Writer::~Writer() +{ + delete mode; +} + void Writer::write(const Statement &st) { mode->write(st); @@ -31,21 +29,35 @@ void Writer::set_binary(bool b) if(b==binary) return; - binary=b; + binary = b; Statement st; if(binary) - st.keyword="__bin"; + st.keyword = "__bin"; else - st.keyword="__text"; + st.keyword = "__text"; mode->write(st); delete mode; if(binary) - mode=new BinaryWriter(out); + mode = new BinaryWriter(out); else - mode=new TextWriter(out); + mode = new TextWriter(out); +} + +void Writer::set_compressed() +{ + Statement st; + st.keyword = "__z"; + mode->write(st); + + out.set_compressed(); +} + +void Writer::set_float_precision(unsigned fp) +{ + mode->set_float_precision(fp); } } // namespace DataFile