00001 #ifndef DKUTIL_C_CIRCULAR_STREAM_H 00002 #define DKUTIL_C_CIRCULAR_STREAM_H 00003 00004 00005 #include "dkcStream.h" 00006 00007 00008 enum edkcCircularStream{ 00009 edkcCircularStreamInitMemory = edkcStreamInitMemory, 00010 edkcCircularStreamInitFile = edkcStreamInitFile, 00012 edkcCircularStreamDumpAll, 00014 edkcCircularStreamDumpEnable, 00015 00016 }; 00017 00019 typedef struct dkc_CircularStream{ 00021 DKC_STREAM *mStream; 00023 size_t mStart,mEnd; 00025 size_t mEnableLength ; 00027 size_t mSize ; 00029 short mMode; 00030 } DKC_CIRCULARSTREAM; 00031 00032 DKC_EXTERN DKC_CIRCULARSTREAM * WINAPI dkcAllocNewCircularStream(size_t size,short mode,const char *filename,const char *openmode); 00033 00034 DKC_EXTERN int WINAPI dkcFreeDeleteCircularStream(DKC_CIRCULARSTREAM **ptr); 00035 00036 DKC_EXTERN int WINAPI dkcNewCircularStream(DKC_CIRCULARSTREAM *ptr,size_t size); 00037 00038 DKC_EXTERN int WINAPI dkcNewCircularStreamForFile(DKC_CIRCULARSTREAM *ptr,size_t size,const char *filename,const char *openmode); 00039 00041 DKC_EXTERN int WINAPI dkcDeleteCircularStream(DKC_CIRCULARSTREAM *ptr); 00042 00043 00053 00054 DKC_EXTERN int WINAPI dkcCircularStreamRead(DKC_CIRCULARSTREAM *ptr,void *buffer,size_t size,size_t *readsize); 00055 00057 DKC_EXTERN int WINAPI dkcCircularStreamReference(DKC_CIRCULARSTREAM *ptr,void *buffer,size_t size,size_t *readsize); 00058 00067 00068 DKC_EXTERN int WINAPI dkcCircularStreamWrite(DKC_CIRCULARSTREAM *ptr,const void *buffer,size_t size); 00069 00070 00075 00076 DKC_EXTERN int WINAPI dkcCircularStreamDump(DKC_CIRCULARSTREAM *ptr,const char *filename,int flag); 00078 DKC_EXTERN int WINAPI dkcCircularStreamZero(DKC_CIRCULARSTREAM *ptr); 00080 DKC_EXTERN int WINAPI dkcCircularStreamToBuffer(const DKC_STREAM *ptr,char *buff,size_t size,size_t want_size); 00081 00082 #ifndef DKUTIL_C_CIRCULAR_MEMORYSTREAM_C 00083 # include "dkcCircularStream.h" 00084 #endif 00085 00086 00087 00088 #endif