X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fbinarywriter.h;h=db89a5e15fae4a14c10a7bd1b76deedcf3c8b967;hb=215e719d0ef85f748898660d15d01e77ac551de9;hp=cf8f9fcaa016c35bfedb9172a6c0c76c940b00d5;hpb=27630d44298cb67e075c166f4421288cc8ca117e;p=libs%2Fdatafile.git diff --git a/source/binarywriter.h b/source/binarywriter.h index cf8f9fc..db89a5e 100644 --- a/source/binarywriter.h +++ b/source/binarywriter.h @@ -1,7 +1,7 @@ /* $Id$ This file is part of libmspdatafile -Copyright © 2006 Mikko Rasa, Mikkosoft Productions +Copyright © 2007-2008, 2010 Mikko Rasa, Mikkosoft Productions Distributed under the LGPL */ @@ -15,23 +15,26 @@ Distributed under the LGPL namespace Msp { namespace DataFile { +/** +Writes data in binary format. +*/ class BinaryWriter: public WriterMode { private: typedef std::map Dictionary; - typedef std::map EnumMap; + typedef std::map StringMap; Dictionary dict; - unsigned next_st_id; - EnumMap enums; - unsigned next_enum_id; + unsigned next_kwd_id; + StringMap strings; + unsigned next_str_id; public: - BinaryWriter(std::ostream &o); - void write(const Statement &st); + BinaryWriter(IO::Base &o); + + virtual void write(const Statement &st); 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);