Rename ext/List/Util as ext/List-Util
[p5sagit/p5-mst-13.2.git] / overload.pl
index da1f91b..6f0fe34 100644 (file)
@@ -12,6 +12,8 @@ BEGIN {
 
 use strict;
 
+use File::Spec::Functions qw(catdir catfile);;
+
 my (@enums, @names);
 while (<DATA>) {
   next if /^#/;
@@ -21,9 +23,48 @@ while (<DATA>) {
   push @names, $name;
 }
 
-safer_unlink ('overload.h', 'overload.c');
+safer_unlink ('overload.h', 'overload.c', catfile(qw(lib overload numbers.pm)));
 my $c = safer_open("overload.c");
 my $h = safer_open("overload.h");
+mkdir("lib/overload") unless -d catdir(qw(lib overload));
+my $p = safer_open(catfile(qw(lib overload numbers.pm)));
+
+
+select $p;
+
+{
+local $" = "\n    ";
+print <<"EOF";
+# -*- buffer-read-only: t -*-
+#
+#   lib/overload/numbers.pm
+#
+#   Copyright (C) 2008 by Larry Wall and others
+#
+#   You may distribute under the terms of either the GNU General Public
+#   License or the Artistic License, as specified in the README file.
+#
+# !!!!!!!   DO NOT EDIT THIS FILE   !!!!!!!
+# This file is built by overload.pl
+#
+
+package overload::numbers;
+
+our \@names = qw#
+    @names
+#;
+
+our \@enums = qw#
+    @enums
+#;
+
+{ my \$i = 0; our %names = map { \$_ => \$i++ } \@names }
+
+{ my \$i = 0; our %enums = map { \$_ => \$i++ } \@enums }
+
+EOF
+}
+
 
 sub print_header {
   my $file = shift;
@@ -70,7 +111,7 @@ print $c <<'EOF';
 #define AMG_id2name(id) (PL_AMG_names[id]+1)
 #define AMG_id2namelen(id) (PL_AMG_namelens[id]-1)
 
-const U8 PL_AMG_namelens[NofAMmeth] = {
+static const U8 PL_AMG_namelens[NofAMmeth] = {
 EOF
 
 my $last = pop @names;
@@ -82,7 +123,7 @@ print $c <<"EOT";
     $lastlen
 };
 
-const char * const PL_AMG_names[NofAMmeth] = {
+static const char * const PL_AMG_names[NofAMmeth] = {
   /* Names kept in the symbol table.  fallback => "()", the rest has
      "(" prepended.  The only other place in perl which knows about
      this convention is AMG_id2name (used for debugging output and
@@ -99,6 +140,7 @@ EOT
 
 safer_close($h);
 safer_close($c);
+safer_close($p);
 
 __DATA__
 # Fallback should be the first