00001
00013 #ifndef dkutil_c_MemoryStream__h
00014 #define dkutil_c_MemoryStream__h
00015
00016 #include <stdio.h>
00017 #include "dkcOSIndependent.h"
00018
00019 #include "dkcDefined.h"
00020 #include "dkcBuffer.h"
00021 #include "dkcSerialize.h"
00026 typedef struct dkc_MemoryStream{
00028 BYTE *mBuffer;
00030 size_t mSize;
00032 size_t mNowOffset;
00033
00034 }DKC_MEMORYSTREAM;
00035
00036
00037
00038
00039
00040 enum edkcMemoryStream{
00042 edkcMemoryStreamSeekCurrent = SEEK_CUR,
00044 edkcMemoryStreamSeekEnd = SEEK_END,
00046 edkcMemoryStreamSeekSet = SEEK_SET,
00047 };
00048
00049
00050
00060
00061 DKC_EXTERN DKC_MEMORYSTREAM * WINAPI dkcAllocMemoryStream(size_t size);
00062
00063
00067
00068 DKC_EXTERN int WINAPI dkcFreeMemoryStream(DKC_MEMORYSTREAM **ptr);
00069
00070
00072 DKC_EXTERN int WINAPI dkcMemoryStreamSeek(DKC_MEMORYSTREAM *ptr,int offset,int origin);
00073
00075 DKC_EXTERN size_t WINAPI dkcMemoryStreamGetSeekPoint(DKC_MEMORYSTREAM *ptr);
00076
00077 #define dkcMemoryStreamTell(tt) dkcMemoryStreamGetSeekPoint(tt)
00078
00085
00086 DKC_EXTERN int WINAPI dkcMemoryStreamRead(DKC_MEMORYSTREAM *ptr,void *buffer,size_t size,size_t *readsize);
00093
00094 DKC_EXTERN int WINAPI dkcMemoryStreamWrite(DKC_MEMORYSTREAM *ptr,const void *buffer,size_t size);
00095
00097 DKC_EXTERN int WINAPI dkcMemoryStreamDynamicWrite(DKC_MEMORYSTREAM *ptr,const void *buffer,size_t size);
00098
00100 DKC_EXTERN int WINAPI dkcMemoryStreamResize(DKC_MEMORYSTREAM *ptr,size_t want_size);
00101
00102
00104 DKC_EXTERN DKC_MEMORYSTREAM * WINAPI dkcAllocMemoryStreamDeserialize(DKC_DESERIALIZE *se);
00105
00106
00108 DKC_EXTERN void dkcMemoryStreamSerialize(const DKC_MEMORYSTREAM *ptr,DKC_SERIALIZE *se);
00109
00110
00112 DKC_EXTERN int WINAPI dkcMemoryStreamClear(DKC_MEMORYSTREAM *ptr);
00113
00114
00121 DKC_EXTERN DKC_MEMORYSTREAM * WINAPI dkcAllocMemoryStreamCopy(const DKC_MEMORYSTREAM *ptr);
00122
00123 #endif