]> git.imager.perl.org - imager.git/blobdiff - regops.perl
fix date on 1.009 release in Changes
[imager.git] / regops.perl
index 60fbc3a71dc4beea1e6815fa10b119adb282dfbb..613ffc2babe87b17eadafb51685e10179dc4aabf 100644 (file)
@@ -5,6 +5,7 @@ my $in = shift or die "No input name";
 my $out = shift or die "No output name";
 open(IN, $in) or die "Cannot open input $in: $!";
 open(OUT, "> $out") or die "Cannot create $out: $!";
 my $out = shift or die "No output name";
 open(IN, $in) or die "Cannot open input $in: $!";
 open(OUT, "> $out") or die "Cannot create $out: $!";
+binmode OUT;
 print OUT <<'EOS';
 # AUTOMATICALLY GENERATED BY regops.perl
 package Imager::Regops;
 print OUT <<'EOS';
 # AUTOMATICALLY GENERATED BY regops.perl
 package Imager::Regops;
@@ -44,7 +45,34 @@ while (<IN>) {
   }
 }
 print OUT "\n\@EXPORT = qw(@ops);\n\n";
   }
 }
 print OUT "\n\@EXPORT = qw(@ops);\n\n";
-print OUT Data::Dumper->Dump([\%attr],["*Attr"]);
+# previously we used Data::Dumper, with Sortkeys() 
+# to make sure the generated code only changed when the data
+# changed.  Unfortunately Sortkeys isn't supported in some versions of
+# perl we try to support, so we now generate this manually
+print OUT "%Attr =\n  (\n";
+for my $opname (sort keys %attr) {
+  my $op = $attr{$opname};
+  print OUT "  '$opname' =>\n    {\n";
+  for my $attrname (sort keys %$op) {
+    my $attr = $op->{$attrname};
+    print OUT "    '$attrname' => ";
+    if (defined $attr) {
+      if ($attr =~ /^\d+$/) {
+       print OUT $attr;
+      }
+      else {
+       print OUT "'$attr'";
+      }
+    }
+    else {
+      print OUT "undef";
+    }
+
+    print OUT ",\n";
+  }
+  print OUT "    },\n";
+}
+print OUT "  );\n";
 print OUT "\$MaxOperands = $max_opr;\n";
 print OUT qq/\$PackCode = "$reg_pack";\n/;
 print OUT <<'EOS';
 print OUT "\$MaxOperands = $max_opr;\n";
 print OUT qq/\$PackCode = "$reg_pack";\n/;
 print OUT <<'EOS';
@@ -54,7 +82,7 @@ __END__
 
 =head1 NAME
 
 
 =head1 NAME
 
-Imager::Regops - generated information about the register based VM
+Imager::Regops - generated information about the register based virtual machine
 
 =head1 SYNOPSIS
 
 
 =head1 SYNOPSIS
 
@@ -68,7 +96,7 @@ Imager::Regops - generated information about the register based VM
 
 =head1 DESCRIPTION
 
 
 =head1 DESCRIPTION
 
-This module is generated automatically from regmach.h so we don't need to 
+This module is generated automatically from F<regmach.h> so we don't need to
 maintain the same information in at least one extra place.
 
 At least that's the idea.
 maintain the same information in at least one extra place.
 
 At least that's the idea.
@@ -79,7 +107,7 @@ Tony Cook, tony@develop-help.com
 
 =head1 SEE ALSO
 
 
 =head1 SEE ALSO
 
-perl(1), Imager(3), http://www.eecs.umich.edu/~addi/perl/Imager/
+perl(1), Imager(3), http://imager.perl.org/
 
 =cut
 
 
 =cut