]> git.tdb.fi Git - libs/datafile.git/blob - source/binaryparser.h
e6735f2435a71c447450ecd58aacbf46342859be
[libs/datafile.git] / source / binaryparser.h
1 #ifndef MSP_DATAFILE_BINARYPARSER_H_
2 #define MSP_DATAFILE_BINARYPARSER_H_
3
4 #include <map>
5 #include "binarydict.h"
6 #include "parsermode.h"
7 #include "type.h"
8
9 namespace Msp {
10 namespace DataFile {
11
12 /**
13 Parses data in binary format.
14 */
15 class BinaryParser: public ParserMode
16 {
17 private:
18         typedef std::map<int, DictEntry> Dictionary;
19         typedef std::map<unsigned, std::string> StringMap;
20
21         Dictionary dict;
22         StringMap strings;
23         bool first;
24         unsigned float_precision;
25
26 public:
27         BinaryParser(Input &i, const std::string &s);
28
29         virtual Statement parse(bool);
30 private:
31         Statement parse_statement(bool);
32         IntType::Store parse_int();
33         FloatType::Store parse_float();
34         StringType::Store parse_string();
35         BoolType::Store parse_bool();
36         SymbolType::Store parse_symbol();
37 };
38
39 } // namespace DataFile
40 } // namespace Msp
41
42 #endif