1 #ifndef _UTFH_ 2 #define _UTFH_ 1 3 4 typedef unsigned int Rune; /* 32 bits */ 5 6 enum 7 { 8 UTFmax = 4, /* 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 = 0xFFFD, /* decoding error in UTF */ 12 Runemax = 0x10FFFF, /* 21-bit rune */ 13 Runemask = 0x1FFFFF, /* bits used by runes (see grep) */ 14 }; 15 16 /* 17 * rune routines 18 */ 19 extern int runetochar(char*, Rune*); 20 extern int chartorune(Rune*, char*); 21 extern int runelen(long); 22 extern int runenlen(Rune*, int); 23 extern int fullrune(char*, int); 24 extern int utflen(char*); 25 extern int utfnlen(char*, long); 26 extern char* utfrune(char*, long); 27 extern char* utfrrune(char*, long); 28 extern char* utfutf(char*, char*); 29 extern char* utfecpy(char*, char*, char*); 30 31 extern Rune* runestrcat(Rune*, Rune*); 32 extern Rune* runestrchr(Rune*, Rune); 33 extern int runestrcmp(Rune*, Rune*); 34 extern Rune* runestrcpy(Rune*, Rune*); 35 extern Rune* runestrncpy(Rune*, Rune*, long); 36 extern Rune* runestrecpy(Rune*, Rune*, Rune*); 37 extern Rune* runestrdup(Rune*); 38 extern Rune* runestrncat(Rune*, Rune*, long); 39 extern int runestrncmp(Rune*, Rune*, long); 40 extern Rune* runestrrchr(Rune*, Rune); 41 extern long runestrlen(Rune*); 42 extern Rune* runestrstr(Rune*, Rune*); 43 44 extern Rune tolowerrune(Rune); 45 extern Rune totitlerune(Rune); 46 extern Rune toupperrune(Rune); 47 extern int isalpharune(Rune); 48 extern int islowerrune(Rune); 49 extern int isspacerune(Rune); 50 extern int istitlerune(Rune); 51 extern int isupperrune(Rune); 52 53 #endif 54