00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #ifndef _SWORD_STREAMS_OSTREAMBUFFERED_
00020 #define _SWORD_STREAMS_OSTREAMBUFFERED_
00021
00022 namespace sword {
00023
00024 template<class STORAGE, int T = 3 * 1024>
00025 class OStreamBuffered
00026 {
00027 char buffer_[T];
00028 word buffered_;
00029
00030 STORAGE &storage_;
00031 public:
00032 OStreamBuffered(STORAGE &storage) : storage_(storage), buffered_(0) {}
00033 ~OStreamBuffered() {}
00034
00035 void write_int8 (const int8 value);
00036 void write_int16 (const int16 value);
00037 void write_int32 (const int32 value);
00038 void write_int64 (const int64 value);
00039
00040 void write_word8 (const word8 value);
00041 void write_word16 (const word16 value);
00042 void write_word32 (const word32 value);
00043 void write_word64 (const word64 value);
00044
00045 void write_float32(const float32 value);
00046 void write_float64(const float64 value);
00047
00048 void write_char (const char value);
00049 void write_bool (const bool value);
00050 void write_string (const std::string& value);
00051 void write_pointer(const void* value);
00052
00053 void flush();
00054 void write(const void *buffer, word length);
00055 private :
00056 };
00057
00058 }
00059
00060 #include "sword.private/streams.OStreamBuffered.inl"
00061
00062 #endif // _SWORD_STREAMS_OSTREAMBUFFERED_