/***********************************************************************
*
* Module   : Index
* Fichier  : AssocFastFromIndex.c
* Auteur   : Ducloy
* Date     : 11/96
*
*************************************************************************/

#include "IndexFast.h"
#include "Buffer.h"

struct Idx
{
  struct Idx *next;
  IndexFast *index;
};

int main()
{
  Buffer     *bufInput;
  
  IndexFast *newIndex;
  
  struct Idx *firstIdx;
  struct Idx *lastIdx;
  struct Idx *currentIdx;
  struct Idx *oldIdx;
  int fij;
  

  bufInput=BufferCreate(1000,1000);
  
  
  firstIdx=NULL;
  lastIdx=NULL;
  
  while (BufferGets(bufInput))
    {
      newIndex=IndexFastFromString(BufferSave(bufInput));
      currentIdx=(struct Idx *)malloc(sizeof(struct Idx));
      currentIdx->index=newIndex;
      currentIdx->next=NULL;
      /* IndexFastEdit(newIndex);  */
     if((oldIdx=firstIdx))
       {   
	 do
	   {
	     /* IndexFastEdit(oldIdx->index);  */
	     if((fij=IndexFastAssocCount(oldIdx->index, newIndex)))
	       {
		 printf("<assoc><ti>");
		 IndexFastPrintKeyZone(oldIdx->index);
		 printf("<f>%d</f>",oldIdx->index->listElem->nElem);
		 printf("</ti><tj>");
		 IndexFastPrintKeyZone(newIndex);
		 printf("<f>%d</f>",newIndex->listElem->nElem);
		 printf("</tj>");
		 printf("<fij>%d</fij>",fij);
		 printf("</assoc>\n");
	       }
	   }
	 while ((oldIdx=oldIdx->next));
	 lastIdx->next=currentIdx;          
       }
     else
       {
	 firstIdx=currentIdx;
	 
       }
     lastIdx=currentIdx;
    }
  exit (0);
  return 0;
}
