/**********************************************************************
*
*  module   : Hfd
*  fichier  : HfdRecord.h
*  Auteur   : Jacques DUCLOY
*  Date     : Jan. 2014
*
***********************************************************************/
#ifndef _HFD_RECORD_H_
#define _HFD_RECORD_H_

#include "Buffer.h"
#include "SxmlNode.h"

struct HfdRecordField_Struct  /*  to be deprecated */
{
  char            type;
  /*
                      u: undefined
                      C: comment
                      c: Dtd Element treated as comment
                      S: Sgml
                      D: data
  */
  struct HfdRecordField_Struct *next;
  int            offsetBeginField;
  int            offsetEndField;
  int            offsetEffectiveBeginField;
  int            offsetEffectiveEndField;
  char           *beginField;
  char           *endField;
  char           *effectiveBeginField;
  char           *effectiveEndField;
};

typedef struct HfdRecordField_Struct HfdRecordField;

struct HfdRecord_Struct
{
  Buffer           *bufferInput;
  SxmlRecord       *rootNode; 

  int             purged;
  SxmlNode       *recordNode;
  char           *stringBuf;
  int             offset;
  Buffer         *key;
  Buffer         *content;
  char           *tag;
  HfdRecordField *first;
  HfdRecordField *last;
  HfdRecordField *firstFreeList;
  int             pileMark; /* for matching <rec>...<rec>...</rec>...<rec> */
};

typedef struct HfdRecord_Struct HfdRecord;

HfdRecord *HfdRecordCreate(int s, int i);
HfdRecord *NewHfdRecord();

#endif /* _HFD_RECORD_H_ */
