[dicts.h] Type: Dictionary Iterator

contents



#include "standard.h"




The Type


   The dictionary iterator provides sequentiell, platform-independant access to
   a specified part of the file system.
   Supported platforms are Unix and Windows.


DII Abstract dictionary iterator type


Create & Drop

DII DII_make
    (
      c_string PathName, c_string Pattern,
      c_bool recursive, c_bool skipErr
    )
creates a ['recursive'] dictionary iterator for
directory 'PathName' and file 'Pattern'
'skipErr' --> error message on open failure, otherwise the program aborts

void DII_drop(DII dii)
drops dictionary iterator 'dii'


Dictionary iterator access

c_bool DII_empty(DII dii)
empty dictionary iterator ?
void DII_next(DII dii)
next dictionary entry
c_bool DII_isFile(DII dii)
dictionary entry = file ?
c_bool DII_isDir(DII dii)
dictionary entry = directory ?
c_bool DII_isCDev(DII dii)
dictionary entry = character device ?
c_bool DII_isBDev(DII dii)
dictionary entry = block device ?
c_bool DII_isFifo(DII dii)
dictionary entry = FIFO ?
c_string DII_get_file(DII dii)
filename of dictionary entry; allocs memory
c_string DII_get_base(DII dii)
basename of dictionary entry; allocs memory
c_string DII_get_ext(DII dii)
extension of dictionary entry; allocs memory
c_string DII_get_path(DII dii)
path of dictionary entry; allocs memory


Convenient iterator macros


#define DII_FORALL(dii,Path,Pattern)           \
for (dii = DII_make(Path,Pattern,C_False,C_False); \
DII_empty(dii)?DII_drop(dii),C_False:C_True; DII_next(dii))

#define DII_FORALL_R(dii,Path,Pattern)        \
for (dii = DII_make(Path,Pattern,C_True,C_False); \
DII_empty(dii)?DII_drop(dii),C_False:C_True; DII_next(dii))

#define DII_SFORALL(dii,Path,Pattern)         \
for (dii = DII_make(Path,Pattern,C_False,C_True); \
DII_empty(dii)?DII_drop(dii),C_False:C_True; DII_next(dii))

#define DII_SFORALL_R(dii,Path,Pattern)      \
for (dii = DII_make(Path,Pattern,C_True,C_True); \
DII_empty(dii)?DII_drop(dii),C_False:C_True; DII_next(dii))