1*8ccd4a63SDavid du Colombier #ifndef _UTFH_ 2*8ccd4a63SDavid du Colombier #define _UTFH_ 1 3*8ccd4a63SDavid du Colombier 4*8ccd4a63SDavid du Colombier typedef unsigned short Rune; /* 16 bits */ 5*8ccd4a63SDavid du Colombier 6*8ccd4a63SDavid du Colombier enum 7*8ccd4a63SDavid du Colombier { 8*8ccd4a63SDavid du Colombier UTFmax = 3, /* maximum bytes per rune */ 9*8ccd4a63SDavid du Colombier Runesync = 0x80, /* cannot represent part of a UTF sequence (<) */ 10*8ccd4a63SDavid du Colombier Runeself = 0x80, /* rune and UTF sequences are the same (<) */ 11*8ccd4a63SDavid du Colombier Runeerror = 0x80, /* decoding error in UTF */ 12*8ccd4a63SDavid du Colombier }; 13*8ccd4a63SDavid du Colombier 14*8ccd4a63SDavid du Colombier /* 15*8ccd4a63SDavid du Colombier * rune routines 16*8ccd4a63SDavid du Colombier */ 17*8ccd4a63SDavid du Colombier extern int runetochar(char*, Rune*); 18*8ccd4a63SDavid du Colombier extern int chartorune(Rune*, char*); 19*8ccd4a63SDavid du Colombier extern int runelen(long); 20*8ccd4a63SDavid du Colombier extern int runenlen(Rune*, int); 21*8ccd4a63SDavid du Colombier extern int fullrune(char*, int); 22*8ccd4a63SDavid du Colombier extern int utflen(char*); 23*8ccd4a63SDavid du Colombier extern int utfnlen(char*, long); 24*8ccd4a63SDavid du Colombier extern char* utfrune(char*, long); 25*8ccd4a63SDavid du Colombier extern char* utfrrune(char*, long); 26*8ccd4a63SDavid du Colombier extern char* utfutf(char*, char*); 27*8ccd4a63SDavid du Colombier extern char* utfecpy(char*, char*, char*); 28*8ccd4a63SDavid du Colombier 29*8ccd4a63SDavid du Colombier extern Rune* runestrcat(Rune*, Rune*); 30*8ccd4a63SDavid du Colombier extern Rune* runestrchr(Rune*, Rune); 31*8ccd4a63SDavid du Colombier extern int runestrcmp(Rune*, Rune*); 32*8ccd4a63SDavid du Colombier extern Rune* runestrcpy(Rune*, Rune*); 33*8ccd4a63SDavid du Colombier extern Rune* runestrncpy(Rune*, Rune*, long); 34*8ccd4a63SDavid du Colombier extern Rune* runestrecpy(Rune*, Rune*, Rune*); 35*8ccd4a63SDavid du Colombier extern Rune* runestrdup(Rune*); 36*8ccd4a63SDavid du Colombier extern Rune* runestrncat(Rune*, Rune*, long); 37*8ccd4a63SDavid du Colombier extern int runestrncmp(Rune*, Rune*, long); 38*8ccd4a63SDavid du Colombier extern Rune* runestrrchr(Rune*, Rune); 39*8ccd4a63SDavid du Colombier extern long runestrlen(Rune*); 40*8ccd4a63SDavid du Colombier extern Rune* runestrstr(Rune*, Rune*); 41*8ccd4a63SDavid du Colombier 42*8ccd4a63SDavid du Colombier extern Rune tolowerrune(Rune); 43*8ccd4a63SDavid du Colombier extern Rune totitlerune(Rune); 44*8ccd4a63SDavid du Colombier extern Rune toupperrune(Rune); 45*8ccd4a63SDavid du Colombier extern int isalpharune(Rune); 46*8ccd4a63SDavid du Colombier extern int islowerrune(Rune); 47*8ccd4a63SDavid du Colombier extern int isspacerune(Rune); 48*8ccd4a63SDavid du Colombier extern int istitlerune(Rune); 49*8ccd4a63SDavid du Colombier extern int isupperrune(Rune); 50*8ccd4a63SDavid du Colombier 51*8ccd4a63SDavid du Colombier #endif 52