-/* $Id$
-
-This file is part of libmspdatafile
-Copyright © 2006 Mikko Rasa, Mikkosoft Productions
-Distributed under the LGPL
-*/
-
#ifndef MSP_DATAFILE_WRITER_H_
#define MSP_DATAFILE_WRITER_H_
#include <map>
-#include <ostream>
-#include "binarydict.h"
+#include <msp/io/base.h>
+#include "output.h"
namespace Msp {
namespace DataFile {
class Statement;
class WriterMode;
+/**
+Frontend for writing data.
+*/
class Writer
{
private:
- std::ostream &out;
+ Output out;
WriterMode *mode;
bool binary;
public:
- Writer(std::ostream &);
- void write(const Statement &);
- void set_binary(bool);
+ Writer(IO::Base &o);
+ ~Writer();
+
+ /**
+ Writes a statement to the output. This function always writes a complete
+ statement, so it's not possible to add substatements later.
+ */
+ void write(const Statement &st);
+
+ /**
+ Sets binary or text mode. While it is possible to enter and exit binary
+ mode multiple times, doing so produces sub-optimal output.
+
+ @param b true for binary mode, false for text
+ */
+ void set_binary(bool b);
+
+ /** Enables output compression. Once enabled, it won't be possible to
+ disable compression. */
+ void set_compressed();
+
+ /** Sets the precision of floating point numbers in bits. Depending on the
+ mode not all values may be valid, but any value between 16 and 64 that is
+ divisible by 8 is guaranteed to work. */
+ void set_float_precision(unsigned);
};
} // namespace DataFile