00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #ifndef _SWORD_STREAMS_OSTORAGEMEMORY_
00020 #define _SWORD_STREAMS_OSTORAGEMEMORY_
00021
00022 #include "sword/streams.OStorage.h"
00023
00024 namespace sword {
00025
00027
00031 class SWORDDECL OStorageMemory : public OStorage {
00032 void *buffer_;
00033 word length_;
00034 word pos_;
00035
00036 public:
00037 OStorageMemory(void *buffer, word length);
00038 ~OStorageMemory();
00039
00040
00041 void write(const void* buffer, word length);
00042 void flush();
00043
00044
00045 void write1(const void* buffer);
00046 void write2(const void* buffer);
00047 void write4(const void* buffer);
00048 void write8(const void* buffer);
00049
00050
00051 word written() const;
00052 void reset();
00053 };
00054
00055 template<>
00056 class OStorageTraits<OStorageMemory> {
00057 public:
00058 static inline void write1(OStorageMemory& storage, const void* buffer) { storage.write1(buffer); }
00059 static inline void write2(OStorageMemory& storage, const void* buffer) { storage.write2(buffer); }
00060 static inline void write4(OStorageMemory& storage, const void* buffer) { storage.write4(buffer); }
00061 static inline void write8(OStorageMemory& storage, const void* buffer) { storage.write8(buffer); }
00062 };
00063
00064 }
00065
00066 #include "sword.private/streams.OStorageMemory.inl"
00067
00068 #endif // _SWORD_STREAMS_OSTORAGEMEMORY_