]> git.tdb.fi Git - libs/datafile.git/blob - source/writer.cpp
c6a1e1259c2d861a32e4e6a963fe398a8001900a
[libs/datafile.git] / source / writer.cpp
1 #include "binarywriter.h"
2 #include "statement.h"
3 #include "textwriter.h"
4 #include "writer.h"
5
6 using namespace std;
7
8 namespace Msp {
9 namespace DataFile {
10
11 Writer::Writer(IO::Base &o):
12         out(o),
13         mode(new TextWriter(out)),
14         binary(false)
15 { }
16
17 Writer::~Writer()
18 {
19         delete mode;
20 }
21
22 void Writer::write(const Statement &st)
23 {
24         mode->write(st);
25 }
26
27 void Writer::set_binary(bool b)
28 {
29         if(b==binary)
30                 return;
31
32         binary = b;
33
34         Statement st;
35         if(binary)
36                 st.keyword = "__bin";
37         else
38                 st.keyword = "__text";
39
40         mode->write(st);
41
42         delete mode;
43         if(binary)
44                 mode = new BinaryWriter(out);
45         else
46                 mode = new TextWriter(out);
47 }
48
49 } // namespace DataFile
50 } // namespace Msp