]> git.tdb.fi Git - libs/datafile.git/blob - source/writer.cpp
bfd0edac784227efa21b8f30b7dd72e5bcdc3325
[libs/datafile.git] / source / writer.cpp
1 /* $Id$
2
3 This file is part of libmspdatafile
4 Copyright © 2006  Mikko Rasa, Mikkosoft Productions
5 Distributed under the LGPL
6 */
7
8 #include "binarywriter.h"
9 #include "statement.h"
10 #include "textwriter.h"
11 #include "writer.h"
12
13 using namespace std;
14
15 namespace Msp {
16 namespace DataFile {
17
18 Writer::Writer(IO::Base &o):
19         out(o),
20         mode(new TextWriter(out)),
21         binary(false)
22 { }
23
24 Writer::~Writer()
25 {
26         delete mode;
27 }
28
29 void Writer::write(const Statement &st)
30 {
31         mode->write(st);
32 }
33
34 void Writer::set_binary(bool b)
35 {
36         if(b==binary)
37                 return;
38
39         binary=b;
40
41         Statement st;
42         if(binary)
43                 st.keyword="__bin";
44         else
45                 st.keyword="__text";
46
47         mode->write(st);
48
49         delete mode;
50         if(binary)
51                 mode=new BinaryWriter(out);
52         else
53                 mode=new TextWriter(out);
54 }
55
56 } // namespace DataFile
57 } // namespace Msp