xref: /plan9/sys/src/cmd/unix/drawterm/libc/utf.h (revision a1216cc64119db675aa140f55fbd73eb2414b763)
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