Upon further inspection, it appears that enum handling in h2xs is broken altogether. The attached patch seems to fix it.

Daniel
--- h2xs.orig   2005-06-09 01:14:29.000000000 +1000
+++ h2xs        2005-07-28 16:22:26.000000000 +1000
@@ -730,7 +730,7 @@
 }
 
 my @path_h_ini = @path_h;
-my ($name, %fullpath, %prefix, %seen_define, %prefixless, %const_names);
+my ($name, %fullpath, %prefix, %seen_define, %prefixless, %const_names, 
%enum_names);
 
 my $module = $opt_n;
 
@@ -860,10 +860,11 @@
 
         # Remove C and C++ comments
         $src =~ 
s#/\*[^*]*\*+([^/*][^*]*\*+)*/|("(\\.|[^"\\])*"|'(\\.|[^'\\])*'|.[^/"'\\]*)#$2#gs;
+       $src =~ s#//.*\n#\n#g;
 
-        while ($src =~ /(\benum\s*([\w_]*)\s*\{\s([\s\w=,]+)\})/gsc) {
+        while ($src =~ /(\benum\s*([\w_]*)\s*\{\s([\s\w=,-]+)\})/gsc) {
             my ($enum_name, $enum_body) =
-                $1 =~ /enum\s*([\w_]*)\s*\{\s([\s\w=,]+)\}/gs;
+                $1 =~ /enum\s*([\w_]*)\s*\{\s([\s\w=,-]+)\}/gs;
             # skip enums matching $opt_e
             next if $opt_e && $enum_name =~ /$opt_e/;
             my $val = 0;
@@ -872,6 +873,7 @@
                 $val = defined($declared_val) && length($declared_val) ? 
$declared_val : 1 + $val;
                 $seen_define{$key} = $val;
                 $const_names{$key}++;
+                $enum_names{$key}++;
             }
         } # while (...)
       } # if (!defined $opt_e or $opt_e)
@@ -1902,12 +1904,13 @@
 } # ' # Grr
 print PL ");\n";
 if (!$opt_c) {
+  my @names = map { $enum_names{$_}? { name => $_, macro => 1 }: $_} (sort 
keys %const_names);
   my $generate_code =
     WriteMakefileSnippet ( C_FILE =>       $constscfname,
                            XS_FILE =>      $constsxsfname,
                            DEFAULT_TYPE => $opt_t,
                            NAME =>         $module,
-                           NAMES =>        [EMAIL PROTECTED],
+                           NAMES =>        [EMAIL PROTECTED],
                  );
   print PL <<"END";
 if  (eval {require ExtUtils::Constant; 1}) {

Reply via email to