This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
regen/unicode_constants.pl: Rearrange code order
authorKarl Williamson <khw@cpan.org>
Thu, 17 Apr 2014 01:27:39 +0000 (19:27 -0600)
committerKarl Williamson <khw@cpan.org>
Sat, 31 May 2014 16:14:20 +0000 (10:14 -0600)
This just changes the ordering so we don't do UTF-8 calculations unless
needed.

regen/unicode_constants.pl

index abf2523..2924ff4 100644 (file)
@@ -108,10 +108,18 @@ while ( <DATA> ) {
     $name = $desired_name if $name eq "" && $desired_name;
     $name =~ s/[- ]/_/g;   # The macro name can have no blanks nor dashes
 
-    my $str = join "", map { sprintf "\\x%02X", $_ }
+    my $str;
+    my $suffix;
+    if (defined $flag && $flag eq 'native') {
+        die "Are you sure you want to run this on an above-Latin1 code point?" if $cp > 0xff;
+        $suffix = '_NATIVE';
+        $str = sprintf "0x%02X", $cp;        # Is a numeric constant
+    }
+    else {
+    $str = join "", map { sprintf "\\x%02X", $_ }
                        unpack("U0C*", pack("U", $cp));
 
-    my $suffix = '_UTF8';
+    $suffix = '_UTF8';
     if (! defined $flag  || $flag =~ /^ string (_skip_if_undef)? $/x) {
         $str = "\"$str\"";  # Will be a string constant
     } elsif ($flag eq 'tail') {
@@ -124,14 +132,10 @@ while ( <DATA> ) {
         $suffix .= '_FIRST_BYTE';
         $str = "0x$str";        # Is a numeric constant
     }
-    elsif ($flag eq 'native') {
-        die "Are you sure you want to run this on an above-Latin1 code point?" if $cp > 0xff;
-        $suffix = '_NATIVE';
-        $str = sprintf "0x%02X", $cp;        # Is a numeric constant
-    }
     else {
         die "Unknown flag at line $.: $_\n";
     }
+    }
     printf $out_fh "#define %s%s  %s    /* U+%04X */\n", $name, $suffix, $str, $U_cp;
 }