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