3 #pragma lib "/$M/lib/ape/libutf.a"
4 #pragma src "/sys/src/ape/lib/utf"
6 #if defined(__cplusplus)
10 typedef unsigned int Rune; /* 32 bits */
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 */
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*);
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*);
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);
58 #if defined(__cplusplus)