/*   -*- coding: utf-8 -*-  */
/***********************************************************************
* Module   : Hfd
* Fichier  : HfdIndex.h
* Auteur   : Ducloy
* Date     : 1/94
********************************************************************************
*
* Copyleft
* 
*************************************************************************/

#ifndef HFD_INDEX_H
#define HFD_INDEX_H

#include "SxmlNode.h"
#include "Hfd.h"

struct HfdIndexListDesc_struct
{
  char     *tagEntryName;
  char     *tagList;
  char     *tagItem;
  char     *tagWeight;
  char     *formatWeight;
};

typedef struct HfdIndexListDesc_struct HfdIndexListDesc;

struct HfdIndex_struct
{
  Hfd            *hfd;
  StrDict        *hidTable;
  char           *hidPath;
  char           *tagKey;
  char           *curPath;
  SxmlNode       *desc;
};

typedef struct HfdIndex_struct HfdIndex;

extern int HfdIndexPrintMode;
/*
  x  : XmlMode
  s  : short split
  k  : split with copy key
 */

HfdIndex  *HfdIndexOpenRead(char *name);
void       HfdIndexClose(HfdIndex *curIndex);
SxmlNode  *HfdIndexReadSxml(HfdIndex *curIndex, char *entryName);
HfdRecord *HfdIndexReadRecord(HfdIndex *curIndex, char *entryName);
SxmlNode  *HfdIndexReadSxmlRecord(HfdIndex *curIndex, char *entryName);

SxmlNode *HfdIndexAnd(SxmlNode *l1, SxmlNode *l2);
SxmlNode *HfdIndexAndNot(SxmlNode *l1, SxmlNode *l2);
SxmlNode *HfdIndexOr(SxmlNode *l1, SxmlNode *l2);

void HfdIndexBoolInit();

#endif /* END_INDEX_H */

