00001
00002 #ifndef dkutil_c_CircularStream__h
00003 #define dkutil_c_CircularStream__h
00004
00005
00006 #include "dkcStream.h"
00007
00008
00009 enum edkcCircularStream{
00010 edkcCircularStreamInitMemory = edkcStreamInitMemory,
00011 edkcCircularStreamInitFile = edkcStreamInitFile,
00013 edkcCircularStreamDumpAll,
00015 edkcCircularStreamDumpEnable,
00016
00017 };
00018
00020 typedef struct dkc_CircularStream{
00022 DKC_STREAM *mStream;
00024 size_t mStart,mEnd;
00026 size_t mEnableLength ;
00028 size_t mSize ;
00030 short mMode;
00031 } DKC_CIRCULARSTREAM;
00032
00033 DKC_EXTERN DKC_CIRCULARSTREAM * WINAPI dkcAllocNewCircularStream(size_t size,short mode,const char *filename,const char *openmode);
00034
00035 DKC_EXTERN int WINAPI dkcFreeDeleteCircularStream(DKC_CIRCULARSTREAM **ptr);
00036
00037 DKC_EXTERN int WINAPI dkcNewCircularStream(DKC_CIRCULARSTREAM *ptr,size_t size);
00038
00039 DKC_EXTERN int WINAPI dkcNewCircularStreamForFile(DKC_CIRCULARSTREAM *ptr,size_t size,const char *filename,const char *openmode);
00040
00042 DKC_EXTERN int WINAPI dkcDeleteCircularStream(DKC_CIRCULARSTREAM *ptr);
00043
00044
00054
00055 DKC_EXTERN int WINAPI dkcCircularStreamRead(DKC_CIRCULARSTREAM *ptr,void *buffer,size_t size,size_t *readsize);
00056
00058 DKC_EXTERN int WINAPI dkcCircularStreamReference(DKC_CIRCULARSTREAM *ptr,void *buffer,size_t size,size_t *readsize);
00059
00068
00069 DKC_EXTERN int WINAPI dkcCircularStreamWrite(DKC_CIRCULARSTREAM *ptr,const void *buffer,size_t size);
00070
00071
00076
00077 DKC_EXTERN int WINAPI dkcCircularStreamDump(DKC_CIRCULARSTREAM *ptr,const char *filename,int flag);
00079 DKC_EXTERN int WINAPI dkcCircularStreamZero(DKC_CIRCULARSTREAM *ptr);
00081 DKC_EXTERN int WINAPI dkcCircularStreamToBuffer(const DKC_STREAM *ptr,char *buff,size_t size,size_t want_size);
00082
00083
00084
00085
00086
00087 #endif