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