00001
00013 #ifndef dkutil_c_Stream__h
00014 #define dkutil_c_Stream__h
00015
00016
00017 #include "dkcOSIndependent.h"
00018 #include "dkcMemoryStream.h"
00019
00020
00022 typedef struct dkc_Stream{
00023 UINT mMode;
00025 BYTE mChangeEndian;
00027 BYTE mProcessMode;
00028
00029
00030
00031
00032 void *mSig;
00033 }DKC_STREAM;
00034
00035
00036
00037
00038 enum edkcStream{
00040 edkcStreamSeekCurrent = SEEK_CUR,
00042 edkcStreamSeekEnd = SEEK_END,
00044 edkcStreamSeekSet = SEEK_SET,
00046 edkcStreamInitMemory = 1,
00048 edkcStreamInitFile = 2,
00050 edkcStreamDefaultEndian = 4,
00052 edkcStreamBigEndian = 8,
00054 edkcStreamLittleEndian = 16,
00056 edkcStreamProcessDefault = 32,
00058 edkcStreamProcessAsOrdered = 64,
00062 edkcStreamWriteErrorWhenEndianChange = 128,
00063
00064
00065 };
00066
00067
00068
00079
00080 DKC_EXTERN DKC_STREAM * WINAPI dkcAllocStream(UINT flag,const void *default_data,size_t size,const char *filename,const char *mode);
00081
00082 DKC_EXTERN DKC_STREAM *WINAPI dkcAllocStreamMemoryType(UINT flag,const void *default_data,size_t size);
00083
00084 DKC_EXTERN DKC_STREAM *WINAPI dkcAllocStreamFileType(UINT flag,const char *filename,const char *mode);
00085
00091
00092 DKC_EXTERN int WINAPI dkcFreeStream(DKC_STREAM **ptr);
00093
00094
00096 DKC_EXTERN int WINAPI dkcStreamSeek(DKC_STREAM *ptr,int offset,int origin);
00097
00099 DKC_EXTERN long WINAPI dkcStreamTell(DKC_STREAM *ptr);
00112
00113 DKC_EXTERN int WINAPI dkcStreamRead(DKC_STREAM *ptr,void *buffer,size_t size,size_t *readsize);
00114
00115
00116 DKC_EXTERN int WINAPI dkcStreamSwapRead16(DKC_STREAM *ptr,void *buffer,size_t size,UINT flag,size_t *readsize);
00117
00118 DKC_EXTERN int WINAPI dkcStreamSwapRead32(DKC_STREAM *ptr,void *buffer,size_t size,UINT flag,size_t *readsize);
00119
00120 DKC_EXTERN int WINAPI dkcStreamSwapRead64(DKC_STREAM *ptr,void *buffer,size_t size,UINT flag,size_t *readsize);
00121
00122
00129
00130
00131 DKC_EXTERN int WINAPI dkcStreamWrite(DKC_STREAM *ptr,const void *buffer,size_t size);
00132
00133 DKC_EXTERN int WINAPI dkcStreamWrite16(DKC_STREAM *ptr,const void *buffer,size_t size);
00134
00135 DKC_EXTERN int WINAPI dkcStreamWrite32(DKC_STREAM *ptr,const void *buffer,size_t size);
00136
00137 DKC_EXTERN int WINAPI dkcStreamWrite64(DKC_STREAM *ptr,const void *buffer,size_t size);
00138
00145 typedef int (WINAPI *DKC_STREAM_PROCESS_TYPE)(DKC_STREAM *p,void *buffer,size_t size,void *data);
00146
00147
00148 DKC_EXTERN int WINAPI dkcStreamProcess(DKC_STREAM *ptr,void *buffer,size_t size,
00149 DKC_STREAM_PROCESS_TYPE write_t,void *data);
00150
00151 DKC_EXTERN int WINAPI dkcStreamProcess16(DKC_STREAM *ptr,void *buffer,size_t size,
00152 DKC_STREAM_PROCESS_TYPE write_t,void *data);
00153
00154 DKC_EXTERN int WINAPI dkcStreamProcess32(DKC_STREAM *ptr,void *buffer,size_t size,
00155 DKC_STREAM_PROCESS_TYPE write_t,void *data);
00156
00157 DKC_EXTERN int WINAPI dkcStreamProcess64(DKC_STREAM *ptr,void *buffer,size_t size,
00158 DKC_STREAM_PROCESS_TYPE write_t,void *data);
00159
00160
00162 DKC_EXTERN int WINAPI dkcStreamClear(DKC_STREAM *ptr);
00163
00164
00165 #endif