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
00069
00080
00081 DKC_EXTERN DKC_STREAM * WINAPI dkcAllocStream(UINT flag,const void *default_data,size_t size,const char *filename,const char *mode);
00082
00083 DKC_EXTERN DKC_STREAM *WINAPI dkcAllocStreamMemoryType(UINT flag,const void *default_data,size_t size);
00084
00085 DKC_EXTERN DKC_STREAM *WINAPI dkcAllocStreamFileType(UINT flag,const char *filename,const char *mode);
00091
00092 DKC_EXTERN DKC_STREAM *WINAPI dkcAllocStreamEncouragementFileType(const char *filename,const char *mode,BOOL OrderFlag);
00093
00099
00100 DKC_EXTERN int WINAPI dkcFreeStream(DKC_STREAM **ptr);
00101
00102
00104 DKC_EXTERN int WINAPI dkcStreamSeek(DKC_STREAM *ptr,int offset,int origin);
00105
00107 DKC_EXTERN long WINAPI dkcStreamTell(DKC_STREAM *ptr);
00108
00110 DKC_EXTERN int WINAPI dkcStreamClear(DKC_STREAM *ptr);
00111
00112
00115 DKC_EXTERN int WINAPI dkcStreamFlush(DKC_STREAM *ptr);
00116
00118 DKC_EXTERN BOOL WINAPI dkcStreamEOF(DKC_STREAM *ptr);
00120 DKC_EXTERN BOOL WINAPI dkcStreamError(DKC_STREAM *ptr);
00121
00122
00138
00139 DKC_EXTERN int WINAPI dkcStreamRead(DKC_STREAM *ptr,void *buffer,size_t size,size_t *readsize);
00140
00141
00147 DKC_EXTERN int WINAPI dkcStreamRead8(DKC_STREAM *ptr,void *buffer,size_t size,size_t *readsize);
00148
00149
00157 DKC_EXTERN int WINAPI dkcStreamRead16(DKC_STREAM *ptr,void *buffer,size_t size,size_t *readsize);
00163 DKC_EXTERN int WINAPI dkcStreamRead32(DKC_STREAM *ptr,void *buffer,size_t size,size_t *readsize);
00168 DKC_EXTERN int WINAPI dkcStreamRead64(DKC_STREAM *ptr,void *buffer,size_t size,size_t *readsize);
00169
00170
00171
00172
00174 DKC_EXTERN int WINAPI dkcStreamRef(DKC_STREAM *ptr,void *buffer,size_t size,size_t *readsize);
00175
00179 DKC_EXTERN int WINAPI dkcStreamRef8(DKC_STREAM *ptr,void *buffer,size_t size,size_t *readsize);
00180
00181 DKC_EXTERN int WINAPI dkcStreamRef16(DKC_STREAM *ptr,void *buffer,size_t size,size_t *readsize);
00187 DKC_EXTERN int WINAPI dkcStreamRef32(DKC_STREAM *ptr,void *buffer,size_t size,size_t *readsize);
00192 DKC_EXTERN int WINAPI dkcStreamRef64(DKC_STREAM *ptr,void *buffer,size_t size,size_t *readsize);
00193
00194
00195
00196
00197
00204
00205
00206 DKC_EXTERN int WINAPI dkcStreamWrite(DKC_STREAM *ptr,const void *buffer,size_t size);
00207
00208 DKC_EXTERN int WINAPI dkcStreamWrite8(DKC_STREAM *ptr,void *buffer,size_t size,size_t *readsize);
00209
00210 DKC_EXTERN int WINAPI dkcStreamWrite16(DKC_STREAM *ptr,const void *buffer,size_t size);
00211
00212 DKC_EXTERN int WINAPI dkcStreamWrite32(DKC_STREAM *ptr,const void *buffer,size_t size);
00213
00214 DKC_EXTERN int WINAPI dkcStreamWrite64(DKC_STREAM *ptr,const void *buffer,size_t size);
00215
00216
00217
00218
00225 typedef int (WINAPI *DKC_STREAM_PROCESS_TYPE)(DKC_STREAM *p,void *buffer,size_t size,void *data);
00226
00227
00228 DKC_EXTERN int WINAPI dkcStreamProcess(DKC_STREAM *ptr,void *buffer,size_t size,
00229 DKC_STREAM_PROCESS_TYPE write_t,void *data);
00230
00231 DKC_EXTERN int WINAPI dkcStreamProcess16(DKC_STREAM *ptr,void *buffer,size_t size,
00232 DKC_STREAM_PROCESS_TYPE write_t,void *data);
00233
00234 DKC_EXTERN int WINAPI dkcStreamProcess32(DKC_STREAM *ptr,void *buffer,size_t size,
00235 DKC_STREAM_PROCESS_TYPE write_t,void *data);
00236
00237 DKC_EXTERN int WINAPI dkcStreamProcess64(DKC_STREAM *ptr,void *buffer,size_t size,
00238 DKC_STREAM_PROCESS_TYPE write_t,void *data);
00239
00240
00241
00242
00243
00244
00245 #endif