#include "dkcOSIndependent.h"
#include "dkcMemoryStream.h"
dkcStream.hのインクルード依存関係図
このグラフは、どのファイルから直接、間接的にインクルードされているかを示しています。
構成 | |
struct | dkc_Stream |
汎用型ストリーム [詳細] | |
型定義 | |
typedef dkc_Stream | DKC_STREAM |
汎用型ストリーム | |
typedef int(WINAPI * | DKC_STREAM_PROCESS_TYPE )(DKC_STREAM *p, void *buffer, size_t size, void *data) |
列挙型 | |
enum | edkcStream { edkcStreamSeekCurrent = SEEK_CUR, edkcStreamSeekEnd = SEEK_END, edkcStreamSeekSet = SEEK_SET, edkcStreamInitMemory = 1, edkcStreamInitFile = 2, edkcStreamDefaultEndian = 4, edkcStreamBigEndian = 8, edkcStreamLittleEndian = 16, edkcStreamProcessDefault = 32, edkcStreamProcessAsOrdered = 64, edkcStreamWriteErrorWhenEndianChange = 128 } |
関数 | |
DKC_EXTERN DKC_STREAM *WINAPI | dkcAllocStream (UINT flag, const void *default_data, size_t size, const char *filename, const char *mode) |
ストリーム領域を得る。 | |
DKC_EXTERN DKC_STREAM *WINAPI | dkcAllocStreamMemoryType (UINT flag, const void *default_data, size_t size) |
DKC_EXTERN DKC_STREAM *WINAPI | dkcAllocStreamFileType (UINT flag, const char *filename, const char *mode) |
DKC_EXTERN DKC_STREAM *WINAPI | dkcAllocStreamEncouragementFileType (const char *filename, const char *mode, BOOL OrderFlag) |
ファイル用ストリームの領域を得る時の奨励版の関数 | |
DKC_EXTERN int WINAPI | dkcFreeStream (DKC_STREAM **ptr) |
dkcAllocNewStream()で確保したストリーム領域を開放する | |
DKC_EXTERN int WINAPI | dkcStreamSeek (DKC_STREAM *ptr, int offset, int origin) |
streamをシークする。fseekみたいなもの edk_SUCCEEDEDで成功 それ以外はエラー | |
DKC_EXTERN long WINAPI | dkcStreamTell (DKC_STREAM *ptr) |
streamの位置を取得する。 edkcStreamSeekSetからのオフセット値。edk_FAILEDだとエラー | |
DKC_EXTERN int WINAPI | dkcStreamClear (DKC_STREAM *ptr) |
stream内をmemset(0)する。(seek位置も最初に戻される。 | |
DKC_EXTERN int WINAPI | dkcStreamFlush (DKC_STREAM *ptr) |
ストリーム内をフラッシュ(完全に書きこむ処理)する。 | |
DKC_EXTERN BOOL WINAPI | dkcStreamEOF (DKC_STREAM *ptr) |
EOFだとTRUE. | |
DKC_EXTERN BOOL WINAPI | dkcStreamError (DKC_STREAM *ptr) |
エラーだとTRUE | |
DKC_EXTERN int WINAPI | dkcStreamRead (DKC_STREAM *ptr, void *buffer, size_t size, size_t *readsize) |
streamをリードする。freadみたいなもの | |
DKC_EXTERN int WINAPI | dkcStreamRead8 (DKC_STREAM *ptr, void *buffer, size_t size, size_t *readsize) |
sizeは1byte単位・・・ ぶっちゃけdkcStreamRead()と同じ動作。 エンディアン問題に積極的に取り組む為に edkcStreamWriteErrorWhenEndianChangeが指定されている場合は明示的にこちらを使用する。 | |
DKC_EXTERN int WINAPI | dkcStreamRead16 (DKC_STREAM *ptr, void *buffer, size_t size, size_t *readsize) |
DKC_EXTERN int WINAPI | dkcStreamRead32 (DKC_STREAM *ptr, void *buffer, size_t size, size_t *readsize) |
DKC_EXTERN int WINAPI | dkcStreamRead64 (DKC_STREAM *ptr, void *buffer, size_t size, size_t *readsize) |
DKC_EXTERN int WINAPI | dkcStreamRef (DKC_STREAM *ptr, void *buffer, size_t size, size_t *readsize) |
streamの中身を見る。 | |
DKC_EXTERN int WINAPI | dkcStreamRef8 (DKC_STREAM *ptr, void *buffer, size_t size, size_t *readsize) |
DKC_EXTERN int WINAPI | dkcStreamRef16 (DKC_STREAM *ptr, void *buffer, size_t size, size_t *readsize) |
DKC_EXTERN int WINAPI | dkcStreamRef32 (DKC_STREAM *ptr, void *buffer, size_t size, size_t *readsize) |
DKC_EXTERN int WINAPI | dkcStreamRef64 (DKC_STREAM *ptr, void *buffer, size_t size, size_t *readsize) |
DKC_EXTERN int WINAPI | dkcStreamWrite (DKC_STREAM *ptr, const void *buffer, size_t size) |
streamをライトする。fwriteみたいなもの | |
DKC_EXTERN int WINAPI | dkcStreamWrite8 (DKC_STREAM *ptr, void *buffer, size_t size, size_t *readsize) |
DKC_EXTERN int WINAPI | dkcStreamWrite16 (DKC_STREAM *ptr, const void *buffer, size_t size) |
DKC_EXTERN int WINAPI | dkcStreamWrite32 (DKC_STREAM *ptr, const void *buffer, size_t size) |
DKC_EXTERN int WINAPI | dkcStreamWrite64 (DKC_STREAM *ptr, const void *buffer, size_t size) |
DKC_EXTERN int WINAPI | dkcStreamProcess (DKC_STREAM *ptr, void *buffer, size_t size, DKC_STREAM_PROCESS_TYPE write_t, void *data) |
DKC_EXTERN int WINAPI | dkcStreamProcess16 (DKC_STREAM *ptr, void *buffer, size_t size, DKC_STREAM_PROCESS_TYPE write_t, void *data) |
DKC_EXTERN int WINAPI | dkcStreamProcess32 (DKC_STREAM *ptr, void *buffer, size_t size, DKC_STREAM_PROCESS_TYPE write_t, void *data) |
DKC_EXTERN int WINAPI | dkcStreamProcess64 (DKC_STREAM *ptr, void *buffer, size_t size, DKC_STREAM_PROCESS_TYPE write_t, void *data) |
dkcStream.h で定義されています。
|
|
dkcStream.h の 225 行で定義されています。 参照元 dkcStreamProcess(), dkcStreamProcess16(), dkcStreamProcess32(), と dkcStreamProcess64(). |
|
dkcStream.h の 38 行で定義されています。
00038 { 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 }; |
|
ストリーム領域を得る。
dkcStream.c の 108 行で定義されています。 参照先 DKC_STREAM, dkcAllocate(), dkcAllocMemoryStream(), dkcFOpen(), dkcFree(), dkcStreamWrite(), DKUTIL_FAILED, edkcStreamInitFile, edkcStreamInitMemory, dkc_Stream::mMode, dkc_Stream::mSig, NULL, と SetStreamInfo(). 参照元 dkcAllocReplace(), dkcAllocStreamEncouragementFileType(), dkcAllocStreamFileType(), dkcAllocStreamMemoryType(), と dkcNewCircularStream().
00111 { 00112 00113 DKC_STREAM *p; 00114 void *psig; 00115 00116 00117 p = (DKC_STREAM *)dkcAllocate(sizeof(DKC_STREAM)); 00118 if(NULL==p){ 00119 return NULL; 00120 } 00121 00122 if(DKUTIL_FAILED(SetStreamInfo(p,flag))){ 00123 goto Error; 00124 } 00125 00126 switch(p->mMode){ 00127 case edkcStreamInitMemory: 00128 psig = (void *)dkcAllocMemoryStream(size); 00129 if(NULL==psig){ 00130 goto Error; 00131 } 00132 //update 00133 p->mSig = psig; 00134 //write default data 00135 dkcStreamWrite(p,default_data,size); 00136 break; 00137 case edkcStreamInitFile: 00138 psig = (void *)dkcFOpen(filename,mode); 00139 if(NULL==psig){ 00140 goto Error; 00141 } 00142 //update 00143 p->mSig = psig; 00144 00145 break; 00146 default: 00147 goto Error; 00148 } 00149 00150 00151 //p->mEndianMode = endianmode 00152 00153 return p; 00154 Error: 00155 dkcFree((void **)&p); 00156 return NULL; 00157 } |
|
ファイル用ストリームの領域を得る時の奨励版の関数
dkcStream.c の 93 行で定義されています。 参照先 BOOL, DKC_STREAM, dkcAllocStream(), DKUTIL_FLAG_DOWN, DKUTIL_FLAG_UP, edkcStreamBigEndian, edkcStreamInitFile, edkcStreamLittleEndian, edkcStreamProcessAsOrdered, edkcStreamProcessDefault, と NULL.
00094 { 00095 UINT flag = 0; 00096 DKUTIL_FLAG_UP(flag,edkcStreamInitFile); 00097 DKUTIL_FLAG_UP(flag,edkcStreamLittleEndian); 00098 DKUTIL_FLAG_DOWN(flag,edkcStreamBigEndian); 00099 if(OrderFlag){ 00100 DKUTIL_FLAG_UP(flag,edkcStreamProcessAsOrdered ); 00101 }else{ 00102 DKUTIL_FLAG_UP(flag,edkcStreamProcessDefault); 00103 } 00104 return dkcAllocStream(flag,NULL,0,filename,mode); 00105 } |
|
dkcStream.c の 87 行で定義されています。 参照先 DKC_STREAM, dkcAllocStream(), DKUTIL_FLAG_DOWN, DKUTIL_FLAG_UP, edkcStreamInitFile, edkcStreamInitMemory, と NULL. 参照元 dkcOpenFileWithSignature().
00087 { 00088 DKUTIL_FLAG_DOWN(flag,edkcStreamInitMemory); 00089 DKUTIL_FLAG_UP(flag,edkcStreamInitFile); 00090 return dkcAllocStream(flag,NULL,0,filename,mode); 00091 } |
|
dkcStream.c の 80 行で定義されています。 参照先 DKC_STREAM, dkcAllocStream(), DKUTIL_FLAG_DOWN, DKUTIL_FLAG_UP, edkcStreamInitFile, edkcStreamInitMemory, と NULL.
00080 { 00081 DKUTIL_FLAG_DOWN(flag,edkcStreamInitFile); 00082 DKUTIL_FLAG_UP(flag,edkcStreamInitMemory); 00083 return dkcAllocStream(flag,default_data,size,NULL,NULL); 00084 00085 } |
|
dkcAllocNewStream()で確保したストリーム領域を開放する
dkcStream.c の 160 行で定義されています。 参照先 DKC_MEMORYSTREAM, DKC_STREAM, dkcFClose(), dkcFree(), dkcFreeMemoryStream(), dkcmNOT_ASSERT, edk_FAILED, edkcStreamInitFile, edkcStreamInitMemory, dkc_Stream::mMode, dkc_Stream::mSig, と NULL. 参照元 dkcAllocReplace(), dkcCloseFileWithSignature(), dkcFreeReplace(), と dkcOpenFileWithSignature().
00160 { 00161 DKC_STREAM *t; 00162 if(NULL==p){ 00163 return edk_FAILED; 00164 } 00165 t = *p; 00166 if(NULL==t){ 00167 return edk_FAILED; 00168 } 00169 00170 switch(t->mMode){ 00171 case edkcStreamInitMemory: 00172 dkcFreeMemoryStream((DKC_MEMORYSTREAM **)&(t->mSig)); 00173 break; 00174 case edkcStreamInitFile: 00175 dkcFClose((FILE **)&(t->mSig)); 00176 break; 00177 #ifdef DEBUG 00178 default: 00179 dkcmNOT_ASSERT("dkcFreeStream FAILED"); 00180 #endif 00181 } 00182 return dkcFree((void **)p); 00183 } |
|
stream内をmemset(0)する。(seek位置も最初に戻される。
dkcStream.c の 738 行で定義されています。 参照先 DKC_MEMORYSTREAM, DKC_STREAM, dkcMemoryStreamClear(), dkcStreamWrite(), DKUTIL_FAILED, edk_FAILED, edk_SUCCEEDED, edkcStreamInitFile, edkcStreamInitMemory, dkc_Stream::mMode, と dkc_Stream::mSig.
00738 { 00739 //file size 00740 size_t fsize; 00741 //temp size 00742 size_t tsize; 00743 size_t write_size; 00744 FILE *fp; 00745 int r = edk_FAILED; 00746 char null_array[1024]; 00747 00748 00749 switch(ptr->mMode){ 00750 case edkcStreamInitMemory: 00751 r = dkcMemoryStreamClear( (DKC_MEMORYSTREAM *)ptr->mSig ); 00752 break; 00753 case edkcStreamInitFile: 00754 00755 memset(null_array,0,sizeof(null_array)); 00756 fp =(FILE *) ptr->mSig; 00757 00758 00759 fseek( fp, 0, SEEK_END ) ; 00760 fsize = ftell( fp ) ; 00761 fseek( fp, 0, SEEK_SET ) ; 00762 00763 if(fsize > sizeof(null_array)) 00764 {//ファイルのサイズがNULL配列より大きい場合 00765 00766 tsize = 0; 00767 write_size = sizeof(null_array); 00768 for(;;){ 00769 00770 r = dkcStreamWrite(ptr,null_array,write_size); 00771 00772 if(DKUTIL_FAILED(r)){ 00773 return r; 00774 } 00775 if(tsize >= fsize){ 00776 r = edk_SUCCEEDED; 00777 break; 00778 } 00779 00780 if(tsize + write_size > fsize){ 00781 write_size = fsize - tsize; 00782 }else{ 00783 tsize += write_size; 00784 00785 //こいつはいらないけど一応・・・ 00786 write_size = sizeof(null_array); 00787 } 00788 } 00789 }else{//ちっこいなら上書き上書き・・・ 00790 r = dkcStreamWrite(ptr,null_array,fsize); 00791 } 00792 00793 break; 00794 } 00795 return r; 00796 } |
|
EOFだとTRUE.
dkcStream.c の 234 行で定義されています。 参照先 BOOL, DKC_STREAM, edkcStreamInitFile, FALSE, dkc_Stream::mMode, dkc_Stream::mSig, と TRUE.
00234 { 00235 if(edkcStreamInitFile != ptr->mMode){ 00236 goto Exit; 00237 } 00238 if(0 != feof((FILE *)ptr->mSig)){ 00239 return TRUE; 00240 } 00241 Exit: 00242 return FALSE; 00243 } |
|
エラーだとTRUE
dkcStream.c の 245 行で定義されています。 参照先 BOOL, DKC_STREAM, edkcStreamInitFile, FALSE, dkc_Stream::mMode, dkc_Stream::mSig, と TRUE.
00245 { 00246 if(edkcStreamInitFile != ptr->mMode){ 00247 goto Exit; 00248 } 00249 if(0 != ferror((FILE *)ptr->mSig)){ 00250 return TRUE; 00251 } 00252 Exit: 00253 return FALSE; 00254 } |
|
ストリーム内をフラッシュ(完全に書きこむ処理)する。
dkcStream.c の 219 行で定義されています。 参照先 DKC_STREAM, edk_FAILED, edk_SUCCEEDED, edkcStreamInitFile, dkc_Stream::mMode, と dkc_Stream::mSig.
00219 { 00220 int r = edk_SUCCEEDED; 00221 //filter 00222 if(edkcStreamInitFile!=ptr->mMode){ 00223 return edk_FAILED; 00224 } 00225 00226 r = fflush((FILE *)ptr->mSig); 00227 00228 if(r==EOF){ 00229 return edk_FAILED; 00230 } 00231 return edk_SUCCEEDED; 00232 } |
|
dkcStream.c の 610 行で定義されています。 参照先 DKC_STREAM, と DKC_STREAM_PROCESS_TYPE. 参照元 dkcFileWithSignatureWrite(), dkcFileWithSignatureWrite16(), dkcFileWithSignatureWrite32(), dkcFileWithSignatureWrite64(), と FileWithSignatureReadLogic().
00612 {
00613 return write_t(ptr,buffer,size,data);
00614 }
|
|
dkcStream.c の 618 行で定義されています。 参照先 DKC_STREAM, DKC_STREAM_PROCESS_TYPE, dkcReverseEndian16(), edk_ArgumentException, edk_OutOfMemory, dkc_Stream::mChangeEndian, と NULL. 参照元 dkcStreamRead16(), と dkcStreamWrite16().
00619 { 00620 int r; 00621 USHORT *pb; 00622 size_t elem_num,pause = 16; 00623 size_t i; 00624 00625 if(size % pause != 0){ 00626 return edk_ArgumentException; 00627 } 00628 if(ptr->mChangeEndian) 00629 {//エンディアンチェンジが必要 00630 pb = (USHORT *)malloc(size); 00631 if(NULL==pb){ 00632 //return edk_FAILED; 00633 return edk_OutOfMemory; 00634 } 00635 00636 //メモリコピー 00637 memcpy(pb,buffer,size); 00638 elem_num = size / pause; 00639 00640 //エンディアンをチェンジさせる。 00641 for(i=0;i<elem_num;i++){ 00642 pb[i] = dkcReverseEndian16(pb[i]); 00643 } 00644 //書き込む 00645 r = write_t(ptr,pb,size,data); 00646 00647 free(pb); 00648 }else{ 00649 r = write_t(ptr,buffer,size,data); 00650 } 00651 return r; 00652 } |
|
dkcStream.c の 655 行で定義されています。 参照先 DKC_STREAM, DKC_STREAM_PROCESS_TYPE, dkcReverseEndian32(), edk_ArgumentException, edk_OutOfMemory, dkc_Stream::mChangeEndian, と NULL. 参照元 dkcStreamRead32(), と dkcStreamWrite32().
00656 { 00657 int r; 00658 ULONG *pb; 00659 size_t elem_num,pause = 32; 00660 size_t i; 00661 00662 if(size % pause != 0){ 00663 return edk_ArgumentException; 00664 } 00665 if(ptr->mChangeEndian) 00666 {//エンディアンチェンジが必要 00667 pb = (ULONG *)malloc(size); 00668 if(NULL==pb){ 00669 return edk_OutOfMemory; 00670 } 00671 00672 //メモリコピー 00673 memcpy(pb,buffer,size); 00674 elem_num = size / pause; 00675 00676 //エンディアンをチェンジさせる。 00677 for(i=0;i<elem_num;i++){ 00678 pb[i] = dkcReverseEndian32(pb[i]); 00679 } 00680 //書き込む 00681 r = write_t(ptr,pb,size,data); 00682 00683 free(pb); 00684 }else{ 00685 r = write_t(ptr,buffer,size,data); 00686 } 00687 return r; 00688 00689 } |
|
dkcStream.c の 700 行で定義されています。 参照先 DKC_STREAM, DKC_STREAM_PROCESS_TYPE, dkcReverseEndian64(), edk_ArgumentException, edk_OutOfMemory, dkc_Stream::mChangeEndian, NULL, と ULONGLONG. 参照元 dkcStreamRead64(), と dkcStreamWrite64().
00701 { 00702 int r; 00703 ULONGLONG *pb; 00704 size_t elem_num,pause = 64; 00705 size_t i; 00706 00707 if(size % pause != 0){ 00708 return edk_ArgumentException; 00709 } 00710 if(ptr->mChangeEndian) 00711 {//エンディアンチェンジが必要 00712 pb = (ULONGLONG *)malloc(size); 00713 if(NULL==pb){ 00714 return edk_OutOfMemory; 00715 } 00716 00717 //メモリコピー 00718 memcpy(pb,buffer,size); 00719 elem_num = size / pause; 00720 00721 //エンディアンをチェンジさせる。 00722 for(i=0;i<elem_num;i++){ 00723 pb[i] = dkcReverseEndian64(pb[i]); 00724 } 00725 //書き込む 00726 r = write_t(ptr,pb,size,data); 00727 00728 free(pb); 00729 }else{ 00730 r = write_t(ptr,buffer,size,data); 00731 } 00732 return r; 00733 } |
|
streamをリードする。freadみたいなもの
dkcStream.c の 318 行で定義されています。 参照先 DKC_INLINE, DKC_MEMORYSTREAM, DKC_STREAM, dkcMemoryStreamRead(), dkcStreamReadObayAnOrder(), edk_BufferOverFlow, edk_FAILED, edk_SUCCEEDED, edkcStreamInitFile, edkcStreamInitMemory, edkcStreamProcessDefault, dkc_Stream::mMode, dkc_Stream::mProcessMode, dkc_Stream::mSig, と NULL. 参照元 dkcStreamRef(), ReadCallback(), と StreamRead().
00318 { 00319 int r = edk_FAILED; 00320 FILE *fp = (FILE *)ptr->mSig; 00321 size_t redsize = 0; 00322 00323 //readsize filter 00324 if(NULL==readsize){ 00325 readsize = &redsize; 00326 } 00327 00328 //エンディアンチェンジ指定されているよ〜〜。 00329 /*if(flag & edkcStreamReadErrorWhenEndianChange){ 00330 if(ptr->mChangeEndian){ 00331 return edk_Not_Satisfactory; 00332 } 00333 }*/ 00334 00335 switch(ptr->mMode){ 00336 case edkcStreamInitMemory: 00337 r = dkcMemoryStreamRead((DKC_MEMORYSTREAM *)ptr->mSig, 00338 buffer,size,readsize); 00339 break; 00340 case edkcStreamInitFile: 00341 00342 if(ptr->mProcessMode & edkcStreamProcessDefault){ 00343 00344 *readsize = fread(buffer,1,size,fp); 00345 00346 //set result 00347 if(feof(fp)){ 00348 r = edk_BufferOverFlow; 00349 }else if(!ferror(fp)){ 00350 r = edk_SUCCEEDED; 00351 } 00352 00353 }else{ 00354 r = dkcStreamReadObayAnOrder(ptr,buffer,size,readsize); 00355 } 00356 00357 00358 break; 00359 } 00360 return r; 00361 } |
|
dkcStream.c の 367 行で定義されています。 参照先 DKC_STREAM, dkcStreamProcess16(), と StreamRead(). 参照元 dkcStreamRef16().
00368 { 00369 return dkcStreamProcess16(ptr,buffer,size,StreamRead,(void *)readsize); 00370 /* 00371 size_t sentinel = size / 2; 00372 size_t i = 0; 00373 size_t t_rs = 0; 00374 00375 USHORT *pus; 00376 00377 size_t real_readsize = 0; 00378 int result; 00379 00380 //filter 00381 if(size_t % 2 != 0){ 00382 return edk_ArgumentException; 00383 } 00384 00385 pus = (USHORT *)buffer; 00386 00387 for(;i<sentinel;i++){ 00388 //process 00389 result = dkcStreamRead(ptr,&pus[i],2,&t_rs); 00390 00391 00392 //update data 00393 real_readsize += t_rs; 00394 00395 00396 //process state update check 00397 switch(result){ 00398 case edkSUCCEEDED: 00399 continue; 00400 case edk_FAILED: 00401 case edk_BufferOverFlow: 00402 goto End; 00403 default: 00404 dkcmNOT_ASSERT("dkcStreamSwapRead16 Error"); 00405 goto End; 00406 } 00407 }//end of for 00408 End: 00409 if(readsize){//set readsize 00410 *readsize = real_readsize; 00411 } 00412 //process result 00413 return result; 00414 */ 00415 } |
|
dkcStream.c の 417 行で定義されています。 参照先 DKC_STREAM, dkcStreamProcess32(), と StreamRead(). 参照元 dkcStreamRef32().
00417 { 00418 return dkcStreamProcess32(ptr,buffer,size,StreamRead,(void *)readsize); 00419 } |
|
dkcStream.c の 421 行で定義されています。 参照先 DKC_STREAM, dkcStreamProcess64(), と StreamRead(). 参照元 dkcStreamRef64().
00421 { 00422 return dkcStreamProcess64(ptr,buffer,size,StreamRead,(void *)readsize); 00423 } |
|
sizeは1byte単位・・・ ぶっちゃけdkcStreamRead()と同じ動作。 エンディアン問題に積極的に取り組む為に edkcStreamWriteErrorWhenEndianChangeが指定されている場合は明示的にこちらを使用する。
|
|
streamの中身を見る。 tとして保存していた物を指定して 元の位置に戻す dkcStream.c の 426 行で定義されています。 参照先 DKC_STREAM, dkcStreamRead(), dkcStreamSeek(), dkcStreamTell(), と edkcStreamSeekSet.
00427 { 00428 //位置を記憶 00429 long t = dkcStreamTell(ptr); 00430 //読みこむ(内部で位置がsize分(readsize分)ずらされる) 00431 int r = dkcStreamRead(ptr,buffer,size,readsize); 00432 00433 00434 /* 00435 if(readsize > INT_MAX){ 00436 dkcmNOT_ASSEERT("INT_MAX byteも一気に読みこむな!ヽ(`Д´)ノムキィ"); 00437 return edk_FAILED; 00438 } 00439 t = (*readsize) - t; 00440 00441 //この条件はありえない。 00442 dkcmNOT_ASSERT(t < 0);*/ 00443 00444 00446 dkcStreamSeek(ptr,t,edkcStreamSeekSet); 00447 return r; 00448 } |
|
dkcStream.c の 450 行で定義されています。 参照先 DKC_STREAM, dkcStreamRead16(), dkcStreamSeek(), dkcStreamTell(), と edkcStreamSeekSet.
00450 { 00451 long t = dkcStreamTell(ptr); 00452 int r = dkcStreamRead16(ptr,buffer,size,readsize); 00453 dkcStreamSeek(ptr,t,edkcStreamSeekSet); 00454 return r; 00455 } |
|
dkcStream.c の 461 行で定義されています。 参照先 DKC_STREAM, dkcStreamRead32(), dkcStreamSeek(), dkcStreamTell(), と edkcStreamSeekSet.
00461 { 00462 long t = dkcStreamTell(ptr); 00463 int r = dkcStreamRead32(ptr,buffer,size,readsize); 00464 dkcStreamSeek(ptr,t,edkcStreamSeekSet); 00465 return r; 00466 } |
|
dkcStream.c の 471 行で定義されています。 参照先 DKC_STREAM, dkcStreamRead64(), dkcStreamSeek(), dkcStreamTell(), と edkcStreamSeekSet.
00471 { 00472 long t = dkcStreamTell(ptr); 00473 int r = dkcStreamRead64(ptr,buffer,size,readsize); 00474 dkcStreamSeek(ptr,t,edkcStreamSeekSet); 00475 return r; 00476 00477 } |
|
|
|
streamをシークする。fseekみたいなもの edk_SUCCEEDEDで成功 それ以外はエラー
dkcStream.c の 188 行で定義されています。 参照先 DKC_MEMORYSTREAM, DKC_STREAM, dkcMemoryStreamSeek(), edk_FAILED, edkcStreamInitFile, edkcStreamInitMemory, dkc_Stream::mMode, と dkc_Stream::mSig. 参照元 dkcCircularStreamWrite(), dkcCloseFileWithSignature(), dkcOpenFileWithSignature(), dkcStreamRef(), dkcStreamRef16(), dkcStreamRef32(), と dkcStreamRef64().
00188 { 00189 int r = edk_FAILED; 00190 switch(ptr->mMode){ 00191 case edkcStreamInitMemory: 00192 r = dkcMemoryStreamSeek((DKC_MEMORYSTREAM *)ptr->mSig,offset,origin); 00193 break; 00194 case edkcStreamInitFile: 00195 //成功したら0 == edk_SUCCEEDED; 00196 r = fseek((FILE *)ptr->mSig,offset,origin); 00197 break; 00198 } 00199 return r; 00200 00201 } |
|
streamの位置を取得する。 edkcStreamSeekSetからのオフセット値。edk_FAILEDだとエラー
dkcStream.c の 204 行で定義されています。 参照先 DKC_MEMORYSTREAM, DKC_STREAM, dkcMemoryStreamTell, edk_FAILED, edkcStreamInitFile, edkcStreamInitMemory, dkc_Stream::mMode, と dkc_Stream::mSig. 参照元 dkcCloseFileWithSignature(), dkcFileWithSignatureCheckCheat(), dkcFileWithSignatureRead(), dkcStreamRef(), dkcStreamRef16(), dkcStreamRef32(), dkcStreamRef64(), と ReadEOFCheck().
00204 { 00205 int r = edk_FAILED; 00206 switch(ptr->mMode){ 00207 case edkcStreamInitMemory: 00208 r = dkcMemoryStreamTell((DKC_MEMORYSTREAM *)ptr->mSig); 00209 case edkcStreamInitFile: 00210 r = ftell((FILE *)ptr->mSig); 00211 if(r==-1){ 00212 return edk_FAILED; 00213 } 00214 } 00215 return r; 00216 //dkcmNOT_ASSERT("dkcStreamTell failed"); 00217 } |
|
|
dkcStream.c の 592 行で定義されています。 参照先 DKC_STREAM, dkcStreamProcess16(), NULL, と StreamWrite(). 参照元 dkcFileWithSignatureWrite16().
00592 { 00593 return dkcStreamProcess16(ptr,(void *)buffer,size,StreamWrite,NULL); 00594 } |
|
dkcStream.c の 596 行で定義されています。 参照先 DKC_STREAM, dkcStreamProcess32(), NULL, と StreamWrite(). 参照元 dkcFileWithSignatureWrite32().
00596 { 00597 return dkcStreamProcess32(ptr,(void *)buffer,size,StreamWrite,NULL); 00598 00599 } |
|
dkcStream.c の 603 行で定義されています。 参照先 DKC_STREAM, dkcStreamProcess64(), NULL, と StreamWrite(). 参照元 dkcFileWithSignatureWrite64().
00603 { 00604 return dkcStreamProcess64(ptr,(void *)buffer,size,StreamWrite,NULL); 00605 } |
|
|