diff options
author | Nicholas Clark <nick@ccl4.org> | 2005-10-31 13:22:01 +0000 |
---|---|---|
committer | Nicholas Clark <nick@ccl4.org> | 2005-10-31 13:22:01 +0000 |
commit | 0f830e0b62c9aecd65b9af85ec46817dc940d8af (patch) | |
tree | 69f119a6d23332a4e94709dd740156e68ff2ce68 /utf8.c | |
parent | 59abd33597c479b9e5620fa06c6c6a9f2917f858 (diff) | |
download | perl-0f830e0b62c9aecd65b9af85ec46817dc940d8af.tar.gz |
uvchr_to_utf8() and utf8n_to_uvchr() are mathoms on ASCII based
systems, and not on EBCDIC, so some more thinking is going to be
needed here.
p4raw-id: //depot/perl@25921
Diffstat (limited to 'utf8.c')
-rw-r--r-- | utf8.c | 52 |
1 files changed, 52 insertions, 0 deletions
@@ -1753,6 +1753,33 @@ Perl_swash_fetch(pTHX_ SV *sv, const U8 *ptr, bool do_utf8) return 0; } +/* +=for apidoc A|U8 *|uvchr_to_utf8|U8 *d|UV uv + +Adds the UTF-8 representation of the Native codepoint C<uv> to the end +of the string C<d>; C<d> should be have at least C<UTF8_MAXBYTES+1> free +bytes available. The return value is the pointer to the byte after the +end of the new character. In other words, + + d = uvchr_to_utf8(d, uv); + +is the recommended wide native character-aware way of saying + + *(d++) = uv; + +=cut +*/ + +/* On ASCII machines this is normally a macro but we want a + real function in case XS code wants it +*/ +#undef Perl_uvchr_to_utf8 +U8 * +Perl_uvchr_to_utf8(pTHX_ U8 *d, UV uv) +{ + return Perl_uvuni_to_utf8_flags(aTHX_ d, NATIVE_TO_UNI(uv), 0); +} + U8 * Perl_uvchr_to_utf8_flags(pTHX_ U8 *d, UV uv, UV flags) { @@ -1760,6 +1787,31 @@ Perl_uvchr_to_utf8_flags(pTHX_ U8 *d, UV uv, UV flags) } /* +=for apidoc A|UV|utf8n_to_uvchr|U8 *s|STRLEN curlen|STRLEN *retlen|U32 +flags + +Returns the native character value of the first character in the string +C<s> +which is assumed to be in UTF-8 encoding; C<retlen> will be set to the +length, in bytes, of that character. + +Allows length and flags to be passed to low level routine. + +=cut +*/ +/* On ASCII machines this is normally a macro but we want + a real function in case XS code wants it +*/ +#undef Perl_utf8n_to_uvchr +UV +Perl_utf8n_to_uvchr(pTHX_ const U8 *s, STRLEN curlen, STRLEN *retlen, +U32 flags) +{ + const UV uv = Perl_utf8n_to_uvuni(aTHX_ s, curlen, retlen, flags); + return UNI_TO_NATIVE(uv); +} + +/* =for apidoc A|char *|pv_uni_display|SV *dsv|U8 *spv|STRLEN len|STRLEN pvlim|UV flags Build to the scalar dsv a displayable version of the string spv, |