00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #ifndef _SWORD_STREAMS_OSTORAGE_
00020 #define _SWORD_STREAMS_OSTORAGE_
00021
00022 namespace sword {
00023
00025
00038 class SWORDDECL OStorage {
00039 public:
00040 OStorage();
00041 ~OStorage();
00042
00043 void write(const void* buffer, word length);
00044 void flush();
00045
00046 class WriteException : public Exception {};
00047 class FlushException : public Exception {};
00048 };
00049
00050 template<class OSTORAGE>
00051 class OStorageTraits {
00052 public:
00053 static inline void write1(OSTORAGE& storage, const void* buffer) { storage.write(buffer, 1); }
00054 static inline void write2(OSTORAGE& storage, const void* buffer) { storage.write(buffer, 2); }
00055 static inline void write4(OSTORAGE& storage, const void* buffer) { storage.write(buffer, 4); }
00056 static inline void write8(OSTORAGE& storage, const void* buffer) { storage.write(buffer, 8); }
00057 };
00058
00059 }
00060
00061 #include "sword.private/streams.OStorage.inl"
00062
00063 #endif // _SWORD_STREAMS_OSTORAGE_