This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Update Unicode-Collate to CPAN version 1.03
authorChris 'BinGOs' Williams <chris@bingosnet.co.uk>
Sun, 1 Dec 2013 15:21:38 +0000 (15:21 +0000)
committerChris 'BinGOs' Williams <chris@bingosnet.co.uk>
Sun, 1 Dec 2013 15:21:38 +0000 (15:21 +0000)
  [DELTA]

1.03  Sun Dec  1 21:45:46 2013
    - XS: now unpack_U() uses unpack('U*') in pure perl.
      avoid XS for the internal "utf8" encoding of perl.

Porting/Maintainers.pl
cpan/Unicode-Collate/Collate.pm
cpan/Unicode-Collate/Collate.xs

index 0726cc7..bdbfbfb 100755 (executable)
@@ -1238,7 +1238,7 @@ use File::Glob qw(:case);
     },
 
     'Unicode::Collate' => {
-        'DISTRIBUTION' => 'SADAHIRO/Unicode-Collate-1.02.tar.gz',
+        'DISTRIBUTION' => 'SADAHIRO/Unicode-Collate-1.03.tar.gz',
         'FILES'        => q[cpan/Unicode-Collate],
         'EXCLUDED'     => [
             qr{N$},
index f72a71d..7eda04b 100644 (file)
@@ -17,7 +17,7 @@ use File::Spec;
 
 no warnings 'utf8';
 
-our $VERSION = '1.02';
+our $VERSION = '1.03';
 our $PACKAGE = __PACKAGE__;
 
 ### begin XS only ###
@@ -99,6 +99,10 @@ sub pack_U {
     return pack('U*', @_);
 }
 
+sub unpack_U {
+    return unpack('U*', shift(@_).pack('U*'));
+}
+
 ######
 
 my (%VariableOK);
index c339cc7..2c0adf8 100644 (file)
 /* This file is prepared by mkheader */
 #include "ucatbl.h"
 
-/* Perl 5.6.1 ? */
-#ifndef utf8n_to_uvuni
-#define utf8n_to_uvuni  utf8_to_uv
-#endif /* utf8n_to_uvuni */
-
-/* UTF8_ALLOW_BOM is used before Perl 5.8.0 */
-#ifndef UTF8_ALLOW_BOM
-#define UTF8_ALLOW_BOM  (0)
-#endif /* UTF8_ALLOW_BOM */
-
-#ifndef UTF8_ALLOW_SURROGATE
-#define UTF8_ALLOW_SURROGATE  (0)
-#endif /* UTF8_ALLOW_SURROGATE */
-
-#ifndef UTF8_ALLOW_FE_FF
-#define UTF8_ALLOW_FE_FF  (0)
-#endif /* UTF8_ALLOW_FE_FF */
-
-#ifndef UTF8_ALLOW_FFFF
-#define UTF8_ALLOW_FFFF  (0)
-#endif /* UTF8_ALLOW_FFFF */
-
-#define AllowAnyUTF (UTF8_ALLOW_SURROGATE|UTF8_ALLOW_BOM|UTF8_ALLOW_FE_FF|UTF8_ALLOW_FFFF)
-
-/* if utf8n_to_uvuni() sets retlen to 0 (?) */
-#define ErrRetlenIsZero "panic (Unicode::Collate): zero-length character"
-
 /* At present, char > 0x10ffff are unaffected without complaint, right? */
 #define VALID_UTF_MAX    (0x10ffff)
 #define OVER_UTF_MAX(uv) (VALID_UTF_MAX < (uv))
@@ -211,7 +184,7 @@ _isIllegal (sv)
     uv = SvUVX(sv);
     RETVAL = boolSV(
           0x10FFFF < uv                   /* out of range */
-       || ((uv & 0xFFFE) == 0xFFFE)       /* ??FFF[EF] (cf. utf8.c) */
+       || ((uv & 0xFFFE) == 0xFFFE)       /* ??FFF[EF] */
        || (0xD800 <= uv && uv <= 0xDFFF)  /* unpaired surrogates */
        || (0xFDD0 <= uv && uv <= 0xFDEF)  /* other non-characters */
     );
@@ -685,30 +658,3 @@ visualizeSortKey (self, key)
 OUTPUT:
     RETVAL
 
-
-
-void
-unpack_U (src)
-    SV* src
-  PREINIT:
-    STRLEN srclen, retlen;
-    U8 *s, *p, *e;
-    UV uv;
-  PPCODE:
-    s = (U8*)SvPV(src,srclen);
-    if (!SvUTF8(src)) {
-       SV* tmpsv = sv_mortalcopy(src);
-       if (!SvPOK(tmpsv))
-           (void)sv_pvn_force(tmpsv,&srclen);
-       sv_utf8_upgrade(tmpsv);
-       s = (U8*)SvPV(tmpsv,srclen);
-    }
-    e = s + srclen;
-
-    for (p = s; p < e; p += retlen) {
-       uv = utf8n_to_uvuni(p, e - p, &retlen, AllowAnyUTF);
-       if (!retlen)
-           croak(ErrRetlenIsZero);
-       XPUSHs(sv_2mortal(newSVuv(uv)));
-    }
-