#ifndef _SYSTEM_IO_BINARYWRITER_ #define _SYSTEM_IO_BINARYWRITER_ #include #include "Stream.h" namespace System { namespace IO { // Writes primitive types in binary to a stream and supports writing strings in a specific encoding. class BinaryWriter : public IDisposable { private: byte* _buffer; byte* _largeByteBuffer; int _maxChars; char* _tmpOneCharBuffer; static const int LargeByteBufferSize; protected: Stream* OutStream; BinaryWriter(); virtual void Dispose(bool disposing); void Write7BitEncodedInt(int value); public: static const BinaryWriter Null; virtual Stream* BaseStream(); BinaryWriter(Stream* output); virtual void Close(); void Dispose(); virtual void Flush(); virtual long long Seek(const int offset, const SeekOrigin_t origin); virtual void Write(const bool value); virtual void Write(const byte value); virtual void Write(byte* value); virtual void Write(const sbyte value); virtual void Write(const char ch); virtual void Write(const double value); virtual void Write(const short value); virtual void Write(const int value); virtual void Write(const long long value); virtual void Write(const float value); virtual void Write(const String value); virtual void Write(const ushort value); virtual void Write(const uint value); virtual void Write(const ulong value); virtual void Write(byte* buffer, const int index, const int count); virtual void Write(char chars[], const int index, const int count); }; } } #endif //_SYSTEM_IO_BINARYWRITER_