xref: /plan9/sys/src/cmd/unix/drawterm/libc/utf.h (revision 8ccd4a6360d974db7bd7bbd4f37e7018419ea908)
1*8ccd4a63SDavid du Colombier #ifndef _UTFH_
2*8ccd4a63SDavid du Colombier #define _UTFH_ 1
3*8ccd4a63SDavid du Colombier 
4*8ccd4a63SDavid du Colombier typedef unsigned short Rune;	/* 16 bits */
5*8ccd4a63SDavid du Colombier 
6*8ccd4a63SDavid du Colombier enum
7*8ccd4a63SDavid du Colombier {
8*8ccd4a63SDavid du Colombier 	UTFmax		= 3,		/* maximum bytes per rune */
9*8ccd4a63SDavid du Colombier 	Runesync	= 0x80,		/* cannot represent part of a UTF sequence (<) */
10*8ccd4a63SDavid du Colombier 	Runeself	= 0x80,		/* rune and UTF sequences are the same (<) */
11*8ccd4a63SDavid du Colombier 	Runeerror	= 0x80,		/* decoding error in UTF */
12*8ccd4a63SDavid du Colombier };
13*8ccd4a63SDavid du Colombier 
14*8ccd4a63SDavid du Colombier /*
15*8ccd4a63SDavid du Colombier  * rune routines
16*8ccd4a63SDavid du Colombier  */
17*8ccd4a63SDavid du Colombier extern	int	runetochar(char*, Rune*);
18*8ccd4a63SDavid du Colombier extern	int	chartorune(Rune*, char*);
19*8ccd4a63SDavid du Colombier extern	int	runelen(long);
20*8ccd4a63SDavid du Colombier extern	int	runenlen(Rune*, int);
21*8ccd4a63SDavid du Colombier extern	int	fullrune(char*, int);
22*8ccd4a63SDavid du Colombier extern	int	utflen(char*);
23*8ccd4a63SDavid du Colombier extern	int	utfnlen(char*, long);
24*8ccd4a63SDavid du Colombier extern	char*	utfrune(char*, long);
25*8ccd4a63SDavid du Colombier extern	char*	utfrrune(char*, long);
26*8ccd4a63SDavid du Colombier extern	char*	utfutf(char*, char*);
27*8ccd4a63SDavid du Colombier extern	char*	utfecpy(char*, char*, char*);
28*8ccd4a63SDavid du Colombier 
29*8ccd4a63SDavid du Colombier extern	Rune*	runestrcat(Rune*, Rune*);
30*8ccd4a63SDavid du Colombier extern	Rune*	runestrchr(Rune*, Rune);
31*8ccd4a63SDavid du Colombier extern	int	runestrcmp(Rune*, Rune*);
32*8ccd4a63SDavid du Colombier extern	Rune*	runestrcpy(Rune*, Rune*);
33*8ccd4a63SDavid du Colombier extern	Rune*	runestrncpy(Rune*, Rune*, long);
34*8ccd4a63SDavid du Colombier extern	Rune*	runestrecpy(Rune*, Rune*, Rune*);
35*8ccd4a63SDavid du Colombier extern	Rune*	runestrdup(Rune*);
36*8ccd4a63SDavid du Colombier extern	Rune*	runestrncat(Rune*, Rune*, long);
37*8ccd4a63SDavid du Colombier extern	int	runestrncmp(Rune*, Rune*, long);
38*8ccd4a63SDavid du Colombier extern	Rune*	runestrrchr(Rune*, Rune);
39*8ccd4a63SDavid du Colombier extern	long	runestrlen(Rune*);
40*8ccd4a63SDavid du Colombier extern	Rune*	runestrstr(Rune*, Rune*);
41*8ccd4a63SDavid du Colombier 
42*8ccd4a63SDavid du Colombier extern	Rune	tolowerrune(Rune);
43*8ccd4a63SDavid du Colombier extern	Rune	totitlerune(Rune);
44*8ccd4a63SDavid du Colombier extern	Rune	toupperrune(Rune);
45*8ccd4a63SDavid du Colombier extern	int	isalpharune(Rune);
46*8ccd4a63SDavid du Colombier extern	int	islowerrune(Rune);
47*8ccd4a63SDavid du Colombier extern	int	isspacerune(Rune);
48*8ccd4a63SDavid du Colombier extern	int	istitlerune(Rune);
49*8ccd4a63SDavid du Colombier extern	int	isupperrune(Rune);
50*8ccd4a63SDavid du Colombier 
51*8ccd4a63SDavid du Colombier #endif
52