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