dougm       01/04/19 10:24:46

  Modified:    lib/ModPerl WrapXS.pm
  Log:
  ablity to add code to the generate .pm
  
  Revision  Changes    Path
  1.6       +29 -2     modperl-2.0/lib/ModPerl/WrapXS.pm
  
  Index: WrapXS.pm
  ===================================================================
  RCS file: /home/cvs/modperl-2.0/lib/ModPerl/WrapXS.pm,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- WrapXS.pm 2001/04/06 21:31:58     1.5
  +++ WrapXS.pm 2001/04/19 17:24:43     1.6
  @@ -57,8 +57,9 @@
       my $typemap = $self->typemap;
   
       for my $entry (@{ $self->function_list() }) {
  -        my $func;
  -        next unless $func = $typemap->map_function($entry);
  +        my $func = $typemap->map_function($entry);
  +        #print "FAILED to map $entry->{name}\n" unless $func;
  +        next unless $func;
   
           my($name, $module, $class, $args) =
             @{ $func } { qw(perl_name module class args) };
  @@ -311,6 +312,22 @@
       undef;
   }
   
  +sub mod_pm {
  +    my($self, $module, $complete) = @_;
  +
  +    my $dirname = $self->class_dirname($module);
  +    my($base, $sub) = split '::', $module;
  +    my $mod_pm = "$dirname/${sub}_pm";
  +
  +    for ($self->{XS_DIR}, @{ $self->{glue_dirs} }) {
  +        my $file = "$_/$mod_pm";
  +        $mod_pm = $file if $complete;
  +        return $mod_pm if -e $file;
  +    }
  +
  +    undef;
  +}
  +
   sub class_c_prefix {
       my $class = shift;
       $class =~ s/:/_/g;
  @@ -417,6 +434,14 @@
   
       my $isa = $self->isa_str($module);
   
  +    my $code = "";
  +    if (my $mod_pm = $self->mod_pm($module, 1)) {
  +        open my $fh, '<', $mod_pm;
  +        local $/;
  +        $code = <$fh>;
  +        close $fh;
  +    }
  +
       my $fh = $self->open_class_file($module, '.pm');
       print $fh <<EOF;
   $self->{noedit_warning_hash}
  @@ -425,6 +450,8 @@
   $isa
   use XSLoader ();
   XSLoader::load __PACKAGE__;
  +
  +$code
   
   1;
   __END__
  
  
  

Reply via email to