]> git.lizzy.rs Git - plan9front.git/blob - sys/include/ape/utf.h
dpost prologue: update /radicalex to fix square displacement (thanks umbraticus and...
[plan9front.git] / sys / include / ape / utf.h
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