/**********************************************************************
*
*  projet   : DilibPro
*  module   : Dam  (Dilib Acces Method)
*  fichier  : DamFile.h
*  Auteur   : J. DUCLOY
*  Date     : Juillet 93
*  Modifications (nouvelle version restructuree)
*       Janvier 97
*
***********************************************************************/
#ifndef _DAM_FILE_H
#define _DAM_FILE_H

#include "DamRecord.h"

struct DamFile_Struct
{
  unsigned int errCode        :4;
  unsigned int isUnixOpen     :1;
  unsigned int isContOpen     :1;
  unsigned int isContSign     :1;

  FILE        *stream;
  char        *path;
  int          pathSize;
  DamRecord   *record;
};

typedef struct DamFile_Struct DamFile;

DamFile   *DamFile_Create();
#define    DamFileCreate()   DamFile_Create() 
DamFile   *DamFile_Open();
void       DamFile_Free();
#define    DamFileOpen(f,p) DamFile_Open(f,p)
void       DamFile_Close();
#define    DamFileClose(f) DamFile_Close(f)
DamRecord  *DamFile_GetRecordKey();
#define    DamFileGetRecordKey(f,k) DamFile_GetRecordKey(f,k)
DamRecord *DamFile_NextDamRecord();
#define    DamFileNextDamRecord(f) DamFile_NextDamRecord(f)

#define         DamFileKey(x)   BufferString(x->record->key)

SgmlNode  *DamFile_NextSgml();
#define DamFileNextSgml(f) DamFile_NextSgml(f)
SgmlNode  *DamFile_NextSgmlRecord();
#define DamFileNextSgmlRecord(f) DamFile_NextSgmlRecord(f)
SgmlNode  *DamFile_GetSgmlKey();
#define DamFileGetSgmlKey(f,k) DamFile_GetSgmlKey(f,k)
SgmlNode  *DamFile_GetSgmlRecordKey();
#define DamFileGetSgmlRecordKey(f,k) DamFile_GetSgmlRecordKey(f,k)

SgmlNode* DamStdin_NextSgml();
SgmlNode* DamStdin_NextSgmlRecord();

#define DamEOF   1
#define DamOK    0
#define DamERROR 2

DamFile *DamFileOpenReadCont();
void DamFileSetRecordTag();
DamRecord *DamFileGetRecordContForward();
DamRecord *DamFileGetRecordCont();
SgmlNode *DamFileGetSgmlRecordCont();
SgmlNode *DamFileGetSgmlCont();

extern DamFile  *DamFileStdin;

#endif    /*  _DAM_FILE_H_ */


