/*   -*- coding: utf-8 -*-  */
/**********************************************************************
*
*  module   : Hfd
*  commande : HfdBaseQuery
*  fichier  : HfdBaseQuery.c
*  Auteur   : Jacques DUCLOY
*  Date     : 2017
*******************************************************************************/
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
#include "StrDict.h"
#include "SxPath.h"
#include "HfdBase.h"

    int getopt();
    extern char *optarg;

int main(int argc, char **argv)
{
  int cod_arg;
  HfdBase  *boolBase;
  SxmlNode *inputDoc;
  SxmlNode *resultNode;

  HfdIndexBoolInit();
  boolBase=HfdBaseCreate();

  while ((cod_arg = getopt(argc,argv,"b:e:i:"))!=EOF)
    {switch(cod_arg) 
	{
	case 'i':
	  HfdBaseNewIndex(boolBase, optarg);
	  break;
	case 'b':
	  HfdBaseSetBaseName(boolBase, optarg);
	  break;
	case 'e':
	  resultNode=HfdBaseResultFromBoolExpr(boolBase, SxmlFromString(optarg));
	  SxmlPrint (resultNode);
	  putchar ('\n');
	  HfdBaseFree(boolBase);
	  exit (EXIT_SUCCESS);
	}
    }

  while ((inputDoc = SxmlInputGetDocumentElement()))
    {
      resultNode=HfdBaseResultFromBoolExpr(boolBase, inputDoc);
      SxmlPrint (resultNode);
      putchar ('\n');
    }
  HfdBaseFree(boolBase);
  exit (EXIT_SUCCESS);
}
