メインページ | アルファベット順一覧 | 構成 | ファイル一覧 | 構成メンバ | ファイルメンバ | 関連ページ

dkcGenericFileSystem.h

汎用的なファイル入出力インターフェイス [詳細]

#include "dkcOSIndependent.h"
#include "dkcDLL.h"

dkcGenericFileSystem.hのインクルード依存関係図

このグラフは、どのファイルから直接、間接的にインクルードされているかを示しています。

ソースコードを見る。

構成

struct  dkc_GenericFileSystemSeekArg
struct  dkc_GenericFileSystem
struct  dkc_File64

型定義

typedef dkc_GenericFileSystemSeekArg DKC_GFS_SEEK_ARG
typedef void *(* DKC_FILE_OPEN_F_TYPE )(void *, uint32, const void *)
typedef int(* DKC_FILE_READ_F_TYPE )(void *, void *, size_t, size_t *)
typedef int(* DKC_FILE_WRITE_F_TYPE )(void *, const void *, size_t, size_t *)
typedef int(* DKC_FILE_CLOSE_F_TYPE )(void *)
typedef int(* DKC_FILE_SEEK_F_TYPE )(void *, const DKC_GFS_SEEK_ARG *)
typedef int(* DKC_FILE_TELL_F_TYPE )(void *, DKC_UINT64_STRUCT *)
typedef int(* DKC_GFS_FREE_F_TYPE )(void *)
typedef int(* DKC_FILE_DELETE_F_TYPE )(void *, const void *)
typedef dkc_GenericFileSystem DKC_GENERIC_FILESYSTEM
typedef dkc_File64 DKC_FILE64

列挙型

enum  edkc_FileMode {
  edkcReadMode = 1, edkcWriteMode = 2, edkcPostScriptMode = 4, edkcBinaryMode = 64,
  edkcTextMode = 128
}

関数

DKC_GENERIC_FILESYSTEM *WINAPI dkcAlloc_SJIS_FileSystem ()
DKC_GENERIC_FILESYSTEM *WINAPI dkcAlloc_UNICODE_FileSystem ()
DKC_EXTERN int WINAPI dkcFreeGenericFileSystem (DKC_GENERIC_FILESYSTEM **)
DKC_EXTERN int WINAPI dkcGenericFileSystemOpen (DKC_GENERIC_FILESYSTEM *, uint32 flags, const void *filename)
DKC_EXTERN int WINAPI dkcGenericFileSystemClose (DKC_GENERIC_FILESYSTEM *)
DKC_EXTERN int WINAPI dkcGenericFileSystemRead (DKC_GENERIC_FILESYSTEM *, void *pbuff, size_t size, size_t *read_size)
DKC_EXTERN int WINAPI dkcGenericFileSystemWrite (DKC_GENERIC_FILESYSTEM *, const void *pbuff, size_t size, size_t *write_size)
DKC_EXTERN int WINAPI dkcGenericFileSystemSeek (DKC_GENERIC_FILESYSTEM *, const DKC_GFS_SEEK_ARG *)
DKC_EXTERN int WINAPI dkcGenericFileSystemTell (DKC_GENERIC_FILESYSTEM *, DKC_UINT64_STRUCT *)
DKC_EXTERN int WINAPI dkcGenericFileSystemDeleteFile (DKC_GENERIC_FILESYSTEM *, const void *filename)
DKC_FILE64 *WINAPI dkcAllocFile64 (uint32 flags, const void *filename)
DKC_EXTERN int WINAPI dkcFreeFile64 (DKC_FILE64 **)
DKC_EXTERN int WINAPI dkcFile64Open (DKC_FILE64 *p, uint32 flags, const void *filename)
DKC_EXTERN int WINAPI dkcFile64Close (DKC_FILE64 *p)
DKC_EXTERN int WINAPI dkcFile64Read (DKC_FILE64 *p, void *pbuff, size_t size, size_t *read_size)
DKC_EXTERN int WINAPI dkcFile64Write (DKC_FILE64 *p, const void *pbuff, size_t size, size_t *write_size)
DKC_EXTERN int WINAPI dkcFile64Seek (DKC_FILE64 *p, int64 offset, int origin)
DKC_EXTERN int WINAPI dkcFile64Tell (DKC_FILE64 *p, uint64 *)
DKC_EXTERN BOOL WINAPI dkcFile64EOF (DKC_FILE64 *p)


説明

汎用的なファイル入出力インターフェイス

作者:
d金魚
から:
2005/02/19
TODO:
覚え書き:

dkcGenericFileSystem.h で定義されています。


型定義

typedef struct dkc_File64 DKC_FILE64
 

typedef int(* DKC_FILE_CLOSE_F_TYPE)(void *)
 

dkcGenericFileSystem.h45 行で定義されています。

typedef int(* DKC_FILE_DELETE_F_TYPE)(void *, const void *)
 

dkcGenericFileSystem.h50 行で定義されています。

typedef void*(* DKC_FILE_OPEN_F_TYPE)(void *, uint32, const void *)
 

dkcGenericFileSystem.h42 行で定義されています。

typedef int(* DKC_FILE_READ_F_TYPE)(void *, void *, size_t, size_t *)
 

dkcGenericFileSystem.h43 行で定義されています。

typedef int(* DKC_FILE_SEEK_F_TYPE)(void *, const DKC_GFS_SEEK_ARG *)
 

dkcGenericFileSystem.h46 行で定義されています。

typedef int(* DKC_FILE_TELL_F_TYPE)(void *, DKC_UINT64_STRUCT *)
 

dkcGenericFileSystem.h47 行で定義されています。

typedef int(* DKC_FILE_WRITE_F_TYPE)(void *, const void *, size_t, size_t *)
 

dkcGenericFileSystem.h44 行で定義されています。

typedef struct dkc_GenericFileSystem DKC_GENERIC_FILESYSTEM
 

typedef int(* DKC_GFS_FREE_F_TYPE)(void *)
 

dkcGenericFileSystem.h48 行で定義されています。

typedef struct dkc_GenericFileSystemSeekArg DKC_GFS_SEEK_ARG
 


列挙型

enum edkc_FileMode
 

列挙型の値:
edkcReadMode  読み込みモード
edkcWriteMode  書き込みモード(ファイルが既に存在する場合は上書きされる)
edkcPostScriptMode  追記モード
edkcBinaryMode  バイナリモード
edkcTextMode  テキストモード

dkcGenericFileSystem.h17 行で定義されています。

00017                   {
00019     edkcReadMode = 1,
00021     edkcWriteMode = 2,
00023     edkcPostScriptMode = 4,
00024 
00026     edkcBinaryMode = 64,
00028     edkcTextMode = 128,
00029 
00030 };


関数

DKC_GENERIC_FILESYSTEM* WINAPI dkcAlloc_SJIS_FileSystem  ) 
 

参照元 dkcAllocSemiRealRandomWin32().

DKC_GENERIC_FILESYSTEM* WINAPI dkcAlloc_UNICODE_FileSystem  ) 
 

参照元 dkcAllocSemiRealRandomWin32().

DKC_FILE64* WINAPI dkcAllocFile64 uint32  flags,
const void *  filename
 

引数:
flags[in] edkc_FileModeを使用
filename[in] ファイル名

dkcGenericFileSystem.c572 行で定義されています。

参照先 dkcAllocate(), dkcFile64Open(), dkcFreeFile64(), と NULL.

参照元 dkcAllocStream(), と dkcDCFFileSizeExpect().

00573 {
00574     DKC_FILE64 *p = dkcAllocate(sizeof(DKC_FILE64));
00575     if(NULL==p) return NULL;
00576     p->handle = -1;
00577     if(DKUTIL_FAILED(dkcFile64Open(p,flags,filename))){
00578         dkcFreeFile64(&p);
00579         return NULL;
00580     }
00581     return p;
00582 }

DKC_EXTERN int WINAPI dkcFile64Close DKC_FILE64 p  ) 
 

dkcGenericFileSystem.c623 行で定義されています。

参照元 dkcFile64Open(), と dkcFreeFile64().

00623                                                    {
00624     if(-1 == p->handle) return edk_FAILED;
00625     _close(p->handle);
00626     p->handle = -1;
00627     return edk_SUCCEEDED;
00628 }

DKC_EXTERN BOOL WINAPI dkcFile64EOF DKC_FILE64 p  ) 
 

戻り値:
-1だとエラー

dkcGenericFileSystem.c673 行で定義されています。

参照元 dkcStreamEOF().

00673                                                   {
00674     int r = _eof(p->handle);
00675     
00676     /*int64 v,t;
00677     v = _telli64( p->handle );
00678     if(-1==v) return -1;
00679     t = _lseeki64( p->handle, 0, SEEK_END );
00680     r = (v==t) || (r);
00681     
00682     _lseeki64( p->handle, v, SEEK_SET );*/
00683     return r;
00684 }

DKC_EXTERN int WINAPI dkcFile64Open DKC_FILE64 p,
uint32  flags,
const void *  filename
 

dkcGenericFileSystem.c593 行で定義されています。

参照先 dkcFile64Close(), edkcPostScriptMode, edkcReadMode, edkcWriteMode, と NULL.

参照元 dkcAllocFile64().

00594 {
00595     int oflag =  _O_BINARY;
00596     int mode = 0;
00597     if(NULL==p){
00598         return edk_ArgumentException;
00599     }
00600     //if(-1 != p->handle)
00601         dkcFile64Close(p);
00602     
00603     if(flags & edkcReadMode){
00604         oflag |= _O_RDONLY | _O_RANDOM;
00605         mode = _S_IREAD;
00606     }else if(flags & edkcWriteMode){
00607         oflag |=  _O_CREAT | _O_WRONLY | _O_RANDOM | _O_TRUNC;
00608         mode = _S_IWRITE;
00609     }else if(flags & edkcPostScriptMode){
00610         oflag |= _O_RDWR | _O_RANDOM;
00611         mode = _S_IREAD | _S_IWRITE;
00612     }
00613     /*if(flags & edkcBinaryMode){
00614         oflag
00615     }*/
00616     oflag = _open(filename,oflag,mode);
00617     if(-1==oflag) return edk_FAILED;
00618 
00619     p->handle = oflag;
00620     return edk_SUCCEEDED;
00621 }

DKC_EXTERN int WINAPI dkcFile64Read DKC_FILE64 p,
void *  pbuff,
size_t  size,
size_t *  read_size
 

dkcGenericFileSystem.c630 行で定義されています。

参照元 dkcDCFFileSizeExpect(), と dkcStreamRead().

00631 {
00632     int r;
00633     if(size > INT_MAX){
00634         return edk_ArgumentException;
00635     }
00636     r = _read(p->handle,pbuff,size);
00637     if(-1==r){
00638         if(errno == EBADF){
00639             return edk_LogicError;
00640         }
00641         return edk_FAILED;
00642     }
00643     *read_size = r;
00644     return edk_SUCCEEDED;
00645 }

DKC_EXTERN int WINAPI dkcFile64Seek DKC_FILE64 p,
int64  offset,
int  origin
 

引数:
origin[in] edkcSeekSet edkcSeekCurrent edkcSeekEndのどれか。

dkcGenericFileSystem.c660 行で定義されています。

参照元 dkcDCFFileSizeExpect(), と dkcStreamSeek().

00660                                                                           {
00661     int64 t =  _lseeki64( p->handle , offset, origin );
00662     if(-1==t) return edk_FAILED;
00663     return edk_SUCCEEDED;
00664 }

DKC_EXTERN int WINAPI dkcFile64Tell DKC_FILE64 p,
uint64 * 
 

dkcGenericFileSystem.c666 行で定義されています。

参照元 dkcDCFFileSizeExpect(), dkcStreamTell(), と dkcStreamTell64().

00667 {
00668     int64 t = _telli64( p->handle );
00669     if(-1==t) return edk_FAILED;
00670     *pv = (uint64)t;
00671     return edk_SUCCEEDED;
00672 }

DKC_EXTERN int WINAPI dkcFile64Write DKC_FILE64 p,
const void *  pbuff,
size_t  size,
size_t *  write_size
 

dkcGenericFileSystem.c648 行で定義されています。

参照元 dkcStreamWriteWithWriteSize().

00649 {
00650     int r;
00651     if(size > INT_MAX){
00652         return edk_ArgumentException;
00653     }
00654     r = _write(p->handle,pbuff,size);
00655     if(-1==r) return edk_FAILED;
00656     *write_size = r;
00657     return edk_SUCCEEDED;
00658 }

DKC_EXTERN int WINAPI dkcFreeFile64 DKC_FILE64 **   ) 
 

dkcGenericFileSystem.c584 行で定義されています。

参照先 dkcFile64Close(), dkcFree(), と NULL.

参照元 dkcAllocFile64(), dkcDCFFileSizeExpect(), と dkcFreeStream().

00584                                          {
00585     DKC_FILE64 *p = *pp;
00586     if(NULL==pp || NULL==p) return edk_FAILED;
00587     if(-1 != p->handle){
00588         dkcFile64Close(p);
00589     }
00590     return dkcFree(pp);
00591 }

DKC_EXTERN int WINAPI dkcFreeGenericFileSystem DKC_GENERIC_FILESYSTEM **   ) 
 

dkcGenericFileSystem.c513 行で定義されています。

参照先 dkcFree(), dkc_GenericFileSystem::mfObjFree, dkc_GenericFileSystem::mfp, と NULL.

参照元 dkcAllocSemiRealRandomWin32(), と dkcFreeSemiRealRandom().

00513                                                                 {
00514     DKC_GENERIC_FILESYSTEM *p = *pp;
00515     DKC_GFS_FREE_F_TYPE fff;
00516     int r;
00517     
00518     if(NULL==pp || NULL==p){
00519         return edk_FAILED;
00520     }
00521 
00522     
00523     fff = p->mfObjFree;
00524     r = fff(p->mfp);
00525     if(DKUTIL_FAILED(r)){
00526         return edk_FAILED;
00527     }
00528 
00529     return dkcFree(pp);
00530 }

DKC_EXTERN int WINAPI dkcGenericFileSystemClose DKC_GENERIC_FILESYSTEM  ) 
 

dkcGenericFileSystem.c540 行で定義されています。

参照先 dkc_GenericFileSystem::mfClose, と dkc_GenericFileSystem::mfp.

参照元 process().

00540                                                                  {
00541     return ptr->mfClose(ptr->mfp);
00542 }

DKC_EXTERN int WINAPI dkcGenericFileSystemDeleteFile DKC_GENERIC_FILESYSTEM ,
const void *  filename
 

dkcGenericFileSystem.c564 行で定義されています。

参照先 dkc_GenericFileSystem::mfDeleteFile, と dkc_GenericFileSystem::mfp.

参照元 process().

00565 {
00566     return ptr->mfDeleteFile(ptr->mfp,filename);
00567 }

DKC_EXTERN int WINAPI dkcGenericFileSystemOpen DKC_GENERIC_FILESYSTEM ,
uint32  flags,
const void *  filename
 

dkcGenericFileSystem.c532 行で定義されています。

参照先 dkc_GenericFileSystem::mfOpen, dkc_GenericFileSystem::mfp, と NULL.

参照元 process().

00532                                                                                                   {
00533     void *p = ptr->mfOpen(ptr->mfp,flags,filename);
00534     if(NULL==p){
00535         return edk_FAILED;
00536     }
00537     return edk_SUCCEEDED;
00538 }

DKC_EXTERN int WINAPI dkcGenericFileSystemRead DKC_GENERIC_FILESYSTEM ,
void *  pbuff,
size_t  size,
size_t *  read_size
 

dkcGenericFileSystem.c544 行で定義されています。

参照先 dkc_GenericFileSystem::mfp, と dkc_GenericFileSystem::mfRead.

00545 {
00546     return ptr->mfRead(ptr->mfp,pbuff,size,read_size);
00547 }

DKC_EXTERN int WINAPI dkcGenericFileSystemSeek DKC_GENERIC_FILESYSTEM ,
const DKC_GFS_SEEK_ARG
 

dkcGenericFileSystem.c554 行で定義されています。

参照先 dkc_GenericFileSystem::mfp, と dkc_GenericFileSystem::mfSeek.

00555 {
00556     return ptr->mfSeek(ptr->mfp,parg);
00557 }

DKC_EXTERN int WINAPI dkcGenericFileSystemTell DKC_GENERIC_FILESYSTEM ,
DKC_UINT64_STRUCT * 
 

dkcGenericFileSystem.c559 行で定義されています。

参照先 dkc_GenericFileSystem::mfp, と dkc_GenericFileSystem::mfTell.

00560 {
00561     return ptr->mfTell(ptr->mfp,offset);
00562 }

DKC_EXTERN int WINAPI dkcGenericFileSystemWrite DKC_GENERIC_FILESYSTEM ,
const void *  pbuff,
size_t  size,
size_t *  write_size
 

dkcGenericFileSystem.c549 行で定義されています。

参照先 dkc_GenericFileSystem::mfp, と dkc_GenericFileSystem::mfWrite.

参照元 process().

00550 {
00551     return ptr->mfWrite(ptr->mfp,pbuff,size,write_size);
00552 }


dkutil_cに対してMon Jan 16 00:41:34 2006に生成されました。  doxygen 1.4.4