/*
* utext.h -- Uyghur Text Processing Library, C version, header file.
* $Author: Muhammad Abdulla
* $version: 1.1
* License: GPL
*/
#ifndef UTEXT_INCLUDED
#define UTEXT_INCLUDED
#define U UText
typedef enum {false, true} bool ;
typedef struct U *U ;
// use any one of the following for initialization
extern U new_utext ( const char *ukystr ) ; //input is in UKY
extern U new_u8text ( const char *utf8str ) ; //input is in UTF-8 format (basic range)
extern U new_uwtext ( const wchar_t *wcstr, int len ) ;//input is wide char array (UTF-32)
// changing returned arrays DO NOT change members of u of type U
extern char *getUstr ( U u ) ; // get UKY string
extern char *getU8str ( U u ) ; // get unicode string in UTF-8
extern char *getU8PFstr ( U u ) ; // get unicode string in UTF-8 (in presentation form)
// get unicode string as wide char array, fill len with length of that array
extern wchar_t *getUwstr ( U u, int *len ) ;
// get unicode string in UTF-8, but in presentation form representation
extern wchar_t *getUwPFstr ( U u, int *len ) ;
// get ascii format for HTML rendering, e.g., for Uyghur letter BEE singular
// returns "ب" if useBasic is TRUE and "ﺏ" otherwise
extern char *getInAscii ( U u, bool useBasic ) ;
// Use these functions to change members of u
extern void setUstr ( U u, const char *ukystr ) ;
extern void setU8str ( U u, const char *utf8str ) ;
extern void setUwstr ( U u, const wchar_t *wcstr, int len ) ;
// temporary
extern char *getUkystr ( U u ) ;
extern int ulength ( U u ) ; // length of UKY string
extern int u8length ( U u ) ; // length of UTF-8 string
extern int uwlength ( U u ) ; // length of wide char string
// clean up
extern void utext_destroy ( U u ) ;
#undef U
#endif // UTEXT_INCLUDED