From 84393cd974926732d8916ade7acf62979478deb1 Mon Sep 17 00:00:00 2001 From: Simon Cozens Date: Fri, 23 Jun 2000 11:05:40 +0000 Subject: Remove tr///CU (the feature is to be obsoleted by better interfaces). Subject: [PATCH] Eliminate tr///[CU][CU] Message-ID: p4raw-id: //depot/cfgperl@6221 --- utf8.c | 66 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 66 insertions(+) (limited to 'utf8.c') diff --git a/utf8.c b/utf8.c index 76eb932f2d..b570b12ae3 100644 --- a/utf8.c +++ b/utf8.c @@ -222,6 +222,72 @@ Perl_utf8_hop(pTHX_ U8 *s, I32 off) return s; } +/* +=for apidoc utf8_to_bytes + +Converts a string C of length C from UTF8 into ASCII encoding. +Unlike C, this over-writes the original string. + +=cut +*/ + +U8 * +Perl_utf8_to_bytes(pTHX_ U8* s, STRLEN len) +{ + dTHR; + U8 *send; + U8 *d; + U8 *save; + + send = s + len; + d = save = s; + while (s < send) { + if (*s < 0x80) + *d++ = *s++; + else { + I32 ulen; + UV uv = utf8_to_uv(s, &ulen); + s += ulen; + *d++ = (U8)uv; + } + } + *d = '\0'; + return save; +} + +/* +=for apidoc bytes_to_utf8 + +Converts a string C of length C from ASCII into UTF8 encoding. +Returns a pointer to the newly-created string. + +*/ + +U8* +Perl_bytes_to_utf8(pTHX_ U8* s, STRLEN len) +{ + dTHR; + U8 *send; + U8 *d; + U8 *dst; + send = s + len; + + Newz(801, d, len * 2 + 1, U8); + dst = d; + + while (s < send) { + if (*s < 0x80) + *d++ = *s++; + else { + UV uv = *s++; + *d++ = (( uv >> 6) | 0xc0); + *d++ = (( uv & 0x3f) | 0x80); + } + } + *d = '\0'; + return dst; +} + /* XXX NOTHING CALLS THE FOLLOWING TWO ROUTINES YET!!! */ /* * Convert native or reversed UTF-16 to UTF-8. -- cgit v1.2.1