/*   -*- coding: utf-8 -*-  */

/***********************************************************************
*
*        Module   : Tei
*        Fichier  : TeiHandler.h
*        Auteur   : J. DUCLOY
*        Date     : octobre 2012
*
************************************************************************/

/*  TeiHandler

Ce module vie à simplifier les manipulations sur un dcoument TEI

Il sert à gérer un document courant (unique dans une étape de programmation);

Il contient notamment un ensemble de pointeurs qui simplifie la localisation d'un élément de l'arborescence d'un document en cours de construction ou d'analyse. Ces pointeurs sont de la forme Tei

 */

#ifndef _DILIB_TEI_HANDLER_H
#define _DILIB_TEI_HANDLER_H

#include "SxPath.h"

SxmlNode *Tei_root;
SxmlNode *Tei_header;
SxmlNode *Tei_front;
SxmlNode *Tei_text;
SxmlNode *Tei_back;
SxmlNode *Tei_body;
SxmlNode *Tei_fileDesc;
SxmlNode *Tei_profileDesc;
SxmlNode *Tei_publicationStmt;
SxmlNode *Tei_textClass;
SxmlNode *Tei_titleStmt;
SxmlNode *Tei_seriesStmt;
SxmlNode *Tei_back_listBibl;
SxmlNode *Tei_sourceDesc;
SxmlNode *Tei_biblStruct;
SxmlNode *Tei_analytic;
SxmlNode *Tei_series;
SxmlNode *Tei_seriesImprint;
SxmlNode *Tei_monogr;

extern SxmlNode *TeiHeader_author;
SxmlNode *TeiHeader_author_name;
char     *TeiHeader_author_name_First;
char     *TeiHeader_author_name_Last;
SxmlNode *TeiHeader_author_affiliation;
SxmlNode *TeiHeader_author_affiliation_country;
char     *TeiHeader_author_affiliation_Country;
SxmlNode *TeiHeader_author_affiliation_placeName;
SxmlNode *TeiHeader_author_affiliation_placeName_region;
char     *TeiHeader_author_affiliation_placeName_Region;
char     *TeiHeader_author_getOrgWithPrio(char *prio, char *abs);

SxmlNode *TeiHandlerNew();
SxmlNode *TeiHandlerInit(SxmlNode *docInput);
SxmlNode *TeiInputNextRecord();
SxmlNode *TeiInputNextIstexRecord();
SxmlNode *TeiInputNextAuthor();

SxmlNode *TeiHandlerSetIssn(char *issn);
char     *TeiHandlerGetIssn();
SxmlNode *TeiHandlerSetEIssn(char *issn);
SxmlNode *TeiHandlerSetSeriesTitle(char *title, char *level, char*type);
SxmlNode *TeiHandlerSetSeriesDoi(char *doi);
SxmlNode *TeiHandlerSetDoi(char *doi);
SxmlNode *TeiHandlerStoreAbstract(SxmlNode *abstract, char *lang);
SxmlNode *TeiSeriesSetDatePublication(char *date);
SxmlNode *TeiHandlerSetAnalyticStmtTitleStr(char *title, char *lang);
SxmlNode *TeiHandlerSetAnalyticStmtTitle(SxmlNode *title, char *lang);
char     *TeiLangC3ToC2(char *c3);

SxmlNode *TeiAppendIdno(char *type, char *value);
SxmlNode *TeiHandlerSetUrl(char *site, char *key);
SxmlNode *TeiFindKeywords(char *scheme, char *type, char *qualifier, char *lang);
SxmlNode *TeiKeywordsPutTerm(char *scheme, char *type, char*qualifier, char *lang, char *term);
SxmlNode *TeiKeywordsPutTeiKeyword(SxmlNode *kw);
char     *TeiHandlerLang(char *lang);
SxmlNode *TeiSetDatePublication(char *date);
SxmlNode *TeiSetBackListBibl();

char     *TeiGetIdnoRbid();
char     *TeiGetIdnoDate();
char     *TeiGetTitle (char *lang, char *level);
char     *TeiGetFirstAuthor();
SxmlNode *TeiKeywordsGetFirstTermByValue(char *v1);
SxmlNode *TeiSetIdnoRbid(char *base, char *identifier);
SxmlNode *TeiSetBack();
SxmlNode* TeiAuthorNameFromFirstLast(char *first, char *last);
SxmlNode *TeiFindPublicationStmt(SxmlNode *teiRoot);
SxmlNode *TeiHandlerHasExplorSource(char *codeSource);

/* Functions in TeiAffiliation.c   */
SxmlNode *TeiAffiliationSetCountry(SxmlNode *affiliation, char *country);
SxmlNode *TeiAffiliationUpdateFromOrgLab(SxmlNode *affiliation, SxmlNode *loboNode);
/* Functions in TeiAuthor.c   */
SxmlNode *TeiAuthorNameFromFirstLastNames(SxmlNode *firstName, SxmlNode *lastName);
SxmlNode *TeiAuthorNameFromFirstLastNamesStr(char *firstNameStr, char *lastNameStr);
SxmlNode* TeiAuthorNameFromBibString(char *inputName); /* sth like Martin, P. */
SxmlNode* TeiAuthorNameFromNameString(char *inputName);
/* Functions in TeiDoubles.c   */
SxmlNode *TeiSetDoubleKey(SxmlNode *teiRoot);
char     *TeiBuildDoubleKey(SxmlNode *teiRoot, SxmlNode *publicationStmt);
SxmlNode *TeiDoublesBuildRecordFromList(SxmlNode *listDoubles);
#endif /* _DILIB_TEI_HANDLER_H */


