utf.h - sbase - suckless unix tools
(HTM) git clone git://git.suckless.org/sbase
(DIR) Log
(DIR) Files
(DIR) Refs
(DIR) README
(DIR) LICENSE
---
utf.h (2498B)
---
1 /* MIT/X Consortium Copyright (c) 2012 Connor Lane Smith <cls@lubutu.com>
2 *
3 * Permission is hereby granted, free of charge, to any person obtaining a
4 * copy of this software and associated documentation files (the "Software"),
5 * to deal in the Software without restriction, including without limitation
6 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
7 * and/or sell copies of the Software, and to permit persons to whom the
8 * Software is furnished to do so, subject to the following conditions:
9 *
10 * The above copyright notice and this permission notice shall be included in
11 * all copies or substantial portions of the Software.
12 *
13 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
16 * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
18 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
19 * DEALINGS IN THE SOFTWARE.
20 */
21 #include <stdio.h>
22
23 typedef int Rune;
24
25 enum {
26 UTFmax = 6, /* maximum bytes per rune */
27 Runeself = 0x80, /* rune and utf are equal (<) */
28 Runeerror = 0xFFFD, /* decoding error in utf */
29 Runemax = 0x10FFFF /* maximum rune value */
30 };
31
32 int runetochar(char *, const Rune *);
33 int chartorune(Rune *, const char *);
34 int charntorune(Rune *, const char *, size_t);
35 int runelen(Rune);
36 size_t runenlen(const Rune *, size_t);
37 int fullrune(const char *, size_t);
38 char *utfecpy(char *, char *, const char *);
39 size_t utflen(const char *);
40 size_t utfnlen(const char *, size_t);
41 size_t utfmemlen(const char *, size_t);
42 char *utfrune(const char *, Rune);
43 char *utfrrune(const char *, Rune);
44 char *utfutf(const char *, const char *);
45
46 int isalnumrune(Rune);
47 int isalpharune(Rune);
48 int isblankrune(Rune);
49 int iscntrlrune(Rune);
50 int isdigitrune(Rune);
51 int isgraphrune(Rune);
52 int islowerrune(Rune);
53 int isprintrune(Rune);
54 int ispunctrune(Rune);
55 int isspacerune(Rune);
56 int istitlerune(Rune);
57 int isupperrune(Rune);
58 int isxdigitrune(Rune);
59
60 Rune tolowerrune(Rune);
61 Rune toupperrune(Rune);
62
63 size_t utftorunestr(const char *, Rune *);
64 size_t utfntorunestr(const char *, size_t, Rune *);
65
66 int fgetrune(Rune *, FILE *);
67 int efgetrune(Rune *, FILE *, const char *);
68 int fputrune(const Rune *, FILE *);
69 int efputrune(const Rune *, FILE *, const char *);