]> git.tdb.fi Git - libs/datafile.git/blobdiff - source/binaryparser.h
Cosmetic changes
[libs/datafile.git] / source / binaryparser.h
index f1d51b236edc8b192c3644574905775c7cf9b9da..f6226a1d621df86719b45b653a41fc883ba8194f 100644 (file)
@@ -1,16 +1,9 @@
-/* $Id$
-
-This file is part of libmspdatafile
-Copyright © 2007  Mikko Rasa, Mikkosoft Productions
-Distributed under the LGPL
-*/
-
 #ifndef MSP_DATAFILE_BINARYPARSER_H_
 #define MSP_DATAFILE_BINARYPARSER_H_
 
 #include <map>
-#include "binarydict.h"
 #include "parsermode.h"
+#include "type.h"
 
 namespace Msp {
 namespace DataFile {
@@ -21,23 +14,30 @@ Parses data in binary format.
 class BinaryParser: public ParserMode
 {
 private:
-       typedef std::map<unsigned, DictEntry> Dictionary;
-       typedef std::map<unsigned, std::string> EnumMap;
+       typedef std::map<int, StatementInfo> Dictionary;
+       typedef std::map<unsigned, std::string> StringMap;
 
        Dictionary dict;
-       EnumMap enums;
-       bool first;
+       StringMap strings;
+       unsigned float_precision = 32;
+       StatementInfo *cur_info = nullptr;
+       std::vector<unsigned> sub_remaining;
 
 public:
        BinaryParser(Input &i, const std::string &s);
-       Statement parse();
+
+       Statement parse() override;
+       void process_control_statement(const Statement &) override;
+
+       const StatementKey *peek(unsigned) override;
+       bool parse_and_load(unsigned, Loader &, const LoaderAction &) override;
+
 private:
-       Statement parse_statement();
-       long long parse_int();
-       float parse_float();
-       std::string parse_string();
-       bool parse_bool();
-       std::string parse_enum();
+       IntType::Store parse_int();
+       FloatType::Store parse_float();
+       StringType::Store parse_string();
+       BoolType::Store parse_bool();
+       SymbolType::Store parse_symbol();
 };
 
 } // namespace DataFile