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

# 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.h の 45 行で定義されています。

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

| dkcGenericFileSystem.h の 50 行で定義されています。

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

| dkcGenericFileSystem.h の 42 行で定義されています。

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

| dkcGenericFileSystem.h の 43 行で定義されています。

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

| dkcGenericFileSystem.h の 46 行で定義されています。

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

| dkcGenericFileSystem.h の 47 行で定義されています。

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

| dkcGenericFileSystem.h の 44 行で定義されています。

typedef struct dkc_GenericFileSystem DKC_GENERIC_FILESYSTEM

typedef int(* DKC_GFS_FREE_F_TYPE)(void *)

| dkcGenericFileSystem.h の 48 行で定義されています。

typedef struct dkc_GenericFileSystemSeekArg DKC_GFS_SEEK_ARG

## 列挙型

enum edkc_FileMode

  | 列挙型の値:
  edkcReadMode | 読み込みモード
  edkcWriteMode | 書き込みモード(ファイルが既に存在する場合は上書きされる）
  edkcPostScriptMode | 追記モード
  edkcBinaryMode | バイナリモード
  edkcTextMode | テキストモード
dkcGenericFileSystem.h の 17 行で定義されています。
    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.c の 572 行で定義されています。 参照先 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.c の 623 行で定義されています。 参照元 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.c の 673 行で定義されています。 参照元 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.c の 593 行で定義されています。 参照先 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.c の 630 行で定義されています。 参照元 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.c の 660 行で定義されています。 参照元 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.c の 666 行で定義されています。 参照元 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.c の 648 行で定義されています。 参照元 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.c の 584 行で定義されています。 参照先 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.c の 513 行で定義されています。 参照先 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.c の 540 行で定義されています。 参照先 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.c の 564 行で定義されています。 参照先 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.c の 532 行で定義されています。 参照先 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.c の 544 行で定義されています。 参照先 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.c の 554 行で定義されています。 参照先 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.c の 559 行で定義されています。 参照先 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.c の 549 行で定義されています。 参照先 dkc_GenericFileSystem::mfp, と dkc_GenericFileSystem::mfWrite. 参照元 process().
    00550 {
    00551     return ptr->mfWrite(ptr->mfp,pbuff,size,write_size);
    00552 }