ext/Devel/PPPort/parts/base/5008003 Devel::PPPort baseline todo file
ext/Devel/PPPort/parts/base/5008004 Devel::PPPort baseline todo file
ext/Devel/PPPort/parts/base/5008005 Devel::PPPort baseline todo file
+ext/Devel/PPPort/parts/base/5008006 Devel::PPPort baseline todo file
ext/Devel/PPPort/parts/base/5009000 Devel::PPPort baseline todo file
ext/Devel/PPPort/parts/base/5009001 Devel::PPPort baseline todo file
ext/Devel/PPPort/parts/base/5009002 Devel::PPPort baseline todo file
ext/Devel/PPPort/parts/embed.fnc Devel::PPPort Perl API listing
ext/Devel/PPPort/parts/inc/call Devel::PPPort include
ext/Devel/PPPort/parts/inc/cop Devel::PPPort include
+ext/Devel/PPPort/parts/inc/exception Devel::PPPort include
ext/Devel/PPPort/parts/inc/format Devel::PPPort include
ext/Devel/PPPort/parts/inc/grok Devel::PPPort include
ext/Devel/PPPort/parts/inc/limits Devel::PPPort include
ext/Devel/PPPort/parts/todo/5008003 Devel::PPPort todo file
ext/Devel/PPPort/parts/todo/5008004 Devel::PPPort todo file
ext/Devel/PPPort/parts/todo/5008005 Devel::PPPort todo file
+ext/Devel/PPPort/parts/todo/5008006 Devel::PPPort todo file
ext/Devel/PPPort/parts/todo/5009000 Devel::PPPort todo file
ext/Devel/PPPort/parts/todo/5009001 Devel::PPPort todo file
ext/Devel/PPPort/parts/todo/5009002 Devel::PPPort todo file
ext/Devel/PPPort/soak Devel::PPPort Test Harness to run under various Perls
ext/Devel/PPPort/t/call.t Devel::PPPort test file
ext/Devel/PPPort/t/cop.t Devel::PPPort test file
+ext/Devel/PPPort/t/exception.t Devel::PPPort test file
ext/Devel/PPPort/t/grok.t Devel::PPPort test file
ext/Devel/PPPort/t/limits.t Devel::PPPort test file
ext/Devel/PPPort/t/magic.t Devel::PPPort test file
+3.05 - 2005-01-31
+
+ * fix a test for SvPV_nolen
+ * add more examples to tht documentation
+ * improve wording baseline information
+ * added support for the following API
+ dXCPT
+ dXSTARG
+ XCPT_CATCH
+ XCPT_RETHROW
+ XCPT_TRY_END
+ XCPT_TRY_START
+
3.04 - 2004-12-29
* fix a hint for sv_pvn_force
=head1 COPYRIGHT
-Version 3.x, Copyright (C) 2004, Marcus Holland-Moritz.
+Version 3.x, Copyright (C) 2004-2005, Marcus Holland-Moritz.
Version 2.x, Copyright (C) 2001, Paul Marquess.
parts/base/5008003
parts/base/5008004
parts/base/5008005
+parts/base/5008006
parts/base/5009000
parts/base/5009001
parts/base/5009002
parts/embed.fnc
parts/inc/call
parts/inc/cop
+parts/inc/exception
parts/inc/format
parts/inc/grok
parts/inc/limits
parts/todo/5008003
parts/todo/5008004
parts/todo/5008005
+parts/todo/5008006
parts/todo/5009000
parts/todo/5009001
parts/todo/5009002
soak
t/call.t
t/cop.t
+t/exception.t
t/grok.t
t/limits.t
t/magic.t
^pm_to_blib
^backup
^parts/todo-
+^parts/base-
^ppport\.h$
^PPPort\.c$
Devel-PPPort.*\.tar\.gz$
# http://module-build.sourceforge.net/META-spec.html
#XXXXXXX This is a prototype!!! It will change in the future!!! XXXXX#
name: Devel-PPPort
-version: 3.04
+version: 3.05
version_from: PPPort_pm.PL
installdirs: perl
requires:
#
################################################################################
#
-# $Revision: 14 $
+# $Revision: 15 $
# $Author: mhx $
-# $Date: 2004/08/19 13:16:37 +0200 $
+# $Date: 2005/01/31 08:10:50 +0100 $
#
################################################################################
#
-# Version 3.x, Copyright (C) 2004, Marcus Holland-Moritz.
+# Version 3.x, Copyright (C) 2004-2005, Marcus Holland-Moritz.
# Version 2.x, Copyright (C) 2001, Paul Marquess.
# Version 1.x, Copyright (C) 1999, Kenneth Albanowski.
#
#
################################################################################
#
-# $Revision: 30 $
+# $Revision: 33 $
# $Author: mhx $
-# $Date: 2004/08/17 20:01:49 +0200 $
+# $Date: 2005/01/31 08:10:55 +0100 $
#
################################################################################
#
-# Version 3.x, Copyright (C) 2004, Marcus Holland-Moritz.
+# Version 3.x, Copyright (C) 2004-2005, Marcus Holland-Moritz.
# Version 2.x, Copyright (C) 2001, Paul Marquess.
# Version 1.x, Copyright (C) 1999, Kenneth Albanowski.
#
notes, and can even make suggestions on how to change your code. You
can run it like any other Perl program:
- perl ppport.h
+ perl ppport.h [options] [files]
It also has embedded documentation, so you can use
dTHXa
dTHXoa
dUNDERBAR
+ dXCPT
+ dXSTARG
END_EXTERN_C
ERRSV
eval_pv
UVXf
UVxf
vnewSVpvf
+ XCPT_CATCH
+ XCPT_RETHROW
+ XCPT_TRY_END
+ XCPT_TRY_START
XPUSHmortal
XPUSHu
XSRETURN_UV
SvPVbyte_force
find_rundefsvoffset
+ gv_fetchpvn_flags
+ gv_fetchsv
+ op_refcnt_lock
+ op_refcnt_unlock
+ savesvpv
vnormal
=item perl 5.9.1
=head1 COPYRIGHT
-Version 3.x, Copyright (C) 2004, Marcus Holland-Moritz.
+Version 3.x, Copyright (C) 2004-2005, Marcus Holland-Moritz.
Version 2.x, Copyright (C) 2001, Paul Marquess.
use strict;
use vars qw($VERSION @ISA $data);
-$VERSION = do { my @r = '$Snapshot: /Devel-PPPort/3.04 $' =~ /(\d+\.\d+(?:_\d+)?)/; @r ? $r[0] : '9.99' };
+$VERSION = do { my @r = '$Snapshot: /Devel-PPPort/3.05 $' =~ /(\d+\.\d+(?:_\d+)?)/; @r ? $r[0] : '9.99' };
@ISA = qw(DynaLoader);
POD =head2 --api-info=I<name>
POD
POD Show portability information for API elements matching I<name>.
-POD I<name> is treated as a Perl regular expression.
+POD If I<name> is surrounded by slashes, it is interpreted as a regular
+POD expression.
POD
POD =head1 DESCRIPTION
POD
POD
POD This would output context diffs with 10 lines of context.
POD
+POD To display portability information for the C<newSVpvn> function,
+POD use:
+POD
+POD perl ppport.h --api-info=newSVpvn
+POD
+POD Since the argument to C<--api-info> can be a regular expression,
+POD you can use
+POD
+POD perl ppport.h --api-info=/_nomg$/
+POD
+POD to display portability information for all C<_nomg> functions or
+POD
+POD perl ppport.h --api-info=/./
+POD
+POD to display information for all known API elements.
+POD
POD =head1 BUGS
POD
POD If this version of F<ppport.h> is causing failure during
POD
POD =head1 COPYRIGHT
POD
-POD Version 3.x, Copyright (c) 2004, Marcus Holland-Moritz.
+POD Version 3.x, Copyright (c) 2004-2005, Marcus Holland-Moritz.
POD
POD Version 2.x, Copyright (C) 2001, Paul Marquess.
POD
UVof|5.006000||p
UVuf|5.006000||p
UVxf|5.006000||p
+XCPT_CATCH|5.009002||p
+XCPT_RETHROW|5.009002||p
+XCPT_TRY_END|5.009002||p
+XCPT_TRY_START|5.009002||p
XPUSHi|||
XPUSHmortal|5.009002||p
XPUSHn|||
dTHXoa|5.006000||p
dTHX|5.006000||p
dUNDERBAR|5.009002||p
+dXCPT|5.009002||p
dXSARGS|||
dXSI32|||
+dXSTARG|5.006000||p
deb_curcv|||
deb_nocontext|||vn
deb_stack_all|||
debstackptrs||5.007003|
debstack||5.007003|
deb||5.007003|v
-default_protect|||v
del_he|||
del_sv|||
del_xiv|||
gv_fetchmethod_autoload||5.004000|
gv_fetchmethod|||
gv_fetchmeth|||
+gv_fetchpvn_flags||5.009002|
gv_fetchpv|||
+gv_fetchsv||5.009002|
gv_fullname3||5.004000|
gv_fullname4||5.006001|
gv_fullname|||
isSPACE|||
isUPPER|||
is_an_int|||
+is_gv_magical_sv|||
is_gv_magical|||
is_handle_constructor|||
is_lvalue_sub||5.007001|
op_dump||5.006000|
op_free|||
op_null||5.007002|
+op_refcnt_lock||5.009002|
+op_refcnt_unlock||5.009002|
open_script|||
pMY_CXT_|5.007003||p
pMY_CXT|5.007003||p
savesharedpv||5.007003|
savestack_grow_cnt||5.008001|
savestack_grow|||
+savesvpv||5.009002|
sawparens|||
scalar_mod_type|||
scalarboolean|||
uvuni_to_utf8_flags||5.007003|
uvuni_to_utf8||5.007001|
validate_suid|||
-vcall_body|||
-vcall_list_body|||
vcmp||5.009000|
vcroak||5.006000|
vdeb||5.007003|
-vdefault_protect|||
vdie|||
-vdocatch_body|||
vform||5.006000|
visit|||
vivify_defelem|||
vnewSVpvf|5.006000|5.004000|p
vnormal||5.009002|
vnumify||5.009000|
-vparse_body|||
-vrun_body|||
vstringify||5.009000|
vwarner||5.006000|
vwarn||5.006000|
if (exists $opt{'api-info'}) {
my $f;
my $count = 0;
+ my $match = $opt{'api-info'} =~ m!^/(.*)/$! ? $1 : "^\Q$opt{'api-info'}\E\$";
for $f (sort { lc $a cmp lc $b } keys %API) {
- next unless $f =~ /$opt{'api-info'}/;
+ next unless $f =~ /$match/;
print "\n=== $f ===\n\n";
my $info = 0;
if ($API{$f}{base} || $API{$f}{todo}) {
my $base = format_version($API{$f}{base} || $API{$f}{todo});
- print "May not be supported below perl-$base.\n";
+ print "Supported at least starting from perl-$base.\n";
$info++;
}
if ($API{$f}{provided}) {
my $todo = $API{$f}{todo} ? format_version($API{$f}{todo}) : "5.003";
- print "Support by $ppport provided down to perl-$todo.\n";
+ print "Support by $ppport provided back to perl-$todo.\n";
print "Support needs to be explicitly requested by NEED_$f.\n" if exists $need{$f};
print "Depends on: ", join(', ', @{$depends{$f}}), ".\n" if exists $depends{$f};
print "$hints{$f}" if exists $hints{$f};
print "\n";
}
else {
- print "Found no API matching $opt{'api-info'}.\n";
+ print "Found no API matching '$opt{'api-info'}'.\n";
}
exit 0;
}
#ifndef dITEMS
# define dITEMS I32 items = SP - MARK
#endif
+#ifndef dXSTARG
+# define dXSTARG SV * targ = sv_newmortal()
+#endif
#ifndef dTHR
# define dTHR dNOOP
#endif
#endif
#endif
+#ifdef dJMPENV
+
+# ifndef dXCPT
+# define dXCPT dJMPENV; int rEtV = 0
+# define XCPT_TRY_START JMPENV_PUSH(rEtV); if (rEtV == 0)
+# define XCPT_TRY_END JMPENV_POP;
+# define XCPT_CATCH if (rEtV != 0)
+# define XCPT_RETHROW JMPENV_JUMP(rEtV)
+# endif
+
+#else
+
+# define dXCPT Sigjmp_buf oldTOP; int rEtV = 0
+# define XCPT_TRY_START Copy(top_env, oldTOP, 1, Sigjmp_buf); rEtV = Sigsetjmp(top_env, 1); if (rEtV == 0)
+# define XCPT_TRY_END Copy(oldTOP, top_env, 1, Sigjmp_buf);
+# define XCPT_CATCH if (rEtV != 0)
+# define XCPT_RETHROW Siglongjmp(top_env, rEtV)
+
+#endif
+
#endif /* _P_P_PORTABILITY_H_ */
/* End of File ppport.h */
*
********************************************************************************
*
-* $Revision: 7 $
+* $Revision: 8 $
* $Author: mhx $
-* $Date: 2004/08/13 12:49:19 +0200 $
+* $Date: 2005/01/31 08:10:55 +0100 $
*
********************************************************************************
*
-* Version 3.x, Copyright (C) 2004, Marcus Holland-Moritz.
+* Version 3.x, Copyright (C) 2004-2005, Marcus Holland-Moritz.
* Version 2.x, Copyright (C) 2001, Paul Marquess.
* Version 1.x, Copyright (C) 1999, Kenneth Albanowski.
*
/* ========== BEGIN XSMISC ================================================== */
+/* ---- from parts/inc/exception ---- */
+static void throws_exception(int throw_e)
+{
+ if (throw_e)
+ croak("boo\n");
+}
+
+static int exception(int throw_e)
+{
+ dTHR;
+ dXCPT;
+ SV *caught = get_sv("Devel::PPPort::exception_caught", 0);
+
+ XCPT_TRY_START {
+ throws_exception(throw_e);
+ } XCPT_TRY_END
+
+ XCPT_CATCH
+ {
+ sv_setiv(caught, 1);
+ XCPT_RETHROW;
+ }
+
+ sv_setiv(caught, 0);
+
+ return 42;
+}
+
+/* ---- from parts/inc/misc ---- */
+XS(XS_Devel__PPPort_dXSTARG); /* prototype */
+XS(XS_Devel__PPPort_dXSTARG)
+{
+ dXSARGS;
+ dXSTARG;
+ SP -= items;
+ IV iv = SvIV(ST(0)) + 1;
+ PUSHi(iv);
+ XSRETURN(1);
+}
+
/* ---- from parts/inc/MY_CXT ---- */
#define MY_CXT_KEY "Devel::PPPort::_guts" XS_VERSION
MODULE = Devel::PPPort PACKAGE = Devel::PPPort
BOOT:
+ /* ---- from parts/inc/misc ---- */
+ newXS("Devel::PPPort::dXSTARG", XS_Devel__PPPort_dXSTARG, file);
+
/* ---- from parts/inc/MY_CXT ---- */
{
MY_CXT_INIT;
RETVAL
##----------------------------------------------------------------------
+## XSUBs from parts/inc/exception
+##----------------------------------------------------------------------
+
+int
+exception(throw_e)
+ int throw_e
+ OUTPUT:
+ RETVAL
+
+##----------------------------------------------------------------------
## XSUBs from parts/inc/grok
##----------------------------------------------------------------------
const char *str;
CODE:
str = SvPV_nolen(sv);
- RETVAL = strEQ(str, "mhx") ? 3 : 0;
+ RETVAL = strEQ(str, "mhx") ? 42 : 0;
OUTPUT:
RETVAL
#
################################################################################
#
-# $Revision: 30 $
+# $Revision: 33 $
# $Author: mhx $
-# $Date: 2004/08/17 20:01:49 +0200 $
+# $Date: 2005/01/31 08:10:55 +0100 $
#
################################################################################
#
-# Version 3.x, Copyright (C) 2004, Marcus Holland-Moritz.
+# Version 3.x, Copyright (C) 2004-2005, Marcus Holland-Moritz.
# Version 2.x, Copyright (C) 2001, Paul Marquess.
# Version 1.x, Copyright (C) 1999, Kenneth Albanowski.
#
#
################################################################################
#
-# $Revision: 30 $
+# $Revision: 33 $
# $Author: mhx $
-# $Date: 2004/08/17 20:01:49 +0200 $
+# $Date: 2005/01/31 08:10:55 +0100 $
#
################################################################################
#
-# Version 3.x, Copyright (C) 2004, Marcus Holland-Moritz.
+# Version 3.x, Copyright (C) 2004-2005, Marcus Holland-Moritz.
# Version 2.x, Copyright (C) 2001, Paul Marquess.
# Version 1.x, Copyright (C) 1999, Kenneth Albanowski.
#
notes, and can even make suggestions on how to change your code. You
can run it like any other Perl program:
- perl ppport.h
+ perl ppport.h [options] [files]
It also has embedded documentation, so you can use
=head1 COPYRIGHT
-Version 3.x, Copyright (C) 2004, Marcus Holland-Moritz.
+Version 3.x, Copyright (C) 2004-2005, Marcus Holland-Moritz.
Version 2.x, Copyright (C) 2001, Paul Marquess.
use strict;
use vars qw($VERSION @ISA $data);
-$VERSION = do { my @r = '$Snapshot: /Devel-PPPort/3.04 $' =~ /(\d+\.\d+(?:_\d+)?)/; @r ? $r[0] : '9.99' };
+$VERSION = do { my @r = '$Snapshot: /Devel-PPPort/3.05 $' =~ /(\d+\.\d+(?:_\d+)?)/; @r ? $r[0] : '9.99' };
@ISA = qw(DynaLoader);
%include grok
+%include exception
+
#endif /* _P_P_PORTABILITY_H_ */
/* End of File ppport.h */
#
################################################################################
#
-# $Revision: 7 $
+# $Revision: 8 $
# $Author: mhx $
-# $Date: 2004/08/13 12:49:19 +0200 $
+# $Date: 2005/01/31 08:10:55 +0100 $
#
################################################################################
#
-# Version 3.x, Copyright (C) 2004, Marcus Holland-Moritz.
+# Version 3.x, Copyright (C) 2004-2005, Marcus Holland-Moritz.
# Version 2.x, Copyright (C) 2001, Paul Marquess.
# Version 1.x, Copyright (C) 1999, Kenneth Albanowski.
#
*
********************************************************************************
*
-* $Revision: 7 $
+* $Revision: 8 $
* $Author: mhx $
-* $Date: 2004/08/13 12:49:19 +0200 $
+* $Date: 2005/01/31 08:10:55 +0100 $
*
********************************************************************************
*
-* Version 3.x, Copyright (C) 2004, Marcus Holland-Moritz.
+* Version 3.x, Copyright (C) 2004-2005, Marcus Holland-Moritz.
* Version 2.x, Copyright (C) 2001, Paul Marquess.
* Version 1.x, Copyright (C) 1999, Kenneth Albanowski.
*
5. COPYRIGHT
------------
-Version 3.x, Copyright (C) 2004, Marcus Holland-Moritz.
+Version 3.x, Copyright (C) 2004-2005, Marcus Holland-Moritz.
Version 2.x, Copyright (C) 2001, Paul Marquess.
Version 1.x, Copyright (C) 1999, Kenneth Albanowski.
TODO:
* improve apicheck (things like utf8_mg_pos_init() are
- not currently checks)
+ not currently checked)
* more documentation, more tests
#
################################################################################
#
-# $Revision: 4 $
+# $Revision: 5 $
# $Author: mhx $
-# $Date: 2004/08/13 12:49:21 +0200 $
+# $Date: 2005/01/31 08:10:48 +0100 $
#
################################################################################
#
-# Version 3.x, Copyright (C) 2004, Marcus Holland-Moritz.
+# Version 3.x, Copyright (C) 2004-2005, Marcus Holland-Moritz.
# Version 2.x, Copyright (C) 2001, Paul Marquess.
# Version 1.x, Copyright (C) 1999, Kenneth Albanowski.
#
#
################################################################################
#
-# $Revision: 3 $
+# $Revision: 4 $
# $Author: mhx $
-# $Date: 2004/08/13 12:50:19 +0200 $
+# $Date: 2005/01/31 08:10:49 +0100 $
#
################################################################################
#
-# Version 3.x, Copyright (C) 2004, Marcus Holland-Moritz.
+# Version 3.x, Copyright (C) 2004-2005, Marcus Holland-Moritz.
# Version 2.x, Copyright (C) 2001, Paul Marquess.
# Version 1.x, Copyright (C) 1999, Kenneth Albanowski.
#
#
################################################################################
#
-# $Revision: 4 $
+# $Revision: 6 $
# $Author: mhx $
-# $Date: 2004/08/13 12:50:22 +0200 $
+# $Date: 2005/01/31 08:10:49 +0100 $
#
################################################################################
#
-# Version 3.x, Copyright (C) 2004, Marcus Holland-Moritz.
+# Version 3.x, Copyright (C) 2004-2005, Marcus Holland-Moritz.
# Version 2.x, Copyright (C) 2001, Paul Marquess.
# Version 1.x, Copyright (C) 1999, Kenneth Albanowski.
#
fi
if isperlroot $PERLROOT; then
- grep -hr '=for apidoc' $PERLROOT | sed -e 's/=for apidoc //' | grep '|' | sort | uniq \
+ grep -hr '^=for apidoc' $PERLROOT | sed -e 's/=for apidoc //' | grep '|' | sort | uniq \
| perl -e'$f=pop;open(F,$f)||die"$f:$!";while(<F>){(split/\|/)[2]=~/(\w+)/;$h{$1}++}
while(<>){(split/\|/)[2]=~/(\w+)/;$h{$1}||print}' $EMBED >$OUTPUT
else
#
################################################################################
#
-# $Revision: 7 $
+# $Revision: 8 $
# $Author: mhx $
-# $Date: 2004/08/13 12:50:23 +0200 $
+# $Date: 2005/01/31 08:10:49 +0100 $
#
################################################################################
#
-# Version 3.x, Copyright (C) 2004, Marcus Holland-Moritz.
+# Version 3.x, Copyright (C) 2004-2005, Marcus Holland-Moritz.
# Version 2.x, Copyright (C) 2001, Paul Marquess.
# Version 1.x, Copyright (C) 1999, Kenneth Albanowski.
#
#
################################################################################
#
-# $Revision: 6 $
+# $Revision: 7 $
# $Author: mhx $
-# $Date: 2004/08/13 12:50:23 +0200 $
+# $Date: 2005/01/31 08:10:50 +0100 $
#
################################################################################
#
-# Version 3.x, Copyright (C) 2004, Marcus Holland-Moritz.
+# Version 3.x, Copyright (C) 2004-2005, Marcus Holland-Moritz.
# Version 2.x, Copyright (C) 2001, Paul Marquess.
# Version 1.x, Copyright (C) 1999, Kenneth Albanowski.
#
#
################################################################################
#
-# $Revision: 4 $
+# $Revision: 5 $
# $Author: mhx $
-# $Date: 2004/09/08 21:08:46 +0200 $
+# $Date: 2005/01/31 08:10:50 +0100 $
#
################################################################################
#
-# Version 3.x, Copyright (C) 2004, Marcus Holland-Moritz.
+# Version 3.x, Copyright (C) 2004-2005, Marcus Holland-Moritz.
# Version 2.x, Copyright (C) 2001, Paul Marquess.
# Version 1.x, Copyright (C) 1999, Kenneth Albanowski.
#
#
################################################################################
#
-# $Revision: 18 $
+# $Revision: 19 $
# $Author: mhx $
-# $Date: 2004/08/30 20:49:12 +0200 $
+# $Date: 2005/01/31 08:10:50 +0100 $
#
################################################################################
#
-# Version 3.x, Copyright (C) 2004, Marcus Holland-Moritz.
+# Version 3.x, Copyright (C) 2004-2005, Marcus Holland-Moritz.
# Version 2.x, Copyright (C) 2001, Paul Marquess.
# Version 1.x, Copyright (C) 1999, Kenneth Albanowski.
#
*
********************************************************************************
*
-* $Revision: 5 $
+* $Revision: 6 $
* $Author: mhx $
-* $Date: 2004/08/23 00:51:54 +0200 $
+* $Date: 2005/01/31 08:10:50 +0100 $
*
********************************************************************************
*
-* Version 3.x, Copyright (C) 2004, Marcus Holland-Moritz.
+* Version 3.x, Copyright (C) 2004-2005, Marcus Holland-Moritz.
* Version 2.x, Copyright (C) 2001, Paul Marquess.
* Version 1.x, Copyright (C) 1999, Kenneth Albanowski.
*
*
********************************************************************************
*
-* $Revision: 4 $
+* $Revision: 5 $
* $Author: mhx $
-* $Date: 2004/08/13 12:49:24 +0200 $
+* $Date: 2005/01/31 08:10:50 +0100 $
*
********************************************************************************
*
-* Version 3.x, Copyright (C) 2004, Marcus Holland-Moritz.
+* Version 3.x, Copyright (C) 2004-2005, Marcus Holland-Moritz.
* Version 2.x, Copyright (C) 2001, Paul Marquess.
* Version 1.x, Copyright (C) 1999, Kenneth Albanowski.
*
#
################################################################################
#
-# $Revision: 10 $
+# $Revision: 11 $
# $Author: mhx $
-# $Date: 2004/08/17 20:56:15 +0200 $
+# $Date: 2005/01/31 08:10:51 +0100 $
#
################################################################################
#
-# Version 3.x, Copyright (C) 2004, Marcus Holland-Moritz.
+# Version 3.x, Copyright (C) 2004-2005, Marcus Holland-Moritz.
# Version 2.x, Copyright (C) 2001, Paul Marquess.
# Version 1.x, Copyright (C) 1999, Kenneth Albanowski.
#
SvUVX # U
SvUVx # U
XPUSHu # U
+gv_efullname3 # U
+gv_fullname3 # U
my_memcmp # U
newRV_inc # E
sv_2uv # U
PL_compiling # added by devel/scanprov
PL_curcop # added by devel/scanprov
PL_curstash # added by devel/scanprov
+PL_debstash # added by devel/scanprov
PL_defgv # added by devel/scanprov
+PL_diehook # added by devel/scanprov
PL_dirty # added by devel/scanprov
+PL_errgv # added by devel/scanprov
+PL_perl_destruct_level # added by devel/scanprov
PL_perldb # added by devel/scanprov
PL_rsfp # added by devel/scanprov
PL_rsfp_filters # added by devel/scanprov
-PL_stdingv # added by devel/scanprov
-SAVE_DEFSV # added by devel/scanprov
-dTHR # added by devel/scanprov
-PL_debstash # added by devel/scanprov
-PL_diehook # added by devel/scanprov
-PL_errgv # added by devel/scanprov
-PL_perl_destruct_level # added by devel/scanprov
PL_stack_base # added by devel/scanprov
PL_stack_sp # added by devel/scanprov
+PL_stdingv # added by devel/scanprov
PL_sv_arenaroot # added by devel/scanprov
PL_tainted # added by devel/scanprov
PL_tainting # added by devel/scanprov
+SAVE_DEFSV # added by devel/scanprov
+dTHR # added by devel/scanprov
5.005000
PL_modglobal # E
+END_EXTERN_C # added by devel/scanprov
+EXTERN_C # added by devel/scanprov
NOOP # added by devel/scanprov
PL_Sv # added by devel/scanprov
PL_copline # added by devel/scanprov
PL_hexdigit # added by devel/scanprov
PL_hints # added by devel/scanprov
-END_EXTERN_C # added by devel/scanprov
-EXTERN_C # added by devel/scanprov
START_EXTERN_C # added by devel/scanprov
gv_check # E (Perl_gv_check)
gv_dump # E
gv_efullname # E (Perl_gv_efullname)
-gv_efullname3 # E (Perl_gv_efullname3)
gv_fetchfile # E (Perl_gv_fetchfile)
gv_fetchmeth # E (Perl_gv_fetchmeth)
gv_fetchmethod # E (Perl_gv_fetchmethod)
gv_fetchmethod_autoload # E (Perl_gv_fetchmethod_autoload)
gv_fetchpv # E (Perl_gv_fetchpv)
gv_fullname # E (Perl_gv_fullname)
-gv_fullname3 # E (Perl_gv_fullname3)
gv_init # E (Perl_gv_init)
gv_stashpv # E (Perl_gv_stashpv)
gv_stashpvn # E (Perl_gv_stashpvn)
PERL_REVISION # added by devel/scanprov
PERL_SUBVERSION # added by devel/scanprov
PERL_VERSION # added by devel/scanprov
+PL_no_modify # added by devel/scanprov
+PL_ppaddr # added by devel/scanprov
PTR2IV # added by devel/scanprov
PTR2NV # added by devel/scanprov
PTR2UV # added by devel/scanprov
dTHX # added by devel/scanprov
dTHXa # added by devel/scanprov
dTHXoa # added by devel/scanprov
+dXSTARG # added by devel/scanprov
pTHX # added by devel/scanprov
pTHX_ # added by devel/scanprov
-PL_no_modify # added by devel/scanprov
-PL_ppaddr # added by devel/scanprov
sv_setpviv_mg # U
unpackstring # U
IN_PERL_COMPILETIME # added by devel/scanprov
+PERL_GCC_BRACE_GROUPS_FORBIDDEN # added by devel/scanprov
PERL_MAGIC_utf8 # added by devel/scanprov
PERL_MAGIC_vstring # added by devel/scanprov
PERL_SCAN_SILENT_ILLDIGIT # added by devel/scanprov
XST_mUV # added by devel/scanprov
-PERL_GCC_BRACE_GROUPS_FORBIDDEN # added by devel/scanprov
ZeroD # E
dUNDERBAR # E
find_rundefsvoffset # U
+gv_fetchpvn_flags # E
+gv_fetchsv # E
mPUSHi # U
mPUSHn # U
mPUSHp # U
mXPUSHn # U
mXPUSHp # U
mXPUSHu # U
+op_refcnt_lock # U
+op_refcnt_unlock # U
+savesvpv # E
vnormal # E
-PERL_BCDVERSION # added by devel/scanprov
MY_CXT_CLONE # added by devel/scanprov
+PERL_BCDVERSION # added by devel/scanprov
+XCPT_CATCH # added by devel/scanprov
+XCPT_RETHROW # added by devel/scanprov
+XCPT_TRY_END # added by devel/scanprov
+XCPT_TRY_START # added by devel/scanprov
+dXCPT # added by devel/scanprov
|I32 method
Ap |void |gv_check |HV* stash
Ap |void |gv_efullname |SV* sv|GV* gv
-Ap |void |gv_efullname3 |SV* sv|GV* gv|const char* prefix
+Amb |void |gv_efullname3 |SV* sv|GV* gv|const char* prefix
Ap |void |gv_efullname4 |SV* sv|GV* gv|const char* prefix|bool keepmain
Ap |GV* |gv_fetchfile |const char* name
Apd |GV* |gv_fetchmeth |HV* stash|const char* name|STRLEN len \
|I32 autoload
Ap |GV* |gv_fetchpv |const char* name|I32 add|I32 sv_type
Ap |void |gv_fullname |SV* sv|GV* gv
-Ap |void |gv_fullname3 |SV* sv|GV* gv|const char* prefix
+Amb |void |gv_fullname3 |SV* sv|GV* gv|const char* prefix
Ap |void |gv_fullname4 |SV* sv|GV* gv|const char* prefix|bool keepmain
Ap |void |gv_init |GV* gv|HV* stash|const char* name \
|STRLEN len|int multi
Apd |HV* |gv_stashpv |const char* name|I32 create
-Ap |HV* |gv_stashpvn |const char* name|U32 namelen|I32 create
+Apd |HV* |gv_stashpvn |const char* name|U32 namelen|I32 create
Apd |HV* |gv_stashsv |SV* sv|I32 create
Apd |void |hv_clear |HV* tb
Ap |void |hv_delayfree_ent|HV* hv|HE* entry
Ap |void |leave_scope |I32 base
p |void |lex_end
p |void |lex_start |SV* line
-Ap |void |op_null |OP* o
+Ap |void |op_null |OP* o
p |void |op_clear |OP* o
+Ap |void |op_refcnt_lock
+Ap |void |op_refcnt_unlock
p |OP* |linklist |OP* o
p |OP* |list |OP* o
p |OP* |listkids |OP* o
Apd |void |packlist |SV *cat|char *pat|char *patend|SV **beglist|SV **endlist
p |void |pidgone |Pid_t pid|int status
Ap |void |pmflag |U32* pmfl|int ch
-p |OP* |pmruntime |OP* pm|OP* expr|OP* repl
+p |OP* |pmruntime |OP* pm|OP* expr|bool isreg
p |OP* |pmtrans |OP* o|OP* expr|OP* repl
Ap |void |pop_scope
p |OP* |prepend_elem |I32 optype|OP* head|OP* tail
Apd |int |sv_backoff |SV* sv
Apd |SV* |sv_bless |SV* sv|HV* stash
Afpd |void |sv_catpvf |SV* sv|const char* pat|...
-Ap |void |sv_vcatpvf |SV* sv|const char* pat|va_list* args
+Apd |void |sv_vcatpvf |SV* sv|const char* pat|va_list* args
Apd |void |sv_catpv |SV* sv|const char* ptr
Amdb |void |sv_catpvn |SV* sv|const char* ptr|STRLEN len
Amdb |void |sv_catsv |SV* dsv|SV* ssv
Apd |void |sv_magic |SV* sv|SV* obj|int how|const char* name \
|I32 namlen
Apd |MAGIC *|sv_magicext |SV* sv|SV* obj|int how|MGVTBL *vtbl \
- | const char* name|I32 namlen
+ |const char* name|I32 namlen
Apd |SV* |sv_mortalcopy |SV* oldsv
Apd |SV* |sv_newmortal
Apd |SV* |sv_newref |SV* sv
Apd |void |sv_report_used
Apd |void |sv_reset |char* s|HV* stash
Afpd |void |sv_setpvf |SV* sv|const char* pat|...
-Ap |void |sv_vsetpvf |SV* sv|const char* pat|va_list* args
+Apd |void |sv_vsetpvf |SV* sv|const char* pat|va_list* args
Apd |void |sv_setiv |SV* sv|IV num
Apdb |void |sv_setpviv |SV* sv|IV num
Apd |void |sv_setuv |SV* sv|UV num
Ap |int |runops_standard
Ap |int |runops_debug
Afpd |void |sv_catpvf_mg |SV *sv|const char* pat|...
-Ap |void |sv_vcatpvf_mg |SV* sv|const char* pat|va_list* args
+Apd |void |sv_vcatpvf_mg |SV* sv|const char* pat|va_list* args
Apd |void |sv_catpv_mg |SV *sv|const char *ptr
Apd |void |sv_catpvn_mg |SV *sv|const char *ptr|STRLEN len
Apd |void |sv_catsv_mg |SV *dstr|SV *sstr
Afpd |void |sv_setpvf_mg |SV *sv|const char* pat|...
-Ap |void |sv_vsetpvf_mg |SV* sv|const char* pat|va_list* args
+Apd |void |sv_vsetpvf_mg |SV* sv|const char* pat|va_list* args
Apd |void |sv_setiv_mg |SV *sv|IV i
Apdb |void |sv_setpviv_mg |SV *sv|IV iv
Apd |void |sv_setuv_mg |SV *sv|UV u
Ap |void |do_sv_dump |I32 level|PerlIO *file|SV *sv|I32 nest \
|I32 maxnest|bool dumpops|STRLEN pvlim
Ap |void |magic_dump |MAGIC *mg
-#if defined(PERL_FLEXIBLE_EXCEPTIONS)
-Ap |void* |default_protect|volatile JMPENV *je|int *excpt \
- |protect_body_t body|...
-Ap |void* |vdefault_protect|volatile JMPENV *je|int *excpt \
- |protect_body_t body|va_list *args
-#endif
Ap |void |reginitcolors
Apd |char* |sv_2pv_nolen |SV* sv
Apd |char* |sv_2pvutf8_nolen|SV* sv
#if defined(PERL_IN_PERL_C) || defined(PERL_DECL_PROT)
s |void |find_beginning
s |void |forbid_setid |char *
-s |void |incpush |char *|int|int|int
+s |void |incpush |char *|int|int|int|int
s |void |init_interp
s |void |init_ids
s |void |init_lexer
s |void* |run_body |I32 oldscope
s |void |call_body |OP *myop|int is_eval
s |void* |call_list_body |CV *cv
-#if defined(PERL_FLEXIBLE_EXCEPTIONS)
-s |void* |vparse_body |va_list args
-s |void* |vrun_body |va_list args
-s |void* |vcall_body |va_list args
-s |void* |vcall_list_body|va_list args
-#endif
#endif
#if defined(PERL_IN_PP_C) || defined(PERL_DECL_PROT)
#if defined(PERL_IN_PP_CTL_C) || defined(PERL_DECL_PROT)
s |OP* |docatch |OP *o
s |void* |docatch_body
-#if defined(PERL_FLEXIBLE_EXCEPTIONS)
-s |void* |vdocatch_body |va_list args
-#endif
s |OP* |dofindlabel |OP *o|char *label|OP **opstack|OP **oplimit
s |OP* |doparseform |SV *sv
sn |bool |num_overflow |NV value|I32 fldsize|I32 frcsize
s |SV* |new_constant |char *s|STRLEN len|const char *key|SV *sv \
|SV *pv|const char *type
# if defined(DEBUGGING)
-s |void |tokereport |char *thing|char *s|I32 rv
+s |int |tokereport |char *s|I32 rv
# endif
s |int |ao |int toketype
s |void |depcom
pd |CV* |find_runcv |U32 *db_seqp
p |void |free_tied_hv_pool
#if defined(DEBUGGING)
-p |int |get_debug_opts |char **s
+p |int |get_debug_opts |char **s|bool givehelp
#endif
Ap |void |save_set_svflags|SV* sv|U32 mask|U32 val
Apod |void |hv_assert |HV* tb
np |void |my_swabn |void* ptr|int n
+Ap |GV* |gv_fetchpvn_flags|const char* name|STRLEN len|I32 flags|I32 sv_type
+Ap |GV* |gv_fetchsv|SV *name|I32 flags|I32 sv_type
+dp |bool |is_gv_magical_sv|SV *name|U32 flags
+
+Apd |char* |savesvpv |SV* sv
+
END_EXTERN_C
################################################################################
##
-## $Revision: 9 $
+## $Revision: 10 $
## $Author: mhx $
-## $Date: 2004/09/08 22:15:16 +0200 $
+## $Date: 2005/01/31 08:10:52 +0100 $
##
################################################################################
##
-## Version 3.x, Copyright (C) 2004, Marcus Holland-Moritz.
+## Version 3.x, Copyright (C) 2004-2005, Marcus Holland-Moritz.
## Version 2.x, Copyright (C) 2001, Paul Marquess.
## Version 1.x, Copyright (C) 1999, Kenneth Albanowski.
##
################################################################################
##
-## $Revision: 8 $
+## $Revision: 10 $
## $Author: mhx $
-## $Date: 2004/12/29 14:17:20 +0100 $
+## $Date: 2005/01/31 08:10:54 +0100 $
##
################################################################################
##
-## Version 3.x, Copyright (C) 2004, Marcus Holland-Moritz.
+## Version 3.x, Copyright (C) 2004-2005, Marcus Holland-Moritz.
## Version 2.x, Copyright (C) 2001, Paul Marquess.
## Version 1.x, Copyright (C) 1999, Kenneth Albanowski.
##
const char *str;
CODE:
str = SvPV_nolen(sv);
- RETVAL = strEQ(str, "mhx") ? 3 : 0;
+ RETVAL = strEQ(str, "mhx") ? 42 : 0;
OUTPUT:
RETVAL
=tests plan => 2
ok(&Devel::PPPort::SvPVbyte("mhx"), 3);
-ok(&Devel::PPPort::SvPVbyte("mhx"), 3);
+ok(&Devel::PPPort::SvPV_nolen("mhx"), 42);
################################################################################
##
-## $Revision: 7 $
+## $Revision: 8 $
## $Author: mhx $
-## $Date: 2004/08/13 12:45:53 +0200 $
+## $Date: 2005/01/31 08:10:51 +0100 $
##
################################################################################
##
-## Version 3.x, Copyright (C) 2004, Marcus Holland-Moritz.
+## Version 3.x, Copyright (C) 2004-2005, Marcus Holland-Moritz.
## Version 2.x, Copyright (C) 2001, Paul Marquess.
## Version 1.x, Copyright (C) 1999, Kenneth Albanowski.
##
################################################################################
##
-## $Revision: 3 $
+## $Revision: 4 $
## $Author: mhx $
-## $Date: 2004/08/13 12:45:54 +0200 $
+## $Date: 2005/01/31 08:10:51 +0100 $
##
################################################################################
##
-## Version 3.x, Copyright (C) 2004, Marcus Holland-Moritz.
+## Version 3.x, Copyright (C) 2004-2005, Marcus Holland-Moritz.
## Version 2.x, Copyright (C) 2001, Paul Marquess.
## Version 1.x, Copyright (C) 1999, Kenneth Albanowski.
##
--- /dev/null
+################################################################################
+##
+## $Revision: 2 $
+## $Author: mhx $
+## $Date: 2005/01/31 08:10:51 +0100 $
+##
+################################################################################
+##
+## Version 3.x, Copyright (C) 2004-2005, Marcus Holland-Moritz.
+## Version 2.x, Copyright (C) 2001, Paul Marquess.
+## Version 1.x, Copyright (C) 1999, Kenneth Albanowski.
+##
+## This program is free software; you can redistribute it and/or
+## modify it under the same terms as Perl itself.
+##
+################################################################################
+
+=provides
+
+dXCPT
+XCPT_TRY_START
+XCPT_TRY_END
+XCPT_CATCH
+XCPT_RETHROW
+
+=implementation
+
+#ifdef dJMPENV
+
+# ifndef dXCPT
+# define dXCPT dJMPENV; int rEtV = 0
+# define XCPT_TRY_START JMPENV_PUSH(rEtV); if (rEtV == 0)
+# define XCPT_TRY_END JMPENV_POP;
+# define XCPT_CATCH if (rEtV != 0)
+# define XCPT_RETHROW JMPENV_JUMP(rEtV)
+# endif
+
+#else
+
+# define dXCPT Sigjmp_buf oldTOP; int rEtV = 0
+# define XCPT_TRY_START Copy(top_env, oldTOP, 1, Sigjmp_buf); rEtV = Sigsetjmp(top_env, 1); if (rEtV == 0)
+# define XCPT_TRY_END Copy(oldTOP, top_env, 1, Sigjmp_buf);
+# define XCPT_CATCH if (rEtV != 0)
+# define XCPT_RETHROW Siglongjmp(top_env, rEtV)
+
+#endif
+
+=xsmisc
+
+static void throws_exception(int throw_e)
+{
+ if (throw_e)
+ croak("boo\n");
+}
+
+static int exception(int throw_e)
+{
+ dTHR;
+ dXCPT;
+ SV *caught = get_sv("Devel::PPPort::exception_caught", 0);
+
+ XCPT_TRY_START {
+ throws_exception(throw_e);
+ } XCPT_TRY_END
+
+ XCPT_CATCH
+ {
+ sv_setiv(caught, 1);
+ XCPT_RETHROW;
+ }
+
+ sv_setiv(caught, 0);
+
+ return 42;
+}
+
+=xsubs
+
+int
+exception(throw_e)
+ int throw_e
+ OUTPUT:
+ RETVAL
+
+=tests plan => 7
+
+my $rv;
+
+$Devel::PPPort::exception_caught = undef;
+
+$rv = eval { &Devel::PPPort::exception(0) };
+ok($@, '');
+ok(defined $rv);
+ok($rv, 42);
+ok($Devel::PPPort::exception_caught, 0);
+
+$Devel::PPPort::exception_caught = undef;
+
+$rv = eval { &Devel::PPPort::exception(1) };
+ok($@, "boo\n");
+ok(not defined $rv);
+ok($Devel::PPPort::exception_caught, 1);
################################################################################
##
-## $Revision: 2 $
+## $Revision: 3 $
## $Author: mhx $
-## $Date: 2004/08/13 12:45:54 +0200 $
+## $Date: 2005/01/31 08:10:51 +0100 $
##
################################################################################
##
-## Version 3.x, Copyright (C) 2004, Marcus Holland-Moritz.
+## Version 3.x, Copyright (C) 2004-2005, Marcus Holland-Moritz.
## Version 2.x, Copyright (C) 2001, Paul Marquess.
## Version 1.x, Copyright (C) 1999, Kenneth Albanowski.
##
################################################################################
##
-## $Revision: 6 $
+## $Revision: 7 $
## $Author: mhx $
-## $Date: 2004/08/13 12:45:54 +0200 $
+## $Date: 2005/01/31 08:10:51 +0100 $
##
################################################################################
##
-## Version 3.x, Copyright (C) 2004, Marcus Holland-Moritz.
+## Version 3.x, Copyright (C) 2004-2005, Marcus Holland-Moritz.
## Version 2.x, Copyright (C) 2001, Paul Marquess.
## Version 1.x, Copyright (C) 1999, Kenneth Albanowski.
##
################################################################################
##
-## $Revision: 2 $
+## $Revision: 3 $
## $Author: mhx $
-## $Date: 2004/08/13 12:45:55 +0200 $
+## $Date: 2005/01/31 08:10:51 +0100 $
##
################################################################################
##
-## Version 3.x, Copyright (C) 2004, Marcus Holland-Moritz.
+## Version 3.x, Copyright (C) 2004-2005, Marcus Holland-Moritz.
## Version 2.x, Copyright (C) 2001, Paul Marquess.
## Version 1.x, Copyright (C) 1999, Kenneth Albanowski.
##
################################################################################
##
-## $Revision: 4 $
+## $Revision: 5 $
## $Author: mhx $
-## $Date: 2004/08/13 12:45:55 +0200 $
+## $Date: 2005/01/31 08:10:52 +0100 $
##
################################################################################
##
-## Version 3.x, Copyright (C) 2004, Marcus Holland-Moritz.
+## Version 3.x, Copyright (C) 2004-2005, Marcus Holland-Moritz.
## Version 2.x, Copyright (C) 2001, Paul Marquess.
## Version 1.x, Copyright (C) 1999, Kenneth Albanowski.
##
################################################################################
##
-## $Revision: 7 $
+## $Revision: 8 $
## $Author: mhx $
-## $Date: 2004/08/13 12:45:55 +0200 $
+## $Date: 2005/01/31 08:10:52 +0100 $
##
################################################################################
##
-## Version 3.x, Copyright (C) 2004, Marcus Holland-Moritz.
+## Version 3.x, Copyright (C) 2004-2005, Marcus Holland-Moritz.
## Version 2.x, Copyright (C) 2001, Paul Marquess.
## Version 1.x, Copyright (C) 1999, Kenneth Albanowski.
##
################################################################################
##
-## $Revision: 17 $
+## $Revision: 19 $
## $Author: mhx $
-## $Date: 2004/09/08 21:10:12 +0200 $
+## $Date: 2005/01/31 08:10:52 +0100 $
##
################################################################################
##
-## Version 3.x, Copyright (C) 2004, Marcus Holland-Moritz.
+## Version 3.x, Copyright (C) 2004-2005, Marcus Holland-Moritz.
## Version 2.x, Copyright (C) 2001, Paul Marquess.
## Version 1.x, Copyright (C) 1999, Kenneth Albanowski.
##
__UNDEFINED__ dAX I32 ax = MARK - PL_stack_base + 1
__UNDEFINED__ dITEMS I32 items = SP - MARK
+__UNDEFINED__ dXSTARG SV * targ = sv_newmortal()
+
+=xsmisc
+
+XS(XS_Devel__PPPort_dXSTARG); /* prototype */
+XS(XS_Devel__PPPort_dXSTARG)
+{
+ dXSARGS;
+ dXSTARG;
+ SP -= items;
+ IV iv = SvIV(ST(0)) + 1;
+ PUSHi(iv);
+ XSRETURN(1);
+}
+
+=xsboot
+
+newXS("Devel::PPPort::dXSTARG", XS_Devel__PPPort_dXSTARG, file);
+
=xsubs
int
OUTPUT:
RETVAL
-=tests plan => 31
+=tests plan => 32
use vars qw($my_sv @my_av %my_hv);
ok(!&Devel::PPPort::get_cv('not_my_cv', 0));
ok(&Devel::PPPort::get_cv('not_my_cv', 1));
+ok(Devel::PPPort::dXSTARG(42), 43);
+
################################################################################
##
-## $Revision: 7 $
+## $Revision: 8 $
## $Author: mhx $
-## $Date: 2004/08/13 12:45:55 +0200 $
+## $Date: 2005/01/31 08:10:52 +0100 $
##
################################################################################
##
-## Version 3.x, Copyright (C) 2004, Marcus Holland-Moritz.
+## Version 3.x, Copyright (C) 2004-2005, Marcus Holland-Moritz.
## Version 2.x, Copyright (C) 2001, Paul Marquess.
## Version 1.x, Copyright (C) 1999, Kenneth Albanowski.
##
################################################################################
##
-## $Revision: 4 $
+## $Revision: 5 $
## $Author: mhx $
-## $Date: 2004/08/13 12:45:56 +0200 $
+## $Date: 2005/01/31 08:10:52 +0100 $
##
################################################################################
##
-## Version 3.x, Copyright (C) 2004, Marcus Holland-Moritz.
+## Version 3.x, Copyright (C) 2004-2005, Marcus Holland-Moritz.
## Version 2.x, Copyright (C) 2001, Paul Marquess.
## Version 1.x, Copyright (C) 1999, Kenneth Albanowski.
##
################################################################################
##
-## $Revision: 22 $
+## $Revision: 26 $
## $Author: mhx $
-## $Date: 2004/12/29 14:54:27 +0100 $
+## $Date: 2005/01/31 08:10:53 +0100 $
##
################################################################################
##
-## Version 3.x, Copyright (C) 2004, Marcus Holland-Moritz.
+## Version 3.x, Copyright (C) 2004-2005, Marcus Holland-Moritz.
## Version 2.x, Copyright (C) 2001, Paul Marquess.
## Version 1.x, Copyright (C) 1999, Kenneth Albanowski.
##
if (exists $opt{'api-info'}) {
my $f;
my $count = 0;
+ my $match = $opt{'api-info'} =~ m!^/(.*)/$! ? $1 : "^\Q$opt{'api-info'}\E\$";
for $f (sort { lc $a cmp lc $b } keys %API) {
- next unless $f =~ /$opt{'api-info'}/;
+ next unless $f =~ /$match/;
print "\n=== $f ===\n\n";
my $info = 0;
if ($API{$f}{base} || $API{$f}{todo}) {
my $base = format_version($API{$f}{base} || $API{$f}{todo});
- print "May not be supported below perl-$base.\n";
+ print "Supported at least starting from perl-$base.\n";
$info++;
}
if ($API{$f}{provided}) {
my $todo = $API{$f}{todo} ? format_version($API{$f}{todo}) : "__MIN_PERL__";
- print "Support by $ppport provided down to perl-$todo.\n";
+ print "Support by $ppport provided back to perl-$todo.\n";
print "Support needs to be explicitly requested by NEED_$f.\n" if exists $need{$f};
print "Depends on: ", join(', ', @{$depends{$f}}), ".\n" if exists $depends{$f};
print "$hints{$f}" if exists $hints{$f};
print "\n";
}
else {
- print "Found no API matching $opt{'api-info'}.\n";
+ print "Found no API matching '$opt{'api-info'}'.\n";
}
exit 0;
}
################################################################################
##
-## $Revision: 18 $
+## $Revision: 20 $
## $Author: mhx $
-## $Date: 2004/12/29 14:55:00 +0100 $
+## $Date: 2005/01/31 08:10:53 +0100 $
##
################################################################################
##
-## Version 3.x, Copyright (C) 2004, Marcus Holland-Moritz.
+## Version 3.x, Copyright (C) 2004-2005, Marcus Holland-Moritz.
## Version 2.x, Copyright (C) 2001, Paul Marquess.
## Version 1.x, Copyright (C) 1999, Kenneth Albanowski.
##
=head2 --api-info=I<name>
Show portability information for API elements matching I<name>.
-I<name> is treated as a Perl regular expression.
+If I<name> is surrounded by slashes, it is interpreted as a regular
+expression.
=head1 DESCRIPTION
This would output context diffs with 10 lines of context.
+To display portability information for the C<newSVpvn> function,
+use:
+
+ perl ppport.h --api-info=newSVpvn
+
+Since the argument to C<--api-info> can be a regular expression,
+you can use
+
+ perl ppport.h --api-info=/_nomg$/
+
+to display portability information for all C<_nomg> functions or
+
+ perl ppport.h --api-info=/./
+
+to display information for all known API elements.
+
=head1 BUGS
If this version of F<ppport.h> is causing failure during
=head1 COPYRIGHT
-Version 3.x, Copyright (c) 2004, Marcus Holland-Moritz.
+Version 3.x, Copyright (c) 2004-2005, Marcus Holland-Moritz.
Version 2.x, Copyright (C) 2001, Paul Marquess.
################################################################################
##
-## $Revision: 22 $
+## $Revision: 23 $
## $Author: mhx $
-## $Date: 2004/10/14 20:16:03 +0200 $
+## $Date: 2005/01/31 08:10:53 +0100 $
##
################################################################################
##
-## Version 3.x, Copyright (C) 2004, Marcus Holland-Moritz.
+## Version 3.x, Copyright (C) 2004-2005, Marcus Holland-Moritz.
## Version 2.x, Copyright (C) 2001, Paul Marquess.
## Version 1.x, Copyright (C) 1999, Kenneth Albanowski.
##
################################################################################
##
-## $Revision: 2 $
+## $Revision: 3 $
## $Author: mhx $
-## $Date: 2004/08/17 20:02:25 +0200 $
+## $Date: 2005/01/31 08:10:54 +0100 $
##
################################################################################
##
-## Version 3.x, Copyright (C) 2004, Marcus Holland-Moritz.
+## Version 3.x, Copyright (C) 2004-2005, Marcus Holland-Moritz.
## Version 2.x, Copyright (C) 2001, Paul Marquess.
## Version 1.x, Copyright (C) 1999, Kenneth Albanowski.
##
################################################################################
##
-## $Revision: 3 $
+## $Revision: 4 $
## $Author: mhx $
-## $Date: 2004/08/13 12:47:17 +0200 $
+## $Date: 2005/01/31 08:10:54 +0100 $
##
################################################################################
##
-## Version 3.x, Copyright (C) 2004, Marcus Holland-Moritz.
+## Version 3.x, Copyright (C) 2004-2005, Marcus Holland-Moritz.
## Version 2.x, Copyright (C) 2001, Paul Marquess.
## Version 1.x, Copyright (C) 1999, Kenneth Albanowski.
##
################################################################################
##
-## $Revision: 9 $
+## $Revision: 10 $
## $Author: mhx $
-## $Date: 2004/08/17 23:13:18 +0200 $
+## $Date: 2005/01/31 08:10:54 +0100 $
##
################################################################################
##
-## Version 3.x, Copyright (C) 2004, Marcus Holland-Moritz.
+## Version 3.x, Copyright (C) 2004-2005, Marcus Holland-Moritz.
## Version 2.x, Copyright (C) 2001, Paul Marquess.
## Version 1.x, Copyright (C) 1999, Kenneth Albanowski.
##
################################################################################
##
-## $Revision: 3 $
+## $Revision: 4 $
## $Author: mhx $
-## $Date: 2004/08/23 00:49:05 +0200 $
+## $Date: 2005/01/31 08:10:54 +0100 $
##
################################################################################
##
-## Version 3.x, Copyright (C) 2004, Marcus Holland-Moritz.
+## Version 3.x, Copyright (C) 2004-2005, Marcus Holland-Moritz.
## Version 2.x, Copyright (C) 2001, Paul Marquess.
## Version 1.x, Copyright (C) 1999, Kenneth Albanowski.
##
#
################################################################################
#
-# $Revision: 12 $
+# $Revision: 13 $
# $Author: mhx $
-# $Date: 2004/08/17 14:00:34 +0200 $
+# $Date: 2005/01/31 08:10:54 +0100 $
#
################################################################################
#
-# Version 3.x, Copyright (C) 2004, Marcus Holland-Moritz.
+# Version 3.x, Copyright (C) 2004-2005, Marcus Holland-Moritz.
# Version 2.x, Copyright (C) 2001, Paul Marquess.
# Version 1.x, Copyright (C) 1999, Kenneth Albanowski.
#
5.009002
SvPVbyte_force # E
find_rundefsvoffset # U
+gv_fetchpvn_flags # E
+gv_fetchsv # E
+op_refcnt_lock # U
+op_refcnt_unlock # U
+savesvpv # E
vnormal # E
#
################################################################################
#
-# $Revision: 3 $
+# $Revision: 4 $
# $Author: mhx $
-# $Date: 2004/08/13 12:49:27 +0200 $
+# $Date: 2005/01/31 08:10:54 +0100 $
#
################################################################################
#
-# Version 3.x, Copyright (C) 2004, Marcus Holland-Moritz.
+# Version 3.x, Copyright (C) 2004-2005, Marcus Holland-Moritz.
# Version 2.x, Copyright (C) 2001, Paul Marquess.
# Version 1.x, Copyright (C) 1999, Kenneth Albanowski.
#
#
################################################################################
#
-# $Revision: 6 $
+# $Revision: 7 $
# $Author: mhx $
-# $Date: 2004/08/13 12:49:41 +0200 $
+# $Date: 2005/01/31 08:10:55 +0100 $
#
################################################################################
#
-# Version 3.x, Copyright (C) 2004, Marcus Holland-Moritz.
+# Version 3.x, Copyright (C) 2004-2005, Marcus Holland-Moritz.
# Version 2.x, Copyright (C) 2001, Paul Marquess.
# Version 1.x, Copyright (C) 1999, Kenneth Albanowski.
#
$^W = 1;
ok(&Devel::PPPort::SvPVbyte("mhx"), 3);
-ok(&Devel::PPPort::SvPVbyte("mhx"), 3);
+ok(&Devel::PPPort::SvPV_nolen("mhx"), 42);
--- /dev/null
+################################################################################
+#
+# !!!!! Do NOT edit this file directly! !!!!!
+#
+# Edit mktests.PL and/or parts/inc/exception instead.
+#
+################################################################################
+
+BEGIN {
+ if ($ENV{'PERL_CORE'}) {
+ chdir 't' if -d 't';
+ @INC = ('../lib', '../ext/Devel/PPPort/t') if -d '../lib' && -d '../ext';
+ require Config; import Config;
+ use vars '%Config';
+ if (" $Config{'extensions'} " !~ m[ Devel/PPPort ]) {
+ print "1..0 # Skip -- Perl configured without Devel::PPPort module\n";
+ exit 0;
+ }
+ }
+ else {
+ unshift @INC, 't';
+ }
+
+ eval "use Test";
+ if ($@) {
+ require 'testutil.pl';
+ print "1..7\n";
+ }
+ else {
+ plan(tests => 7);
+ }
+}
+
+use Devel::PPPort;
+use strict;
+$^W = 1;
+
+my $rv;
+
+$Devel::PPPort::exception_caught = undef;
+
+$rv = eval { &Devel::PPPort::exception(0) };
+ok($@, '');
+ok(defined $rv);
+ok($rv, 42);
+ok($Devel::PPPort::exception_caught, 0);
+
+$Devel::PPPort::exception_caught = undef;
+
+$rv = eval { &Devel::PPPort::exception(1) };
+ok($@, "boo\n");
+ok(not defined $rv);
+ok($Devel::PPPort::exception_caught, 1);
+
eval "use Test";
if ($@) {
require 'testutil.pl';
- print "1..31\n";
+ print "1..32\n";
}
else {
- plan(tests => 31);
+ plan(tests => 32);
}
}
ok(!&Devel::PPPort::get_cv('not_my_cv', 0));
ok(&Devel::PPPort::get_cv('not_my_cv', 1));
+ok(Devel::PPPort::dXSTARG(42), 43);
+
#
################################################################################
#
-# $Revision: 3 $
+# $Revision: 4 $
# $Author: mhx $
-# $Date: 2004/08/13 12:49:15 +0200 $
+# $Date: 2005/01/31 08:10:55 +0100 $
#
################################################################################
#
-# Version 3.x, Copyright (C) 2004, Marcus Holland-Moritz.
+# Version 3.x, Copyright (C) 2004-2005, Marcus Holland-Moritz.
# Version 2.x, Copyright (C) 2001, Paul Marquess.
# Version 1.x, Copyright (C) 1999, Kenneth Albanowski.
#