Introduction
Introduction Statistics Contact Development Disclaimer Help
grapheme_encode_utf8.sh - libgrapheme - unicode string library
git clone git://git.suckless.org/libgrapheme
Log
Files
Refs
README
LICENSE
---
grapheme_encode_utf8.sh (1915B)
---
1 cat << EOF
2 .Dd ${MAN_DATE}
3 .Dt GRAPHEME_ENCODE_UTF8 3
4 .Os suckless.org
5 .Sh NAME
6 .Nm grapheme_encode_utf8
7 .Nd encode codepoint into UTF-8 string
8 .Sh SYNOPSIS
9 .In grapheme.h
10 .Ft size_t
11 .Fn grapheme_encode_utf8 "uint_least32_t cp" "char *str" "size_t len"
12 .Sh DESCRIPTION
13 The
14 .Fn grapheme_encode_utf8
15 function encodes the codepoint
16 .Va cp
17 into a UTF-8-string.
18 If
19 .Va str
20 is not
21 .Dv NULL
22 and
23 .Va len
24 is large enough it writes the UTF-8-string to the memory pointed to by
25 .Va str .
26 Otherwise no data is written.
27 .Sh RETURN VALUES
28 The
29 .Fn grapheme_encode_utf8
30 function returns the length (in bytes) of the UTF-8-string resulting
31 from encoding
32 .Va cp ,
33 even if
34 .Va len
35 is not large enough or
36 .Va str
37 is
38 .Dv NULL .
39 .Sh EXAMPLES
40 .Bd -literal
41 /* cc (-static) -o example example.c -lgrapheme */
42 #include <grapheme.h>
43 #include <stddef.h>
44 #include <stdlib.h>
45
46 size_t
47 cps_to_utf8(const uint_least32_t *cp, size_t cplen, char *str, size_t le…
48 {
49 size_t i, off, ret;
50
51 for (i = 0, off = 0; i < cplen; i++, off += ret) {
52 if ((ret = grapheme_encode_utf8(cp[i], str + off,
53 len - off)) > (len - off…
54 /* buffer too small */
55 break;
56 }
57 }
58
59 return off;
60 }
61
62 size_t
63 cps_bytelen(const uint_least32_t *cp, size_t cplen)
64 {
65 size_t i, len;
66
67 for (i = 0, len = 0; i < cplen; i++) {
68 len += grapheme_encode_utf8(cp[i], NULL, 0);
69 }
70
71 return len;
72 }
73
74 char *
75 cps_to_utf8_alloc(const uint_least32_t *cp, size_t cplen)
76 {
77 char *str;
78 size_t len, i, ret, off;
79
80 len = cps_bytelen(cp, cplen);
81
82 if (!(str = malloc(len))) {
83 return NULL;
84 }
85
86 for (i = 0, off = 0; i < cplen; i++, off += ret) {
87 if ((ret = grapheme_encode_utf8(cp[i], str + off,
88 len - off)) > (len - off…
89 /* buffer too small */
90 break;
91 }
92 }
93 str[off] = '\\\\0';
94
95 return str;
96 }
97 .Ed
98 .Sh SEE ALSO
99 .Xr grapheme_decode_utf8 3 ,
100 .Xr libgrapheme 7
101 .Sh AUTHORS
102 .An Laslo Hunhold Aq Mt [email protected]
103 EOF
You are viewing proxied material from suckless.org. The copyright of proxied material belongs to its original authors. Any comments or complaints in relation to proxied material should be directed to the original authors of the content concerned. Please see the disclaimer for more details.