/**********************************************************************
*
*  projet   : DilibPro
*  module   : Dam  (Dilib Acces Method)
*  fichier  : DamHfd.h
*  Auteur   : Jacques DUCLOY
*  Date     : Octobre 93
*
***********************************************************************/
#ifndef _DAM_HFD_H_
#define _DAM_HFD_H_

#include "DamFile.h"
#include "DamHCB.h"
#include "StrSearch.h"
#include "Buffer.h"
#include "SgmlNode.h"

int DamNameIsDir();
int DamNameIsFile();

struct DamHfdIterator_Struct
{
  StrSearchTable               *table;
  struct DamHfdIterator_Struct *subDir;
  char                         *filePath;
  char                         *currentDir;
  int                           filePathLenght;
  int                           subDirExploring;
  int                           isMultiGroup;
  Buffer                       *multiBegin;
  SgmlNode                     *hcs;
};

typedef struct DamHfdIterator_Struct DamHfdIterator ;

DamHfdIterator *DamHfdIteratorCreate();
DamHfdIterator *DamHfdIteratorInit();
char           *DamHfdNextFilePath();
void            DamHfdIteratorFree();

struct DamStreamIterator_Struct
{
  char          **listEntry;
  char           *currentHfdPath;
  DamHfdIterator *hfdIterator;
  int             hfdExploring;
  int             indicEntry;
  int             stdinHasBeenReaded;
  int             oneStreamHasBeenReaded;
  int             listIsClosed;
  FILE           *currentFile;
};

typedef struct DamStreamIterator_Struct DamStreamIterator ;
DamStreamIterator *DamStreamIteratorCreate();

FILE* DamNextStream();

DamRecord *DamHfdRecordReadKey();
SgmlNode  *DamHfdSgmlReadKey();
DamHCB    *DamHfdOpenReadKey();
int DamHfdOpenPathCont();
char *DamGetPath();
void DamHfdSetFirstKey();
char *DamHfdNextKey();
char *DamHfdPreviousKey();
DamRecord *DamHfdRecordReadNext();
SgmlNode *DamHfdSgmlReadNext();
SgmlNode *DamHfdSgmlReadPrevious();

#define DamHfd DamHCB
#define DamHfdFree(h)   DamHCB_Free(h)  
#define DamHfdCurrentPath(x) x->currentPath
#define DamHfdGetPath(x,y) DamHCB_GetPath(x,y)

#endif /* _DAM_HFD_H_ */

