GRAPHEME_ENCODE_UTF8(3) - Library Functions Manual
NAME
grapheme_encode_utf8 - encode codepoint into UTF-8 string
SYNOPSIS
#include <grapheme.h>
size_t
grapheme_encode_utf8(uint_least32_t cp, char *str, size_t len);
DESCRIPTION
The
grapheme_encode_utf8()
function encodes the codepoint
cp
into a UTF-8-string.
If
str
is not
NULL
and
len
is large enough it writes the UTF-8-string to the memory pointed to by
str.
Otherwise no data is written.
RETURN VALUES
The
grapheme_encode_utf8()
function returns the length (in bytes) of the UTF-8-string resulting
from encoding
cp,
even if
len
is not large enough or
str
is
NULL
.
EXAMPLES
/* cc (-static) -o example example.c -lgrapheme */
#include <grapheme.h>
#include <stddef.h>
#include <stdlib.h>
size_t
cps_to_utf8(const uint_least32_t *cp, size_t cplen, char *str, size_t len)
{
size_t i, off, ret;
for (i = 0, off = 0; i < cplen; i++, off += ret) {
if ((ret = grapheme_encode_utf8(cp[i], str + off,
len - off)) > (len - off)) {
/* buffer too small */
break;
}
}
return off;
}
size_t
cps_bytelen(const uint_least32_t *cp, size_t cplen)
{
size_t i, len;
for (i = 0, len = 0; i < cplen; i++) {
len += grapheme_encode_utf8(cp[i], NULL, 0);
}
return len;
}
char *
cps_to_utf8_alloc(const uint_least32_t *cp, size_t cplen)
{
char *str;
size_t len, i, ret, off;
len = cps_bytelen(cp, cplen);
if (!(str = malloc(len))) {
return NULL;
}
for (i = 0, off = 0; i < cplen; i++, off += ret) {
if ((ret = grapheme_encode_utf8(cp[i], str + off,
len - off)) > (len - off)) {
/* buffer too small */
break;
}
}
str[off] = '\0';
return str;
}
SEE ALSO
grapheme_decode_utf8(3), libgrapheme(7)
AUTHORS
Laslo Hunhold (dev@frign.de)
suckless.org - 2022-10-06