/*   -*- coding: utf-8 -*-  */
#ifndef _UTF8_TEXT_H_
#define _UTF8_TEXT_H_

#include "Buffer.h"
#include "StrDict.h"
#include "Utf8Converter.h"

char *Utf8BufferCharCat(Buffer *b1, char *s1, char **s2);
char *Utf8IsCharAlpha(char *s1);
char *Utf8GetAlphaString(char *s1, char **s2, int mode);
int Utf8Length(char *s1);
char *Utf8JumpChar(char *s1);

struct Utf8TextIterator_struct
{
  Buffer *buffer;
  char   *string;
};

typedef struct Utf8TextIterator_struct Utf8TextIterator;

Utf8TextIterator* Utf8TextIteratorCreate();
Utf8TextIterator *Utf8TextIteratorInit(Utf8TextIterator *i1, char *s1);

/*  Dans Utf8SplitText  */

struct Utf8TextSplitEngine_struct
{
  int            transMode;   /* 0 no conversion */
  char          *toParse;
  int            minLenght;
  Utf8Converter *converter;
  StrDict       *stopWordDict;
  Buffer        *bufPath;
};

typedef struct  Utf8TextSplitEngine_struct  Utf8TextSplitEngine;

Utf8TextSplitEngine *Utf8TextSplitEngineCreate();
char *Utf8SplitGetStringItem(Utf8TextSplitEngine *engine);
Utf8TextSplitEngine *Utf8SplitEngineSetText(Utf8TextSplitEngine *engine, char *str);
Utf8TextSplitEngine *Utf8SplitEngineSetMinLenght(Utf8TextSplitEngine *engine, int lenght);
Utf8TextSplitEngine *Utf8SplitEngineSetTransMode(Utf8TextSplitEngine *engine, int mode);
Utf8TextSplitEngine *Utf8SplitEngineSetStopWordDict(Utf8TextSplitEngine *engine, char *envVar, char *filePath);

/*          in Utf8Lang.c  */

extern StrDict *Utf8LangEngFreDict;

StrDict *Utf8LangJoinProfile(char *f1, char *f2);
int      Utf8LangEvalEngFre(char *text);  /* returns score > 0 if eng */

#endif  /* _UTF8_TEXT_H_  */
