diff options
author | Marcus Holland-Moritz <mhx-perl@gmx.net> | 2009-06-12 13:23:26 +0200 |
---|---|---|
committer | Marcus Holland-Moritz <mhx-perl@gmx.net> | 2009-06-12 13:23:26 +0200 |
commit | 8565c31a574ba4f7dc8cd69b66988949074e120d (patch) | |
tree | 361aece696f735afb46337f25a3ade9fb6678e91 /ext | |
parent | 55ae25dcfe5b5ecc6ac964f070b813004653dc4e (diff) | |
download | perl-8565c31a574ba4f7dc8cd69b66988949074e120d.tar.gz |
Upgrade to Devel::PPPort 3.18_01
Diffstat (limited to 'ext')
-rw-r--r-- | ext/Devel-PPPort/Changes | 21 | ||||
-rw-r--r-- | ext/Devel-PPPort/Makefile.PL | 4 | ||||
-rw-r--r-- | ext/Devel-PPPort/PPPort_pm.PL | 16 | ||||
-rw-r--r-- | ext/Devel-PPPort/mktests.PL | 4 | ||||
-rw-r--r-- | ext/Devel-PPPort/parts/apicheck.pl | 5 | ||||
-rw-r--r-- | ext/Devel-PPPort/parts/inc/HvNAME | 45 | ||||
-rw-r--r-- | ext/Devel-PPPort/parts/inc/gv | 66 | ||||
-rw-r--r-- | ext/Devel-PPPort/parts/inc/misc | 17 | ||||
-rw-r--r-- | ext/Devel-PPPort/parts/inc/newSV_type | 86 | ||||
-rw-r--r-- | ext/Devel-PPPort/parts/inc/pvs | 35 | ||||
-rw-r--r-- | ext/Devel-PPPort/parts/inc/variables | 42 | ||||
-rw-r--r-- | ext/Devel-PPPort/soak | 2 | ||||
-rw-r--r-- | ext/Devel-PPPort/t/HvNAME.t | 56 | ||||
-rw-r--r-- | ext/Devel-PPPort/t/gv.t | 54 | ||||
-rw-r--r-- | ext/Devel-PPPort/t/newSV_type.t | 52 | ||||
-rw-r--r-- | ext/Devel-PPPort/t/pvs.t | 7 | ||||
-rw-r--r-- | ext/Devel-PPPort/t/variables.t | 4 | ||||
-rw-r--r-- | ext/Devel-PPPort/typemap | 10 |
18 files changed, 497 insertions, 29 deletions
diff --git a/ext/Devel-PPPort/Changes b/ext/Devel-PPPort/Changes index 8ad4106407..40deaba63d 100644 --- a/ext/Devel-PPPort/Changes +++ b/ext/Devel-PPPort/Changes @@ -1,3 +1,24 @@ +3.18_01 - 2009-06-12 + + * fix CPAN #44614: Please support XSBODY + * fix CPAN #44655: Please support SVfARG + * added support for the following API + gv_fetchpvn_flags + gv_fetchpvs + gv_stashpvs + GvSVn + HvNAME_get + HvNAMELEN_get + isGV_with_GP + newSV_type + PL_error_count + PL_in_my + PL_in_my_stash + SVfARG + XSPROTO + (thanks to Goro Fuji for providing a patch to + implement almost all of these, fixes CPAN #44087) + 3.18 - 2009-06-12 * remove MAN3PODS option from Makefile.PL, which is diff --git a/ext/Devel-PPPort/Makefile.PL b/ext/Devel-PPPort/Makefile.PL index f0023db5f6..67eebc1b52 100644 --- a/ext/Devel-PPPort/Makefile.PL +++ b/ext/Devel-PPPort/Makefile.PL @@ -4,9 +4,9 @@ # ################################################################################ # -# $Revision: 31 $ +# $Revision: 30 $ # $Author: mhx $ -# $Date: 2009/06/12 12:45:44 +0200 $ +# $Date: 2009/06/12 04:07:05 +0200 $ # ################################################################################ # diff --git a/ext/Devel-PPPort/PPPort_pm.PL b/ext/Devel-PPPort/PPPort_pm.PL index 83a4739260..30f132339c 100644 --- a/ext/Devel-PPPort/PPPort_pm.PL +++ b/ext/Devel-PPPort/PPPort_pm.PL @@ -4,9 +4,9 @@ # ################################################################################ # -# $Revision: 64 $ +# $Revision: 65 $ # $Author: mhx $ -# $Date: 2009/01/18 14:10:49 +0100 $ +# $Date: 2009/06/12 04:10:36 +0200 $ # ################################################################################ # @@ -372,9 +372,9 @@ __DATA__ # ################################################################################ # -# $Revision: 64 $ +# $Revision: 65 $ # $Author: mhx $ -# $Date: 2009/01/18 14:10:49 +0100 $ +# $Date: 2009/06/12 04:10:36 +0200 $ # ################################################################################ # @@ -535,7 +535,7 @@ package Devel::PPPort; use strict; use vars qw($VERSION $data); -$VERSION = do { my @r = '$Snapshot: /Devel-PPPort/3.18 $' =~ /(\d+\.\d+(?:_\d+)?)/; @r ? $r[0] : '9.99' }; +$VERSION = do { my @r = '$Snapshot: /Devel-PPPort/3.18_01 $' =~ /(\d+\.\d+(?:_\d+)?)/; @r ? $r[0] : '9.99' }; sub _init_data { @@ -628,6 +628,8 @@ __DATA__ %include SvREFCNT +%include newSV_type + %include newSVpv %include SvPV @@ -638,6 +640,10 @@ __DATA__ %include shared_pv +%include HvNAME + +%include gv + %include warn %include pvs diff --git a/ext/Devel-PPPort/mktests.PL b/ext/Devel-PPPort/mktests.PL index 332f9a4d70..98b80ed5e0 100644 --- a/ext/Devel-PPPort/mktests.PL +++ b/ext/Devel-PPPort/mktests.PL @@ -4,9 +4,9 @@ # ################################################################################ # -# $Revision: 32 $ +# $Revision: 31 $ # $Author: mhx $ -# $Date: 2009/06/12 12:46:07 +0200 $ +# $Date: 2009/06/11 20:53:42 +0200 $ # ################################################################################ # diff --git a/ext/Devel-PPPort/parts/apicheck.pl b/ext/Devel-PPPort/parts/apicheck.pl index 35901425e5..e6caab57c9 100644 --- a/ext/Devel-PPPort/parts/apicheck.pl +++ b/ext/Devel-PPPort/parts/apicheck.pl @@ -5,9 +5,9 @@ # ################################################################################ # -# $Revision: 34 $ +# $Revision: 35 $ # $Author: mhx $ -# $Date: 2009/01/18 14:10:51 +0100 $ +# $Date: 2009/06/12 12:29:35 +0200 $ # ################################################################################ # @@ -156,6 +156,7 @@ print OUT <<HEAD; #define NEED_my_strlcpy #define NEED_newCONSTSUB #define NEED_newRV_noinc +#define NEED_newSV_type #define NEED_newSVpvn_share #define NEED_pv_display #define NEED_pv_escape diff --git a/ext/Devel-PPPort/parts/inc/HvNAME b/ext/Devel-PPPort/parts/inc/HvNAME new file mode 100644 index 0000000000..135549db26 --- /dev/null +++ b/ext/Devel-PPPort/parts/inc/HvNAME @@ -0,0 +1,45 @@ +################################################################################ +## +## $Revision: 1 $ +## $Author: mhx $ +## $Date: 2009/06/12 12:29:57 +0200 $ +## +################################################################################ +## +## Version 3.x, Copyright (C) 2004-2009, 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 + +__UNDEFINED__ + +=implementation + +__UNDEFINED__ HvNAME_get(hv) HvNAME(hv) + +__UNDEFINED__ HvNAMELEN_get(hv) (HvNAME_get(hv) ? (I32)strlen(HvNAME_get(hv)) : 0) + +=xsubs + +char* +HvNAME_get(hv) + HV *hv + +int +HvNAMELEN_get(hv) + HV *hv + +=tests plan => 4 + +ok(Devel::PPPort::HvNAME_get(\%Devel::PPPort::), 'Devel::PPPort'); +ok(Devel::PPPort::HvNAME_get({}), undef); + +ok(Devel::PPPort::HvNAMELEN_get(\%Devel::PPPort::), length('Devel::PPPort')); +ok(Devel::PPPort::HvNAMELEN_get({}), 0); + diff --git a/ext/Devel-PPPort/parts/inc/gv b/ext/Devel-PPPort/parts/inc/gv new file mode 100644 index 0000000000..1b911e738d --- /dev/null +++ b/ext/Devel-PPPort/parts/inc/gv @@ -0,0 +1,66 @@ +################################################################################ +## +## $Revision: 1 $ +## $Author: mhx $ +## $Date: 2009/06/12 12:29:56 +0200 $ +## +################################################################################ +## +## Version 3.x, Copyright (C) 2004-2009, 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 + +__UNDEFINED__ + +=implementation + +__UNDEFINED__ GvSVn(gv) GvSV(gv) +__UNDEFINED__ isGV_with_GP(gv) isGV(gv) + +=xsubs + +int +GvSVn() + PREINIT: + GV* gv; + CODE: + RETVAL = 0; + gv = gv_fetchpvs("Devel::PPPort::GvTest", GV_ADDMULTI, SVt_PVGV); + if (GvSVn(gv) != NULL) + { + RETVAL++; + } + OUTPUT: + RETVAL + +int +isGV_with_GP() + PREINIT: + GV* gv; + CODE: + RETVAL = 0; + gv = gv_fetchpvs("Devel::PPPort::GvTest", GV_ADDMULTI, SVt_PVGV); + if (isGV_with_GP(gv)) + { + RETVAL++; + } + if (!isGV(&PL_sv_undef)) + { + RETVAL++; + } + OUTPUT: + RETVAL + + +=tests plan => 2 + +ok(Devel::PPPort::GvSVn(), 1); + +ok(Devel::PPPort::isGV_with_GP(), 2) diff --git a/ext/Devel-PPPort/parts/inc/misc b/ext/Devel-PPPort/parts/inc/misc index 9900812d8e..3844bbb317 100644 --- a/ext/Devel-PPPort/parts/inc/misc +++ b/ext/Devel-PPPort/parts/inc/misc @@ -1,8 +1,8 @@ ################################################################################ ## -## $Revision: 52 $ +## $Revision: 53 $ ## $Author: mhx $ -## $Date: 2009/03/15 06:51:00 +0100 $ +## $Date: 2009/03/31 23:05:55 +0200 $ ## ################################################################################ ## @@ -209,6 +209,9 @@ __UNDEFINED__ XSprePUSH (sp = PL_stack_base + ax - 1) } STMT_END #endif +__UNDEFINED__ XSPROTO(name) void name(pTHX_ CV* cv) +__UNDEFINED__ SVfARG(p) ((void*)(p)) + __UNDEFINED__ PERL_ABS(x) ((x) < 0 ? -(x) : (x)) __UNDEFINED__ dVAR dNOOP @@ -282,6 +285,9 @@ __UNDEFINED__ isXDIGIT(c) (isDIGIT(c) || ((c) >= 'a' && (c) <= 'f') || ((c) >= ' =xsmisc +typedef XSPROTO(XSPROTO_test_t); +typedef XSPROTO_test_t *XSPROTO_test_t_ptr; + XS(XS_Devel__PPPort_dXSTARG); /* prototype */ XS(XS_Devel__PPPort_dXSTARG) { @@ -309,7 +315,10 @@ XS(XS_Devel__PPPort_dAXMARK) =xsboot -newXS("Devel::PPPort::dXSTARG", XS_Devel__PPPort_dXSTARG, file); +{ + XSPROTO_test_t_ptr p = &XS_Devel__PPPort_dXSTARG; + newXS("Devel::PPPort::dXSTARG", *p, file); +} newXS("Devel::PPPort::dAXMARK", XS_Devel__PPPort_dAXMARK, file); =xsubs @@ -454,7 +463,7 @@ SVf(x) SV *x PPCODE: #if { VERSION >= 5.004 } - x = sv_2mortal(newSVpvf("[%"SVf"]", x)); + x = sv_2mortal(newSVpvf("[%"SVf"]", SVfARG(x))); #endif XPUSHs(x); XSRETURN(1); diff --git a/ext/Devel-PPPort/parts/inc/newSV_type b/ext/Devel-PPPort/parts/inc/newSV_type new file mode 100644 index 0000000000..06ebdb4100 --- /dev/null +++ b/ext/Devel-PPPort/parts/inc/newSV_type @@ -0,0 +1,86 @@ +################################################################################ +## +## $Revision: 1 $ +## $Author: mhx $ +## $Date: 2009/06/12 12:29:57 +0200 $ +## +################################################################################ +## +## Version 3.x, Copyright (C) 2004-2009, 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 + +newSV_type + +=implementation + +#ifndef newSV_type + +#if { NEED newSV_type } + +SV* +newSV_type(pTHX_ svtype const t) +{ + SV* const sv = newSV(0); + sv_upgrade(sv, t); + return sv; +} + +#endif + +#endif + +=xsinit + +#define NEED_newSV_type + +=xsubs + +int +newSV_type() + PREINIT: + SV* sv; + CODE: + RETVAL = 0; + sv = newSV_type(SVt_NULL); + if (SvTYPE(sv) == SVt_NULL) + { + RETVAL++; + } + SvREFCNT_dec(sv); + + sv = newSV_type(SVt_PVIV); + if (SvTYPE(sv) == SVt_PVIV) + { + RETVAL++; + } + SvREFCNT_dec(sv); + + sv = newSV_type(SVt_PVHV); + if (SvTYPE(sv) == SVt_PVHV) + { + RETVAL++; + } + SvREFCNT_dec(sv); + + sv = newSV_type(SVt_PVAV); + if (SvTYPE(sv) == SVt_PVAV) + { + RETVAL++; + } + SvREFCNT_dec(sv); + OUTPUT: + RETVAL + + +=tests plan => 1 + +ok(Devel::PPPort::newSV_type(), 4); + diff --git a/ext/Devel-PPPort/parts/inc/pvs b/ext/Devel-PPPort/parts/inc/pvs index 73bc9fb57a..71485ad32e 100644 --- a/ext/Devel-PPPort/parts/inc/pvs +++ b/ext/Devel-PPPort/parts/inc/pvs @@ -1,8 +1,8 @@ ################################################################################ ## -## $Revision: 9 $ +## $Revision: 11 $ ## $Author: mhx $ -## $Date: 2009/01/18 14:10:52 +0100 $ +## $Date: 2009/06/12 12:19:15 +0200 $ ## ################################################################################ ## @@ -35,6 +35,10 @@ __UNDEFINED__ sv_setpvs(sv, str) sv_setpvn(sv, str "", sizeof(str) - 1 __UNDEFINED__ hv_fetchs(hv, key, lval) hv_fetch(hv, key "", sizeof(key) - 1, lval) __UNDEFINED__ hv_stores(hv, key, val) hv_store(hv, key "", sizeof(key) - 1, val, 0) +__UNDEFINED__ gv_fetchpvn_flags(name, len, flags, svt) gv_fetchpv(name, flags, svt) +__UNDEFINED__ gv_fetchpvs(name, flags, svt) gv_fetchpvn_flags(name "", sizeof(name) - 1, flags, svt) +__UNDEFINED__ gv_stashpvs(name, flags) gv_stashpvn(name "", sizeof(name) - 1, flags) + =xsubs void @@ -78,7 +82,29 @@ hv_stores(hv, sv) PPCODE: (void) hv_stores((HV *) SvRV(hv), "hv_stores", SvREFCNT_inc_simple(sv)); -=tests plan => 8 +SV* +gv_fetchpvn_flags() + CODE: + RETVAL = newRV_inc((SV*)gv_fetchpvn_flags("Devel::PPPort::VERSION", sizeof("Devel::PPPort::VERSION")-1, 0, SVt_PV)); + OUTPUT: + RETVAL + +SV* +gv_fetchpvs() + CODE: + RETVAL = newRV_inc((SV*)gv_fetchpvs("Devel::PPPort::VERSION", 0, SVt_PV)); + OUTPUT: + RETVAL + +SV* +gv_stashpvs() + CODE: + RETVAL = newRV_inc((SV*)gv_stashpvs("Devel::PPPort", 0)); + OUTPUT: + RETVAL + + +=tests plan => 11 my $x = 'foo'; @@ -97,3 +123,6 @@ ok(scalar keys %h, 2); ok(exists $h{'hv_stores'}); ok($h{'hv_stores'}, 4711); ok(Devel::PPPort::hv_fetchs(\%h), 42); +ok(Devel::PPPort::gv_fetchpvn_flags(), \*Devel::PPPort::VERSION); +ok(Devel::PPPort::gv_fetchpvs(), \*Devel::PPPort::VERSION); +ok(Devel::PPPort::gv_stashpvs(), \%Devel::PPPort::); diff --git a/ext/Devel-PPPort/parts/inc/variables b/ext/Devel-PPPort/parts/inc/variables index 3058412507..515e6200a4 100644 --- a/ext/Devel-PPPort/parts/inc/variables +++ b/ext/Devel-PPPort/parts/inc/variables @@ -1,8 +1,8 @@ ################################################################################ ## -## $Revision: 19 $ +## $Revision: 20 $ ## $Author: mhx $ -## $Date: 2009/01/18 14:10:53 +0100 $ +## $Date: 2009/06/12 04:10:50 +0200 $ ## ################################################################################ ## @@ -36,9 +36,12 @@ PL_diehook PL_dirty PL_dowarn PL_errgv +PL_error_count PL_expect PL_hexdigit PL_hints +PL_in_my +PL_in_my_stash PL_laststatval PL_lex_state PL_lex_stuff @@ -112,9 +115,11 @@ __NEED_VAR__ U32 PL_signals = D_PPP_PERL_SIGNALS_INIT; # define PL_dirty dirty # define PL_dowarn dowarn # define PL_errgv errgv +# define PL_error_count error_count # define PL_expect expect # define PL_hexdigit hexdigit # define PL_hints hints +# define PL_in_my in_my # define PL_laststatval laststatval # define PL_lex_state lex_state # define PL_lex_stuff lex_stuff @@ -190,6 +195,10 @@ __NEED_DUMMY_VAR__ yy_parser PL_parser; # define PL_lex_state D_PPP_my_PL_parser_var(lex_state) # define PL_lex_stuff D_PPP_my_PL_parser_var(lex_stuff) # define PL_tokenbuf D_PPP_my_PL_parser_var(tokenbuf) +# define PL_in_my D_PPP_my_PL_parser_var(in_my) +# define PL_in_my_stash D_PPP_my_PL_parser_var(in_my_stash) +# define PL_error_count D_PPP_my_PL_parser_var(error_count) + #else @@ -229,6 +238,11 @@ int dummy_parser_warning(void); count++; \ } STMT_END +#define ppp_PARSERVAR_dummy STMT_START { \ + mXPUSHi(1); \ + count++; \ + } STMT_END + #if { VERSION < 5.004 } # define ppp_rsfp_t FILE * #else @@ -249,6 +263,20 @@ int dummy_parser_warning(void); # define ppp_lex_state_t U8 #endif +#if { VERSION < 5.6.0 } +# define ppp_in_my_t bool +#elif { VERSION < 5.9.5 } +# define ppp_in_my_t I32 +#else +# define ppp_in_my_t U16 +#endif + +#if { VERSION < 5.9.5 } +# define ppp_error_count_t I32 +#else +# define ppp_error_count_t U8 +#endif + =xsubs int @@ -379,7 +407,13 @@ other_variables() ppp_PARSERVAR(char *, PL_bufend); ppp_PARSERVAR(ppp_lex_state_t, PL_lex_state); ppp_PARSERVAR(SV *, PL_lex_stuff); - + ppp_PARSERVAR(ppp_error_count_t, PL_error_count); + ppp_PARSERVAR(ppp_in_my_t, PL_in_my); +#if { VERSION >= 5.5.0 } + ppp_PARSERVAR(HV*, PL_in_my_stash); +#else + ppp_PARSERVAR_dummy; +#endif XSRETURN(count); int @@ -389,7 +423,7 @@ no_dummy_parser_vars(check) int dummy_parser_warning() -=tests plan => 49 +=tests plan => 52 ok(Devel::PPPort::compare_PL_signals()); diff --git a/ext/Devel-PPPort/soak b/ext/Devel-PPPort/soak index 8473dede9c..5c9b484189 100644 --- a/ext/Devel-PPPort/soak +++ b/ext/Devel-PPPort/soak @@ -33,7 +33,7 @@ use File::Find; use List::Util qw(max); use Config; -my $VERSION = do { my @r = '$Snapshot: /Devel-PPPort/3.18 $' =~ /(\d+\.\d+(?:_\d+)?)/; @r ? $r[0] : '9.99' }; +my $VERSION = do { my @r = '$Snapshot: /Devel-PPPort/3.18_01 $' =~ /(\d+\.\d+(?:_\d+)?)/; @r ? $r[0] : '9.99' }; $| = 1; my %OPT = ( diff --git a/ext/Devel-PPPort/t/HvNAME.t b/ext/Devel-PPPort/t/HvNAME.t new file mode 100644 index 0000000000..f54fac2c89 --- /dev/null +++ b/ext/Devel-PPPort/t/HvNAME.t @@ -0,0 +1,56 @@ +################################################################################ +# +# !!!!! Do NOT edit this file directly! !!!!! +# +# Edit mktests.PL and/or parts/inc/HvNAME instead. +# +# This file was automatically generated from the definition files in the +# parts/inc/ subdirectory by mktests.PL. To learn more about how all this +# works, please read the F<HACKERS> file that came with this distribution. +# +################################################################################ + +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'; + } + + sub load { + eval "use Test"; + require 'testutil.pl' if $@; + } + + if (4) { + load(); + plan(tests => 4); + } +} + +use Devel::PPPort; +use strict; +$^W = 1; + +package Devel::PPPort; +use vars '@ISA'; +require DynaLoader; +@ISA = qw(DynaLoader); +bootstrap Devel::PPPort; + +package main; + +ok(Devel::PPPort::HvNAME_get(\%Devel::PPPort::), 'Devel::PPPort'); +ok(Devel::PPPort::HvNAME_get({}), undef); + +ok(Devel::PPPort::HvNAMELEN_get(\%Devel::PPPort::), length('Devel::PPPort')); +ok(Devel::PPPort::HvNAMELEN_get({}), 0); + diff --git a/ext/Devel-PPPort/t/gv.t b/ext/Devel-PPPort/t/gv.t new file mode 100644 index 0000000000..3bf9ce6cef --- /dev/null +++ b/ext/Devel-PPPort/t/gv.t @@ -0,0 +1,54 @@ +################################################################################ +# +# !!!!! Do NOT edit this file directly! !!!!! +# +# Edit mktests.PL and/or parts/inc/gv instead. +# +# This file was automatically generated from the definition files in the +# parts/inc/ subdirectory by mktests.PL. To learn more about how all this +# works, please read the F<HACKERS> file that came with this distribution. +# +################################################################################ + +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'; + } + + sub load { + eval "use Test"; + require 'testutil.pl' if $@; + } + + if (2) { + load(); + plan(tests => 2); + } +} + +use Devel::PPPort; +use strict; +$^W = 1; + +package Devel::PPPort; +use vars '@ISA'; +require DynaLoader; +@ISA = qw(DynaLoader); +bootstrap Devel::PPPort; + +package main; + +ok(Devel::PPPort::GvSVn(), 1); + +ok(Devel::PPPort::isGV_with_GP(), 2) + diff --git a/ext/Devel-PPPort/t/newSV_type.t b/ext/Devel-PPPort/t/newSV_type.t new file mode 100644 index 0000000000..1b3233e5ce --- /dev/null +++ b/ext/Devel-PPPort/t/newSV_type.t @@ -0,0 +1,52 @@ +################################################################################ +# +# !!!!! Do NOT edit this file directly! !!!!! +# +# Edit mktests.PL and/or parts/inc/newSV_type instead. +# +# This file was automatically generated from the definition files in the +# parts/inc/ subdirectory by mktests.PL. To learn more about how all this +# works, please read the F<HACKERS> file that came with this distribution. +# +################################################################################ + +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'; + } + + sub load { + eval "use Test"; + require 'testutil.pl' if $@; + } + + if (1) { + load(); + plan(tests => 1); + } +} + +use Devel::PPPort; +use strict; +$^W = 1; + +package Devel::PPPort; +use vars '@ISA'; +require DynaLoader; +@ISA = qw(DynaLoader); +bootstrap Devel::PPPort; + +package main; + +ok(Devel::PPPort::newSV_type(), 4); + diff --git a/ext/Devel-PPPort/t/pvs.t b/ext/Devel-PPPort/t/pvs.t index 4a85e49b13..7886096615 100644 --- a/ext/Devel-PPPort/t/pvs.t +++ b/ext/Devel-PPPort/t/pvs.t @@ -30,9 +30,9 @@ BEGIN { require 'testutil.pl' if $@; } - if (8) { + if (11) { load(); - plan(tests => 8); + plan(tests => 11); } } @@ -65,4 +65,7 @@ ok(scalar keys %h, 2); ok(exists $h{'hv_stores'}); ok($h{'hv_stores'}, 4711); ok(Devel::PPPort::hv_fetchs(\%h), 42); +ok(Devel::PPPort::gv_fetchpvn_flags(), \*Devel::PPPort::VERSION); +ok(Devel::PPPort::gv_fetchpvs(), \*Devel::PPPort::VERSION); +ok(Devel::PPPort::gv_stashpvs(), \%Devel::PPPort::); diff --git a/ext/Devel-PPPort/t/variables.t b/ext/Devel-PPPort/t/variables.t index da7b99d6cb..ef1ac8b20d 100644 --- a/ext/Devel-PPPort/t/variables.t +++ b/ext/Devel-PPPort/t/variables.t @@ -30,9 +30,9 @@ BEGIN { require 'testutil.pl' if $@; } - if (49) { + if (52) { load(); - plan(tests => 49); + plan(tests => 52); } } diff --git a/ext/Devel-PPPort/typemap b/ext/Devel-PPPort/typemap index f2118a8166..7225c4076d 100644 --- a/ext/Devel-PPPort/typemap +++ b/ext/Devel-PPPort/typemap @@ -4,9 +4,9 @@ # ################################################################################ # -# $Revision: 8 $ +# $Revision: 9 $ # $Author: mhx $ -# $Date: 2009/01/18 14:10:48 +0100 $ +# $Date: 2009/06/12 04:07:19 +0200 $ # ################################################################################ # @@ -21,12 +21,18 @@ UV T_UV NV T_NV +HV * T_HVREF INPUT T_UV $var = ($type)SvUV($arg) T_NV $var = ($type)SvNV($arg) +T_HVREF + if (SvROK($arg) && SvTYPE(SvRV($arg))==SVt_PVHV) + $var = (HV*)SvRV($arg); + else + Perl_croak(aTHX_ \"$var is not a hash reference\") OUTPUT T_UV |