xref: /plan9/sys/src/cmd/unix/drawterm/libc/utf.h (revision a1216cc64119db675aa140f55fbd73eb2414b763)
18ccd4a63SDavid du Colombier #ifndef _UTFH_
28ccd4a63SDavid du Colombier #define _UTFH_ 1
38ccd4a63SDavid du Colombier 
4*a1216cc6SDavid du Colombier typedef unsigned int Rune;	/* 32 bits */
58ccd4a63SDavid du Colombier 
68ccd4a63SDavid du Colombier enum
78ccd4a63SDavid du Colombier {
8*a1216cc6SDavid du Colombier 	UTFmax		= 4,		/* maximum bytes per rune */
98ccd4a63SDavid du Colombier 	Runesync	= 0x80,		/* cannot represent part of a UTF sequence (<) */
108ccd4a63SDavid du Colombier 	Runeself	= 0x80,		/* rune and UTF sequences are the same (<) */
11*a1216cc6SDavid du Colombier 	Runeerror	= 0xFFFD,	/* decoding error in UTF */
12*a1216cc6SDavid du Colombier 	Runemax		= 0x10FFFF,	/* 21-bit rune */
13*a1216cc6SDavid du Colombier 	Runemask	= 0x1FFFFF,	/* bits used by runes (see grep) */
148ccd4a63SDavid du Colombier };
158ccd4a63SDavid du Colombier 
168ccd4a63SDavid du Colombier /*
178ccd4a63SDavid du Colombier  * rune routines
188ccd4a63SDavid du Colombier  */
198ccd4a63SDavid du Colombier extern	int	runetochar(char*, Rune*);
208ccd4a63SDavid du Colombier extern	int	chartorune(Rune*, char*);
218ccd4a63SDavid du Colombier extern	int	runelen(long);
228ccd4a63SDavid du Colombier extern	int	runenlen(Rune*, int);
238ccd4a63SDavid du Colombier extern	int	fullrune(char*, int);
248ccd4a63SDavid du Colombier extern	int	utflen(char*);
258ccd4a63SDavid du Colombier extern	int	utfnlen(char*, long);
268ccd4a63SDavid du Colombier extern	char*	utfrune(char*, long);
278ccd4a63SDavid du Colombier extern	char*	utfrrune(char*, long);
288ccd4a63SDavid du Colombier extern	char*	utfutf(char*, char*);
298ccd4a63SDavid du Colombier extern	char*	utfecpy(char*, char*, char*);
308ccd4a63SDavid du Colombier 
318ccd4a63SDavid du Colombier extern	Rune*	runestrcat(Rune*, Rune*);
328ccd4a63SDavid du Colombier extern	Rune*	runestrchr(Rune*, Rune);
338ccd4a63SDavid du Colombier extern	int	runestrcmp(Rune*, Rune*);
348ccd4a63SDavid du Colombier extern	Rune*	runestrcpy(Rune*, Rune*);
358ccd4a63SDavid du Colombier extern	Rune*	runestrncpy(Rune*, Rune*, long);
368ccd4a63SDavid du Colombier extern	Rune*	runestrecpy(Rune*, Rune*, Rune*);
378ccd4a63SDavid du Colombier extern	Rune*	runestrdup(Rune*);
388ccd4a63SDavid du Colombier extern	Rune*	runestrncat(Rune*, Rune*, long);
398ccd4a63SDavid du Colombier extern	int	runestrncmp(Rune*, Rune*, long);
408ccd4a63SDavid du Colombier extern	Rune*	runestrrchr(Rune*, Rune);
418ccd4a63SDavid du Colombier extern	long	runestrlen(Rune*);
428ccd4a63SDavid du Colombier extern	Rune*	runestrstr(Rune*, Rune*);
438ccd4a63SDavid du Colombier 
448ccd4a63SDavid du Colombier extern	Rune	tolowerrune(Rune);
458ccd4a63SDavid du Colombier extern	Rune	totitlerune(Rune);
468ccd4a63SDavid du Colombier extern	Rune	toupperrune(Rune);
478ccd4a63SDavid du Colombier extern	int	isalpharune(Rune);
488ccd4a63SDavid du Colombier extern	int	islowerrune(Rune);
498ccd4a63SDavid du Colombier extern	int	isspacerune(Rune);
508ccd4a63SDavid du Colombier extern	int	istitlerune(Rune);
518ccd4a63SDavid du Colombier extern	int	isupperrune(Rune);
528ccd4a63SDavid du Colombier 
538ccd4a63SDavid du Colombier #endif
54