/***************************************************************************
*
* Module   : Marc
* Commande : Iso2709.c
* Auteur   : Ducloy
* Date     : 28/9/89 rewrite 2013
*****************************************************************************
*
* Copyright (c) 1994 CNRS/CRIN & INRIA Lorraine
* 
***************************************************************************/

#include <stdio.h>
#include <string.h>
#include "Iso2709.h"

SxmlNode *Iso2709OutputRecord;
SxmlNode *Iso2709OutputPart;
SxmlNode *Iso2709OutputField;
SxmlNode *Iso2709OutputSubField;
SxmlNode *Iso2709OutputBytePos;

SxmlNode *Iso2709InputPart;
SxmlNode *Iso2709InputField;
SxmlNode *Iso2709InputSubField;
SxmlNode *Iso2709InputRecord;

SxmlNode *Iso2709InputIterField=NULL;

/*

void Iso2709BuildHeader(n1,n2,modele)
     SxmlNode *n1;
     SxmlNode *n2;
     char* modele;
{
  char header[25];
  strcpy(header,modele);
  SgmlDoAtt (n1, att, val,
	     {
	       int i;
               sscanf(att+1,"%d",&i);
               strncpy(header+i, val, strlen(val));
	     });
  SgmlAddAtt(
	     n2,
	     "header",
             header);
  return;
}

*/

void Iso2709BuildIndic(f1,f2,sIndic,carFiller)
          /*    
                cree l'attribut i des zones field a partir des indices
                de type In des formats (n commence a 1)
          */
/*
     SgmlNode *f1;
     SgmlNode *f2;
     int       sIndic;
     char      carFiller;
{
  char indic[10];
  int i;

  i=0;
  while (i<sIndic) {indic[i++]=carFiller;};
  indic[sIndic]='\0';
  SgmlDoAtt (f1, att, val,
	     {
	       sscanf(att+1,"%d",&i);
	       indic[i-1]=val[0];
	     }
	     );
  SgmlAddAtt(f2,"indic",indic);
  return;
}

SgmlNode *Iso2709OutputFindOrNewField(tag)
  char *tag;
{
  if (!(Iso2709OutputField=SgmlGetSonTag(Iso2709OutputPart,tag)))
    Iso2709OutputField=Iso2709OutputNewField(tag);
  return Iso2709OutputField;
}



SgmlNode *Iso2709IterFieldNext(iter)
     SgmlNode *iter;
{
  SgmlNode *n2;
  SgmlNode *n3;
  char *tag;

  n2=SgmlIterGetNext(iter);
  if(!n2)return NULL;
  n3= SgmlNext(n2);
  SgmlIterSetNext(iter,n3);
  tag=SgmlIterGetStr(iter);
  if (!SgmlHasTag(n3,tag))
    {
      SgmlIterSetNext(iter,NULL);
    }
  Iso2709InputField=n2;
  return n2;
}

SgmlNode *Iso2709IterInit(i1,n1,tag)
     SgmlNode *i1;
     SgmlNode *n1;
     char *tag;
{
  return SgmlIterTagInit(i1,n1,tag);
}

SgmlNode *Iso2709InputIterFieldInit(tag)
     SgmlNode *tag;
{
  if (!Iso2709InputIterField)
    Iso2709InputIterField=SgmlIterCreate();
  Iso2709InputField
    =Iso2709IterInit(Iso2709InputIterField,Iso2709InputPart,tag);
  return Iso2709InputField;
}

SgmlNode *Iso2709InputGetSubField(t1,t2)
     char *t1;
     char *t2;
{
  if ((Iso2709InputField=SgmlGetSonTag(Iso2709InputPart,t1)))
    return (Iso2709InputSubField=SgmlGetSonTag(Iso2709InputField,t2));
}

char *Iso2709InputGetDataElement(t1,t2)
     char *t1;
     char *t2;
{
  if ((Iso2709InputField=SgmlGetSonTag(Iso2709InputPart,t1))
      &&(Iso2709InputSubField=SgmlGetSonTag(Iso2709InputField,t2)))
    {
      return SgmlLeafGetData(Iso2709InputSubField);
    }
  else return NULL;
}

*/
