nestfind.h

C:\home\SVGCats_src\src\nestfind.h

[目次 | 型・クラス・構造体 | マクロ]

目次

型・クラス・構造体一覧

マクロ一覧


   1|/**************************************************************************
   2|*  1. <<< サブ・フォルダファイル列挙 (NestFind) >>> 
   3|***************************************************************************/
   4|
   5|#ifndef  __NESTFIND_H
   6|#define  __NESTFIND_H
   7|
   8|
   9|#ifndef USES_PRIORITY_HEADER
  10|/*[START_OF_PRIORITY_HEADER]*/
  11|
  12|#define  USES_NESTFIND
  13|typedef struct _NestFind  NestFind;
  14|
  15|#define  NestFind_UseAttr    /* ファイルサイズを参照する */
  16|
  17|/*[END_OF_PRIORITY_HEADER]*/
  18|#endif /* USES_PRIORITY_HEADER */
  19|
  20|
  21|#ifdef  __cplusplus
  22|extern "C" {
  23|#endif
  24| 
  25|/**************************************************************************
  26|*  2. <<< 定数 >>> 
  27|***************************************************************************/
  28|
  29|#define  NestFind_Err_OverNest  9991
  30|#define  NestFind_Err_OverBuf   9992
  31|
  32|
  33|/* ファイル名の最大の長さ NameSize は、MS-DOS なら 8.3 の 12 文字なので 12 */
  34|#ifdef __UNIX__
  35|#define  NestFind_nameSize 40
  36|#endif
  37|#ifdef __BORLAND__
  38|#define  NestFind_nameSize 12
  39|#endif
  40|#ifdef _MSC_VER
  41|#define  NestFind_nameSize 255
  42|#endif
  43|
  44|#define  NestFind_absPathSize 255       /* 絶対ファイルパス名の最大の長さ */
  45|
  46|#define  NestFind_bufM  3000            /* ファイル名のバッファ数 BufN は、*/
  47|     /* ネストしているすべてのディレクトリに含まれるファイルの数の最大制限 */
  48|     /* NestFind_init の中の静的変数に使っています */
  49|
  50|#define  NestFind_nestM  50             /* ネストの深さの最大 */
  51|
  52| 
  53|/**************************************************************************
  54|  3. <<< サブ・フォルダを含めてファイルを列挙する [NestFind] >>> 
  55|【例】
  56|  NestFind  f;
  57|  NestFind_init( &f, "path", false );
  58|  while ( NestFind_next( &f ) ) {
  59|    char*  s = NestFind_getAbsPath( &f );
  60|  }
  61|  NestFind_finish( &f );
  62|***************************************************************************/
  63|struct _NestFind {
  64|  char** fname; /* ファイル名かdir名 */
  65|  bool* isdir;
  66| #ifdef NestFind_UseAttr
  67|  long*  size;
  68| #endif
  69|
  70|  bool  bFinishedDir;  /* 探索が済んだディレクトリも列挙する */
  71|
  72|  int   I [NestFind_nestM+1];    /* 現在の fname の第1配列番号 */
  73|  int   maxI [NestFind_nestM+1]; /* そのディレクトリの最大の I */
  74|  int   nest;                    /* ネスト・レベル、0 が基底 */
  75|
  76|  char  absPath[NestFind_absPathSize+1]; /* 基底ディレクトリ・パス */
  77|  char  workPath [NestFind_absPathSize];  /* 属性参照用 */
  78|};
  79|
  80|#ifndef K_AND_R
  81|
  82|void  NestFind_init( NestFind*, const char*, bool bFinishedDir );
  83|void  NestFind_finish( NestFind* );
  84|bool  NestFind_next( NestFind* );
  85|
  86|char*  NestFind_getFName( NestFind* );
  87|char*  NestFind_getPath( NestFind* );
  88|char*  NestFind_getAbsPath( NestFind* );
  89|int    NestFind_getNumer( NestFind* );
  90|int    NestFind_getDenomi( NestFind* );
  91|bool   NestFind_getIsDir( NestFind* );
  92|#ifdef  NestFind_UseAttr
  93|long   NestFind_getSize( NestFind* );
  94|#endif
  95|
  96|#else
  97|
  98|char*  NestFind_getFName( /*NestFind**/ );
  99|char*  NestFind_getPath( /*NestFind**/ );
 100|char*  NestFind_getAbsPath( /*NestFind**/ );
 101|bool  NestFind_getIsDir( /*NestFind* this*/ );
 102|void  NestFind_init( /*NestFind*, char**/ );
 103|bool  NestFind_next( /*NestFind**/ );
 104|
 105|#endif
 106|
 107| 
 108|#ifdef  __cplusplus
 109|}
 110|#endif
 111|
 112|#endif 
 113| 
 114|