*** empty log message ***
This commit is contained in:
@ -1,5 +1,6 @@
|
|||||||
Revision history for Gimp-Perl extension.
|
Revision history for Gimp-Perl extension.
|
||||||
|
|
||||||
|
1.21 Fri Mar 9 18:33:04 CET 2001
|
||||||
- this version will only compile with 1.1. versions of the
|
- this version will only compile with 1.1. versions of the
|
||||||
Gimp. If you need to compile gimp-perl with gimp-1.0 please use
|
Gimp. If you need to compile gimp-perl with gimp-1.0 please use
|
||||||
version 1.201 from CPAN.
|
version 1.201 from CPAN.
|
||||||
@ -26,7 +27,7 @@ Revision history for Gimp-Perl extension.
|
|||||||
than inside the gimp).
|
than inside the gimp).
|
||||||
- docfix by Alexander Kurz.
|
- docfix by Alexander Kurz.
|
||||||
- save_image now saves png again (reported by Michael Guntsche).
|
- save_image now saves png again (reported by Michael Guntsche).
|
||||||
- perlotine updated (poatch by Michael Guntsche).
|
- perlotine updated (patches by Michael Guntsche and Seth).
|
||||||
|
|
||||||
1.201 Thu Aug 24 23:44:43 CEST 2000
|
1.201 Thu Aug 24 23:44:43 CEST 2000
|
||||||
** LAST VERSION THAT WORKS WITH 1.0 **
|
** LAST VERSION THAT WORKS WITH 1.0 **
|
||||||
|
|||||||
@ -10,7 +10,7 @@ use vars qw($VERSION @ISA @EXPORT @EXPORT_OK $AUTOLOAD %EXPORT_TAGS @EXPORT_FAIL
|
|||||||
use subs qw(init end lock unlock canonicalize_color);
|
use subs qw(init end lock unlock canonicalize_color);
|
||||||
|
|
||||||
BEGIN {
|
BEGIN {
|
||||||
$VERSION = 1.201;
|
$VERSION = 1.21;
|
||||||
eval {
|
eval {
|
||||||
require XSLoader;
|
require XSLoader;
|
||||||
XSLoader::load Gimp $VERSION;
|
XSLoader::load Gimp $VERSION;
|
||||||
|
|||||||
@ -43,7 +43,7 @@ Gimp-Perl extension (contact him to include new functions) is Marc Lehmann
|
|||||||
|
|
||||||
package Gimp::Compat;
|
package Gimp::Compat;
|
||||||
|
|
||||||
$VERSION=1.201;
|
$VERSION=1.21;
|
||||||
|
|
||||||
use Gimp ('croak', '__');
|
use Gimp ('croak', '__');
|
||||||
|
|
||||||
|
|||||||
@ -4,7 +4,7 @@ use strict;
|
|||||||
use vars qw($VERSION @ISA);
|
use vars qw($VERSION @ISA);
|
||||||
|
|
||||||
BEGIN {
|
BEGIN {
|
||||||
$VERSION = 1.201;
|
$VERSION = 1.21;
|
||||||
eval {
|
eval {
|
||||||
require XSLoader;
|
require XSLoader;
|
||||||
XSLoader::load Gimp::Lib $VERSION;
|
XSLoader::load Gimp::Lib $VERSION;
|
||||||
|
|||||||
@ -19,7 +19,7 @@ package Gimp::Module;
|
|||||||
use base qw(DynaLoader);
|
use base qw(DynaLoader);
|
||||||
require DynaLoader;
|
require DynaLoader;
|
||||||
|
|
||||||
$VERSION=1.201;
|
$VERSION=1.21;
|
||||||
|
|
||||||
bootstrap Gimp::Module;
|
bootstrap Gimp::Module;
|
||||||
|
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
package Gimp::Pod;
|
package Gimp::Pod;
|
||||||
|
|
||||||
$VERSION=1.201;
|
$VERSION=1.21;
|
||||||
|
|
||||||
sub myqx(&) {
|
sub myqx(&) {
|
||||||
local $/;
|
local $/;
|
||||||
|
|||||||
@ -51,7 +51,7 @@ require Exporter;
|
|||||||
|
|
||||||
use Gimp;
|
use Gimp;
|
||||||
|
|
||||||
$VERSION=1.201;
|
$VERSION=1.21;
|
||||||
|
|
||||||
##############################################################################
|
##############################################################################
|
||||||
=pod
|
=pod
|
||||||
|
|||||||
@ -173,7 +173,7 @@ sub MY::install {
|
|||||||
my $install = $self->SUPER::install(@_);
|
my $install = $self->SUPER::install(@_);
|
||||||
($install =~ s/\b(un)?install\b/really-$1install/g) or return $install;
|
($install =~ s/\b(un)?install\b/really-$1install/g) or return $install;
|
||||||
'
|
'
|
||||||
install :: install-po
|
install ::
|
||||||
@for dir in \
|
@for dir in \
|
||||||
$(INSTALLPRIVLIB) \
|
$(INSTALLPRIVLIB) \
|
||||||
$(INSTALLARCHLIB) \
|
$(INSTALLARCHLIB) \
|
||||||
|
|||||||
@ -20,7 +20,7 @@ use Fcntl qw(F_SETFD);
|
|||||||
|
|
||||||
require DynaLoader;
|
require DynaLoader;
|
||||||
|
|
||||||
$VERSION = 1.201;
|
$VERSION = 1.21;
|
||||||
|
|
||||||
bootstrap Gimp::Net $VERSION;
|
bootstrap Gimp::Net $VERSION;
|
||||||
|
|
||||||
|
|||||||
@ -5,7 +5,7 @@ use Gimp::Fu;
|
|||||||
use base 'DynaLoader';
|
use base 'DynaLoader';
|
||||||
|
|
||||||
BEGIN {
|
BEGIN {
|
||||||
$VERSION = 1.201;
|
$VERSION = 1.21;
|
||||||
eval {
|
eval {
|
||||||
require XSLoader;
|
require XSLoader;
|
||||||
XSLoader::load Gimp::UI $VERSION;
|
XSLoader::load Gimp::UI $VERSION;
|
||||||
@ -898,7 +898,7 @@ sub interact($$$$@) {
|
|||||||
my $v = new Gtk::HBox 0,4;
|
my $v = new Gtk::HBox 0,4;
|
||||||
$w->vbox->pack_start($v,0,0,4);
|
$w->vbox->pack_start($v,0,0,4);
|
||||||
|
|
||||||
my $hbbox=new Gtk::HButtonBox;
|
my $hbbox = new Gtk::HButtonBox;
|
||||||
$hbbox->set_spacing(4);
|
$hbbox->set_spacing(4);
|
||||||
$v->pack_end($hbbox,0,0,2);
|
$v->pack_end($hbbox,0,0,2);
|
||||||
|
|
||||||
@ -922,7 +922,7 @@ sub interact($$$$@) {
|
|||||||
|
|
||||||
signal_connect $w "destroy", sub { main_quit Gtk };
|
signal_connect $w "destroy", sub { main_quit Gtk };
|
||||||
|
|
||||||
my $hbbox = new Gtk::HButtonBox;
|
$hbbox = new Gtk::HButtonBox;
|
||||||
$hbbox->set_spacing(4);
|
$hbbox->set_spacing(4);
|
||||||
$w->action_area->pack_start($hbbox,0,0,0);
|
$w->action_area->pack_start($hbbox,0,0,0);
|
||||||
show $hbbox;
|
show $hbbox;
|
||||||
@ -932,7 +932,7 @@ sub interact($$$$@) {
|
|||||||
signal_connect $button "clicked", sub { help_window($helpwin,$blurb,$help) };
|
signal_connect $button "clicked", sub { help_window($helpwin,$blurb,$help) };
|
||||||
can_default $button 1;
|
can_default $button 1;
|
||||||
|
|
||||||
my $hbbox = new Gtk::HButtonBox;
|
$hbbox = new Gtk::HButtonBox;
|
||||||
$hbbox->set_spacing(4);
|
$hbbox->set_spacing(4);
|
||||||
$w->action_area->pack_end($hbbox,0,0,0);
|
$w->action_area->pack_end($hbbox,0,0,0);
|
||||||
show $hbbox;
|
show $hbbox;
|
||||||
|
|||||||
@ -3,7 +3,7 @@ package Gimp::basewidget; # pragma
|
|||||||
use Gtk;
|
use Gtk;
|
||||||
use Gimp;
|
use Gimp;
|
||||||
|
|
||||||
$VERSION = 1.201;
|
$VERSION = 1.21;
|
||||||
|
|
||||||
=head1 NAME
|
=head1 NAME
|
||||||
|
|
||||||
|
|||||||
@ -112,8 +112,8 @@ sub do_bricks {
|
|||||||
gimp_floating_sel_anchor(gimp_image_floating_selection($image));
|
gimp_floating_sel_anchor(gimp_image_floating_selection($image));
|
||||||
gimp_image_add_layer_mask($image,$layerb,$mask);
|
gimp_image_add_layer_mask($image,$layerb,$mask);
|
||||||
gimp_selection_none($image);
|
gimp_selection_none($image);
|
||||||
gimp_image_remove_layer ($border);
|
gimp_image_remove_layer ($border); gimp_layer_delete ($border);
|
||||||
gimp_image_remove_layer ($layer);
|
gimp_image_remove_layer ($layer); gimp_layer_delete ($layer);
|
||||||
gimp_image_remove_layer_mask ($image,$layerb,0);
|
gimp_image_remove_layer_mask ($image,$layerb,0);
|
||||||
gimp_channel_ops_offset ($layerpat,1,0,-1,-1);
|
gimp_channel_ops_offset ($layerpat,1,0,-1,-1);
|
||||||
gimp_channel_ops_offset ($layerb,1,0,-1,-1);
|
gimp_channel_ops_offset ($layerb,1,0,-1,-1);
|
||||||
|
|||||||
@ -200,6 +200,7 @@ sub perl_fu_brushed_metal {
|
|||||||
gimp_layer_set_offsets($float, $x1+$length, $y1+$length);
|
gimp_layer_set_offsets($float, $x1+$length, $y1+$length);
|
||||||
gimp_floating_sel_anchor($float);
|
gimp_floating_sel_anchor($float);
|
||||||
gimp_image_remove_layer($image,$templ);
|
gimp_image_remove_layer($image,$templ);
|
||||||
|
# gimp_layer_delete($templ);
|
||||||
|
|
||||||
gimp_undo_push_group_end($image);
|
gimp_undo_push_group_end($image);
|
||||||
|
|
||||||
|
|||||||
@ -1,7 +1,4 @@
|
|||||||
#!/usr/app/bin/perl
|
#!/usr/bin/perl
|
||||||
|
|
||||||
eval 'exec /usr/app/bin/perl -S $0 ${1+"$@"}'
|
|
||||||
if 0; # not running under some shell
|
|
||||||
|
|
||||||
# <sjburges@gimp.org>
|
# <sjburges@gimp.org>
|
||||||
# This is tigert's request. I suppose it'll be useful to those that do
|
# This is tigert's request. I suppose it'll be useful to those that do
|
||||||
@ -213,8 +210,13 @@ register "perlotine",
|
|||||||
$left=0;
|
$left=0;
|
||||||
for ($j=0; $j<=scalar(@vert); $j++) {
|
for ($j=0; $j<=scalar(@vert); $j++) {
|
||||||
$right = ($j>$#vert) ? $img->width : $img->get_guide_position($vert[$j]);
|
$right = ($j>$#vert) ? $img->width : $img->get_guide_position($vert[$j]);
|
||||||
|
# protect against 0 width/height guide selections
|
||||||
|
if ($left!=$right && $top!=$bot)
|
||||||
|
{
|
||||||
|
# perform cropping, table entry
|
||||||
$imgname = dosel($img, $savepath, $imgpath, $imgbasename, $extension, $left, $right, $top, $bot, $i, $j);
|
$imgname = dosel($img, $savepath, $imgpath, $imgbasename, $extension, $left, $right, $top, $bot, $i, $j);
|
||||||
html_table_entry(\*FILE, $imgname, $right-$left, $bot-$top, $capatalize);
|
html_table_entry(\*FILE, $imgname, $right-$left, $bot-$top, $capatalize);
|
||||||
|
}
|
||||||
$left = $right + $cellspacing;
|
$left = $right + $cellspacing;
|
||||||
|
|
||||||
# Increment the progress bar
|
# Increment the progress bar
|
||||||
|
|||||||
@ -1,291 +0,0 @@
|
|||||||
|
|
||||||
#ifndef _P_P_PORTABILITY_H_
|
|
||||||
#define _P_P_PORTABILITY_H_
|
|
||||||
|
|
||||||
/* Perl/Pollution/Portability Version 1.0007-gimp-1 */
|
|
||||||
|
|
||||||
/* Copyright (C) 1999, Kenneth Albanowski. This code may be used and
|
|
||||||
distributed under the same license as any version of Perl. */
|
|
||||||
|
|
||||||
/* For the latest version of this code, please retreive the Devel::PPPort
|
|
||||||
module from CPAN, contact the author at <kjahds@kjahds.com>, or check
|
|
||||||
with the Perl maintainers. */
|
|
||||||
|
|
||||||
/* If you needed to customize this file for your project, please mention
|
|
||||||
your changes, and visible alter the version number. */
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
In order for a Perl extension module to be as portable as possible
|
|
||||||
across differing versions of Perl itself, certain steps need to be taken.
|
|
||||||
Including this header is the first major one, then using dTHR is all the
|
|
||||||
appropriate places and using a PL_ prefix to refer to global Perl
|
|
||||||
variables is the second.
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
/* If you use one of a few functions that were not present in earlier
|
|
||||||
versions of Perl, please add a define before the inclusion of ppport.h
|
|
||||||
for a static include, or use the GLOBAL request in a single module to
|
|
||||||
produce a global definition that can be referenced from the other
|
|
||||||
modules.
|
|
||||||
|
|
||||||
Function: Static define: Extern define:
|
|
||||||
newCONSTSUB() NEED_newCONSTSUB NEED_newCONSTSUB_GLOBAL
|
|
||||||
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
/* To verify whether ppport.h is needed for your module, and whether any
|
|
||||||
special defines should be used, ppport.h can be run through Perl to check
|
|
||||||
your source code. Simply say:
|
|
||||||
|
|
||||||
perl -x ppport.h *.c *.h *.xs foo/any.c [etc]
|
|
||||||
|
|
||||||
The result will be a list of patches suggesting changes that should at
|
|
||||||
least be acceptable, if not necessarily the most efficient solution, or a
|
|
||||||
fix for all possible problems. It won't catch where dTHR is needed, and
|
|
||||||
doesn't attempt to account for global macro or function definitions,
|
|
||||||
nested includes, typemaps, etc.
|
|
||||||
|
|
||||||
In order to test for the need of dTHR, please try your module under a
|
|
||||||
recent version of Perl that has threading compiled-in.
|
|
||||||
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
#!/usr/bin/perl
|
|
||||||
@ARGV = ("*.xs") if !@ARGV;
|
|
||||||
%badmacros = %funcs = %macros = (); $replace = 0;
|
|
||||||
foreach (<DATA>) {
|
|
||||||
$funcs{$1} = 1 if /Provide:\s+(\S+)/;
|
|
||||||
$macros{$1} = 1 if /^#\s*define\s+([a-zA-Z0-9_]+)/;
|
|
||||||
$replace = $1 if /Replace:\s+(\d+)/;
|
|
||||||
$badmacros{$2}=$1 if $replace and /^#\s*define\s+([a-zA-Z0-9_]+).*?\s+([a-zA-Z0-9_]+)/;
|
|
||||||
$badmacros{$1}=$2 if /Replace (\S+) with (\S+)/;
|
|
||||||
}
|
|
||||||
foreach $filename (map(glob($_),@ARGV)) {
|
|
||||||
unless (open(IN, "<$filename")) {
|
|
||||||
warn "Unable to read from $file: $!\n";
|
|
||||||
next;
|
|
||||||
}
|
|
||||||
print "Scanning $filename...\n";
|
|
||||||
$c = ""; while (<IN>) { $c .= $_; } close(IN);
|
|
||||||
$need_include = 0; %add_func = (); $changes = 0;
|
|
||||||
$has_include = ($c =~ /#.*include.*ppport/m);
|
|
||||||
|
|
||||||
foreach $func (keys %funcs) {
|
|
||||||
if ($c =~ /#.*define.*\bNEED_$func(_GLOBAL)?\b/m) {
|
|
||||||
if ($c !~ /\b$func\b/m) {
|
|
||||||
print "If $func isn't needed, you don't need to request it.\n" if
|
|
||||||
$changes += ($c =~ s/^.*#.*define.*\bNEED_$func\b.*\n//m);
|
|
||||||
} else {
|
|
||||||
print "Uses $func\n";
|
|
||||||
$need_include = 1;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
if ($c =~ /\b$func\b/m) {
|
|
||||||
$add_func{$func} =1 ;
|
|
||||||
print "Uses $func\n";
|
|
||||||
$need_include = 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (not $need_include) {
|
|
||||||
foreach $macro (keys %macros) {
|
|
||||||
if ($c =~ /\b$macro\b/m) {
|
|
||||||
print "Uses $macro\n";
|
|
||||||
$need_include = 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
foreach $badmacro (keys %badmacros) {
|
|
||||||
if ($c =~ /\b$badmacro\b/m) {
|
|
||||||
$changes += ($c =~ s/\b$badmacro\b/$badmacros{$badmacro}/gm);
|
|
||||||
print "Uses $badmacros{$badmacro} (instead of $badmacro)\n";
|
|
||||||
$need_include = 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (scalar(keys %add_func) or $need_include != $has_include) {
|
|
||||||
if (!$has_include) {
|
|
||||||
$inc = join('',map("#define NEED_$_\n", sort keys %add_func)).
|
|
||||||
"#include \"ppport.h\"\n";
|
|
||||||
$c = "$inc$c" unless $c =~ s/#.*include.*XSUB.*\n/$&$inc/m;
|
|
||||||
} elsif (keys %add_func) {
|
|
||||||
$inc = join('',map("#define NEED_$_\n", sort keys %add_func));
|
|
||||||
$c = "$inc$c" unless $c =~ s/^.*#.*include.*ppport.*$/$inc$&/m;
|
|
||||||
}
|
|
||||||
if (!$need_include) {
|
|
||||||
print "Doesn't seem to need ppport.h.\n";
|
|
||||||
$c =~ s/^.*#.*include.*ppport.*\n//m;
|
|
||||||
}
|
|
||||||
$changes++;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($changes) {
|
|
||||||
open(OUT,">/tmp/ppport.h.$$");
|
|
||||||
print OUT $c;
|
|
||||||
close(OUT);
|
|
||||||
open(DIFF, "diff -u $filename /tmp/ppport.h.$$|");
|
|
||||||
while (<DIFF>) { s!/tmp/ppport\.h\.$$!$filename.patched!; print STDOUT; }
|
|
||||||
close(DIFF);
|
|
||||||
unlink("/tmp/ppport.h.$$");
|
|
||||||
} else {
|
|
||||||
print "Looks OK\n";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
__DATA__
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef PERL_REVISION
|
|
||||||
# ifndef __PATCHLEVEL_H_INCLUDED__
|
|
||||||
# include "patchlevel.h"
|
|
||||||
# endif
|
|
||||||
# ifndef PERL_REVISION
|
|
||||||
# define PERL_REVISION (5)
|
|
||||||
/* Replace: 1 */
|
|
||||||
# define PERL_VERSION PATCHLEVEL
|
|
||||||
# define PERL_SUBVERSION SUBVERSION
|
|
||||||
/* Replace PERL_PATCHLEVEL with PERL_VERSION */
|
|
||||||
/* Replace: 0 */
|
|
||||||
# endif
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#define PERL_BCDVERSION ((PERL_REVISION * 0x1000000L) + (PERL_VERSION * 0x1000L) + PERL_SUBVERSION)
|
|
||||||
|
|
||||||
#ifndef ERRSV
|
|
||||||
# define ERRSV perl_get_sv("@",FALSE)
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if (PERL_VERSION < 4) || ((PERL_VERSION == 4) && (PERL_SUBVERSION <= 5))
|
|
||||||
/* Replace: 1 */
|
|
||||||
# define PL_sv_undef sv_undef
|
|
||||||
# define PL_sv_yes sv_yes
|
|
||||||
# define PL_sv_no sv_no
|
|
||||||
# define PL_na na
|
|
||||||
# define PL_stdingv stdingv
|
|
||||||
# define PL_hints hints
|
|
||||||
# define PL_curcop curcop
|
|
||||||
# define PL_curstash curstash
|
|
||||||
# define PL_copline copline
|
|
||||||
# define PL_Sv Sv
|
|
||||||
# define PL_perl_destruct_level perl_destruct_level
|
|
||||||
/* Replace: 0 */
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef dTHR
|
|
||||||
# ifdef WIN32
|
|
||||||
# define dTHR extern int Perl___notused
|
|
||||||
# else
|
|
||||||
# define dTHR extern int errno
|
|
||||||
# endif
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef boolSV
|
|
||||||
# define boolSV(b) ((b) ? &PL_sv_yes : &PL_sv_no)
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef gv_stashpvn
|
|
||||||
# define gv_stashpvn(str,len,flags) gv_stashpv(str,flags)
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef newSVpvn
|
|
||||||
# define newSVpvn(data,len) ((len) ? newSVpv ((data), (len)) : newSVpv ("", 0))
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef newRV_inc
|
|
||||||
/* Replace: 1 */
|
|
||||||
# define newRV_inc(sv) newRV(sv)
|
|
||||||
/* Replace: 0 */
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef newRV_noinc
|
|
||||||
# ifdef __GNUC__
|
|
||||||
# define newRV_noinc(sv) \
|
|
||||||
({ \
|
|
||||||
SV *nsv = (SV*)newRV(sv); \
|
|
||||||
SvREFCNT_dec(sv); \
|
|
||||||
nsv; \
|
|
||||||
})
|
|
||||||
# else
|
|
||||||
# if defined(CRIPPLED_CC) || defined(USE_THREADS)
|
|
||||||
static SV * newRV_noinc (SV * sv)
|
|
||||||
{
|
|
||||||
SV *nsv = (SV*)newRV(sv);
|
|
||||||
SvREFCNT_dec(sv);
|
|
||||||
return nsv;
|
|
||||||
}
|
|
||||||
# else
|
|
||||||
# define newRV_noinc(sv) \
|
|
||||||
((PL_Sv=(SV*)newRV(sv), SvREFCNT_dec(sv), (SV*)PL_Sv)
|
|
||||||
# endif
|
|
||||||
# endif
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* Provide: newCONSTSUB */
|
|
||||||
|
|
||||||
/* newCONSTSUB from IO.xs is in the core starting with 5.004_63 */
|
|
||||||
#if (PERL_VERSION < 4) || ((PERL_VERSION == 4) && (PERL_SUBVERSION < 63))
|
|
||||||
|
|
||||||
#if defined(NEED_newCONSTSUB)
|
|
||||||
static
|
|
||||||
#else
|
|
||||||
extern void newCONSTSUB _((HV * stash, char * name, SV *sv));
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined(NEED_newCONSTSUB) || defined(NEED_newCONSTSUB_GLOBAL)
|
|
||||||
void
|
|
||||||
newCONSTSUB(stash,name,sv)
|
|
||||||
HV *stash;
|
|
||||||
char *name;
|
|
||||||
SV *sv;
|
|
||||||
{
|
|
||||||
U32 oldhints = PL_hints;
|
|
||||||
HV *old_cop_stash = PL_curcop->cop_stash;
|
|
||||||
HV *old_curstash = PL_curstash;
|
|
||||||
line_t oldline = PL_curcop->cop_line;
|
|
||||||
PL_curcop->cop_line = PL_copline;
|
|
||||||
|
|
||||||
PL_hints &= ~HINT_BLOCK_SCOPE;
|
|
||||||
if (stash)
|
|
||||||
PL_curstash = PL_curcop->cop_stash = stash;
|
|
||||||
|
|
||||||
newSUB(
|
|
||||||
|
|
||||||
#if (PERL_VERSION < 3) || ((PERL_VERSION == 3) && (PERL_SUBVERSION < 22))
|
|
||||||
/* before 5.003_22 */
|
|
||||||
start_subparse(),
|
|
||||||
#else
|
|
||||||
# if (PERL_VERSION == 3) && (PERL_SUBVERSION == 22)
|
|
||||||
/* 5.003_22 */
|
|
||||||
start_subparse(0),
|
|
||||||
# else
|
|
||||||
/* 5.003_23 onwards */
|
|
||||||
start_subparse(FALSE, 0),
|
|
||||||
# endif
|
|
||||||
#endif
|
|
||||||
|
|
||||||
newSVOP(OP_CONST, 0, newSVpv(name,0)),
|
|
||||||
newSVOP(OP_CONST, 0, &PL_sv_no), /* SvPV(&PL_sv_no) == "" -- GMB */
|
|
||||||
newSTATEOP(0, Nullch, newSVOP(OP_CONST, 0, sv))
|
|
||||||
);
|
|
||||||
|
|
||||||
PL_hints = oldhints;
|
|
||||||
PL_curcop->cop_stash = old_cop_stash;
|
|
||||||
PL_curstash = old_curstash;
|
|
||||||
PL_curcop->cop_line = oldline;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif /* newCONSTSUB */
|
|
||||||
|
|
||||||
/*GIMP*/
|
|
||||||
#ifndef SvPV_nolen
|
|
||||||
# define SvPV_nolen(b) SvPV((b),PL_na)
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif /* _P_P_PORTABILITY_H_ */
|
|
||||||
Reference in New Issue
Block a user