xref: /plan9/sys/include/ape/utf.h (revision e94a8e9b44de11e62dfd4566245554f8bf8e0295)
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 int Rune;	/* 32 bits */
11 
12 enum
13 {
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 */
19 };
20 
21 /*
22  * rune routines
23  */
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*);
35 
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*);
48 
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);
57 
58 #if defined(__cplusplus)
59 }
60 #endif
61 #endif
62