ext/Devel/PPPort/devel/scanprov Devel::PPPort provided API scanner
ext/Devel/PPPort/HACKERS Devel::PPPort hackers documentation
ext/Devel/PPPort/Makefile.PL Devel::PPPort makefile writer
-ext/Devel/PPPort/MANIFEST Devel::PPPort Manifest
ext/Devel/PPPort/MANIFEST.SKIP Devel::PPPort Manifest skip specs
ext/Devel/PPPort/mktests.PL Devel::PPPort test file writer
ext/Devel/PPPort/module2.c Devel::PPPort test 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/5008007 Devel::PPPort baseline todo file
+ext/Devel/PPPort/parts/base/5008008 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/base/5009003 Devel::PPPort baseline todo file
+ext/Devel/PPPort/parts/base/5009004 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/ppphbin Devel::PPPort include
ext/Devel/PPPort/parts/inc/ppphdoc Devel::PPPort include
ext/Devel/PPPort/parts/inc/ppphtest Devel::PPPort include
+ext/Devel/PPPort/parts/inc/pvs Devel::PPPort include
+ext/Devel/PPPort/parts/inc/snprintf Devel::PPPort include
ext/Devel/PPPort/parts/inc/SvPV Devel::PPPort include
ext/Devel/PPPort/parts/inc/Sv_set Devel::PPPort include
ext/Devel/PPPort/parts/inc/sv_xpvf Devel::PPPort include
ext/Devel/PPPort/parts/inc/uv Devel::PPPort include
ext/Devel/PPPort/parts/inc/variables Devel::PPPort include
ext/Devel/PPPort/parts/inc/version Devel::PPPort include
+ext/Devel/PPPort/parts/inc/warn Devel::PPPort include
ext/Devel/PPPort/parts/ppptools.pl Devel::PPPort various utilities
ext/Devel/PPPort/parts/todo/5004000 Devel::PPPort todo file
ext/Devel/PPPort/parts/todo/5004010 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/5008007 Devel::PPPort todo file
+ext/Devel/PPPort/parts/todo/5008008 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/parts/todo/5009003 Devel::PPPort todo file
+ext/Devel/PPPort/parts/todo/5009004 Devel::PPPort todo file
ext/Devel/PPPort/ppport_h.PL Devel::PPPort ppport.h writer
ext/Devel/PPPort/PPPort.pm Devel::PPPort extension
ext/Devel/PPPort/PPPort_pm.PL Devel::PPPort PPPort.pm writer
ext/Devel/PPPort/t/newRV.t Devel::PPPort test file
ext/Devel/PPPort/TODO Devel::PPPort Todo
ext/Devel/PPPort/t/ppphtest.t Devel::PPPort test file
+ext/Devel/PPPort/t/pvs.t Devel::PPPort test file
+ext/Devel/PPPort/t/snprintf.t Devel::PPPort test file
ext/Devel/PPPort/t/SvPV.t Devel::PPPort test file
ext/Devel/PPPort/t/Sv_set.t Devel::PPPort test file
ext/Devel/PPPort/t/sv_xpvf.t Devel::PPPort test file
ext/Devel/PPPort/t/threads.t Devel::PPPort test file
ext/Devel/PPPort/t/uv.t Devel::PPPort test file
ext/Devel/PPPort/t/variables.t Devel::PPPort test file
+ext/Devel/PPPort/t/warn.t Devel::PPPort test file
ext/Devel/PPPort/typemap Devel::PPPort Typemap
ext/Digest/MD5/Changes Digest::MD5 extension changes
ext/Digest/MD5/hints/dec_osf.pl Hints for named architecture
+3.08_01 - 2006-05-20
+
+ * update NOOP and dNOOP to include lint directives
+ * update API info (for 5.8.8 and 5.9.3)
+ * added support for the following API
+ ckWARN
+ dVAR
+ hv_fetchs
+ hv_stores
+ my_snprintf
+ newSVpvs
+ packWARN
+ PERL_ABS
+ PERL_UNUSED_ARG
+ PERL_UNUSED_CONTEXT
+ PERL_UNUSED_VAR
+ STR_WITH_LEN
+ sv_catpvs
+ sv_setpvs
+ SVf
+ SvVSTRING_mg
+ warner
+
3.08 - 2006-01-19
* thanks to Craig Berry for fixing my broken ppphtest
=head1 DESCRIPTION
-=head2 How to build 98 versions of Perl
+=head2 How to build 105 versions of Perl
C<Devel::PPPort> supports Perl versions between 5.003 and bleadperl.
To guarantee this support, I need some of these versions on my
-machine. I currently have 98 different Perl version/configuration
+machine. I currently have 105 different Perl version/configuration
combinations installed on my laptop.
As many of the old Perl distributions need patching to compile
-cleanly on newer systems (and because building 98 Perls by hand
+cleanly on newer systems (and because building 105 Perls by hand
just isn't fun), I wrote a tool to build all the different
versions and configurations. You can find it in F<devel/buildperl.pl>.
It can currently build the following Perl releases:
+++ /dev/null
-apicheck_c.PL
-Changes
-devel/buildperl.pl
-devel/mkapidoc.sh
-devel/mktodo
-devel/mktodo.pl
-devel/scanprov
-HACKERS
-Makefile.PL
-MANIFEST
-MANIFEST.SKIP
-mktests.PL
-module2.c
-module3.c
-parts/apicheck.pl
-parts/apidoc.fnc
-parts/base/5004000
-parts/base/5004010
-parts/base/5004020
-parts/base/5004030
-parts/base/5004040
-parts/base/5004050
-parts/base/5005000
-parts/base/5005010
-parts/base/5005020
-parts/base/5005030
-parts/base/5005040
-parts/base/5006000
-parts/base/5006001
-parts/base/5006002
-parts/base/5007000
-parts/base/5007001
-parts/base/5007002
-parts/base/5007003
-parts/base/5008000
-parts/base/5008001
-parts/base/5008002
-parts/base/5008003
-parts/base/5008004
-parts/base/5008005
-parts/base/5008006
-parts/base/5008007
-parts/base/5009000
-parts/base/5009001
-parts/base/5009002
-parts/base/5009003
-parts/embed.fnc
-parts/inc/call
-parts/inc/cop
-parts/inc/exception
-parts/inc/format
-parts/inc/grok
-parts/inc/limits
-parts/inc/magic
-parts/inc/memory
-parts/inc/misc
-parts/inc/mPUSH
-parts/inc/MY_CXT
-parts/inc/newCONSTSUB
-parts/inc/newRV
-parts/inc/ppphbin
-parts/inc/ppphdoc
-parts/inc/ppphtest
-parts/inc/Sv_set
-parts/inc/sv_xpvf
-parts/inc/SvPV
-parts/inc/threads
-parts/inc/uv
-parts/inc/variables
-parts/inc/version
-parts/ppptools.pl
-parts/todo/5004000
-parts/todo/5004010
-parts/todo/5004020
-parts/todo/5004030
-parts/todo/5004040
-parts/todo/5004050
-parts/todo/5005000
-parts/todo/5005010
-parts/todo/5005020
-parts/todo/5005030
-parts/todo/5005040
-parts/todo/5006000
-parts/todo/5006001
-parts/todo/5006002
-parts/todo/5007000
-parts/todo/5007001
-parts/todo/5007002
-parts/todo/5007003
-parts/todo/5008000
-parts/todo/5008001
-parts/todo/5008002
-parts/todo/5008003
-parts/todo/5008004
-parts/todo/5008005
-parts/todo/5008006
-parts/todo/5008007
-parts/todo/5009000
-parts/todo/5009001
-parts/todo/5009002
-parts/todo/5009003
-PPPort.pm
-PPPort.xs
-ppport_h.PL
-PPPort_pm.PL
-PPPort_xs.PL
-README
-soak
-t/call.t
-t/cop.t
-t/exception.t
-t/grok.t
-t/limits.t
-t/magic.t
-t/memory.t
-t/misc.t
-t/mPUSH.t
-t/MY_CXT.t
-t/newCONSTSUB.t
-t/newRV.t
-t/ppphtest.t
-t/Sv_set.t
-t/sv_xpvf.t
-t/SvPV.t
-t/testutil.pl
-t/threads.t
-t/uv.t
-t/variables.t
-TODO
-typemap
-META.yml Module meta-data (added by MakeMaker)
#
################################################################################
#
-# $Revision: 41 $
+# $Revision: 42 $
# $Author: mhx $
-# $Date: 2006/01/14 18:07:56 +0100 $
+# $Date: 2006/05/18 23:13:47 +0200 $
#
################################################################################
#
call_method
call_pv
call_sv
+ ckWARN
CopFILE
CopFILE_set
CopFILEAV
dTHXa
dTHXoa
dUNDERBAR
+ dVAR
dXCPT
dXSTARG
END_EXTERN_C
grok_numeric_radix
grok_oct
gv_stashpvn
+ hv_fetchs
+ hv_stores
IN_LOCALE
IN_LOCALE_COMPILETIME
IN_LOCALE_RUNTIME
MY_CXT
MY_CXT_CLONE
MY_CXT_INIT
+ my_snprintf
newCONSTSUB
newRV_inc
newRV_noinc
newSVpvn
+ newSVpvs
newSVuv
Newx
Newxc
NVff
NVgf
NVTYPE
+ packWARN
+ PERL_ABS
PERL_BCDVERSION
PERL_GCC_BRACE_GROUPS_FORBIDDEN
PERL_INT_MAX
PERL_UINT_MIN
PERL_ULONG_MAX
PERL_ULONG_MIN
+ PERL_UNUSED_ARG
+ PERL_UNUSED_CONTEXT
PERL_UNUSED_DECL
+ PERL_UNUSED_VAR
PERL_UQUAD_MAX
PERL_UQUAD_MIN
PERL_USHORT_MAX
PERL_USHORT_MIN
PERL_VERSION
+ Perl_warner
+ Perl_warner_nocontext
PL_compiling
PL_copline
PL_curcop
START_MY_CXT
STMT_END
STMT_START
+ STR_WITH_LEN
sv_2pv_nolen
sv_2pvbyte
sv_2uv
sv_catpvf_mg_nocontext
sv_catpvn_mg
sv_catpvn_nomg
+ sv_catpvs
sv_catsv_mg
sv_catsv_nomg
sv_pvn
sv_setpvf_mg
sv_setpvf_mg_nocontext
sv_setpvn_mg
+ sv_setpvs
sv_setsv_mg
sv_setsv_nomg
sv_setuv
sv_vcatpvf_mg
sv_vsetpvf
sv_vsetpvf_mg
+ SVf
SvGETMAGIC
SvIV_nomg
SvMAGIC_set
SvUVX
SvUVx
SvUVXx
+ SvVSTRING_mg
UNDERBAR
UVof
UVSIZE
UVXf
UVxf
vnewSVpvf
+ WARN_ALL
+ WARN_AMBIGUOUS
+ WARN_ASSERTIONS
+ WARN_BAREWORD
+ WARN_CLOSED
+ WARN_CLOSURE
+ WARN_DEBUGGING
+ WARN_DEPRECATED
+ WARN_DIGIT
+ WARN_EXEC
+ WARN_EXITING
+ WARN_GLOB
+ WARN_INPLACE
+ WARN_INTERNAL
+ WARN_IO
+ WARN_LAYER
+ WARN_MALLOC
+ WARN_MISC
+ WARN_NEWLINE
+ WARN_NUMERIC
+ WARN_ONCE
+ WARN_OVERFLOW
+ WARN_PACK
+ WARN_PARENTHESIS
+ WARN_PIPE
+ WARN_PORTABLE
+ WARN_PRECEDENCE
+ WARN_PRINTF
+ WARN_PROTOTYPE
+ WARN_QW
+ WARN_RECURSION
+ WARN_REDEFINE
+ WARN_REGEXP
+ WARN_RESERVED
+ WARN_SEMICOLON
+ WARN_SEVERE
+ WARN_SIGNAL
+ WARN_SUBSTR
+ WARN_SYNTAX
+ WARN_TAINT
+ WARN_THREADS
+ WARN_UNINITIALIZED
+ WARN_UNOPENED
+ WARN_UNPACK
+ WARN_UNTIE
+ WARN_UTF8
+ WARN_VOID
+ warner
XCPT_CATCH
XCPT_RETHROW
XCPT_TRY_END
=over 4
-=item perl 5.9.3
+=item perl 5.9.4
MULTICALL
POP_MULTICALL
PUSH_MULTICALL
- SvSTASH_set
+ PoisonNew
+ PoisonWith
+ SvREFCNT_inc_NN
+ SvREFCNT_inc_simple
+ SvREFCNT_inc_simple_NN
+ SvREFCNT_inc_simple_void
+ SvREFCNT_inc_void
+ SvREFCNT_inc_void_NN
+ gv_name_set
+ my_vsnprintf
+ newXS_flags
+ pad_sv
+ regclass_swash
+ stashpv_hvname_match
+ sv_usepvn_flags
+
+=item perl 5.9.3
+
av_arylen_p
ckwarn
ckwarn_d
newWHILEOP
ref
sortsv_flags
- stashpv_hvname_match
vverify
=item perl 5.9.2
pack_cat
perl_destruct
pv_uni_display
- regclass_swash
save_shared_pvref
savesharedpv
sortsv
sv_magicext
sv_nolocking
sv_nosharing
- sv_nounlocking
sv_recode_to_utf8
sv_uni_display
to_uni_fold
=item perl 5.6.1
+ SvGAMAGIC
apply_attrs_string
bytes_to_utf8
gv_efullname4
my_fflush_all
newANONATTRSUB
newATTRSUB
- newMYSUB
newPADOP
newXS
newXSproto
vmess
vwarn
vwarner
- warner
=item perl 5.005_03
runops_standard
save_hints
save_iv
- save_threadsv
screaminstr
sv_iv
sv_nv
sv_vsetpvfn
unsharepvn
vnewSVpvf
+ warner
=back
use strict;
use vars qw($VERSION @ISA $data);
-$VERSION = do { my @r = '$Snapshot: /Devel-PPPort/3.08 $' =~ /(\d+\.\d+(?:_\d+)?)/; @r ? $r[0] : '9.99' };
+$VERSION = do { my @r = '$Snapshot: /Devel-PPPort/3.08_01 $' =~ /(\d+\.\d+(?:_\d+)?)/; @r ? $r[0] : '9.99' };
@ISA = qw(DynaLoader);
|> grok_number() NEED_grok_number NEED_grok_number_GLOBAL
|> grok_numeric_radix() NEED_grok_numeric_radix NEED_grok_numeric_radix_GLOBAL
|> grok_oct() NEED_grok_oct NEED_grok_oct_GLOBAL
+|> my_snprintf() NEED_my_snprintf NEED_my_snprintf_GLOBAL
|> newCONSTSUB() NEED_newCONSTSUB NEED_newCONSTSUB_GLOBAL
|> newRV_noinc() NEED_newRV_noinc NEED_newRV_noinc_GLOBAL
|> sv_2pv_nolen() NEED_sv_2pv_nolen NEED_sv_2pv_nolen_GLOBAL
|> sv_setpvf_mg() NEED_sv_setpvf_mg NEED_sv_setpvf_mg_GLOBAL
|> sv_setpvf_mg_nocontext() NEED_sv_setpvf_mg_nocontext NEED_sv_setpvf_mg_nocontext_GLOBAL
|> vnewSVpvf() NEED_vnewSVpvf NEED_vnewSVpvf_GLOBAL
+|> warner() NEED_warner NEED_warner_GLOBAL
|>
|>To avoid namespace conflicts, you can change the namespace of the
|>explicitly exported functions / variables using the C<DPPP_NAMESPACE>
LEAVE|||
LVRET|||
MARK|||
-MULTICALL||5.009003|
+MULTICALL||5.009004|
MY_CXT_CLONE|5.009002||p
MY_CXT_INIT|5.007003||p
MY_CXT|5.007003||p
MoveD|5.009002||p
Move|||
-NEWSV|||
NOOP|5.005000||p
NUM2PTR|5.006000||p
NVTYPE|5.006000||p
PAD_SET_CUR|||
PAD_SVl|||
PAD_SV|||
-PERL_BCDVERSION|5.009003||p
+PERL_ABS|5.008001||p
+PERL_BCDVERSION|5.009004||p
PERL_GCC_BRACE_GROUPS_FORBIDDEN|5.008001||p
PERL_INT_MAX|5.004000||p
PERL_INT_MIN|5.004000||p
PERL_UINT_MIN|5.004000||p
PERL_ULONG_MAX|5.004000||p
PERL_ULONG_MIN|5.004000||p
+PERL_UNUSED_ARG|5.009003||p
+PERL_UNUSED_CONTEXT|5.009004||p
PERL_UNUSED_DECL|5.007002||p
+PERL_UNUSED_VAR|5.007002||p
PERL_UQUAD_MAX|5.004000||p
PERL_UQUAD_MIN|5.004000||p
PERL_USHORT_MAX|5.004000||p
PL_sv_yes|5.004050||pn
PL_tainted|5.004050||p
PL_tainting|5.004050||p
-POP_MULTICALL||5.009003|
+POP_MULTICALL||5.009004|
POPi|||n
POPl|||n
POPn|||n
PTR2ul|5.007001||p
PTRV|5.006000||p
PUSHMARK|||
-PUSH_MULTICALL||5.009003|
+PUSH_MULTICALL||5.009004|
PUSHi|||
PUSHmortal|5.009002||p
PUSHn|||
PerlIO_tell||5.007003|
PerlIO_unread||5.007003|
PerlIO_write||5.007003|
+Perl_warner_nocontext|5.006000||p
+Perl_warner|5.006000||p
+PoisonNew||5.009004|
+PoisonWith||5.009004|
Poison|5.008000||p
RETVAL|||n
Renewc|||
START_MY_CXT|5.007003||p
STMT_END|||p
STMT_START|||p
+STR_WITH_LEN|5.009003||p
ST|||
+SVf|||p
SVt_IV|||
SVt_NV|||
SVt_PVAV|||
SvCUR_set|||
SvCUR|||
SvEND|||
+SvGAMAGIC||5.006001|
SvGETMAGIC|5.004050||p
SvGROW|||
SvIOK_UV||5.006000|
SvPVx|||
SvPV|||
SvREFCNT_dec|||
+SvREFCNT_inc_NN||5.009004|
+SvREFCNT_inc_simple_NN||5.009004|
+SvREFCNT_inc_simple_void||5.009004|
+SvREFCNT_inc_simple||5.009004|
+SvREFCNT_inc_void_NN||5.009004|
+SvREFCNT_inc_void||5.009004|
SvREFCNT_inc|||
SvREFCNT|||
SvROK_off|||
SvRV|||
SvSETMAGIC|||
SvSHARE||5.007003|
-SvSTASH_set|5.009003|5.009003|p
+SvSTASH_set|5.009004||p
SvSTASH|||
SvSetMagicSV_nosteal||5.004000|
SvSetMagicSV||5.004000|
SvUVx|5.004000||p
SvUV|5.004000||p
SvVOK||5.008001|
+SvVSTRING_mg|5.009004||p
THIS|||n
UNDERBAR|5.009002||p
UVSIZE|5.006000||p
UVof|5.006000||p
UVuf|5.006000||p
UVxf|5.006000||p
+WARN_ALL|5.006000||p
+WARN_AMBIGUOUS|5.006000||p
+WARN_ASSERTIONS|5.009000||p
+WARN_BAREWORD|5.006000||p
+WARN_CLOSED|5.006000||p
+WARN_CLOSURE|5.006000||p
+WARN_DEBUGGING|5.006000||p
+WARN_DEPRECATED|5.006000||p
+WARN_DIGIT|5.006000||p
+WARN_EXEC|5.006000||p
+WARN_EXITING|5.006000||p
+WARN_GLOB|5.006000||p
+WARN_INPLACE|5.006000||p
+WARN_INTERNAL|5.006000||p
+WARN_IO|5.006000||p
+WARN_LAYER|5.008000||p
+WARN_MALLOC|5.006000||p
+WARN_MISC|5.006000||p
+WARN_NEWLINE|5.006000||p
+WARN_NUMERIC|5.006000||p
+WARN_ONCE|5.006000||p
+WARN_OVERFLOW|5.006000||p
+WARN_PACK|5.006000||p
+WARN_PARENTHESIS|5.006000||p
+WARN_PIPE|5.006000||p
+WARN_PORTABLE|5.006000||p
+WARN_PRECEDENCE|5.006000||p
+WARN_PRINTF|5.006000||p
+WARN_PROTOTYPE|5.006000||p
+WARN_QW|5.006000||p
+WARN_RECURSION|5.006000||p
+WARN_REDEFINE|5.006000||p
+WARN_REGEXP|5.006000||p
+WARN_RESERVED|5.006000||p
+WARN_SEMICOLON|5.006000||p
+WARN_SEVERE|5.006000||p
+WARN_SIGNAL|5.006000||p
+WARN_SUBSTR|5.006000||p
+WARN_SYNTAX|5.006000||p
+WARN_TAINT|5.006000||p
+WARN_THREADS|5.008000||p
+WARN_UNINITIALIZED|5.006000||p
+WARN_UNOPENED|5.006000||p
+WARN_UNPACK|5.006000||p
+WARN_UNTIE|5.006000||p
+WARN_UTF8|5.006000||p
+WARN_VOID|5.006000||p
XCPT_CATCH|5.009002||p
XCPT_RETHROW|5.009002||p
XCPT_TRY_END|5.009002||p
aMY_CXT|5.007003||p
aTHX_|5.006000||p
aTHX|5.006000||p
-add_data|||
+add_data|||n
+addmad|||
allocmy|||
amagic_call|||
amagic_cmp_locale|||
ao|||
append_elem|||
append_list|||
+append_madprops|||
apply_attrs_my|||
apply_attrs_string||5.006001|
apply_attrs|||
boot_core_UNIVERSAL|||
boot_core_xsutils|||
bytes_from_utf8||5.007001|
+bytes_to_uni|||
bytes_to_utf8||5.006001|
-cache_re|||
call_argv|5.006000||p
call_atexit||5.006000|
-call_body|||
-call_list_body|||
call_list||5.004000|
call_method|5.006000||p
call_pv|5.006000||p
check_uni|||
checkcomma|||
checkposixcc|||
+ckWARN|||p
ck_anoncode|||
ck_bitop|||
ck_concat|||
ck_unpack|||
ckwarn_d||5.009003|
ckwarn||5.009003|
-cl_and|||
-cl_anything|||
-cl_init_zero|||
-cl_init|||
-cl_is_anything|||
-cl_or|||
+cl_and|||n
+cl_anything|||n
+cl_init_zero|||n
+cl_init|||n
+cl_is_anything|||n
+cl_or|||n
+clear_placeholders|||
closest_cop|||
convert|||
cop_free|||
cr_textfilter|||
+create_eval_scope|||
croak_nocontext|||vn
croak|||v
csighandler||5.009003|n
+curmad|||
custom_op_desc||5.007003|
custom_op_name||5.007003|
+cv_ckproto_len|||
cv_ckproto|||
cv_clone|||
cv_const_sv||5.004000|
dTHXoa|5.006000||p
dTHX|5.006000||p
dUNDERBAR|5.009002||p
+dVAR|5.009003||p
dXCPT|5.009002||p
dXSARGS|||
dXSI32|||
debstack||5.007003|
deb||5.007003|v
del_sv|||
+delete_eval_scope|||
delimcpy||5.004000|
deprecate_old|||
deprecate|||
do_msgsnd|||
do_oddball|||
do_op_dump||5.006000|
+do_op_xmldump|||
do_open9||5.006000|
do_openn||5.007001|
do_open||5.004000|
do_pipe|||
do_pmop_dump||5.006000|
+do_pmop_xmldump|||
do_print|||
do_readline|||
do_seek|||
filter_del|||
filter_gets|||
filter_read|||
+find_array_subscript|||
find_beginning|||
find_byclass|||
+find_hash_subscript|||
find_in_my_stash|||
find_runcv|||
find_rundefsvoffset||5.009002|
free_tied_hv_pool|||
free_tmps|||
gen_constant_list|||
+get_arena|||
get_av|5.006000||p
get_context||5.006000|n
get_cv|5.006000||p
get_vtbl||5.005030|
getcwd_sv||5.007002|
getenv_len|||
+glob_2number|||
+glob_2pv|||
+glob_assign_glob|||
+glob_assign_ref|||
gp_dup|||
gp_free|||
gp_ref|||
gv_handler||5.007001|
gv_init_sv|||
gv_init|||
+gv_name_set||5.009004|
gv_stashpvn|5.006000||p
gv_stashpv|||
gv_stashsv|||
hfreeentries|||
hsplit|||
hv_assert||5.009001|
-hv_auxinit|||
+hv_auxinit|||n
hv_backreferences_p|||
hv_clear_placeholders||5.009001|
hv_clear|||
+hv_copy_hints_hv|||
hv_delayfree_ent||5.004000|
hv_delete_common|||
hv_delete_ent||5.004000|
hv_exists|||
hv_fetch_common|||
hv_fetch_ent||5.004000|
+hv_fetchs|5.009003||p
hv_fetch|||
hv_free_ent||5.004000|
hv_iterinit|||
hv_iterval|||
hv_kill_backrefs|||
hv_ksplit||5.004000|
-hv_magic_check|||
+hv_magic_check|||n
hv_magic|||
hv_name_set||5.009003|
hv_notallowed|||
hv_scalar||5.009001|
hv_store_ent||5.004000|
hv_store_flags||5.008000|
+hv_stores|5.009004||p
hv_store|||
hv_undef|||
ibcmp_locale||5.004000|
is_an_int|||
is_gv_magical_sv|||
is_gv_magical|||
-is_handle_constructor|||
+is_handle_constructor|||n
is_list_assignment|||
is_lvalue_sub||5.007001|
is_uni_alnum_lc||5.006000|
is_utf8_alnum||5.006000|
is_utf8_alpha||5.006000|
is_utf8_ascii||5.006000|
-is_utf8_char_slow|||
+is_utf8_char_slow|||n
is_utf8_char||5.006000|
is_utf8_cntrl||5.006000|
is_utf8_common|||
mXPUSHn|5.009002||p
mXPUSHp|5.009002||p
mXPUSHu|5.009002||p
+mad_free|||
+madlex|||
+madparse|||
magic_clear_all_env|||
magic_clearenv|||
+magic_clearhint|||
magic_clearpack|||
magic_clearsig|||
magic_dump||5.006000|
magic_freeregexp|||
magic_getarylen|||
magic_getdefelem|||
-magic_getglob|||
magic_getnkeys|||
magic_getpack|||
magic_getpos|||
magic_setenv|||
magic_setfm|||
magic_setglob|||
+magic_sethint|||
magic_setisa|||
magic_setmglob|||
magic_setnkeys|||
mode_from_discipline|||
modkids|||
mod|||
+more_bodies|||
+more_sv|||
moreswitches|||
mul128|||
mulexp10|||n
my_popen_list||5.007001|
my_popen||5.004000|
my_setenv|||
+my_snprintf|5.009004||pvn
my_socketpair||5.007003|n
my_sprintf||5.009003|vn
my_stat|||
my_swabn|||n
my_swap|||
my_unexec|||
+my_vsnprintf||5.009004|n
my|||
need_utf8|||n
newANONATTRSUB||5.006000|
newFOROP|||
newGIVENOP||5.009003|
newGIVWHENOP|||
+newGP|||
newGVOP|||
newGVREF|||
newGVgen|||
newLOGOP|||
newLOOPEX|||
newLOOPOP|||
-newMYSUB||5.006000|
+newMADPROP|||
+newMADsv|||
+newMYSUB|||
newNULLLIST|||
newOP|||
newPADOP||5.006000|
newSVpvf||5.004000|v
newSVpvn_share||5.007001|
newSVpvn|5.006000||p
+newSVpvs|5.009003||p
newSVpv|||
newSVrv|||
newSVsv|||
newSVuv|5.006000||p
newSV|||
+newTOKEN|||
newUNOP|||
newWHENOP||5.009003|
newWHILEOP||5.009003|
+newXS_flags||5.009004|
newXSproto||5.006000|
newXS||5.006000|
new_collate||5.006000|
new_numeric||5.006000|
new_stackinfo||5.005000|
new_version||5.009000|
+new_warnings_bitfield|||
next_symbol|||
nextargv|||
nextchar|||
op_const_sv|||
op_dump||5.006000|
op_free|||
+op_getmad_weak|||
+op_getmad|||
op_null||5.007002|
op_refcnt_lock||5.009002|
op_refcnt_unlock||5.009002|
+op_xmldump|||
open_script|||
pMY_CXT_|5.007003||p
pMY_CXT|5.007003||p
pTHX_|5.006000||p
pTHX|5.006000||p
+packWARN|5.007003||p
pack_cat||5.007003|
pack_rec|||
package|||
pad_free|||
pad_leavemy|||
pad_new|||
+pad_peg|||n
pad_push|||
pad_reset|||
pad_setsv|||
-pad_sv|||
+pad_sv||5.009004|
pad_swipe|||
pad_tidy|||
pad_undef|||
parse_body|||
parse_unicode_opts|||
-path_is_absolute|||
+path_is_absolute|||n
peep|||
pending_ident|||
perl_alloc_using|||n
perl_parse||5.006000|n
perl_run|||n
pidgone|||
+pm_description|||
pmflag|||
pmop_dump||5.006000|
+pmop_xmldump|||
pmruntime|||
pmtrans|||
pop_scope|||
pregexec|||
pregfree|||
prepend_elem|||
+prepend_madprops|||
+printbuf|||
printf_nocontext|||vn
ptr_table_clear|||
ptr_table_fetch|||
+ptr_table_find|||n
ptr_table_free|||
ptr_table_new|||
ptr_table_split|||
reentrant_retry|||vn
reentrant_size|||
ref_array_or_hash|||
+refcounted_he_chain_2hv|||
+refcounted_he_free|||
+refcounted_he_new|||
refkids|||
refto|||
ref||5.009003|
reganode|||
regatom|||
regbranch|||
-regclass_swash||5.007003|
+regclass_swash||5.009004|
regclass|||
regcppop|||
regcppush|||
-regcurly|||
+regcurly|||n
regdump||5.005000|
regexec_flags||5.005000|
-reghop3|||
-reghopmaybe3|||
-reghopmaybe|||
-reghop|||
+reghop3|||n
+reghopmaybe3|||n
reginclass|||
reginitcolors||5.006000|
reginsert|||
regmatch|||
regnext||5.005000|
-regoptail|||
regpiece|||
regpposixcc|||
regprop|||
-regrepeat_hard|||
regrepeat|||
regtail|||
regtry|||
reguni|||
-regwhite|||
+regwhite|||n
reg|||
repeatcpy|||
report_evil_fh|||
save_generic_svref||5.005030|
save_gp||5.004000|
save_hash|||
-save_hek_flags|||
+save_hek_flags|||n
save_helem||5.004050|
save_hints||5.005000|
save_hptr|||
save_shared_pvref||5.007003|
save_sptr|||
save_svref|||
-save_threadsv||5.005000|
save_vptr||5.006000|
savepvn|||
savepv|||
savestack_grow|||
savesvpv||5.009002|
sawparens|||
-scalar_mod_type|||
+scalar_mod_type|||n
scalarboolean|||
scalarkids|||
scalarseq|||
screaminstr||5.005000|
seed||5.008001|
sequence_num|||
+sequence_tail|||
sequence|||
set_context||5.006000|n
set_csh|||
si_dup|||
sighandler|||n
simplify_sort|||
+skipspace0|||
+skipspace1|||
+skipspace2|||
skipspace|||
sortcv_stacked|||
sortcv_xsub|||
sortcv|||
sortsv_flags||5.009003|
sortsv||5.007003|
+space_join_names_mortal|||
ss_dup|||
stack_grow|||
+start_force|||
start_glob|||
start_subparse||5.004000|
-stashpv_hvname_match||5.009003|
+stashpv_hvname_match||5.009004|
stdize_locale|||
strEQ|||
strGE|||
sv_2bool|||
sv_2cv|||
sv_2io|||
+sv_2iuv_common|||
sv_2iuv_non_preserve|||
sv_2iv_flags||5.009001|
sv_2iv|||
sv_catpvn_mg|5.004050||p
sv_catpvn_nomg|5.007002||p
sv_catpvn|||
+sv_catpvs|5.009003||p
sv_catpv|||
sv_catsv_flags||5.007002|
sv_catsv_mg|5.004050||p
sv_catsv_nomg|5.007002||p
sv_catsv|||
+sv_catxmlpvn|||
+sv_catxmlsv|||
sv_chop|||
sv_clean_all|||
sv_clean_objs|||
sv_newref|||
sv_nolocking||5.007003|
sv_nosharing||5.007003|
-sv_nounlocking||5.007003|
+sv_nounlocking|||
sv_nv||5.005000|
sv_peek||5.005000|
+sv_pos_b2u_forwards|||
+sv_pos_b2u_midway|||
sv_pos_b2u||5.006000|
+sv_pos_u2b_cached|||
+sv_pos_u2b_forwards|||n
+sv_pos_u2b_midway|||n
sv_pos_u2b||5.006000|
sv_pvbyten_force||5.006000|
sv_pvbyten||5.006000|
sv_setpviv||5.008001|
sv_setpvn_mg|5.006000||p
sv_setpvn|||
+sv_setpvs|5.009004||p
sv_setpv|||
sv_setref_iv|||
sv_setref_nv|||
sv_unref|||
sv_untaint||5.004000|
sv_upgrade|||
-sv_usepvn_mg|5.006000||p
+sv_usepvn_flags||5.009004|
+sv_usepvn_mg|5.004050||p
sv_usepvn|||
sv_utf8_decode||5.006000|
sv_utf8_downgrade||5.006000|
sv_vsetpvf_mg|5.006000|5.004000|p
sv_vsetpvfn||5.004000|
sv_vsetpvf|5.006000|5.004000|p
+sv_xmlpeek|||
svtype|||
swallow_bom|||
swash_fetch||5.007002|
to_utf8_substr|||
to_utf8_title||5.007003|
to_utf8_upper||5.007003|
+token_free|||
+token_getmad|||
tokenize_use|||
tokeq|||
tokereport|||
utf8_distance||5.006000|
utf8_hop||5.006000|
utf8_length||5.007001|
-utf8_mg_pos_init|||
-utf8_mg_pos|||
+utf8_mg_pos_cache_update|||
utf8_to_bytes||5.006001|
utf8_to_uvchr||5.007001|
utf8_to_uvuni||5.007001|
wait4pid|||
warn_nocontext|||vn
warner_nocontext|||vn
-warner||5.006000|v
+warner|5.006000|5.004000|pv
warn|||v
watch|||
whichsig|||
write_no_mem|||
write_to_stderr|||
+xmldump_all|||
+xmldump_attr|||
+xmldump_eval|||
+xmldump_form|||
+xmldump_indent|||v
+xmldump_packsubs|||
+xmldump_sub|||
+xmldump_vindent|||
yyerror|||
yylex|||
yyparse|||
# define PERL_UNUSED_DECL
# endif
#endif
+
+#ifndef PERL_UNUSED_ARG
+# if defined(lint) && defined(S_SPLINT_S) /* www.splint.org */
+# include <note.h>
+# define PERL_UNUSED_ARG(x) NOTE(ARGUNUSED(x))
+# else
+# define PERL_UNUSED_ARG(x) ((void)x)
+# endif
+#endif
+
+#ifndef PERL_UNUSED_VAR
+# define PERL_UNUSED_VAR(x) ((void)x)
+#endif
+
+#ifndef PERL_UNUSED_CONTEXT
+# ifdef USE_ITHREADS
+# define PERL_UNUSED_CONTEXT PERL_UNUSED_ARG(my_perl)
+# else
+# define PERL_UNUSED_CONTEXT
+# endif
+#endif
#ifndef NOOP
-# define NOOP (void)0
+# define NOOP /*EMPTY*/(void)0
#endif
#ifndef dNOOP
-# define dNOOP extern int Perl___notused PERL_UNUSED_DECL
+# define dNOOP extern int /*@unused@*/ Perl___notused PERL_UNUSED_DECL
#endif
#ifndef NVTYPE
return; \
} STMT_END
#endif
+#ifndef PERL_ABS
+# define PERL_ABS(x) ((x) < 0 ? -(x) : (x))
+#endif
+#ifndef dVAR
+# define dVAR dNOOP
+#endif
+#ifndef SVf
+# define SVf "_"
+#endif
#ifndef PERL_SIGNALS_UNSAFE_FLAG
SvSETMAGIC(sv); \
} STMT_END
#endif
+#ifndef WARN_ALL
+# define WARN_ALL 0
+#endif
+
+#ifndef WARN_CLOSURE
+# define WARN_CLOSURE 1
+#endif
+
+#ifndef WARN_DEPRECATED
+# define WARN_DEPRECATED 2
+#endif
+
+#ifndef WARN_EXITING
+# define WARN_EXITING 3
+#endif
+
+#ifndef WARN_GLOB
+# define WARN_GLOB 4
+#endif
+
+#ifndef WARN_IO
+# define WARN_IO 5
+#endif
+
+#ifndef WARN_CLOSED
+# define WARN_CLOSED 6
+#endif
+
+#ifndef WARN_EXEC
+# define WARN_EXEC 7
+#endif
+
+#ifndef WARN_LAYER
+# define WARN_LAYER 8
+#endif
+
+#ifndef WARN_NEWLINE
+# define WARN_NEWLINE 9
+#endif
+
+#ifndef WARN_PIPE
+# define WARN_PIPE 10
+#endif
+
+#ifndef WARN_UNOPENED
+# define WARN_UNOPENED 11
+#endif
+
+#ifndef WARN_MISC
+# define WARN_MISC 12
+#endif
+
+#ifndef WARN_NUMERIC
+# define WARN_NUMERIC 13
+#endif
+
+#ifndef WARN_ONCE
+# define WARN_ONCE 14
+#endif
+
+#ifndef WARN_OVERFLOW
+# define WARN_OVERFLOW 15
+#endif
+
+#ifndef WARN_PACK
+# define WARN_PACK 16
+#endif
+
+#ifndef WARN_PORTABLE
+# define WARN_PORTABLE 17
+#endif
+
+#ifndef WARN_RECURSION
+# define WARN_RECURSION 18
+#endif
+
+#ifndef WARN_REDEFINE
+# define WARN_REDEFINE 19
+#endif
+
+#ifndef WARN_REGEXP
+# define WARN_REGEXP 20
+#endif
+
+#ifndef WARN_SEVERE
+# define WARN_SEVERE 21
+#endif
+
+#ifndef WARN_DEBUGGING
+# define WARN_DEBUGGING 22
+#endif
+
+#ifndef WARN_INPLACE
+# define WARN_INPLACE 23
+#endif
+
+#ifndef WARN_INTERNAL
+# define WARN_INTERNAL 24
+#endif
+
+#ifndef WARN_MALLOC
+# define WARN_MALLOC 25
+#endif
+
+#ifndef WARN_SIGNAL
+# define WARN_SIGNAL 26
+#endif
+
+#ifndef WARN_SUBSTR
+# define WARN_SUBSTR 27
+#endif
+
+#ifndef WARN_SYNTAX
+# define WARN_SYNTAX 28
+#endif
+
+#ifndef WARN_AMBIGUOUS
+# define WARN_AMBIGUOUS 29
+#endif
+
+#ifndef WARN_BAREWORD
+# define WARN_BAREWORD 30
+#endif
+
+#ifndef WARN_DIGIT
+# define WARN_DIGIT 31
+#endif
+
+#ifndef WARN_PARENTHESIS
+# define WARN_PARENTHESIS 32
+#endif
+
+#ifndef WARN_PRECEDENCE
+# define WARN_PRECEDENCE 33
+#endif
+
+#ifndef WARN_PRINTF
+# define WARN_PRINTF 34
+#endif
+
+#ifndef WARN_PROTOTYPE
+# define WARN_PROTOTYPE 35
+#endif
+
+#ifndef WARN_QW
+# define WARN_QW 36
+#endif
+
+#ifndef WARN_RESERVED
+# define WARN_RESERVED 37
+#endif
+
+#ifndef WARN_SEMICOLON
+# define WARN_SEMICOLON 38
+#endif
+
+#ifndef WARN_TAINT
+# define WARN_TAINT 39
+#endif
+
+#ifndef WARN_THREADS
+# define WARN_THREADS 40
+#endif
+
+#ifndef WARN_UNINITIALIZED
+# define WARN_UNINITIALIZED 41
+#endif
+
+#ifndef WARN_UNPACK
+# define WARN_UNPACK 42
+#endif
+
+#ifndef WARN_UNTIE
+# define WARN_UNTIE 43
+#endif
+
+#ifndef WARN_UTF8
+# define WARN_UTF8 44
+#endif
+
+#ifndef WARN_VOID
+# define WARN_VOID 45
+#endif
+
+#ifndef WARN_ASSERTIONS
+# define WARN_ASSERTIONS 46
+#endif
+#ifndef packWARN
+# define packWARN(a) (a)
+#endif
+
+#ifndef ckWARN
+# ifdef G_WARN_ON
+# define ckWARN(a) (PL_dowarn & G_WARN_ON)
+# else
+# define ckWARN(a) PL_dowarn
+# endif
+#endif
+
+/* warner depends on vnewSVpvf */
+#if ((PERL_VERSION > 4) || ((PERL_VERSION == 4) && (PERL_SUBVERSION >= 0))) && !defined(warner)
+#if defined(NEED_warner)
+static void DPPP_(my_warner)(U32 err, const char *pat, ...);
+static
+#else
+extern void DPPP_(my_warner)(U32 err, const char *pat, ...);
+#endif
+
+#define Perl_warner DPPP_(my_warner)
+
+#if defined(NEED_warner) || defined(NEED_warner_GLOBAL)
+
+void
+DPPP_(my_warner)(U32 err, const char *pat, ...)
+{
+ SV *sv;
+ va_list args;
+
+ PERL_UNUSED_ARG(err);
+
+ va_start(args, pat);
+ sv = vnewSVpvf(pat, &args);
+ va_end(args);
+ sv_2mortal(sv);
+ warn("%s", SvPV_nolen(sv));
+}
+
+#define warner Perl_warner
+
+/* Perl_warner_nocontext depends on warner */
+#define Perl_warner_nocontext Perl_warner
+
+#endif
+#endif
+
+/* concatenating with "" ensures that only literal strings are accepted as argument
+ * note that STR_WITH_LEN() can't be used as argument to macros or functions that
+ * under some configurations might be macros
+ */
+#ifndef STR_WITH_LEN
+# define STR_WITH_LEN(s) (s ""), (sizeof(s)-1)
+#endif
+#ifndef newSVpvs
+# define newSVpvs(str) newSVpvn(str "", sizeof(str) - 1)
+#endif
+
+#ifndef sv_catpvs
+# define sv_catpvs(sv, str) sv_catpvn(sv, str "", sizeof(str) - 1)
+#endif
+
+#ifndef sv_setpvs
+# define sv_setpvs(sv, str) sv_setpvn(sv, str "", sizeof(str) - 1)
+#endif
+
+#ifndef hv_fetchs
+# define hv_fetchs(hv,key,lval) hv_fetch(hv, key "", sizeof(key) - 1, lval)
+#endif
+
+#ifndef hv_stores
+# define hv_stores(hv,key,val,hash) hv_store(hv, key "", sizeof(key) - 1, val, hash)
+#endif
#ifndef SvGETMAGIC
# define SvGETMAGIC(x) STMT_START { if (SvGMAGICAL(x)) mg_get(x); } STMT_END
#endif
SvSETMAGIC(TeMpSv); \
} STMT_END
#endif
+#ifndef SvVSTRING_mg
+# define SvVSTRING_mg(sv) (SvMAGICAL(sv) ? mg_find(sv, PERL_MAGIC_vstring) : NULL)
+#endif
#ifdef USE_ITHREADS
#ifndef CopFILE
#endif
#endif
+#if !defined(my_snprintf)
+#if defined(NEED_my_snprintf)
+static int DPPP_(my_my_snprintf)(char * buffer, const Size_t len, const char * format, ...);
+static
+#else
+extern int DPPP_(my_my_snprintf)(char * buffer, const Size_t len, const char * format, ...);
+#endif
+
+#define my_snprintf DPPP_(my_my_snprintf)
+#define Perl_my_snprintf DPPP_(my_my_snprintf)
+
+#if defined(NEED_my_snprintf) || defined(NEED_my_snprintf_GLOBAL)
+
+int
+DPPP_(my_my_snprintf)(char *buffer, const Size_t len, const char *format, ...)
+{
+ dTHX;
+ int retval;
+ va_list ap;
+ va_start(ap, format);
+#ifdef HAS_VSNPRINTF
+ retval = vsnprintf(buffer, len, format, ap);
+#else
+ retval = vsprintf(buffer, format, ap);
+#endif
+ va_end(ap);
+ if (retval >= (int)len)
+ Perl_croak(aTHX_ "panic: my_snprintf buffer overflow");
+ return retval;
+}
+
+#endif
+#endif
+
#ifdef NO_XSLOCKS
# ifdef dJMPENV
# define dXCPT dJMPENV; int rEtV = 0
/* ---- from parts/inc/newRV ---- */
#define NEED_newRV_noinc
+/* ---- from parts/inc/snprintf ---- */
+#define NEED_my_snprintf
+
/* ---- from parts/inc/sv_xpvf ---- */
#define NEED_vnewSVpvf
#define NEED_sv_catpvf_mg
/* ---- from parts/inc/variables ---- */
#define NEED_PL_signals
+/* ---- from parts/inc/warn ---- */
+#define NEED_warner
+
/* =========== END XSINIT =================================================== */
#include "ppport.h"
Copy(str, copy, len+1, char);
sv_usepvn_mg(sv, copy, len);
+int
+SvVSTRING_mg(sv)
+ SV *sv;
+ CODE:
+ RETVAL = SvVSTRING_mg(sv) != NULL;
+ OUTPUT:
+ RETVAL
+
##----------------------------------------------------------------------
## XSUBs from parts/inc/memory
##----------------------------------------------------------------------
XSRETURN(1);
}
+int
+PERL_ABS(a)
+ int a
+
+void
+SVf(x)
+ SV *x
+ PPCODE:
+#if ((PERL_VERSION > 4) || ((PERL_VERSION == 4) && (PERL_SUBVERSION >= 0)))
+ x = newSVpvf("[%"SVf"]", x);
+#endif
+ XPUSHs(x);
+ XSRETURN(1);
+
##----------------------------------------------------------------------
## XSUBs from parts/inc/mPUSH
##----------------------------------------------------------------------
RETVAL
##----------------------------------------------------------------------
+## XSUBs from parts/inc/pvs
+##----------------------------------------------------------------------
+
+void
+newSVpvs()
+ PPCODE:
+ XPUSHs(newSVpvs("newSVpvs"));
+ XSRETURN(1);
+
+void
+sv_catpvs(sv)
+ SV *sv
+ PPCODE:
+ sv_catpvs(sv, "sv_catpvs");
+
+void
+sv_setpvs(sv)
+ SV *sv
+ PPCODE:
+ sv_setpvs(sv, "sv_setpvs");
+
+void
+hv_fetchs(hv)
+ SV *hv
+ PREINIT:
+ SV **s;
+ PPCODE:
+ s = hv_fetchs((HV *) SvRV(hv), "hv_fetchs", 0);
+ XPUSHs(sv_mortalcopy(*s));
+ XSRETURN(1);
+
+void
+hv_stores(hv, sv)
+ SV *hv
+ SV *sv
+ PPCODE:
+ hv_stores((HV *) SvRV(hv), "hv_stores", SvREFCNT_inc(sv), 0);
+
+##----------------------------------------------------------------------
+## XSUBs from parts/inc/snprintf
+##----------------------------------------------------------------------
+
+void
+my_snprintf()
+ PREINIT:
+ char buf[128];
+ int len;
+ PPCODE:
+ len = my_snprintf(buf, sizeof buf, "foo%s%d", "bar", 42);
+ XPUSHs(newSViv(len));
+ XPUSHs(newSVpv(buf, 0));
+ XSRETURN(2);
+
+##----------------------------------------------------------------------
## XSUBs from parts/inc/Sv_set
##----------------------------------------------------------------------
OUTPUT:
RETVAL
+void
+TestSvSTASH_set(sv, name)
+ SV *sv
+ char *name
+ CODE:
+ sv = SvRV(sv);
+ SvREFCNT_dec(SvSTASH(sv));
+ SvSTASH_set(sv, (HV*) SvREFCNT_inc(gv_stashpv(name, 0)));
+
##----------------------------------------------------------------------
## XSUBs from parts/inc/sv_xpvf
##----------------------------------------------------------------------
}
OUTPUT:
RETVAL
+
+##----------------------------------------------------------------------
+## XSUBs from parts/inc/warn
+##----------------------------------------------------------------------
+
+void
+warner()
+ CODE:
+#if ((PERL_VERSION > 4) || ((PERL_VERSION == 4) && (PERL_SUBVERSION >= 0)))
+ warner(packWARN(WARN_MISC), "warner %s:%d", "bar", 42);
+#endif
+
+void
+Perl_warner()
+ CODE:
+#if ((PERL_VERSION > 4) || ((PERL_VERSION == 4) && (PERL_SUBVERSION >= 0)))
+ Perl_warner(aTHX_ packWARN(WARN_MISC), "Perl_warner %s:%d", "bar", 42);
+#endif
+
+void
+Perl_warner_nocontext()
+ CODE:
+#if ((PERL_VERSION > 4) || ((PERL_VERSION == 4) && (PERL_SUBVERSION >= 0)))
+ Perl_warner_nocontext(packWARN(WARN_MISC), "Perl_warner_nocontext %s:%d", "bar", 42);
+#endif
+
+void
+ckWARN()
+ CODE:
+#if ((PERL_VERSION > 4) || ((PERL_VERSION == 4) && (PERL_SUBVERSION >= 0)))
+ if (ckWARN(WARN_MISC))
+ Perl_warner_nocontext(packWARN(WARN_MISC), "ckWARN %s:%d", "bar", 42);
+#endif
#
################################################################################
#
-# $Revision: 41 $
+# $Revision: 42 $
# $Author: mhx $
-# $Date: 2006/01/14 18:07:56 +0100 $
+# $Date: 2006/05/18 23:13:47 +0200 $
#
################################################################################
#
#
################################################################################
#
-# $Revision: 41 $
+# $Revision: 42 $
# $Author: mhx $
-# $Date: 2006/01/14 18:07:56 +0100 $
+# $Date: 2006/05/18 23:13:47 +0200 $
#
################################################################################
#
use strict;
use vars qw($VERSION @ISA $data);
-$VERSION = do { my @r = '$Snapshot: /Devel-PPPort/3.08 $' =~ /(\d+\.\d+(?:_\d+)?)/; @r ? $r[0] : '9.99' };
+$VERSION = do { my @r = '$Snapshot: /Devel-PPPort/3.08_01 $' =~ /(\d+\.\d+(?:_\d+)?)/; @r ? $r[0] : '9.99' };
@ISA = qw(DynaLoader);
%include sv_xpvf
+%include warn
+
+%include pvs
+
%include magic
%include cop
%include grok
+%include snprintf
+
%include exception
#endif /* _P_P_PORTABILITY_H_ */
TODO:
+* see if we can add more stuff from recent perls
+
+* see if we can implement sv_catpvf() for < 5.004
+
+* add hv_stores() to blead
+
+* Andy's SvREFCNT_inc patches?
+
* MULTICALL ?
* improve apicheck (things like utf8_mg_pos_init() are
#
################################################################################
#
-# $Revision: 14 $
+# $Revision: 16 $
# $Author: mhx $
-# $Date: 2006/01/14 18:07:58 +0100 $
+# $Date: 2006/05/19 16:15:51 +0200 $
#
################################################################################
#
#define NEED_grok_number
#define NEED_grok_numeric_radix
#define NEED_grok_oct
+#define NEED_my_snprintf
#define NEED_newCONSTSUB
#define NEED_newRV_noinc
#define NEED_sv_2pv_nolen
#define NEED_sv_setpvf_mg
#define NEED_sv_setpvf_mg_nocontext
#define NEED_vnewSVpvf
+#define NEED_warner
#include "ppport.h"
}
my($n, $p, $d) = $a =~ /^ (\w+(?:\s+\w+)*)\s* # type name => $n
(\**) # pointer => $p
+ (?:\s*const\s*)? # const
((?:\[[^\]]*\])*) # dimension => $d
$/x
or die "$0 - cannot parse argument: [$a]\n";
Am|char*|HePV|HE* he|STRLEN len
Am|char*|HvNAME|HV* stash
Am|char*|SvEND|SV* sv
+Am|char*|SvGAMAGIC|SV* sv
Am|char *|SvGROW|SV* sv|STRLEN len
Am|char*|SvPVbyte_force|SV* sv|STRLEN len
Am|char*|SvPVbyte_nolen|SV* sv
Am|SV*|HeSVKEY_set|HE* he|SV* sv
Am|SV*|HeVAL|HE* he
Am|SV*|newRV_inc|SV* sv
-Am|SV*|NEWSV|int id|STRLEN len
Am|SV*|ST|int ix
+Am|SV*|SvREFCNT_inc_NN|SV* sv
+Am|SV*|SvREFCNT_inc_simple_NN|SV* sv
+Am|SV*|SvREFCNT_inc_simple|SV* sv
+Am|SV*|SvREFCNT_inc_simple_void|SV* sv
Am|SV*|SvREFCNT_inc|SV* sv
+Am|SV*|SvREFCNT_inc_void_NN|SV* sv
+Am|SV*|SvREFCNT_inc_void|SV* sv
Am|SV*|SvRV|SV* sv
Am|svtype|SvTYPE|SV* sv
Ams||XCPT_RETHROW
Am|void|Newxc|void* ptr|int nitems|type|cast
Am|void|Newx|void* ptr|int nitems|type
Am|void|Newxz|void* ptr|int nitems|type
+Am|void|PoisonNew|void* dest|int nitems|type
Am|void|Poison|void* dest|int nitems|type
+Am|void|PoisonWith|void* dest|int nitems|type|U8 byte
Am|void|PUSHi|IV iv
Am|void|PUSHMARK|SP
Am|void|PUSHmortal
Am|void|SvSetSV_nosteal|SV* dsv|SV* ssv
Am|void|SvSetSV|SV* dsb|SV* ssv
Am|void|SvSHARE|SV* sv
-Am|void|SvSTASH_set|SV* sv|STASH* val
+Am|void|SvSTASH_set|SV* sv|HV* val
Am|void|SvTAINTED_off|SV* sv
Am|void|SvTAINTED_on|SV* sv
Am|void|SvTAINT|SV* sv
SvGETMAGIC # U
sv_catpvn_mg # U
sv_catsv_mg # U
+sv_usepvn_mg # U
AvFILLp # added by devel/scanprov
DEFSV # added by devel/scanprov
ERRSV # added by devel/scanprov
newCONDOP # E (Perl_newCONDOP)
newCONSTSUB # E (Perl_newCONSTSUB)
newCVREF # E (Perl_newCVREF)
-newFORM # E (Perl_newFORM)
newFOROP # E (Perl_newFOROP)
newGVOP # E (Perl_newGVOP)
newGVREF # E (Perl_newGVREF)
newLOGOP # E (Perl_newLOGOP)
newLOOPEX # E (Perl_newLOOPEX)
newLOOPOP # E (Perl_newLOOPOP)
-newMYSUB # E
newNULLLIST # E (Perl_newNULLLIST)
newOP # E (Perl_newOP)
newPADOP # E
ninstr # E (Perl_ninstr)
op_dump # E
op_free # E (Perl_op_free)
-pad_sv # E (Perl_pad_sv)
perl_parse # E (perl_parse)
pmflag # E (Perl_pmflag)
pmop_dump # E
save_scalar # E (Perl_save_scalar)
save_sptr # E (Perl_save_sptr)
save_svref # E (Perl_save_svref)
-save_threadsv # E (Perl_save_threadsv)
save_vptr # E
savepv # E (Perl_savepv)
savepvn # E (Perl_savepvn)
sv_unmagic # E (Perl_sv_unmagic)
sv_untaint # E (Perl_sv_untaint)
sv_upgrade # E (Perl_sv_upgrade)
-sv_usepvn # E (Perl_sv_usepvn)
-sv_usepvn_mg # E (Perl_sv_usepvn_mg)
sv_utf8_decode # E
sv_utf8_downgrade # E
sv_utf8_encode # E
PTR2NV # added by devel/scanprov
PTR2UV # added by devel/scanprov
PTRV # added by devel/scanprov
+Perl_warner # added by devel/scanprov
+Perl_warner_nocontext # added by devel/scanprov
UVSIZE # added by devel/scanprov
UVTYPE # added by devel/scanprov
UVof # added by devel/scanprov
UVuf # added by devel/scanprov
UVxf # added by devel/scanprov
+WARN_ALL # added by devel/scanprov
+WARN_AMBIGUOUS # added by devel/scanprov
+WARN_BAREWORD # added by devel/scanprov
+WARN_CLOSED # added by devel/scanprov
+WARN_CLOSURE # added by devel/scanprov
+WARN_DEBUGGING # added by devel/scanprov
+WARN_DEPRECATED # added by devel/scanprov
+WARN_DIGIT # added by devel/scanprov
+WARN_EXEC # added by devel/scanprov
+WARN_EXITING # added by devel/scanprov
+WARN_GLOB # added by devel/scanprov
+WARN_INPLACE # added by devel/scanprov
+WARN_INTERNAL # added by devel/scanprov
+WARN_IO # added by devel/scanprov
+WARN_MALLOC # added by devel/scanprov
+WARN_MISC # added by devel/scanprov
+WARN_NEWLINE # added by devel/scanprov
+WARN_NUMERIC # added by devel/scanprov
+WARN_ONCE # added by devel/scanprov
+WARN_OVERFLOW # added by devel/scanprov
+WARN_PACK # added by devel/scanprov
+WARN_PARENTHESIS # added by devel/scanprov
+WARN_PIPE # added by devel/scanprov
+WARN_PORTABLE # added by devel/scanprov
+WARN_PRECEDENCE # added by devel/scanprov
+WARN_PRINTF # added by devel/scanprov
+WARN_PROTOTYPE # added by devel/scanprov
+WARN_QW # added by devel/scanprov
+WARN_RECURSION # added by devel/scanprov
+WARN_REDEFINE # added by devel/scanprov
+WARN_REGEXP # added by devel/scanprov
+WARN_RESERVED # added by devel/scanprov
+WARN_SEMICOLON # added by devel/scanprov
+WARN_SEVERE # added by devel/scanprov
+WARN_SIGNAL # added by devel/scanprov
+WARN_SUBSTR # added by devel/scanprov
+WARN_SYNTAX # added by devel/scanprov
+WARN_TAINT # added by devel/scanprov
+WARN_UNINITIALIZED # added by devel/scanprov
+WARN_UNOPENED # added by devel/scanprov
+WARN_UNPACK # added by devel/scanprov
+WARN_UNTIE # added by devel/scanprov
+WARN_UTF8 # added by devel/scanprov
+WARN_VOID # added by devel/scanprov
XSprePUSH # added by devel/scanprov
aTHX # added by devel/scanprov
aTHX_ # added by devel/scanprov
5.006001
+SvGAMAGIC # E
apply_attrs_string # U
bytes_to_utf8 # E
gv_efullname4 # U
PERL_MAGIC_uvar # added by devel/scanprov
PERL_MAGIC_vec # added by devel/scanprov
PERL_UNUSED_DECL # added by devel/scanprov
+PERL_UNUSED_VAR # added by devel/scanprov
pack_cat # E
perl_destruct # E (perl_destruct)
pv_uni_display # E
-regclass_swash # E (Perl_regclass_swash)
save_shared_pvref # E
savesharedpv # E
sortsv # E
sv_magicext # E
sv_nolocking # E
sv_nosharing # E
-sv_nounlocking # E
sv_pvn_nomg # E
sv_recode_to_utf8 # E
sv_uni_display # E
dMY_CXT_SV # added by devel/scanprov
pMY_CXT # added by devel/scanprov
pMY_CXT_ # added by devel/scanprov
+packWARN # added by devel/scanprov
hv_store_flags # E
is_utf8_idcont # U
nothreadhook # U
+WARN_LAYER # added by devel/scanprov
+WARN_THREADS # added by devel/scanprov
sv_setpviv_mg # U
unpackstring # U
IN_PERL_COMPILETIME # added by devel/scanprov
+PERL_ABS # 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
vcmp # U
vnumify # E
vstringify # E
+WARN_ASSERTIONS # added by devel/scanprov
5.009003
-MULTICALL # E
Newx # E
Newxc # E
Newxz # E
-POP_MULTICALL # E
-PUSH_MULTICALL # E
SvMAGIC_set # U
SvRV_set # U
-SvSTASH_set # E
SvUV_set # U
av_arylen_p # E
ckwarn # U
newWHILEOP # E (Perl_newWHILEOP)
ref # E (Perl_ref)
sortsv_flags # U
-stashpv_hvname_match # U
vverify # U
-PERL_BCDVERSION # added by devel/scanprov
+PERL_UNUSED_ARG # added by devel/scanprov
+STR_WITH_LEN # added by devel/scanprov
SvPVX_const # added by devel/scanprov
SvPVX_mutable # added by devel/scanprov
+dVAR # added by devel/scanprov
+hv_fetchs # added by devel/scanprov
+newSVpvs # added by devel/scanprov
+sv_catpvs # added by devel/scanprov
--- /dev/null
+5.009004
+MULTICALL # E
+POP_MULTICALL # E
+PUSH_MULTICALL # E
+PoisonNew # E
+PoisonWith # E
+SvREFCNT_inc_NN # E
+SvREFCNT_inc_simple # E
+SvREFCNT_inc_simple_NN # E
+SvREFCNT_inc_simple_void # E
+SvREFCNT_inc_void # E
+SvREFCNT_inc_void_NN # E
+SvSTASH_set # E
+gv_name_set # U
+my_snprintf # U
+my_vsnprintf # U
+newXS_flags # E
+pad_sv # U
+regclass_swash # E (Perl_regclass_swash)
+stashpv_hvname_match # U
+sv_usepvn_flags # U
+PERL_BCDVERSION # added by devel/scanprov
+PERL_UNUSED_CONTEXT # added by devel/scanprov
+SvVSTRING_mg # added by devel/scanprov
+hv_stores # added by devel/scanprov
+sv_setpvs # added by devel/scanprov
ApR |I32 |my_chsize |int fd|Off_t length
#endif
pR |OP* |convert |I32 optype|I32 flags|NULLOK OP* o
+pM |PERL_CONTEXT* |create_eval_scope|U32 flags
: croak()'s first parm can be NULL. Otherwise, mod_perl breaks.
Afprd |void |croak |NULLOK const char* pat|...
Apr |void |vcroak |NN const char* pat|NULLOK va_list* args
Afnp |int |fprintf_nocontext|NN PerlIO* stream|NN const char* fmt|...
Afnp |int |printf_nocontext|NN const char* fmt|...
#endif
-p |void |cv_ckproto |NN const CV* cv|NULLOK const GV* gv|NULLOK const char* p
+bp |void |cv_ckproto |NN const CV* cv|NULLOK const GV* gv\
+ |NULLOK const char* p
+p |void |cv_ckproto_len |NN const CV* cv|NULLOK const GV* gv\
+ |NULLOK const char* p|const STRLEN len
pd |CV* |cv_clone |NN CV* proto
ApdR |SV* |gv_const_sv |NN GV* gv
ApdR |SV* |cv_const_sv |NULLOK CV* cv
pPR |const char* |get_no_modify
pPR |U32* |get_opargs
ApPR |PPADDR_t*|get_ppaddr
-EpR |I32 |cxinc
+EXpR |I32 |cxinc
Afp |void |deb |NN const char* pat|...
Ap |void |vdeb |NN const char* pat|NULLOK va_list* args
Ap |void |debprofdump
Ap |I32 |debstackptrs
Ap |char* |delimcpy |NN char* to|NN const char* toend|NN const char* from \
|NN const char* fromend|int delim|NN I32* retlen
+pM |void |delete_eval_scope
p |void |deprecate |NN const char* s
p |void |deprecate_old |NN const char* s
Afp |OP* |die |NULLOK const char* pat|...
p |OP* |die_where |NULLOK const char* message|STRLEN msglen
Ap |void |dounwind |I32 cxix
pmb |bool |do_aexec |NULLOK SV* really|NN SV** mark|NN SV** sp
-p |bool |do_aexec5 |NULLOK SV* really|NN SV** mark|NN SV** sp|int fd|int flag
+p |bool |do_aexec5 |NULLOK SV* really|NN SV** mark|NN SV** sp|int fd|int do_report
Ap |int |do_binmode |NN PerlIO *fp|int iotype|int mode
p |void |do_chop |NN SV* asv|NN SV* sv
Ap |bool |do_close |NN GV* gv|bool not_implicit
Ap |int |do_spawn_nowait|NN char* cmd
#endif
#if !defined(WIN32)
-p |bool |do_exec3 |NN const char* cmd|int fd|int flag
+p |bool |do_exec3 |NN const char* cmd|int fd|int do_report
#endif
p |void |do_execfree
#if defined(HAS_MSG) || defined(HAS_SEM) || defined(HAS_SHM)
Ap |void |gv_fullname |NN SV* sv|NN const GV* gv
Apmb |void |gv_fullname3 |NN SV* sv|NN const GV* gv|NULLOK const char* prefix
Ap |void |gv_fullname4 |NN SV* sv|NN const GV* gv|NULLOK const char* prefix|bool keepmain
+pMox |GP * |newGP |NN GV *const gv
Ap |void |gv_init |NN GV* gv|NULLOK HV* stash|NN const char* name|STRLEN len|int multi
+Ap |void |gv_name_set |NN GV* gv|NN const char *name|U32 len|U32 flags
Apd |HV* |gv_stashpv |NN const char* name|I32 create
Apd |HV* |gv_stashpvn |NN const char* name|U32 namelen|I32 create
Apd |HV* |gv_stashsv |NULLOK SV* sv|I32 create
Apd |void |hv_clear |NULLOK HV* tb
+poM |HV * |hv_copy_hints_hv|NN HV *const ohv
Ap |void |hv_delayfree_ent|NN HV* hv|NULLOK HE* entry
Apd |SV* |hv_delete |NULLOK HV* tb|NN const char* key|I32 klen|I32 flags
Apd |SV* |hv_delete_ent |NULLOK HV* tb|NN SV* key|I32 flags|U32 hash
ApdR |SV* |hv_iterval |NN HV* tb|NN HE* entry
Ap |void |hv_ksplit |NN HV* hv|IV newmax
Apdbm |void |hv_magic |NN HV* hv|NULLOK GV* gv|int how
+dpoM |HV * |refcounted_he_chain_2hv|NULLOK const struct refcounted_he *c
+dpoM |void |refcounted_he_free|NULLOK struct refcounted_he *he
+dpoM |struct refcounted_he *|refcounted_he_new \
+ |NULLOK struct refcounted_he *const parent \
+ |NULLOK SV *const key|NULLOK SV *const value
Apd |SV** |hv_store |NULLOK HV* tb|NULLOK const char* key|I32 klen|NULLOK SV* val \
|U32 hash
Apd |HE* |hv_store_ent |NULLOK HV* tb|NULLOK SV* key|NULLOK SV* val|U32 hash
Apd |UV |grok_oct |NN const char* start|NN STRLEN* len_p|NN I32* flags|NULLOK NV *result
p |int |magic_clearenv |NN SV* sv|NN MAGIC* mg
p |int |magic_clear_all_env|NN SV* sv|NN MAGIC* mg
+dp |int |magic_clearhint|NN SV* sv|NN MAGIC* mg
p |int |magic_clearpack|NN SV* sv|NN MAGIC* mg
p |int |magic_clearsig |NN SV* sv|NN MAGIC* mg
p |int |magic_existspack|NN SV* sv|NN MAGIC* mg
p |int |magic_get |NN SV* sv|NN MAGIC* mg
p |int |magic_getarylen|NN SV* sv|NN const MAGIC* mg
p |int |magic_getdefelem|NN SV* sv|NN MAGIC* mg
-p |int |magic_getglob |NN SV* sv|NN MAGIC* mg
p |int |magic_getnkeys |NN SV* sv|NN MAGIC* mg
p |int |magic_getpack |NN SV* sv|NN MAGIC* mg
p |int |magic_getpos |NN SV* sv|NN MAGIC* mg
p |int |magic_setdefelem|NN SV* sv|NN MAGIC* mg
p |int |magic_setenv |NN SV* sv|NN MAGIC* mg
p |int |magic_setfm |NN SV* sv|NN MAGIC* mg
+dp |int |magic_sethint |NN SV* sv|NN MAGIC* mg
p |int |magic_setisa |NN SV* sv|NN MAGIC* mg
p |int |magic_setglob |NN SV* sv|NN MAGIC* mg
p |int |magic_setmglob |NN SV* sv|NN MAGIC* mg
Afp |SV* |mess |NN const char* pat|...
Ap |SV* |vmess |NN const char* pat|NULLOK va_list* args
p |void |qerror |NN SV* err
-Apd |void |sortsv |NN SV** array|size_t num_elts|SVCOMPARE_t cmp
-Apd |void |sortsv_flags |NN SV** array|size_t num_elts|SVCOMPARE_t cmp|U32 flags
+Apd |void |sortsv |NN SV** array|size_t num_elts|NN SVCOMPARE_t cmp
+Apd |void |sortsv_flags |NN SV** array|size_t num_elts|NN SVCOMPARE_t cmp|U32 flags
Apd |int |mg_clear |NN SV* sv
Apd |int |mg_copy |NN SV* sv|NN SV* nsv|NULLOK const char* key|I32 klen
pd |void |mg_localize |NN SV* sv|NN SV* nsv
Apa |OP* |newASSIGNOP |I32 flags|NULLOK OP* left|I32 optype|NULLOK OP* right
Apa |OP* |newCONDOP |I32 flags|NN OP* first|NULLOK OP* trueop|NULLOK OP* falseop
Apd |CV* |newCONSTSUB |NULLOK HV* stash|NULLOK const char* name|NULLOK SV* sv
+#ifdef PERL_MAD
+Ap |OP* |newFORM |I32 floor|NULLOK OP* o|NULLOK OP* block
+#else
Ap |void |newFORM |I32 floor|NULLOK OP* o|NULLOK OP* block
+#endif
Apa |OP* |newFOROP |I32 flags|NULLOK char* label|line_t forline \
|NULLOK OP* sv|NN OP* expr|NULLOK OP* block|NULLOK OP* cont
Apa |OP* |newGIVENOP |NN OP* cond|NN OP* block|PADOFFSET defsv_off
Apa |OP* |newSLICEOP |I32 flags|NULLOK OP* subscript|NULLOK OP* listop
Apa |OP* |newSTATEOP |I32 flags|NULLOK char* label|NULLOK OP* o
Ap |CV* |newSUB |I32 floor|NULLOK OP* o|NULLOK OP* proto|NULLOK OP* block
+ApM |CV * |newXS_flags |NULLOK const char *name|NN XSUBADDR_t subaddr\
+ |NN const char *const filename \
+ |NULLOK const char *const proto|U32 flags
Apd |CV* |newXS |NULLOK const char* name|NN XSUBADDR_t f|NN const char* filename
Apda |AV* |newAV
Apa |OP* |newAVREF |NN OP* o
Apa |OP* |newPADOP |I32 type|I32 flags|NULLOK SV* sv
Apa |OP* |newPMOP |I32 type|I32 flags
Apa |OP* |newPVOP |I32 type|I32 flags|NULLOK char* pv
-Apa |SV* |newRV |NN SV* pref
-Apda |SV* |newRV_noinc |NN SV *sv
+Apa |SV* |newRV |NN SV* sv
+Apda |SV* |newRV_noinc |NN SV* sv
Apda |SV* |newSV |STRLEN len
Apa |OP* |newSVREF |NN OP* o
Apa |OP* |newSVOP |I32 type|I32 flags|NN SV* sv
Apda |SV* |newSVpvn_share |NULLOK const char* s|I32 len|U32 hash
Afpda |SV* |newSVpvf |NN const char* pat|...
Apa |SV* |vnewSVpvf |NN const char* pat|NULLOK va_list* args
-Apda |SV* |newSVrv |NN SV* rv|NULLOK const char* classname
+Apd |SV* |newSVrv |NN SV* rv|NULLOK const char* classname
Apda |SV* |newSVsv |NULLOK SV* old
Apa |OP* |newUNOP |I32 type|I32 flags|NULLOK OP* first
Apa |OP* |newWHENOP |NULLOK OP* cond|NN OP* block
|NN const char* little|NN const char* lend
pr |OP* |oopsCV |NN OP* o
Ap |void |op_free |NULLOK OP* arg
+#ifdef PERL_MAD
+p |OP* |package |NN OP* o
+#else
p |void |package |NN OP* o
+#endif
pd |PADOFFSET|pad_alloc |I32 optype|U32 tmptype
-p |PADOFFSET|allocmy |NN char* name
+p |PADOFFSET|allocmy |NN const char *const name
pdR |PADOFFSET|pad_findmy |NN const char* name
Ap |PADOFFSET|find_rundefsvoffset |
pR |OP* |oopsAV |NN OP* o
Ap |void |push_scope
Amb |OP* |ref |NULLOK OP* o|I32 type
p |OP* |refkids |NULLOK OP* o|I32 type
-Ap |void |regdump |NN regexp* r
-Ap |SV* |regclass_swash |NN const struct regnode *n|bool doinit|NULLOK SV **listsvp|NULLOK SV **altsvp
+Ap |void |regdump |NN const regexp* r
+Ap |SV* |regclass_swash |NULLOK const regexp *prog|NN const struct regnode *n|bool doinit|NULLOK SV **listsvp|NULLOK SV **altsvp
Ap |I32 |pregexec |NN regexp* prog|NN char* stringarg \
|NN char* strend|NN char* strbeg|I32 minend \
|NN SV* screamer|U32 nosave
|NN char* strend|NN char* strbeg|I32 minend \
|NN SV* screamer|NULLOK void* data|U32 flags
ApR |regnode*|regnext |NN regnode* p
-Ep |void |regprop |NN SV* sv|NN const regnode* o
+Ep |void |regprop |NULLOK const regexp *prog|NN SV* sv|NN const regnode* o
Ap |void |repeatcpy |NN char* to|NN const char* from|I32 len|I32 count
ApP |char* |rninstr |NN const char* big|NN const char* bigend \
|NN const char* little|NN const char* lend
Apda |char* |savesvpv |NN SV* sv
Ap |void |savestack_grow
Ap |void |savestack_grow_cnt |I32 need
-Ap |void |save_aelem |NN const AV* av|I32 idx|NN SV **sptr
+Ap |void |save_aelem |NN AV* av|I32 idx|NN SV **sptr
Ap |I32 |save_alloc |I32 size|I32 pad
Ap |void |save_aptr |NN AV** aptr
Ap |AV* |save_ary |NN GV* gv
Ap |void |save_padsv |PADOFFSET off
Ap |void |save_sptr |NN SV** sptr
Ap |SV* |save_svref |NN SV** sptr
-Apr |SV** |save_threadsv |PADOFFSET i
p |OP* |sawparens |NULLOK OP* o
p |OP* |scalar |NULLOK OP* o
p |OP* |scalarkids |NULLOK OP* o
Apd |bool |sv_2bool |NN SV* sv
Apd |CV* |sv_2cv |NULLOK SV* sv|NN HV** st|NN GV** gvp|I32 lref
Apd |IO* |sv_2io |NN SV* sv
+#ifdef PERL_IN_SV_C
+s |bool |glob_2number |NN GV* const gv
+s |char* |glob_2pv |NN GV* const gv|NULLOK STRLEN * const len
+#endif
Amb |IV |sv_2iv |NN SV* sv
Apd |IV |sv_2iv_flags |NN SV* sv|I32 flags
Apd |SV* |sv_2mortal |NULLOK SV* sv
Apd |STRLEN |sv_len_utf8 |NULLOK SV* sv
Apd |void |sv_magic |NN SV* sv|NULLOK SV* obj|int how|NULLOK const char* name \
|I32 namlen
-Apd |MAGIC *|sv_magicext |NN SV* sv|NULLOK SV* obj|int how|NULLOK const MGVTBL *vtbl \
+Apd |MAGIC *|sv_magicext |NN SV* sv|NULLOK SV* obj|int how|NULLOK MGVTBL *vtbl \
|NULLOK const char* name|I32 namlen
ApdaR |SV* |sv_mortalcopy |NULLOK SV* oldsv
ApdR |SV* |sv_newmortal
Apd |void |sv_unref_flags |NN SV* sv|U32 flags
Apd |void |sv_untaint |NN SV* sv
Apd |void |sv_upgrade |NN SV* sv|U32 mt
-Apd |void |sv_usepvn |NN SV* sv|NULLOK char* ptr|STRLEN len
+Apdmb |void |sv_usepvn |NN SV* sv|NULLOK char* ptr|STRLEN len
+Apd |void |sv_usepvn_flags|NN SV* sv|NULLOK char* ptr|STRLEN len\
+ |U32 flags
Apd |void |sv_vcatpvfn |NN SV* sv|NN const char* pat|STRLEN patlen \
|NULLOK va_list* args|NULLOK SV** svargs|I32 svmax \
|NULLOK bool *maybe_tainted
Apd |I32 |unpackstring |NN const char *pat|NN const char *patend|NN const char *s \
|NN const char *strend|U32 flags
Ap |void |unsharepvn |NULLOK const char* sv|I32 len|U32 hash
-p |void |unshare_hek |NULLOK HEK* hek
+XEp |void |unshare_hek |NULLOK HEK* hek
+#ifdef PERL_MAD
+p |OP * |utilize |int aver|I32 floor|NULLOK OP* version \
+ |NN OP* idop|NULLOK OP* arg
+#else
p |void |utilize |int aver|I32 floor|NULLOK OP* version|NN OP* idop|NULLOK OP* arg
+#endif
Ap |U8* |utf16_to_utf8 |NN U8* p|NN U8 *d|I32 bytelen|NN I32 *newlen
Ap |U8* |utf16_to_utf8_reversed|NN U8* p|NN U8 *d|I32 bytelen|NN I32 *newlen
AdpPR |STRLEN |utf8_length |NN const U8* s|NN const U8 *e
Apd |void |sv_setpv_mg |NN SV *sv|NULLOK const char *ptr
Apd |void |sv_setpvn_mg |NN SV *sv|NN const char *ptr|STRLEN len
Apd |void |sv_setsv_mg |NN SV *dstr|NULLOK SV *sstr
-Apd |void |sv_usepvn_mg |NN SV *sv|NULLOK char *ptr|STRLEN len
+Apdbm |void |sv_usepvn_mg |NN SV *sv|NULLOK char *ptr|STRLEN len
ApR |MGVTBL*|get_vtbl |int vtbl_id
Ap |char* |pv_display |NN SV *dsv|NN const char *pv|STRLEN cur|STRLEN len \
|STRLEN pvlim
p |int |magic_killbackrefs|NN SV *sv|NN MAGIC *mg
Ap |OP* |newANONATTRSUB |I32 floor|NULLOK OP *proto|NULLOK OP *attrs|NULLOK OP *block
Ap |CV* |newATTRSUB |I32 floor|NULLOK OP *o|NULLOK OP *proto|NULLOK OP *attrs|NULLOK OP *block
+#ifdef PERL_MAD
+Apr |OP * |newMYSUB |I32 floor|NULLOK OP *o|NULLOK OP *proto \
+ |NULLOK OP *attrs|NULLOK OP *block
+#else
Apr |void |newMYSUB |I32 floor|NULLOK OP *o|NULLOK OP *proto|NULLOK OP *attrs|NULLOK OP *block
+#endif
p |OP * |my_attrs |NN OP *o|NULLOK OP *attrs
p |void |boot_core_xsutils
#if defined(USE_ITHREADS)
Adp |void |sv_nosharing |NULLOK SV *sv
Adpbm |void |sv_nolocking |NULLOK SV *sv
+#ifdef NO_MATHOMS
Adpbm |void |sv_nounlocking |NULLOK SV *sv
+#else
+Adpb |void |sv_nounlocking |NULLOK SV *sv
+#endif
Adp |int |nothreadhook
END_EXTERN_C
#if defined(PERL_IN_DOOP_C) || defined(PERL_DECL_PROT)
-sR |I32 |do_trans_simple |NN SV *sv
-sR |I32 |do_trans_count |NN SV *sv
-sR |I32 |do_trans_complex |NN SV *sv
-sR |I32 |do_trans_simple_utf8 |NN SV *sv
-sR |I32 |do_trans_count_utf8 |NN SV *sv
-sR |I32 |do_trans_complex_utf8 |NN SV *sv
+sR |I32 |do_trans_simple |NN SV * const sv
+sR |I32 |do_trans_count |NN SV * const sv
+sR |I32 |do_trans_complex |NN SV * const sv
+sR |I32 |do_trans_simple_utf8 |NN SV * const sv
+sR |I32 |do_trans_count_utf8 |NN SV * const sv
+sR |I32 |do_trans_complex_utf8 |NN SV * const sv
#endif
#if defined(PERL_IN_GV_C) || defined(PERL_DECL_PROT)
s |void |require_errno |NN GV *gv
#endif
+: #if defined(PERL_IN_HV_C) || defined(PERL_IN_SV_C) || defined(PERL_DECL_PROT)
+paRxo |void* |get_arena |int svtype
+: #endif
+
#if defined(PERL_IN_HV_C) || defined(PERL_DECL_PROT)
s |void |hsplit |NN HV *hv
s |void |hfreeentries |NN HV *hv
sa |HE* |new_he
-sa |HEK* |save_hek_flags |NN const char *str|I32 len|U32 hash|int flags
-s |void |hv_magic_check |NN HV *hv|NN bool *needs_copy|NN bool *needs_store
+sanR |HEK* |save_hek_flags |NN const char *str|I32 len|U32 hash|int flags
+sn |void |hv_magic_check |NN HV *hv|NN bool *needs_copy|NN bool *needs_store
s |void |unshare_hek_or_pvn|NULLOK const HEK* hek|NULLOK const char* str|I32 len|U32 hash
sR |HEK* |share_hek_flags|NN const char* sv|I32 len|U32 hash|int flags
rs |void |hv_notallowed |int flags|NN const char *key|I32 klen|NN const char *msg
-s |struct xpvhv_aux*|hv_auxinit|NN HV *hv
+sn |struct xpvhv_aux*|hv_auxinit|NN HV *hv
sM |SV* |hv_delete_common|NULLOK HV* tb|NULLOK SV* keysv|NULLOK const char* key \
|STRLEN klen|int k_flags|I32 d_flags|U32 hash
sM |HE* |hv_fetch_common|NULLOK HV* tb|NULLOK SV* keysv|NULLOK const char* key \
|STRLEN klen|int flags|int action|NULLOK SV* val|U32 hash
+sM |void |clear_placeholders |NN HV* hb|U32 items
#endif
#if defined(PERL_IN_MG_C) || defined(PERL_DECL_PROT)
pR |OP* |ck_svconst |NN OP *o
pR |OP* |ck_trunc |NN OP *o
pR |OP* |ck_unpack |NN OP *o
-sR |bool |is_handle_constructor|NN const OP *o|I32 numargs
+sRn |bool |is_handle_constructor|NN const OP *o|I32 numargs
sR |I32 |is_list_assignment|NULLOK const OP *o
s |void |cop_free |NN COP *cop
s |OP* |modkids |NULLOK OP *o|I32 type
sR |OP* |new_logop |I32 type|I32 flags|NN OP **firstp|NN OP **otherp
s |void |simplify_sort |NN OP *o
s |const char* |gv_ename |NN GV *gv
-s |bool |scalar_mod_type|NN const OP *o|I32 type
+sRn |bool |scalar_mod_type|NN const OP *o|I32 type
s |OP * |my_kid |NULLOK OP *o|NULLOK OP *attrs|NN OP **imopsp
s |OP * |dup_attrlist |NN OP *o
s |void |apply_attrs |NN HV *stash|NN SV *target|NULLOK OP *attrs|bool for_my
sR |OP* |no_fh_allowed|NN OP *o
sR |OP* |too_few_arguments|NN OP *o|NN const char* name
sR |OP* |too_many_arguments|NN OP *o|NN const char* name
-s |bool |looks_like_bool|NN OP* o
+s |bool |looks_like_bool|NN const OP* o
s |OP* |newGIVWHENOP |NULLOK OP* cond|NN OP *block \
|I32 enter_opcode|I32 leave_opcode \
|PADOFFSET entertarg
#if defined(PERL_IN_PERL_C) || defined(PERL_DECL_PROT)
s |void |find_beginning
-s |void |forbid_setid |NN const char * s
+s |void |forbid_setid |const char flag|const int suidscript
s |void |incpush |NULLOK const char *dir|bool addsubdirs|bool addoldvers|bool usesep|bool canrelocate
s |void |init_interp
s |void |init_ids
s |void |init_predump_symbols
rs |void |my_exit_jump
s |void |nuke_stacks
-s |void |open_script |NN const char *scriptname|bool dosearch|NN SV *sv
+s |int |open_script |NN const char *scriptname|bool dosearch \
+ |NN SV *sv|NN int *suidscript
s |void |usage |NN const char *name
-s |void |validate_suid |NN const char *validarg|NN const char *scriptname
+s |void |validate_suid |NN const char *validarg \
+ |NN const char *scriptname|int fdscript \
+ |int suidscript
# if defined(IAMSUID)
s |int |fd_on_nosuid_fs|int fd
# endif
s |void* |parse_body |NULLOK char **env|XSINIT_t xsinit
rs |void |run_body |I32 oldscope
-s |void |call_body |NN const OP *myop|bool is_eval
-s |void* |call_list_body |NN CV *cv
s |SV * |incpush_if_exists|NN SV *dir
#endif
ns |bool |need_utf8 |NN const char *pat|NN const char *patend
ns |char |first_symbol |NN const char *pat|NN const char *patend
sR |char * |sv_exp_grow |NN SV *sv|STRLEN needed
+sR |char * |bytes_to_uni |NN const U8 *start|STRLEN len|NN char *dest
#endif
#if defined(PERL_IN_PP_CTL_C) || defined(PERL_DECL_PROT)
sR |OP* |doeval |int gimme|NULLOK OP** startop|NULLOK CV* outside|U32 seq
sR |PerlIO *|check_type_and_open|NN const char *name|NN const char *mode
sR |PerlIO *|doopen_pm |NN const char *name|NN const char *mode
-sR |bool |path_is_absolute|NN const char *name
+sRn |bool |path_is_absolute|NN const char *name
sR |I32 |run_user_filter|int idx|NN SV *buf_sv|int maxlen
sR |PMOP* |make_matcher |NN regexp* re
sR |bool |matcher_matches_sv|NN PMOP* matcher|NN SV* sv
# if !defined(HAS_MKDIR) || !defined(HAS_RMDIR)
sR |int |dooneliner |NN const char *cmd|NN const char *filename
# endif
+s |SV * |space_join_names_mortal|NN char *const *array
#endif
#if defined(PERL_IN_REGCOMP_C) || defined(PERL_DECL_PROT)
Es |regnode*|reganode |NN struct RExC_state_t *state|U8 op|U32 arg
Es |regnode*|regatom |NN struct RExC_state_t *state|NN I32 *flagp
Es |regnode*|regbranch |NN struct RExC_state_t *state|NN I32 *flagp|I32 first
-Es |void |reguni |NN const struct RExC_state_t *state|UV uv|NN char *s|NN STRLEN *lenp
+Es |STRLEN |reguni |NN const struct RExC_state_t *state|UV uv|NN char *s
Es |regnode*|regclass |NN struct RExC_state_t *state
-ERs |I32 |regcurly |NN const char *
+ERsn |I32 |regcurly |NN const char *
Es |regnode*|reg_node |NN struct RExC_state_t *state|U8 op
Es |regnode*|regpiece |NN struct RExC_state_t *state|NN I32 *flagp
Es |void |reginsert |NN struct RExC_state_t *state|U8 op|NN regnode *opnd
-Es |void |regoptail |NN struct RExC_state_t *state|NN regnode *p|NN regnode *val
-Es |void |regtail |NN struct RExC_state_t *state|NN regnode *p|NN regnode *val
-Es |char* |regwhite |NN char *p|NN const char *e
+Es |void |regtail |NN const struct RExC_state_t *state|NN regnode *p|NN const regnode *val
+EsRn |char* |regwhite |NN char *p|NN const char *e
Es |char* |nextchar |NN struct RExC_state_t *state
# ifdef DEBUGGING
-Es |regnode*|dumpuntil |NN regnode *start|NN regnode *node \
- |NULLOK regnode *last|NN SV* sv|I32 l
+Es |const regnode*|dumpuntil|NN const regexp *r|NN const regnode *start \
+ |NN const regnode *node \
+ |NULLOK const regnode *last|NN SV* sv|I32 l
Es |void |put_byte |NN SV* sv|int c
# endif
-Es |void |scan_commit |NN struct RExC_state_t* state|NN struct scan_data_t *data
-Es |void |cl_anything |NN struct RExC_state_t* state|NN struct regnode_charclass_class *cl
-Es |int |cl_is_anything |NN const struct regnode_charclass_class *cl
-Es |void |cl_init |NN struct RExC_state_t* state|NN struct regnode_charclass_class *cl
-Es |void |cl_init_zero |NN struct RExC_state_t* state|NN struct regnode_charclass_class *cl
-Es |void |cl_and |NN struct regnode_charclass_class *cl \
+Es |void |scan_commit |NN const struct RExC_state_t* state|NN struct scan_data_t *data
+Esn |void |cl_anything |NN const struct RExC_state_t* state|NN struct regnode_charclass_class *cl
+EsRn |int |cl_is_anything |NN const struct regnode_charclass_class *cl
+Esn |void |cl_init |NN const struct RExC_state_t* state|NN struct regnode_charclass_class *cl
+Esn |void |cl_init_zero |NN const struct RExC_state_t* state|NN struct regnode_charclass_class *cl
+Esn |void |cl_and |NN struct regnode_charclass_class *cl \
|NN const struct regnode_charclass_class *and_with
-Es |void |cl_or |NN struct RExC_state_t* state|NN struct regnode_charclass_class *cl \
+Esn |void |cl_or |NN const struct RExC_state_t* state|NN struct regnode_charclass_class *cl \
|NN const struct regnode_charclass_class *or_with
Es |I32 |study_chunk |NN struct RExC_state_t* state|NN regnode **scanp \
|NN I32 *deltap|NN regnode *last|NULLOK struct scan_data_t *data \
|U32 flags|U32 depth
-Es |I32 |add_data |NN struct RExC_state_t* state|I32 n|NN const char *s
+EsRn |I32 |add_data |NN struct RExC_state_t* state|I32 n|NN const char *s
rs |void |re_croak2 |NN const char* pat1|NN const char* pat2|...
Es |I32 |regpposixcc |NN struct RExC_state_t* state|I32 value
Es |void |checkposixcc |NN struct RExC_state_t* state
#endif
#if defined(PERL_IN_REGEXEC_C) || defined(PERL_DECL_PROT)
-ERs |I32 |regmatch |NN regnode *prog
-ERs |I32 |regrepeat |NN const regnode *p|I32 max
-ERs |I32 |regrepeat_hard |NN regnode *p|I32 max|NN I32 *lp
-ERs |I32 |regtry |NN regexp *prog|NN char *startpos
-ERs |bool |reginclass |NN const regnode *n|NN const U8 *p|NULLOK STRLEN *lenp\
+ERs |I32 |regmatch |NN const regmatch_info *reginfo|NN regnode *prog
+ERs |I32 |regrepeat |NN const regexp *prog|NN const regnode *p|I32 max
+ERs |I32 |regtry |NN const regmatch_info *reginfo|NN char *startpos
+ERs |bool |reginclass |NULLOK const regexp *prog|NN const regnode *n|NN const U8 *p|NULLOK STRLEN *lenp\
|bool do_utf8sv_is_utf8
Es |CHECKPOINT|regcppush |I32 parenfloor
-Es |char*|regcppop
-Es |void |cache_re |NN regexp *prog
-ERs |U8* |reghop |NN U8 *pos|I32 off
-ERs |U8* |reghop3 |NN U8 *pos|I32 off|NN U8 *lim
-ERs |U8* |reghopmaybe |NN U8 *pos|I32 off
-ERs |U8* |reghopmaybe3 |NN U8 *pos|I32 off|NN U8 *lim
-ERs |char* |find_byclass |NN regexp * prog|NN regnode *c|NN char *s|NN const char *strend|I32 norun
+Es |char* |regcppop |NN const regexp *rex
+ERsn |U8* |reghop3 |NN U8 *pos|I32 off|NN const U8 *lim
+ERsn |U8* |reghopmaybe3 |NN U8 *pos|I32 off|NN const U8 *lim
+ERs |char* |find_byclass |NN regexp * prog|NN const regnode *c|NN char *s|NN const char *strend|NULLOK const regmatch_info *reginfo
Es |void |to_utf8_substr |NN regexp * prog
Es |void |to_byte_substr |NN regexp * prog
#endif
s |CV* |deb_curcv |I32 ix
s |void |debprof |NN const OP *o
s |void |sequence |NULLOK const OP *o
+s |void |sequence_tail |NULLOK const OP *o
s |UV |sequence_num |NULLOK const OP *o
+s |SV* |pm_description |NN const PMOP *pm
#endif
#if defined(PERL_IN_SCOPE_C) || defined(PERL_DECL_PROT)
# endif
sR |I32 |expect_number |NN char** pattern
#
-s |bool |utf8_mg_pos |NN SV *sv|NN MAGIC **mgp|NN STRLEN **cachep \
- |I32 i|NN I32 *offsetp|I32 uoff \
- |NN const U8 **sp|NN const U8 *start \
- |NN const U8 *send
-s |bool |utf8_mg_pos_init |NN SV *sv|NN MAGIC **mgp \
- |NN STRLEN **cachep|I32 i|I32 offsetp \
- |NN const U8 *s|NN const U8 *start
+sn |STRLEN |sv_pos_u2b_forwards|NN const U8 *const start \
+ |NN const U8 *const send|STRLEN uoffset
+sn |STRLEN |sv_pos_u2b_midway|NN const U8 *const start \
+ |NN const U8 *send|STRLEN uoffset|STRLEN uend
+s |STRLEN |sv_pos_u2b_cached|NN SV *sv|NN MAGIC **mgp \
+ |NN const U8 *const start|NN const U8 *const send \
+ |STRLEN uoffset|STRLEN uoffset0|STRLEN boffset0
+s |void |utf8_mg_pos_cache_update|NN SV *sv|NN MAGIC **mgp \
+ |STRLEN byte|STRLEN utf8|STRLEN blen
+s |STRLEN |sv_pos_b2u_forwards|NN const U8 *s|NN const U8 *const target
+s |STRLEN |sv_pos_b2u_midway|NN const U8 *s|NN const U8 *const target \
+ |NN const U8 *end|STRLEN endu
s |char * |stringify_regexp|NN SV *sv|NN MAGIC *mg|NULLOK STRLEN *lp
sn |char * |F0convert |NV nv|NN char *endbuf|NN STRLEN *len
-#if defined(PERL_OLD_COPY_ON_WRITE)
+# if defined(PERL_OLD_COPY_ON_WRITE)
sM |void |sv_release_COW |NN SV *sv|NN const char *pvx|STRLEN len|NN SV *after
-#endif
+# endif
+s |SV * |more_sv
+s |void * |more_bodies |svtype sv_type
+s |bool |sv_2iuv_common |NN SV *sv
+s |void |glob_assign_glob|NN SV *dstr|NN SV *sstr|const int dtype
+s |void |glob_assign_ref|NN SV *dstr|NN SV *sstr
+# if defined(USE_ITHREADS)
+sRn |PTR_TBL_ENT_t *|ptr_table_find|NN PTR_TBL_t *tbl|NN const void *sv
+# endif
+s |SV * |find_hash_subscript|NULLOK HV *hv|NN SV *val
+s |I32 |find_array_subscript|NULLOK AV *av|NN SV *val
+s |SV * |find_uninit_var|NULLOK OP *obase|NULLOK SV *uninit_sv|bool match
#endif
#if defined(PERL_IN_TOKE_C) || defined(PERL_DECL_PROT)
|int allow_package|NN STRLEN *slp
sR |char* |skipspace |NN char *s
sR |char* |swallow_bom |NN U8 *s
-s |void |checkcomma |NN char *s|NN const char *name|NN const char *what
-s |bool |feature_is_enabled|NN char* name|STRLEN namelen
+s |void |checkcomma |NN const char *s|NN const char *name \
+ |NN const char *what
+s |bool |feature_is_enabled|NN const char* name|STRLEN namelen
s |void |force_ident |NN const char *s|int kind
s |void |incline |NN char *s
s |int |intuit_method |NN char *s|NULLOK GV *gv|NULLOK CV *cv
# endif
# if defined(DEBUGGING)
s |int |tokereport |I32 rv
+s |void |printbuf |NN const char* fmt|NN const char* s
# endif
#endif
#if defined(PERL_IN_UNIVERSAL_C) || defined(PERL_DECL_PROT)
-s |SV*|isa_lookup |NULLOK HV *stash|NN const char *name|NULLOK HV *name_stash|int len|int level
+s |bool|isa_lookup |NULLOK HV *stash|NN const char *name|NULLOK HV *name_stash|int len|int level
#endif
#if defined(PERL_IN_LOCALE_C) || defined(PERL_DECL_PROT)
#endif
#if defined(PERL_IN_UTIL_C) || defined(PERL_DECL_PROT)
-s |COP* |closest_cop |NN COP *cop|NULLOK const OP *o
+s |const COP*|closest_cop |NN const COP *cop|NULLOK const OP *o
s |SV* |mess_alloc
s |const char *|vdie_croak_common|NULLOK const char *pat|NULLOK va_list *args \
|NULLOK STRLEN *msglen|NULLOK I32* utf8
#endif
#if defined(PERL_IN_UTF8_C) || defined(PERL_DECL_PROT)
-s |STRLEN |is_utf8_char_slow|NN const U8 *s|const STRLEN len
+sRn |STRLEN |is_utf8_char_slow|NN const U8 *s|const STRLEN len
sR |bool |is_utf8_common |NN const U8 *const p|NN SV **swash|NN const char * const swashname
sR |SV* |swash_get |NN SV* swash|UV start|UV span
#endif
pda |PADLIST*|pad_new |int flags
pd |void |pad_undef |NN CV* cv
pd |PADOFFSET|pad_add_name |NN const char *name\
- |NULLOK HV* typestash|NULLOK HV* ourstash|bool clone
+ |NULLOK HV* typestash|NULLOK HV* ourstash|bool clone|bool state
pd |PADOFFSET|pad_add_anon |NN SV* sv|OPCODE op_type
pd |void |pad_check_dup |NN const char* name|bool is_our|NN const HV* ourstash
#ifdef DEBUGGING
ApoR |HE** |hv_eiter_p |NN HV* hv
Apo |void |hv_riter_set |NN HV* hv|I32 riter
Apo |void |hv_eiter_set |NN HV* hv|NULLOK HE* eiter
-Ap |void |hv_name_set |NN HV* hv|NULLOK const char *name|I32 len|int flags
+Ap |void |hv_name_set |NN HV* hv|NULLOK const char *name|U32 len|U32 flags
poM |AV** |hv_backreferences_p |NN HV* hv
#if defined(PERL_IN_DUMP_C) || defined(PERL_IN_HV_C) || defined(PERL_IN_SV_C) || defined(PERL_DECL_PROT)
poM |void |hv_kill_backrefs |NN HV* hv
#endif
Apo |bool |ckwarn |U32 w
Apo |bool |ckwarn_d |U32 w
+XEopMa |STRLEN *|new_warnings_bitfield|NULLOK STRLEN *buffer \
+ |NN const char *const bits|STRLEN size
p |void |offer_nice_chunk |NN void *chunk|U32 chunk_size
Apnod |int |my_sprintf |NN char *buffer|NN const char *pat|...
#endif
+Apnod |int |my_snprintf |NN char *buffer|const Size_t len|NN const char *format|...
+Apnod |int |my_vsnprintf |NN char *buffer|const Size_t len|NN const char *format|va_list ap
+
px |void |my_clearenv
#ifdef PERL_IMPLICIT_CONTEXT
Apo |void* |my_cxt_init |NN int *index|size_t size
#endif
+#ifdef PERL_MAD
+Mnp |void |pad_peg |NN const char* s
+#if defined(PERL_IN_DUMP_C) || defined(PERL_DECL_PROT)
+sf |void |xmldump_attr |I32 level|NN PerlIO *file|NN const char* pat \
+ |...
+#endif
+Mfp |void |xmldump_indent |I32 level|NN PerlIO *file|NN const char* pat \
+ |...
+Mp |void |xmldump_vindent|I32 level|NN PerlIO *file|NN const char* pat \
+ |NULLOK va_list *args
+Mp |void |xmldump_all
+Mp |void |xmldump_packsubs |NN const HV* stash
+Mp |void |xmldump_sub |NN const GV* gv
+Mp |void |xmldump_form |NN const GV* gv
+Mp |void |xmldump_eval
+Mp |char* |sv_catxmlsv |NN SV *dsv|NN SV *ssv
+Mp |char* |sv_catxmlpvn |NN SV *dsv|NN char *pv|STRLEN len|int utf8
+Mp |char* |sv_xmlpeek |NN SV* sv
+Mp |void |do_pmop_xmldump|I32 level|NN PerlIO *file \
+ |NULLOK const PMOP *pm
+Mp |void |pmop_xmldump |NULLOK const PMOP* pm
+Mp |void |do_op_xmldump |I32 level|NN PerlIO *file|NULLOK const OP *o
+Mp |void |op_xmldump |NN const OP* arg
+
+Mp |TOKEN* |newTOKEN |I32 optype|YYSTYPE lval \
+ |NULLOK MADPROP* madprop
+Mp |void |token_free |NN TOKEN* arg
+Mp |void |token_getmad |NN TOKEN* arg|NULLOK OP* o|char slot
+Mp |void |op_getmad_weak |NULLOK OP* from|NULLOK OP* o|char slot
+Mp |void |op_getmad |NULLOK OP* from|NULLOK OP* o|char slot
+Mp |void |prepend_madprops|NULLOK MADPROP* mp|NULLOK OP* o|char slot
+Mp |void |append_madprops|NULLOK MADPROP* tm|NULLOK OP* o|char slot
+Mp |void |addmad |NULLOK MADPROP* tm|NULLOK MADPROP** root \
+ |char slot
+Mp |MADPROP*|newMADsv |char key|NN SV* sv
+Mp |MADPROP*|newMADPROP |char key|char type|NULLOK void* val|I32 vlen
+Mp |void |mad_free |NULLOK MADPROP* mp
+
+# if defined(PERL_IN_TOKE_C) || defined(PERL_DECL_PROT)
+s |char* |skipspace0 |NN char *s
+s |char* |skipspace1 |NN char *s
+s |char* |skipspace2 |NN char *s|NULLOK SV **sv
+s |void |start_force |int where
+s |void |curmad |char slot|NULLOK SV *sv
+# endif
+Mp |int |madlex
+Mp |int |madparse
+#endif
END_EXTERN_C
/*
################################################################################
##
-## $Revision: 3 $
+## $Revision: 4 $
## $Author: mhx $
-## $Date: 2006/01/14 18:07:58 +0100 $
+## $Date: 2006/05/19 23:58:03 +0200 $
##
################################################################################
##
OUTPUT:
RETVAL
-=tests plan => 3
+void
+TestSvSTASH_set(sv, name)
+ SV *sv
+ char *name
+ CODE:
+ sv = SvRV(sv);
+ SvREFCNT_dec(SvSTASH(sv));
+ SvSTASH_set(sv, (HV*) SvREFCNT_inc(gv_stashpv(name, 0)));
+
+=tests plan => 5
my $foo = 5;
ok(&Devel::PPPort::TestSvUV_set($foo, 12345), 42);
ok(&Devel::PPPort::TestSvPVX_const("mhx"), 43);
ok(&Devel::PPPort::TestSvPVX_mutable("mhx"), 44);
+
+my $bar = [];
+
+bless $bar, 'foo';
+ok($bar->x(), 'foobar');
+
+Devel::PPPort::TestSvSTASH_set($bar, 'bar');
+ok($bar->x(), 'hacker');
+
+package foo;
+
+sub x { 'foobar' }
+
+package bar;
+
+sub x { 'hacker' }
################################################################################
##
-## $Revision: 9 $
+## $Revision: 10 $
## $Author: mhx $
-## $Date: 2006/01/14 18:08:03 +0100 $
+## $Date: 2006/05/18 23:10:24 +0200 $
##
################################################################################
##
} STMT_END
#endif
+__UNDEFINED__ SvVSTRING_mg(sv) (SvMAGICAL(sv) ? mg_find(sv, PERL_MAGIC_vstring) : NULL)
+
=xsubs
void
Copy(str, copy, len+1, char);
sv_usepvn_mg(sv, copy, len);
-=tests plan => 10
+int
+SvVSTRING_mg(sv)
+ SV *sv;
+ CODE:
+ RETVAL = SvVSTRING_mg(sv) != NULL;
+ OUTPUT:
+ RETVAL
+
+=tests plan => 13
use Tie::Hash;
my %h;
&Devel::PPPort::sv_usepvn_mg($h{sv}, 'Perl');
ok($h{sv}, 'Perl');
+my $ver = eval qq[qv("v1.2.0")];
+ok($[ < 5.009 || $@ eq '');
+ok($@ || Devel::PPPort::SvVSTRING_mg($ver));
+ok(!Devel::PPPort::SvVSTRING_mg(4711));
+
################################################################################
##
-## $Revision: 30 $
+## $Revision: 35 $
## $Author: mhx $
-## $Date: 2006/01/14 18:08:03 +0100 $
+## $Date: 2006/05/19 23:57:26 +0200 $
##
################################################################################
##
__UNDEFINED__
PERL_UNUSED_DECL
+PERL_UNUSED_ARG
+PERL_UNUSED_VAR
+PERL_UNUSED_CONTEXT
PERL_GCC_BRACE_GROUPS_FORBIDDEN
NVTYPE
INT2PTR
# endif
#endif
-__UNDEFINED__ NOOP (void)0
-__UNDEFINED__ dNOOP extern int Perl___notused PERL_UNUSED_DECL
+#ifndef PERL_UNUSED_ARG
+# if defined(lint) && defined(S_SPLINT_S) /* www.splint.org */
+# include <note.h>
+# define PERL_UNUSED_ARG(x) NOTE(ARGUNUSED(x))
+# else
+# define PERL_UNUSED_ARG(x) ((void)x)
+# endif
+#endif
+
+#ifndef PERL_UNUSED_VAR
+# define PERL_UNUSED_VAR(x) ((void)x)
+#endif
+
+#ifndef PERL_UNUSED_CONTEXT
+# ifdef USE_ITHREADS
+# define PERL_UNUSED_CONTEXT PERL_UNUSED_ARG(my_perl)
+# else
+# define PERL_UNUSED_CONTEXT
+# endif
+#endif
+
+__UNDEFINED__ NOOP /*EMPTY*/(void)0
+__UNDEFINED__ dNOOP extern int /*@unused@*/ Perl___notused PERL_UNUSED_DECL
#ifndef NVTYPE
# if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE)
} STMT_END
#endif
+__UNDEFINED__ PERL_ABS(x) ((x) < 0 ? -(x) : (x))
+
+__UNDEFINED__ dVAR dNOOP
+
+__UNDEFINED__ SVf "_"
+
=xsmisc
XS(XS_Devel__PPPort_dXSTARG); /* prototype */
XSRETURN(1);
}
-=tests plan => 38
+int
+PERL_ABS(a)
+ int a
+
+void
+SVf(x)
+ SV *x
+ PPCODE:
+#if { VERSION >= 5.004 }
+ x = newSVpvf("[%"SVf"]", x);
+#endif
+ XPUSHs(x);
+ XSRETURN(1);
+
+=tests plan => 42
use vars qw($my_sv @my_av %my_hv);
ok(join(':', Devel::PPPort::xsreturn(0)), 'test1');
ok(join(':', Devel::PPPort::xsreturn(1)), 'test1:test2');
+
+ok(Devel::PPPort::PERL_ABS(42), 42);
+ok(Devel::PPPort::PERL_ABS(-13), 13);
+
+ok(Devel::PPPort::SVf(42), $] >= 5.004 ? '[42]' : '42');
+ok(Devel::PPPort::SVf('abc'), $] >= 5.004 ? '[abc]' : 'abc');
+
--- /dev/null
+################################################################################
+##
+## $Revision: 2 $
+## $Author: mhx $
+## $Date: 2006/05/19 23:00:18 +0200 $
+##
+################################################################################
+##
+## Version 3.x, Copyright (C) 2004-2006, 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
+
+/* concatenating with "" ensures that only literal strings are accepted as argument
+ * note that STR_WITH_LEN() can't be used as argument to macros or functions that
+ * under some configurations might be macros
+ */
+
+__UNDEFINED__ STR_WITH_LEN(s) (s ""), (sizeof(s)-1)
+
+__UNDEFINED__ newSVpvs(str) newSVpvn(str "", sizeof(str) - 1)
+__UNDEFINED__ sv_catpvs(sv, str) sv_catpvn(sv, str "", sizeof(str) - 1)
+__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,hash) hv_store(hv, key "", sizeof(key) - 1, val, hash)
+
+=xsubs
+
+void
+newSVpvs()
+ PPCODE:
+ XPUSHs(newSVpvs("newSVpvs"));
+ XSRETURN(1);
+
+void
+sv_catpvs(sv)
+ SV *sv
+ PPCODE:
+ sv_catpvs(sv, "sv_catpvs");
+
+void
+sv_setpvs(sv)
+ SV *sv
+ PPCODE:
+ sv_setpvs(sv, "sv_setpvs");
+
+void
+hv_fetchs(hv)
+ SV *hv
+ PREINIT:
+ SV **s;
+ PPCODE:
+ s = hv_fetchs((HV *) SvRV(hv), "hv_fetchs", 0);
+ XPUSHs(sv_mortalcopy(*s));
+ XSRETURN(1);
+
+void
+hv_stores(hv, sv)
+ SV *hv
+ SV *sv
+ PPCODE:
+ hv_stores((HV *) SvRV(hv), "hv_stores", SvREFCNT_inc(sv), 0);
+
+=tests plan => 7
+
+my $x = 'foo';
+
+ok(Devel::PPPort::newSVpvs(), "newSVpvs");
+
+Devel::PPPort::sv_catpvs($x);
+ok($x, "foosv_catpvs");
+
+Devel::PPPort::sv_setpvs($x);
+ok($x, "sv_setpvs");
+
+my %h = ('hv_fetchs' => 42);
+Devel::PPPort::hv_stores(\%h, 4711);
+ok(scalar keys %h, 2);
+ok(exists $h{'hv_stores'});
+ok($h{'hv_stores'}, 4711);
+ok(Devel::PPPort::hv_fetchs(\%h), 42);
--- /dev/null
+################################################################################
+##
+## $Revision: 1 $
+## $Author: mhx $
+## $Date: 2006/05/18 23:12:23 +0200 $
+##
+################################################################################
+##
+## Version 3.x, Copyright (C) 2004-2006, 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
+
+my_snprintf
+
+=implementation
+
+#if !defined(my_snprintf)
+#if { NEED my_snprintf }
+
+int
+my_snprintf(char *buffer, const Size_t len, const char *format, ...)
+{
+ dTHX;
+ int retval;
+ va_list ap;
+ va_start(ap, format);
+#ifdef HAS_VSNPRINTF
+ retval = vsnprintf(buffer, len, format, ap);
+#else
+ retval = vsprintf(buffer, format, ap);
+#endif
+ va_end(ap);
+ if (retval >= (int)len)
+ Perl_croak(aTHX_ "panic: my_snprintf buffer overflow");
+ return retval;
+}
+
+#endif
+#endif
+
+=xsinit
+
+#define NEED_my_snprintf
+
+=xsubs
+
+void
+my_snprintf()
+ PREINIT:
+ char buf[128];
+ int len;
+ PPCODE:
+ len = my_snprintf(buf, sizeof buf, "foo%s%d", "bar", 42);
+ XPUSHs(newSViv(len));
+ XPUSHs(newSVpv(buf, 0));
+ XSRETURN(2);
+
+=tests plan => 2
+
+my($l, $s) = Devel::PPPort::my_snprintf();
+ok($l, 8);
+ok($s, "foobar42");
+
--- /dev/null
+################################################################################
+##
+## $Revision: 2 $
+## $Author: mhx $
+## $Date: 2006/05/20 10:57:02 +0200 $
+##
+################################################################################
+##
+## Version 3.x, Copyright (C) 2004-2006, 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__
+ckWARN
+warner
+Perl_warner
+Perl_warner_nocontext
+
+=implementation
+
+__UNDEFINED__ WARN_ALL 0
+__UNDEFINED__ WARN_CLOSURE 1
+__UNDEFINED__ WARN_DEPRECATED 2
+__UNDEFINED__ WARN_EXITING 3
+__UNDEFINED__ WARN_GLOB 4
+__UNDEFINED__ WARN_IO 5
+__UNDEFINED__ WARN_CLOSED 6
+__UNDEFINED__ WARN_EXEC 7
+__UNDEFINED__ WARN_LAYER 8
+__UNDEFINED__ WARN_NEWLINE 9
+__UNDEFINED__ WARN_PIPE 10
+__UNDEFINED__ WARN_UNOPENED 11
+__UNDEFINED__ WARN_MISC 12
+__UNDEFINED__ WARN_NUMERIC 13
+__UNDEFINED__ WARN_ONCE 14
+__UNDEFINED__ WARN_OVERFLOW 15
+__UNDEFINED__ WARN_PACK 16
+__UNDEFINED__ WARN_PORTABLE 17
+__UNDEFINED__ WARN_RECURSION 18
+__UNDEFINED__ WARN_REDEFINE 19
+__UNDEFINED__ WARN_REGEXP 20
+__UNDEFINED__ WARN_SEVERE 21
+__UNDEFINED__ WARN_DEBUGGING 22
+__UNDEFINED__ WARN_INPLACE 23
+__UNDEFINED__ WARN_INTERNAL 24
+__UNDEFINED__ WARN_MALLOC 25
+__UNDEFINED__ WARN_SIGNAL 26
+__UNDEFINED__ WARN_SUBSTR 27
+__UNDEFINED__ WARN_SYNTAX 28
+__UNDEFINED__ WARN_AMBIGUOUS 29
+__UNDEFINED__ WARN_BAREWORD 30
+__UNDEFINED__ WARN_DIGIT 31
+__UNDEFINED__ WARN_PARENTHESIS 32
+__UNDEFINED__ WARN_PRECEDENCE 33
+__UNDEFINED__ WARN_PRINTF 34
+__UNDEFINED__ WARN_PROTOTYPE 35
+__UNDEFINED__ WARN_QW 36
+__UNDEFINED__ WARN_RESERVED 37
+__UNDEFINED__ WARN_SEMICOLON 38
+__UNDEFINED__ WARN_TAINT 39
+__UNDEFINED__ WARN_THREADS 40
+__UNDEFINED__ WARN_UNINITIALIZED 41
+__UNDEFINED__ WARN_UNPACK 42
+__UNDEFINED__ WARN_UNTIE 43
+__UNDEFINED__ WARN_UTF8 44
+__UNDEFINED__ WARN_VOID 45
+__UNDEFINED__ WARN_ASSERTIONS 46
+
+__UNDEFINED__ packWARN(a) (a)
+
+#ifndef ckWARN
+# ifdef G_WARN_ON
+# define ckWARN(a) (PL_dowarn & G_WARN_ON)
+# else
+# define ckWARN(a) PL_dowarn
+# endif
+#endif
+
+/* warner depends on vnewSVpvf */
+#if { VERSION >= 5.004 } && !defined(warner)
+#if { NEED warner }
+
+void
+warner(U32 err, const char *pat, ...)
+{
+ SV *sv;
+ va_list args;
+
+ PERL_UNUSED_ARG(err);
+
+ va_start(args, pat);
+ sv = vnewSVpvf(pat, &args);
+ va_end(args);
+ sv_2mortal(sv);
+ warn("%s", SvPV_nolen(sv));
+}
+
+#define warner Perl_warner
+
+/* Perl_warner_nocontext depends on warner */
+#define Perl_warner_nocontext Perl_warner
+
+#endif
+#endif
+
+=xsinit
+
+#define NEED_warner
+
+=xsubs
+
+void
+warner()
+ CODE:
+#if { VERSION >= 5.004 }
+ warner(packWARN(WARN_MISC), "warner %s:%d", "bar", 42);
+#endif
+
+void
+Perl_warner()
+ CODE:
+#if { VERSION >= 5.004 }
+ Perl_warner(aTHX_ packWARN(WARN_MISC), "Perl_warner %s:%d", "bar", 42);
+#endif
+
+void
+Perl_warner_nocontext()
+ CODE:
+#if { VERSION >= 5.004 }
+ Perl_warner_nocontext(packWARN(WARN_MISC), "Perl_warner_nocontext %s:%d", "bar", 42);
+#endif
+
+void
+ckWARN()
+ CODE:
+#if { VERSION >= 5.004 }
+ if (ckWARN(WARN_MISC))
+ Perl_warner_nocontext(packWARN(WARN_MISC), "ckWARN %s:%d", "bar", 42);
+#endif
+
+=tests plan => 5
+
+$^W = 0;
+
+my $warning;
+
+$SIG{'__WARN__'} = sub { $warning = $_[0] };
+
+$warning = '';
+Devel::PPPort::warner();
+ok($] >= 5.004 ? $warning =~ /^warner bar:42/ : $warning eq '');
+
+$warning = '';
+Devel::PPPort::Perl_warner();
+ok($] >= 5.004 ? $warning =~ /^Perl_warner bar:42/ : $warning eq '');
+
+$warning = '';
+Devel::PPPort::Perl_warner_nocontext();
+ok($] >= 5.004 ? $warning =~ /^Perl_warner_nocontext bar:42/ : $warning eq '');
+
+$warning = '';
+Devel::PPPort::ckWARN();
+ok($warning, '');
+
+$^W = 1;
+
+$warning = '';
+Devel::PPPort::ckWARN();
+ok($] >= 5.004 ? $warning =~ /^ckWARN bar:42/ : $warning eq '');
+
sv_vsetpvfn # U
unsharepvn # U
vnewSVpvf # E
+warner # U
mg_size # U
newHVhv # E
new_stackinfo # E
-regdump # U
+regdump # E
regexec_flags # U
regnext # E (Perl_regnext)
runops_debug # U
runops_standard # U
save_hints # U
save_iv # U (save_iv)
-save_threadsv # E
screaminstr # E (Perl_screaminstr)
sv_iv # U
sv_nv # U
my_fflush_all # U
newANONATTRSUB # E
newATTRSUB # E
-newMYSUB # U
newPADOP # E
newXS # E (Perl_newXS)
newXSproto # E
vmess # E
vwarn # U
vwarner # U
-warner # U
5.006001
+SvGAMAGIC # E
apply_attrs_string # U
bytes_to_utf8 # E
gv_efullname4 # U
pack_cat # E
perl_destruct # E (perl_destruct)
pv_uni_display # E
-regclass_swash # E (Perl_regclass_swash)
save_shared_pvref # E
savesharedpv # E
sortsv # E
sv_magicext # E
sv_nolocking # E
sv_nosharing # E
-sv_nounlocking # E
sv_recode_to_utf8 # E
sv_uni_display # E
to_uni_fold # E
5.009003
-MULTICALL # E
-POP_MULTICALL # E
-PUSH_MULTICALL # E
-SvSTASH_set # E
av_arylen_p # E
ckwarn # U
ckwarn_d # U
newWHILEOP # E (Perl_newWHILEOP)
ref # E (Perl_ref)
sortsv_flags # U
-stashpv_hvname_match # U
vverify # U
--- /dev/null
+5.009004
+MULTICALL # E
+POP_MULTICALL # E
+PUSH_MULTICALL # E
+PoisonNew # E
+PoisonWith # E
+SvREFCNT_inc_NN # E
+SvREFCNT_inc_simple # E
+SvREFCNT_inc_simple_NN # E
+SvREFCNT_inc_simple_void # E
+SvREFCNT_inc_void # E
+SvREFCNT_inc_void_NN # E
+gv_name_set # U
+my_vsnprintf # U
+newXS_flags # E
+pad_sv # U
+regclass_swash # E (Perl_regclass_swash)
+stashpv_hvname_match # U
+sv_usepvn_flags # U
use List::Util qw(max);
use Config;
-my $VERSION = do { my @r = '$Snapshot: /Devel-PPPort/3.08 $' =~ /(\d+\.\d+(?:_\d+)?)/; @r ? $r[0] : '9.99' };
+my $VERSION = do { my @r = '$Snapshot: /Devel-PPPort/3.08_01 $' =~ /(\d+\.\d+(?:_\d+)?)/; @r ? $r[0] : '9.99' };
$| = 1;
my $verbose = 0;
eval "use Test";
if ($@) {
require 'testutil.pl';
- print "1..3\n";
+ print "1..5\n";
}
else {
- plan(tests => 3);
+ plan(tests => 5);
}
}
ok(&Devel::PPPort::TestSvPVX_const("mhx"), 43);
ok(&Devel::PPPort::TestSvPVX_mutable("mhx"), 44);
+my $bar = [];
+
+bless $bar, 'foo';
+ok($bar->x(), 'foobar');
+
+Devel::PPPort::TestSvSTASH_set($bar, 'bar');
+ok($bar->x(), 'hacker');
+
+package foo;
+
+sub x { 'foobar' }
+
+package bar;
+
+sub x { 'hacker' }
+
eval "use Test";
if ($@) {
require 'testutil.pl';
- print "1..10\n";
+ print "1..13\n";
}
else {
- plan(tests => 10);
+ plan(tests => 13);
}
}
&Devel::PPPort::sv_usepvn_mg($h{sv}, 'Perl');
ok($h{sv}, 'Perl');
+my $ver = eval qq[qv("v1.2.0")];
+ok($[ < 5.009 || $@ eq '');
+ok($@ || Devel::PPPort::SvVSTRING_mg($ver));
+ok(!Devel::PPPort::SvVSTRING_mg(4711));
+
eval "use Test";
if ($@) {
require 'testutil.pl';
- print "1..38\n";
+ print "1..42\n";
}
else {
- plan(tests => 38);
+ plan(tests => 42);
}
}
ok(join(':', Devel::PPPort::xsreturn(0)), 'test1');
ok(join(':', Devel::PPPort::xsreturn(1)), 'test1:test2');
+ok(Devel::PPPort::PERL_ABS(42), 42);
+ok(Devel::PPPort::PERL_ABS(-13), 13);
+
+ok(Devel::PPPort::SVf(42), $] >= 5.004 ? '[42]' : '42');
+ok(Devel::PPPort::SVf('abc'), $] >= 5.004 ? '[abc]' : 'abc');
+
--- /dev/null
+################################################################################
+#
+# !!!!! Do NOT edit this file directly! !!!!!
+#
+# Edit mktests.PL and/or parts/inc/pvs 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 $x = 'foo';
+
+ok(Devel::PPPort::newSVpvs(), "newSVpvs");
+
+Devel::PPPort::sv_catpvs($x);
+ok($x, "foosv_catpvs");
+
+Devel::PPPort::sv_setpvs($x);
+ok($x, "sv_setpvs");
+
+my %h = ('hv_fetchs' => 42);
+Devel::PPPort::hv_stores(\%h, 4711);
+ok(scalar keys %h, 2);
+ok(exists $h{'hv_stores'});
+ok($h{'hv_stores'}, 4711);
+ok(Devel::PPPort::hv_fetchs(\%h), 42);
+
--- /dev/null
+################################################################################
+#
+# !!!!! Do NOT edit this file directly! !!!!!
+#
+# Edit mktests.PL and/or parts/inc/snprintf 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..2\n";
+ }
+ else {
+ plan(tests => 2);
+ }
+}
+
+use Devel::PPPort;
+use strict;
+$^W = 1;
+
+my($l, $s) = Devel::PPPort::my_snprintf();
+ok($l, 8);
+ok($s, "foobar42");
+
--- /dev/null
+################################################################################
+#
+# !!!!! Do NOT edit this file directly! !!!!!
+#
+# Edit mktests.PL and/or parts/inc/warn 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..5\n";
+ }
+ else {
+ plan(tests => 5);
+ }
+}
+
+use Devel::PPPort;
+use strict;
+$^W = 1;
+
+$^W = 0;
+
+my $warning;
+
+$SIG{'__WARN__'} = sub { $warning = $_[0] };
+
+$warning = '';
+Devel::PPPort::warner();
+ok($] >= 5.004 ? $warning =~ /^warner bar:42/ : $warning eq '');
+
+$warning = '';
+Devel::PPPort::Perl_warner();
+ok($] >= 5.004 ? $warning =~ /^Perl_warner bar:42/ : $warning eq '');
+
+$warning = '';
+Devel::PPPort::Perl_warner_nocontext();
+ok($] >= 5.004 ? $warning =~ /^Perl_warner_nocontext bar:42/ : $warning eq '');
+
+$warning = '';
+Devel::PPPort::ckWARN();
+ok($warning, '');
+
+$^W = 1;
+
+$warning = '';
+Devel::PPPort::ckWARN();
+ok($] >= 5.004 ? $warning =~ /^ckWARN bar:42/ : $warning eq '');
+