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 short Rune; /* 16 bits */ 11 12 enum 13 { 14 UTFmax = 3, /* 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 = 0x80, /* decoding error in UTF */ 18 }; 19 20 /* 21 * rune routines 22 */ 23 extern int runetochar(char*, Rune*); 24 extern int chartorune(Rune*, char*); 25 extern int runelen(long); 26 extern int runenlen(Rune*, int); 27 extern int fullrune(char*, int); 28 extern int utflen(char*); 29 extern int utfnlen(char*, long); 30 extern char* utfrune(char*, long); 31 extern char* utfrrune(char*, long); 32 extern char* utfutf(char*, char*); 33 extern char* utfecpy(char*, char*, char*); 34 35 extern Rune* runestrcat(Rune*, Rune*); 36 extern Rune* runestrchr(Rune*, Rune); 37 extern int runestrcmp(Rune*, Rune*); 38 extern Rune* runestrcpy(Rune*, Rune*); 39 extern Rune* runestrncpy(Rune*, Rune*, long); 40 extern Rune* runestrecpy(Rune*, Rune*, Rune*); 41 extern Rune* runestrdup(Rune*); 42 extern Rune* runestrncat(Rune*, Rune*, long); 43 extern int runestrncmp(Rune*, Rune*, long); 44 extern Rune* runestrrchr(Rune*, Rune); 45 extern long runestrlen(Rune*); 46 extern Rune* runestrstr(Rune*, Rune*); 47 48 extern Rune tolowerrune(Rune); 49 extern Rune totitlerune(Rune); 50 extern Rune toupperrune(Rune); 51 extern int isalpharune(Rune); 52 extern int islowerrune(Rune); 53 extern int isspacerune(Rune); 54 extern int istitlerune(Rune); 55 extern int isupperrune(Rune); 56 57 #if defined(__cplusplus) 58 } 59 #endif 60 #endif 61