diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/htscharset.c | 14 | ||||
-rw-r--r-- | src/htscharset.h | 7 |
2 files changed, 21 insertions, 0 deletions
diff --git a/src/htscharset.c b/src/htscharset.c index 1de7c61..932c01e 100644 --- a/src/htscharset.c +++ b/src/htscharset.c @@ -1156,6 +1156,20 @@ char *hts_convertUCS4StringToUTF8(const hts_UCS4 *s, size_t nChars) { return dest; } +size_t hts_writeUTF8(hts_UCS4 uc, char *dest, size_t size) { + size_t offs = 0; +#define EM(C) do { \ + if (offs + 1 < size) { \ + dest[offs++] = C; \ + } else { \ + return 0; \ + } \ +} while(0) + EMIT_UNICODE(uc, EM); +#undef EM + return offs; +} + size_t hts_stringLengthUCS4(const hts_UCS4 *s) { size_t i; for(i = 0 ; s[i] != 0 ; i++) ; diff --git a/src/htscharset.h b/src/htscharset.h index 04bb6c1..bb7f3da 100644 --- a/src/htscharset.h +++ b/src/htscharset.h @@ -147,6 +147,13 @@ extern char *hts_convertUCS2StringToUTF8(LPWSTR woutput, int wsize); **/ extern char *hts_convertStringSystemToUTF8(const char *s, size_t size); +/** + * Write the Unicode character 'uc' in 'dest' of maximum size 'size'. + * Return the number of bytes written, or 0 upon error. + * Note: does not \0-terminate the destination buffer. + **/ +extern size_t hts_writeUTF8(hts_UCS4 uc, char *dest, size_t size); + #endif #endif |