xref: /plan9/sys/include/ape/utf.h (revision ec59a3ddbfceee0efe34584c2c9981a5e5ff1ec4)
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 short Rune;	/* 16 bits */
11 
12 enum
13 {
14 	UTFmax		= 3,		/* 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	= 0x80,		/* decoding error in UTF */
18 };
19 
20 /*
21  * rune routines
22  */
23 extern	int	runetochar(char*, Rune*);
24 extern	int	chartorune(Rune*, char*);
25 extern	int	runelen(long);
26 extern	int	runenlen(Rune*, int);
27 extern	int	fullrune(char*, int);
28 extern	int	utflen(char*);
29 extern	int	utfnlen(char*, long);
30 extern	char*	utfrune(char*, long);
31 extern	char*	utfrrune(char*, long);
32 extern	char*	utfutf(char*, char*);
33 extern	char*	utfecpy(char*, char*, char*);
34 
35 extern	Rune*	runestrcat(Rune*, Rune*);
36 extern	Rune*	runestrchr(Rune*, Rune);
37 extern	int	runestrcmp(Rune*, Rune*);
38 extern	Rune*	runestrcpy(Rune*, Rune*);
39 extern	Rune*	runestrncpy(Rune*, Rune*, long);
40 extern	Rune*	runestrecpy(Rune*, Rune*, Rune*);
41 extern	Rune*	runestrdup(Rune*);
42 extern	Rune*	runestrncat(Rune*, Rune*, long);
43 extern	int	runestrncmp(Rune*, Rune*, long);
44 extern	Rune*	runestrrchr(Rune*, Rune);
45 extern	long	runestrlen(Rune*);
46 extern	Rune*	runestrstr(Rune*, Rune*);
47 
48 extern	Rune	tolowerrune(Rune);
49 extern	Rune	totitlerune(Rune);
50 extern	Rune	toupperrune(Rune);
51 extern	int	isalpharune(Rune);
52 extern	int	islowerrune(Rune);
53 extern	int	isspacerune(Rune);
54 extern	int	istitlerune(Rune);
55 extern	int	isupperrune(Rune);
56 
57 #if defined(__cplusplus)
58 }
59 #endif
60 #endif
61