/*
 *  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 "&#1576;" if useBasic is TRUE and "&#65167;" 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
