]> git.tdb.fi Git - libs/datafile.git/blob - source/writer.cpp
Add binary data format
[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(ostream &o):
19         out(o),
20         mode(new TextWriter(out)),
21         binary(false)
22 { }
23
24 void Writer::write(const Statement &st)
25 {
26         mode->write(st);
27 }
28
29 void Writer::set_binary(bool b)
30 {
31         if(b==binary)
32                 return;
33
34         binary=b;
35
36         Statement st;
37         if(binary)
38                 st.keyword="__bin";
39         else
40                 st.keyword="__text";
41
42         mode->write(st);
43
44         delete mode;
45         if(binary)
46                 mode=new BinaryWriter(out);
47         else
48                 mode=new TextWriter(out);
49 }
50
51 } // namespace DataFile
52 } // namespace Msp