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

/***********************************************************************
*
*        Module   : Utf8
*        Fichier  : Utf8Converter.h
*        Auteur   : J. DUCLOY
*        Date     : octobre 2012
*
************************************************************************/
#ifndef  _UTF8_CONVERTER_H
#define  _UTF8_CONVERTER_H

#include "Buffer.h"

struct DilibUtf8Converter
{
  char* currentPosition;
  Buffer *targetBuf;
  char returnCode;
};

typedef struct DilibUtf8Converter Utf8Converter;

Utf8Converter *Utf8ConverterCreate();
Utf8Converter *Utf8ConverterSetString(Utf8Converter *, char *);

#define Utf8Lig(a1,A1,C1,s1,S1)  switch(mode)		      \
   {                                                          \
       case 'a':BufferStrcat(cv1->targetBuf,a1); break;       \
       case 'A':BufferStrcat(cv1->targetBuf,A1); break;       \
       case 'C':BufferStrcat(cv1->targetBuf,C1); break;     \
       case 's':BufferStrcat(cv1->targetBuf,s1); break;     \
       case 'S':BufferStrcat(cv1->targetBuf,S1); break;     \
    }                                                         \
  break;

#define Utf8VoyDiac(a1,A1,s1,S1)  switch(mode)		      \
   {                                                          \
       case 'a':BufferStrcat(cv1->targetBuf,a1); break;       \
       case 'A':BufferStrcat(cv1->targetBuf,A1); break;       \
       case 'C':BufferStrcat(cv1->targetBuf,S1); break;     \
       case 's':BufferStrcat(cv1->targetBuf,s1); break;     \
       case 'S':BufferStrcat(cv1->targetBuf,S1); break;     \
    }                                                         \
  break;

char *Utf8AlphaCharConvert (Utf8Converter *, int);
char *Utf8ConvertNameToWikiSort(Utf8Converter *cv1);
char *Utf8NameToWikiSort(char *s1);
char *Utf8ConvertNameToLower(Utf8Converter *cv1);
char *Utf8NameToLower(char *s1);
char *Utf8NameToInitial(char *s1);

char *Utf8ConvertStringToLower(Utf8Converter *cv1);
char *Utf8ConvertStringToSort(Utf8Converter *cv1);
char *Utf8StringToLower(char *s1);
char *Utf8StringToSort(char *s1);

char *Utf8ConverterJumpToAlpha (Utf8Converter *cv1);

#endif /*  _UTF8_CONVERTER_H */

