]> git.tdb.fi Git - libs/datafile.git/blobdiff - source/binarywriter.h
Cosmetic changes
[libs/datafile.git] / source / binarywriter.h
index 691ed701d3bcaa4be9c5641aeebddfb0391fabb9..dafc7eb36755bb60cd720ef8b03cbd47ed74e516 100644 (file)
@@ -1,15 +1,9 @@
-/* $Id$
-
-This file is part of libmspdatafile
-Copyright © 2006  Mikko Rasa, Mikkosoft Productions
-Distributed under the LGPL
-*/
-
 #ifndef MSP_DATAFILE_BINARYWRITER_H_
 #define MSP_DATAFILE_BINARYWRITER_H_
 
 #include <map>
-#include "binarydict.h"
+#include "statement.h"
+#include "type.h"
 #include "writermode.h"
 
 namespace Msp {
@@ -21,25 +15,27 @@ Writes data in binary format.
 class BinaryWriter: public WriterMode
 {
 private:
-       typedef std::map<DictEntry, unsigned> Dictionary;
-       typedef std::map<std::string, unsigned> EnumMap;
+       typedef std::map<StatementKey, int> Dictionary;
+       typedef std::map<std::string, unsigned> StringMap;
 
        Dictionary dict;
-       unsigned next_st_id;
-       EnumMap enums;
-       unsigned next_enum_id;
+       unsigned next_kwd_id = 1;
+       StringMap strings;
+       unsigned next_str_id = 1;
+       unsigned float_precision = 32;
 
 public:
-       BinaryWriter(std::ostream &o);
-       void write(const Statement &st);
+       BinaryWriter(Output &o);
+
+       void set_float_precision(unsigned) override;
+       void write(const Statement &st) override;
 private:
        void write_(const Statement &st);
-       DictEntry create_entry(const Statement &st);
        void collect_keywords(const Statement &st);
-       void write_int(long long n);
-       void write_string(const std::string &s);
-       void write_float(float f);
-       void write_enum(const std::string &e);
+       void write_int(IntType::Store n);
+       void write_string(const StringType::Store &s);
+       void write_float(FloatType::Store f);
+       void write_symbol(const SymbolType::Store &s);
 };
 
 } // namespace DataFile