utf.h - sbase - suckless unix tools | |
git clone git://git.suckless.org/sbase | |
Log | |
Files | |
Refs | |
README | |
LICENSE | |
--- | |
utf.h (2498B) | |
--- | |
1 /* MIT/X Consortium Copyright (c) 2012 Connor Lane Smith <[email protected]> | |
2 * | |
3 * Permission is hereby granted, free of charge, to any person obtaining… | |
4 * copy of this software and associated documentation files (the "Softwa… | |
5 * to deal in the Software without restriction, including without limita… | |
6 * the rights to use, copy, modify, merge, publish, distribute, sublicen… | |
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 includ… | |
11 * all copies or substantial portions of the Software. | |
12 * | |
13 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRE… | |
14 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILI… | |
15 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SH… | |
16 * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR … | |
17 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISI… | |
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 *); |