summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGurusamy Sarathy <gsar@cpan.org>2000-01-28 03:43:52 +0000
committerGurusamy Sarathy <gsar@cpan.org>2000-01-28 03:43:52 +0000
commit954c1994944eafa74aaac1bab94e820b6e447da9 (patch)
treeafa8c853a6e0f521ecc16ce51a98035eb1b6b6f7
parent030866aa8d0911636ef2210b710f544fd2c85c8e (diff)
downloadperl-954c1994944eafa74aaac1bab94e820b6e447da9.tar.gz
autogenerate API listing from comments in the source (from Benjamin
Stuhl <sho_pi@hotmail.com>); fix the markup format to be more flexible for better readability; add missing docs in sv.c; regenerate perltoc p4raw-id: //depot/perl@4915
-rw-r--r--MANIFEST2
-rw-r--r--XSUB.h127
-rw-r--r--av.c119
-rw-r--r--av.h10
-rw-r--r--cop.h30
-rw-r--r--cv.h10
-rwxr-xr-xembed.pl1231
-rw-r--r--global.sym219
-rw-r--r--gv.c77
-rw-r--r--gv.h8
-rw-r--r--handy.h131
-rw-r--r--hv.c200
-rw-r--r--hv.h56
-rw-r--r--intrpvar.h60
-rw-r--r--makedef.pl2
-rw-r--r--mg.c64
-rw-r--r--objXSUB.h2404
-rw-r--r--op.c17
-rw-r--r--op.h15
-rw-r--r--perl.c148
-rw-r--r--perlapi.c4214
-rw-r--r--pod/Makefile8
-rw-r--r--pod/buildtoc2
-rw-r--r--pod/perl.pod2
-rw-r--r--pod/perlapi.pod2225
-rw-r--r--pod/perldelta.pod9
-rw-r--r--pod/perlguts.pod2166
-rw-r--r--pod/perlintern.pod26
-rw-r--r--pod/perltoc.pod175
-rw-r--r--pod/roffitall2
-rw-r--r--pp.h107
-rw-r--r--scope.h18
-rw-r--r--sv.c550
-rw-r--r--sv.h252
-rw-r--r--thrdvar.h12
-rw-r--r--universal.c10
-rw-r--r--util.c57
37 files changed, 5228 insertions, 9537 deletions
diff --git a/MANIFEST b/MANIFEST
index 64b666e0b0..1b3615fd90 100644
--- a/MANIFEST
+++ b/MANIFEST
@@ -1047,6 +1047,7 @@ pod/checkpods.PL Tool to check for common errors in pods
pod/perl.pod Top level perl man page
pod/perl5004delta.pod Changes from 5.003 to 5.004
pod/perl5005delta.pod Changes from 5.004 to 5.005
+pod/perlapi.pod Perl API documentation (autogenerated)
pod/perlapio.pod IO API info
pod/perlbook.pod Book info
pod/perlbot.pod Object-oriented Bag o' Tricks
@@ -1076,6 +1077,7 @@ pod/perlfunc.pod Function info
pod/perlguts.pod Internals info
pod/perlhack.pod Perl hackers guide
pod/perlhist.pod Perl history info
+pod/perlintern.pod Perl internal function docs (autogenrated)
pod/perlipc.pod IPC info
pod/perllexwarn.pod Lexical Warnings info
pod/perllocale.pod Locale support info
diff --git a/XSUB.h b/XSUB.h
index 18f5b81d23..7e1c28c60c 100644
--- a/XSUB.h
+++ b/XSUB.h
@@ -1,6 +1,50 @@
#ifndef _INC_PERL_XSUB_H
#define _INC_PERL_XSUB_H 1
+/* first, some documentation for xsubpp-generated items */
+
+/*
+=for apidoc Amn|char*|CLASS
+Variable which is setup by C<xsubpp> to indicate the
+class name for a C++ XS constructor. This is always a C<char*>. See C<THIS>.
+
+=for apidoc Amn|(whatever)|RETVAL
+Variable which is setup by C<xsubpp> to hold the return value for an
+XSUB. This is always the proper type for the XSUB. See
+L<perlxs/"The RETVAL Variable">.
+
+=for apidoc Amn|(whatever)|THIS
+Variable which is setup by C<xsubpp> to designate the object in a C++
+XSUB. This is always the proper type for the C++ object. See C<CLASS> and
+L<perlxs/"Using XS With C++">.
+
+=for apidoc Amn|I32|items
+Variable which is setup by C<xsubpp> to indicate the number of
+items on the stack. See L<perlxs/"Variable-length Parameter Lists">.
+
+=for apidoc Amn|I32|ix
+Variable which is setup by C<xsubpp> to indicate which of an
+XSUB's aliases was used to invoke it. See L<perlxs/"The ALIAS: Keyword">.
+
+=for apidoc Am|SV*|ST|int ix
+Used to access elements on the XSUB's stack.
+
+=for apidoc AmU||XS
+Macro to declare an XSUB and its C parameter list. This is handled by
+C<xsubpp>.
+
+=for apidoc Ams||dXSARGS
+Sets up stack and mark pointers for an XSUB, calling dSP and dMARK. This
+is usually handled automatically by C<xsubpp>. Declares the C<items>
+variable to indicate the number of items on the stack.
+
+=for apidoc Ams||dXSI32
+Sets up the C<ix> variable for an XSUB which has aliases. This is usually
+handled automatically by C<xsubpp>.
+
+=cut
+*/
+
#define ST(off) PL_stack_base[ax + (off)]
#if defined(CYGWIN) && defined(USE_DYNAMIC_LOADING)
@@ -34,14 +78,75 @@
#define XSINTERFACE_FUNC_SET(cv,f) \
CvXSUBANY(cv).any_dptr = (void (*) (pTHXo_ void*))(f)
-#define XSRETURN(off) \
- STMT_START { \
- PL_stack_sp = PL_stack_base + ax + ((off) - 1); \
- return; \
- } STMT_END
-
/* Simple macros to put new mortal values onto the stack. */
/* Typically used to return values from XS functions. */
+
+/*
+=for apidoc Am|void|XST_mIV|int pos|IV iv
+Place an integer into the specified position C<pos> on the stack. The
+value is stored in a new mortal SV.
+
+=for apidoc Am|void|XST_mNV|int pos|NV nv
+Place a double into the specified position C<pos> on the stack. The value
+is stored in a new mortal SV.
+
+=for apidoc Am|void|XST_mPV|int pos|char* str
+Place a copy of a string into the specified position C<pos> on the stack.
+The value is stored in a new mortal SV.
+
+=for apidoc Am|void|XST_mNO|int pos
+Place C<&PL_sv_no> into the specified position C<pos> on the
+stack.
+
+=for apidoc Am|void|XST_mYES|int pos
+Place C<&PL_sv_yes> into the specified position C<pos> on the
+stack.
+
+=for apidoc Am|void|XST_mUNDEF|int pos
+Place C<&PL_sv_undef> into the specified position C<pos> on the
+stack.
+
+=for apidoc Am|void|XSRETURN|int nitems
+Return from XSUB, indicating number of items on the stack. This is usually
+handled by C<xsubpp>.
+
+=for apidoc Am|void|XSRETURN_IV|IV iv
+Return an integer from an XSUB immediately. Uses C<XST_mIV>.
+
+=for apidoc Am|void|XSRETURN_NV|NV nv
+Return an double from an XSUB immediately. Uses C<XST_mNV>.
+
+=for apidoc Am|void|XSRETURN_PV|char* str
+Return a copy of a string from an XSUB immediately. Uses C<XST_mPV>.
+
+=for apidoc Ams||XSRETURN_NO
+Return C<&PL_sv_no> from an XSUB immediately. Uses C<XST_mNO>.
+
+=for apidoc Ams||XSRETURN_YES
+Return C<&PL_sv_yes> from an XSUB immediately. Uses C<XST_mYES>.
+
+=for apidoc Ams||XSRETURN_UNDEF
+Return C<&PL_sv_undef> from an XSUB immediately. Uses C<XST_mUNDEF>.
+
+=for apidoc Ams||XSRETURN_EMPTY
+Return an empty list from an XSUB immediately.
+
+=for apidoc AmU||newXSproto
+Used by C<xsubpp> to hook up XSUBs as Perl subs. Adds Perl prototypes to
+the subs.
+
+=for apidoc AmU||XS_VERSION
+The version identifier for an XS module. This is usually
+handled automatically by C<ExtUtils::MakeMaker>. See C<XS_VERSION_BOOTCHECK>.
+
+=for apidoc Ams||XS_VERSION_BOOTCHECK
+Macro to verify that a PM module's $VERSION variable matches the XS
+module's C<XS_VERSION> variable. This is usually handled automatically by
+C<xsubpp>. See L<perlxs/"The VERSIONCHECK: Keyword">.
+
+=cut
+*/
+
#define XST_mIV(i,v) (ST(i) = sv_2mortal(newSViv(v)) )
#define XST_mNV(i,v) (ST(i) = sv_2mortal(newSVnv(v)) )
#define XST_mPV(i,v) (ST(i) = sv_2mortal(newSVpv(v,0)))
@@ -49,11 +154,17 @@
#define XST_mNO(i) (ST(i) = &PL_sv_no )
#define XST_mYES(i) (ST(i) = &PL_sv_yes )
#define XST_mUNDEF(i) (ST(i) = &PL_sv_undef)
-
+
+#define XSRETURN(off) \
+ STMT_START { \
+ PL_stack_sp = PL_stack_base + ax + ((off) - 1); \
+ return; \
+ } STMT_END
+
#define XSRETURN_IV(v) STMT_START { XST_mIV(0,v); XSRETURN(1); } STMT_END
#define XSRETURN_NV(v) STMT_START { XST_mNV(0,v); XSRETURN(1); } STMT_END
#define XSRETURN_PV(v) STMT_START { XST_mPV(0,v); XSRETURN(1); } STMT_END
-#define XSRETURN_PVN(v) STMT_START { XST_mPVN(0,v,n); XSRETURN(1); } STMT_END
+#define XSRETURN_PVN(v,n) STMT_START { XST_mPVN(0,v,n); XSRETURN(1); } STMT_END
#define XSRETURN_NO STMT_START { XST_mNO(0); XSRETURN(1); } STMT_END
#define XSRETURN_YES STMT_START { XST_mYES(0); XSRETURN(1); } STMT_END
#define XSRETURN_UNDEF STMT_START { XST_mUNDEF(0); XSRETURN(1); } STMT_END
diff --git a/av.c b/av.c
index af8296a841..264fe23b10 100644
--- a/av.c
+++ b/av.c
@@ -46,6 +46,15 @@ Perl_av_reify(pTHX_ AV *av)
AvREAL_on(av);
}
+/*
+=for apidoc av_extend
+
+Pre-extend an array. The C<key> is the index to which the array should be
+extended.
+
+=cut
+*/
+
void
Perl_av_extend(pTHX_ AV *av, I32 key)
{
@@ -151,6 +160,19 @@ Perl_av_extend(pTHX_ AV *av, I32 key)
}
}
+/*
+=for apidoc av_fetch
+
+Returns the SV at the specified index in the array. The C<key> is the
+index. If C<lval> is set then the fetch will be part of a store. Check
+that the return value is non-null before dereferencing it to a C<SV*>.
+
+See L<Understanding the Magic of Tied Hashes and Arrays> for more information
+on how to use this function on tied arrays.
+
+=cut
+*/
+
SV**
Perl_av_fetch(pTHX_ register AV *av, I32 key, I32 lval)
{
@@ -198,6 +220,23 @@ Perl_av_fetch(pTHX_ register AV *av, I32 key, I32 lval)
return &AvARRAY(av)[key];
}
+/*
+=for apidoc av_store
+
+Stores an SV in an array. The array index is specified as C<key>. The
+return value will be NULL if the operation failed or if the value did not
+need to be actually stored within the array (as in the case of tied
+arrays). Otherwise it can be dereferenced to get the original C<SV*>. Note
+that the caller is responsible for suitably incrementing the reference
+count of C<val> before the call, and decrementing it if the function
+returned NULL.
+
+See L<Understanding the Magic of Tied Hashes and Arrays> for
+more information on how to use this function on tied arrays.
+
+=cut
+*/
+
SV**
Perl_av_store(pTHX_ register AV *av, I32 key, SV *val)
{
@@ -257,6 +296,14 @@ Perl_av_store(pTHX_ register AV *av, I32 key, SV *val)
return &ary[key];
}
+/*
+=for apidoc newAV
+
+Creates a new AV. The reference count is set to 1.
+
+=cut
+*/
+
AV *
Perl_newAV(pTHX)
{
@@ -271,6 +318,16 @@ Perl_newAV(pTHX)
return av;
}
+/*
+=for apidoc av_make
+
+Creates a new AV and populates it with a list of SVs. The SVs are copied
+into the array, so they may be freed after the call to av_make. The new AV
+will have a reference count of 1.
+
+=cut
+*/
+
AV *
Perl_av_make(pTHX_ register I32 size, register SV **strp)
{
@@ -320,6 +377,15 @@ Perl_av_fake(pTHX_ register I32 size, register SV **strp)
return av;
}
+/*
+=for apidoc av_clear
+
+Clears an array, making it empty. Does not free the memory used by the
+array itself.
+
+=cut
+*/
+
void
Perl_av_clear(pTHX_ register AV *av)
{
@@ -361,6 +427,14 @@ Perl_av_clear(pTHX_ register AV *av)
}
+/*
+=for apidoc av_undef
+
+Undefines the array. Frees the memory used by the array itself.
+
+=cut
+*/
+
void
Perl_av_undef(pTHX_ register AV *av)
{
@@ -389,6 +463,15 @@ Perl_av_undef(pTHX_ register AV *av)
}
}
+/*
+=for apidoc av_push
+
+Pushes an SV onto the end of the array. The array will grow automatically
+to accommodate the addition.
+
+=cut
+*/
+
void
Perl_av_push(pTHX_ register AV *av, SV *val)
{
@@ -415,6 +498,15 @@ Perl_av_push(pTHX_ register AV *av, SV *val)
av_store(av,AvFILLp(av)+1,val);
}
+/*
+=for apidoc av_pop
+
+Pops an SV off the end of the array. Returns C<&PL_sv_undef> if the array
+is empty.
+
+=cut
+*/
+
SV *
Perl_av_pop(pTHX_ register AV *av)
{
@@ -448,6 +540,16 @@ Perl_av_pop(pTHX_ register AV *av)
return retval;
}
+/*
+=for apidoc av_unshift
+
+Unshift the given number of C<undef> values onto the beginning of the
+array. The array will grow automatically to accommodate the addition. You
+must then use C<av_store> to assign values to these new elements.
+
+=cut
+*/
+
void
Perl_av_unshift(pTHX_ register AV *av, register I32 num)
{
@@ -501,6 +603,14 @@ Perl_av_unshift(pTHX_ register AV *av, register I32 num)
}
}
+/*
+=for apidoc av_shift
+
+Shifts an SV off the beginning of the array.
+
+=cut
+*/
+
SV *
Perl_av_shift(pTHX_ register AV *av)
{
@@ -538,6 +648,15 @@ Perl_av_shift(pTHX_ register AV *av)
return retval;
}
+/*
+=for apidoc av_len
+
+Returns the highest index in the array. Returns -1 if the array is
+empty.
+
+=cut
+*/
+
I32
Perl_av_len(pTHX_ register AV *av)
{
diff --git a/av.h b/av.h
index 14e87658a6..b56917fa2c 100644
--- a/av.h
+++ b/av.h
@@ -45,6 +45,16 @@ struct xpvav {
/* XXX this is not used anywhere */
#define AVf_REUSED 4 /* got undeffed--don't turn old memory into SVs now */
+/*
+=for apidoc AmU||Nullav
+Null AV pointer.
+
+=for apidoc Am|int|AvFILL|AV* av
+Same as C<av_len()>. Deprecated, use C<av_len()> instead.
+
+=cut
+*/
+
#define Nullav Null(AV*)
#define AvARRAY(av) ((SV**)((XPVAV*) SvANY(av))->xav_array)
diff --git a/cop.h b/cop.h
index ede2fce591..5760a8d582 100644
--- a/cop.h
+++ b/cop.h
@@ -373,6 +373,36 @@ struct context {
#define CXINC (cxstack_ix < cxstack_max ? ++cxstack_ix : (cxstack_ix = cxinc()))
/* "gimme" values */
+
+/*
+=for apidoc AmU||G_SCALAR
+Used to indicate scalar context. See C<GIMME_V>, C<GIMME>, and
+L<perlcall>.
+
+=for apidoc AmU||G_ARRAY
+Used to indicate array context. See C<GIMME_V>, C<GIMME> and
+L<perlcall>.
+
+=for apidoc AmU||G_VOID
+Used to indicate void context. See C<GIMME_V> and L<perlcall>.
+
+=for apidoc AmU||G_DISCARD
+Indicates that arguments returned from a callback should be discarded. See
+L<perlcall>.
+
+=for apidoc AmU||G_EVAL
+
+Used to force a Perl C<eval> wrapper around a callback. See
+L<perlcall>.
+
+=for apidoc AmU||G_NOARGS
+
+Indicates that no arguments are being sent to a callback. See
+L<perlcall>.
+
+=cut
+*/
+
#define G_SCALAR 0
#define G_ARRAY 1
#define G_VOID 128 /* skip this bit when adding flags below */
diff --git a/cv.h b/cv.h
index 06cbb89b87..821029838d 100644
--- a/cv.h
+++ b/cv.h
@@ -36,6 +36,16 @@ struct xpvcv {
cv_flags_t xcv_flags;
};
+/*
+=for apidoc AmU||Nullcv
+Null CV pointer.
+
+=for apidoc Am|HV*|CvSTASH|CV* cv
+Returns the stash of the CV.
+
+=cut
+*/
+
#define Nullcv Null(CV*)
#define CvSTASH(sv) ((XPVCV*)SvANY(sv))->xcv_stash
diff --git a/embed.pl b/embed.pl
index 5305dad014..932124a812 100755
--- a/embed.pl
+++ b/embed.pl
@@ -1,6 +1,7 @@
#!/usr/bin/perl -w
-require 5.003;
+require 5.003; # keep this compatible, an old perl is all we may have before
+ # we build the new one
#
# See database of global and static function prototypes at the __END__.
@@ -147,12 +148,12 @@ sub write_protos {
$ret;
}
-# generates global.sym, and populates %global with global symbols
+# generates global.sym (API export list), and populates %global with global symbols
sub write_global_sym {
my $ret = "";
if (@_ > 1) {
my ($flags,$retval,$func,@args) = @_;
- unless ($flags =~ /[sx]/) {
+ if ($flags =~ /A/ && $flags !~ /x/) { # public API, so export
$func = "Perl_$func" if $flags =~ /p/;
$ret = "$func\n";
}
@@ -726,7 +727,7 @@ walk_table {
}
else {
my ($flags,$retval,$func,@args) = @_;
- unless ($flags =~ /[js]/) {
+ if ($flags =~ /A/ && $flags !~ /j/) { # API function needing macros
if ($flags =~ /p/) {
$ret .= undefine("Perl_$func") . hide("Perl_$func","pPerl->Perl_$func");
$ret .= undefine($func) . hide($func,"Perl_$func");
@@ -739,11 +740,12 @@ walk_table {
$ret;
} \*OBX;
-for $sym (sort keys %ppsym) {
- $sym =~ s/^Perl_//;
- print OBX undefine("Perl_$sym") . hide("Perl_$sym", "pPerl->Perl_$sym");
- print OBX undefine($sym) . hide($sym, "Perl_$sym");
-}
+# NOTE: not part of API
+#for $sym (sort keys %ppsym) {
+# $sym =~ s/^Perl_//;
+# print OBX undefine("Perl_$sym") . hide("Perl_$sym", "pPerl->Perl_$sym");
+# print OBX undefine($sym) . hide($sym, "Perl_$sym");
+#}
print OBX <<'EOT';
@@ -943,7 +945,8 @@ my %vfuncs = qw(
sub emit_func {
my ($addcontext, $rettype,$func,@args) = @_;
my @aargs = @args;
- for my $a (@aargs) { $a =~ s/^.*\b(\w+)$/$1/ }
+ my $a;
+ for $a (@aargs) { $a =~ s/^.*\b(\w+)$/$1/ }
my $ctxarg = '';
if (not $addcontext) {
$ctxarg = 'pTHXo';
@@ -992,7 +995,8 @@ EOT
}
# XXXX temporary hack
-for my $sym (qw(
+my $sym;
+for $sym (qw(
perl_construct
perl_destruct
perl_free
@@ -1012,7 +1016,7 @@ walk_table {
else {
my ($flags,$retval,$func,@args) = @_;
return $ret if exists $skipapi_funcs{$func};
- unless ($flags =~ /[js]/) {
+ if ($flags =~ /A/ && $flags !~ /j/) { # in public API, needed for XSUBS
$ret .= "\n";
my $addctx = 1 if $flags =~ /n/;
if ($flags =~ /p/) {
@@ -1028,17 +1032,18 @@ walk_table {
$ret;
} \*CAPI;
-for $sym (sort keys %ppsym) {
- $sym =~ s/^Perl_//;
- print CAPI "\n";
- print CAPI undefine("Perl_$sym");
- if ($sym =~ /^ck_/) {
- print CAPI emit_func(0, 'OP *',"Perl_$sym",'OP *o');
- }
- else { # pp_foo
- print CAPI emit_func(0, 'OP *',"Perl_$sym");
- }
-}
+# NOTE: not part of the API
+#for $sym (sort keys %ppsym) {
+# $sym =~ s/^Perl_//;
+# print CAPI "\n";
+# print CAPI undefine("Perl_$sym");
+# if ($sym =~ /^ck_/) {
+# print CAPI emit_func(0, 'OP *',"Perl_$sym",'OP *o');
+# }
+# else { # pp_foo
+# print CAPI emit_func(0, 'OP *',"Perl_$sym");
+# }
+#}
print CAPI <<'EOT';
@@ -1058,6 +1063,201 @@ END_EXTERN_C
#endif /* PERL_OBJECT || MULTIPLICITY */
EOT
+close(CAPI);
+
+# autogenerate documentation from comments in source files
+
+my %apidocs;
+my %gutsdocs;
+my %docfuncs;
+
+sub autodoc ($) { # parse a file and extract documentation info
+ my($fh) = @_;
+ my($in, $doc);
+
+FUNC:
+ while (defined($in = <$fh>)) {
+ if ($in =~ /^=for\s+apidoc\s+(.*)\n/) {
+ my $proto = $1;
+ $proto = "||$proto" unless $proto =~ /\|/;
+ my($flags, $ret, $name, @args) = split /\|/, $proto;
+ my $docs = "";
+DOC:
+ while (defined($doc = <$fh>)) {
+ last DOC if $doc =~ /^=\w+/;
+ $docs .= $doc;
+ }
+ $docs = "\n$docs" if $docs and $docs !~ /^\n/;
+ if ($flags =~ /m/) {
+ if ($flags =~ /A/) {
+ $apidocs{$name} = [$flags, $docs, $ret, @args];
+ }
+ else {
+ $gutsdocs{$name} = [$flags, $docs, $ret, @args];
+ }
+ }
+ else {
+ $docfuncs{$name} = [$flags, $docs, $ret, @args];
+ }
+ if ($doc =~ /^=for/) {
+ $in = $doc;
+ redo FUNC;
+ }
+ }
+ }
+}
+
+sub docout ($$$) { # output the docs for one function
+ my($fh, $name, $docref) = @_;
+ my($flags, $docs, $ret, @args) = @$docref;
+
+ $docs .= "NOTE: the perl_ form of this function is deprecated.\n\n"
+ if $flags =~ /p/;
+
+ print $fh "=item $name\n$docs";
+
+ if ($flags =~ /U/) { # no usage
+ # nothing
+ } elsif ($flags =~ /s/) { # semicolon ("dTHR;")
+ print $fh "\t\t$name;\n\n";
+ } elsif ($flags =~ /n/) { # no args
+ print $fh "\t$ret\t$name\n\n";
+ } else { # full usage
+ print $fh "\t$ret\t$name";
+ print $fh "(" . join(", ", @args) . ")";
+ print $fh "\n\n";
+ }
+}
+
+my $file;
+for $file (glob('*.c'), glob('*.h')) {
+ open F, "< $file" or die "Cannot open $file for docs: $!\n";
+ autodoc(\*F);
+ close F or die "Error closing $file: $!\n";
+}
+
+unlink "pod/perlapi.pod";
+open (DOC, ">pod/perlapi.pod") or
+ die "Can't create pod/perlapi.pod: $!\n";
+
+walk_table { # load documented functions into approriate hash
+ if (@_ > 1) {
+ my($flags, $retval, $func, @args) = @_;
+ return "" unless $flags =~ /d/;
+ $func =~ s/\t//g; $flags =~ s/p//; # clean up fields from embed.pl
+ $retval =~ s/\t//;
+ if ($flags =~ /A/) {
+ my $docref = delete $docfuncs{$func};
+ warn "no docs for $func\n" unless $docref and @$docref;
+ $apidocs{$func} = [$docref->[0] . 'A', $docref->[1], $retval, @args];
+ } else {
+ my $docref = delete $docfuncs{$func};
+ $gutsdocs{$func} = [$docref->[0], $docref->[1], $retval, @args];
+ }
+ }
+ return "";
+} \*DOC;
+
+for (sort keys %docfuncs) {
+ warn "Unable to place $_!\n";
+}
+
+print DOC <<'_EOB_';
+=head1 NAME
+
+perlapi - autogenerated documentation for the perl public API
+
+=head1 DESCRIPTION
+
+This file contains the documentation of the perl public API generated by
+embed.pl, specifically a listing of functions, macros, flags, and variables
+that may be used by extension writers. The interfaces of any functions that
+are not listed here are subject to change without notice. For this reason,
+blindly using functions listed in proto.h is to be avoided when writing
+extensions.
+
+Note that all Perl API global variables must be referenced with the C<PL_>
+prefix. Some macros are provided for compatibility with the older,
+unadorned names, but this support may be disabled in a future release.
+
+The listing is alphabetical, case insensitive.
+
+=over 8
+
+_EOB_
+
+my $key;
+for $key (sort { uc($a) cmp uc($b); } keys %apidocs) { # case insensitive sort
+ docout(\*DOC, $key, $apidocs{$key});
+}
+
+print DOC <<'_EOE_';
+=back
+
+=head1 AUTHORS
+
+Until May 1997, this document was maintained by Jeff Okamoto
+<okamoto@corp.hp.com>. It is now maintained as part of Perl itself.
+
+With lots of help and suggestions from Dean Roehrich, Malcolm Beattie,
+Andreas Koenig, Paul Hudson, Ilya Zakharevich, Paul Marquess, Neil
+Bowers, Matthew Green, Tim Bunce, Spider Boardman, Ulrich Pfeifer,
+Stephen McCamant, and Gurusamy Sarathy.
+
+API Listing originally by Dean Roehrich <roehrich@cray.com>.
+
+Updated to be autogenerated from comments in the source by Benjamin Stuhl.
+
+=head1 SEE ALSO
+
+perlguts(1), perlxs(1), perlxstut(1), perlintern(1)
+
+_EOE_
+
+
+close(DOC);
+
+open(GUTS, ">pod/perlintern.pod") or
+ die "Unable to create pod/perlintern.pod: $!\n";
+print GUTS <<'END';
+=head1 NAME
+
+perlintern - autogenerated documentation of purely B<internal>
+ Perl functions
+
+=head1 DESCRIPTION
+
+This file is the autogenerated documentation of functions in the
+Perl intrepreter that are documented using Perl's internal documentation
+format but are not marked as part of the Perl API. In other words,
+B<they are not for use in extensions>!
+
+=over 8
+
+END
+
+for $key (sort { uc($a) cmp uc($b); } keys %gutsdocs) {
+ docout(\*GUTS, $key, $gutsdocs{$key});
+}
+
+print GUTS <<'END';
+=back
+
+=head1 AUTHORS
+
+The autodocumentation system was orignally added to the Perl core by
+Benjamin Stuhl. Documentation is by whoever was kind enough to
+document their functions.
+
+=head1 SEE ALSO
+
+perlguts(1), perlapi(1)
+
+END
+
+close GUTS;
+
+
__END__
: Lines are of the form:
@@ -1067,8 +1267,10 @@ __END__
: Leading and trailing whitespace will be ignored in each component.
:
: flags are single letters with following meanings:
+: A member of public API
+: d function has documentation with its source
: s static function, should have an S_ prefix in source
-: file
+: file
: n has no implicit interpreter/thread context argument
: p function has a Perl_ prefix
: f function takes printf style format string, varargs
@@ -1081,33 +1283,30 @@ __END__
:
: New global functions should be added at the end for binary compatibility
: in some configurations.
-:
-: TODO: 1) Add a flag to mark the functions that are part of the public API.
-: 2) Add a field for documentation, so that L<perlguts/"API LISTING">
-: may be autogenerated.
START_EXTERN_C
#if defined(PERL_IMPLICIT_SYS)
-jno |PerlInterpreter* |perl_alloc_using \
+Ajno |PerlInterpreter* |perl_alloc_using \
|struct IPerlMem* m|struct IPerlMem* ms \
|struct IPerlMem* mp|struct IPerlEnv* e \
|struct IPerlStdIO* io|struct IPerlLIO* lio \
|struct IPerlDir* d|struct IPerlSock* s \
|struct IPerlProc* p
#else
-jno |PerlInterpreter* |perl_alloc
+Ajnod |PerlInterpreter* |perl_alloc
#endif
-jno |void |perl_construct |PerlInterpreter* interp
-jno |void |perl_destruct |PerlInterpreter* interp
-jno |void |perl_free |PerlInterpreter* interp
-jno |int |perl_run |PerlInterpreter* interp
-jno |int |perl_parse |PerlInterpreter* interp|XSINIT_t xsinit \
+Ajnod |void |perl_construct |PerlInterpreter* interp
+Ajnod |void |perl_destruct |PerlInterpreter* interp
+Ajnod |void |perl_free |PerlInterpreter* interp
+Ajnod |int |perl_run |PerlInterpreter* interp
+Ajnod |int |perl_parse |PerlInterpreter* interp|XSINIT_t xsinit \
|int argc|char** argv|char** env
#if defined(USE_ITHREADS)
-jno |PerlInterpreter*|perl_clone|PerlInterpreter* interp, UV flags
+: XXX: perl_clone needs docs
+Ajno |PerlInterpreter*|perl_clone|PerlInterpreter* interp, UV flags
# if defined(PERL_IMPLICIT_SYS)
-jno |PerlInterpreter*|perl_clone_using|PerlInterpreter *interp|UV flags \
+Ajno |PerlInterpreter*|perl_clone_using|PerlInterpreter *interp|UV flags \
|struct IPerlMem* m|struct IPerlMem* ms \
|struct IPerlMem* mp|struct IPerlEnv* e \
|struct IPerlStdIO* io|struct IPerlLIO* lio \
@@ -1117,10 +1316,10 @@ jno |PerlInterpreter*|perl_clone_using|PerlInterpreter *interp|UV flags \
#endif
#if defined(MYMALLOC)
-jnop |Malloc_t|malloc |MEM_SIZE nbytes
-jnop |Malloc_t|calloc |MEM_SIZE elements|MEM_SIZE size
-jnop |Malloc_t|realloc |Malloc_t where|MEM_SIZE nbytes
-jnop |Free_t |mfree |Malloc_t where
+Ajnop |Malloc_t|malloc |MEM_SIZE nbytes
+Ajnop |Malloc_t|calloc |MEM_SIZE elements|MEM_SIZE size
+Ajnop |Malloc_t|realloc |Malloc_t where|MEM_SIZE nbytes
+Ajnop |Free_t |mfree |Malloc_t where
jnp |MEM_SIZE|malloced_size |void *p
#endif
@@ -1145,90 +1344,90 @@ public:
START_EXTERN_C
#endif
# include "pp_proto.h"
-p |SV* |amagic_call |SV* left|SV* right|int method|int dir
-p |bool |Gv_AMupdate |HV* stash
+Ap |SV* |amagic_call |SV* left|SV* right|int method|int dir
+Ap |bool |Gv_AMupdate |HV* stash
p |OP* |append_elem |I32 optype|OP* head|OP* tail
p |OP* |append_list |I32 optype|LISTOP* first|LISTOP* last
p |I32 |apply |I32 type|SV** mark|SV** sp
-p |SV* |avhv_delete_ent|AV *ar|SV* keysv|I32 flags|U32 hash
-p |bool |avhv_exists_ent|AV *ar|SV* keysv|U32 hash
-p |SV** |avhv_fetch_ent |AV *ar|SV* keysv|I32 lval|U32 hash
-p |HE* |avhv_iternext |AV *ar
-p |SV* |avhv_iterval |AV *ar|HE* entry
-p |HV* |avhv_keys |AV *ar
-p |void |av_clear |AV* ar
-p |SV* |av_delete |AV* ar|I32 key|I32 flags
-p |bool |av_exists |AV* ar|I32 key
-p |void |av_extend |AV* ar|I32 key
-p |AV* |av_fake |I32 size|SV** svp
-p |SV** |av_fetch |AV* ar|I32 key|I32 lval
-p |void |av_fill |AV* ar|I32 fill
-p |I32 |av_len |AV* ar
-p |AV* |av_make |I32 size|SV** svp
-p |SV* |av_pop |AV* ar
-p |void |av_push |AV* ar|SV* val
-p |void |av_reify |AV* ar
-p |SV* |av_shift |AV* ar
-p |SV** |av_store |AV* ar|I32 key|SV* val
-p |void |av_undef |AV* ar
-p |void |av_unshift |AV* ar|I32 num
+Ap |SV* |avhv_delete_ent|AV *ar|SV* keysv|I32 flags|U32 hash
+Ap |bool |avhv_exists_ent|AV *ar|SV* keysv|U32 hash
+Ap |SV** |avhv_fetch_ent |AV *ar|SV* keysv|I32 lval|U32 hash
+Ap |HE* |avhv_iternext |AV *ar
+Ap |SV* |avhv_iterval |AV *ar|HE* entry
+Ap |HV* |avhv_keys |AV *ar
+Apd |void |av_clear |AV* ar
+Ap |SV* |av_delete |AV* ar|I32 key|I32 flags
+Ap |bool |av_exists |AV* ar|I32 key
+Apd |void |av_extend |AV* ar|I32 key
+Ap |AV* |av_fake |I32 size|SV** svp
+Apd |SV** |av_fetch |AV* ar|I32 key|I32 lval
+Ap |void |av_fill |AV* ar|I32 fill
+Apd |I32 |av_len |AV* ar
+Apd |AV* |av_make |I32 size|SV** svp
+Apd |SV* |av_pop |AV* ar
+Apd |void |av_push |AV* ar|SV* val
+Ap |void |av_reify |AV* ar
+Apd |SV* |av_shift |AV* ar
+Apd |SV** |av_store |AV* ar|I32 key|SV* val
+Apd |void |av_undef |AV* ar
+Apd |void |av_unshift |AV* ar|I32 num
p |OP* |bind_match |I32 type|OP* left|OP* pat
p |OP* |block_end |I32 floor|OP* seq
-p |I32 |block_gimme
+Ap |I32 |block_gimme
p |int |block_start |int full
p |void |boot_core_UNIVERSAL
p |void |call_list |I32 oldscope|AV* av_list
p |bool |cando |Mode_t mode|Uid_t effective|Stat_t* statbufp
-p |U32 |cast_ulong |NV f
-p |I32 |cast_i32 |NV f
-p |IV |cast_iv |NV f
-p |UV |cast_uv |NV f
+Ap |U32 |cast_ulong |NV f
+Ap |I32 |cast_i32 |NV f
+Ap |IV |cast_iv |NV f
+Ap |UV |cast_uv |NV f
#if !defined(HAS_TRUNCATE) && !defined(HAS_CHSIZE) && defined(F_FREESP)
-p |I32 |my_chsize |int fd|Off_t length
+Ap |I32 |my_chsize |int fd|Off_t length
#endif
#if defined(USE_THREADS)
p |MAGIC* |condpair_magic |SV *sv
#endif
p |OP* |convert |I32 optype|I32 flags|OP* o
-fpr |void |croak |const char* pat|...
-pr |void |vcroak |const char* pat|va_list* args
+Afprd |void |croak |const char* pat|...
+Apr |void |vcroak |const char* pat|va_list* args
#if defined(PERL_IMPLICIT_CONTEXT)
-fnrp |void |croak_nocontext|const char* pat|...
-fnp |OP* |die_nocontext |const char* pat|...
-fnp |void |deb_nocontext |const char* pat|...
-fnp |char* |form_nocontext |const char* pat|...
-fnp |SV* |mess_nocontext |const char* pat|...
-fnp |void |warn_nocontext |const char* pat|...
-fnp |void |warner_nocontext|U32 err|const char* pat|...
-fnp |SV* |newSVpvf_nocontext|const char* pat|...
-fnp |void |sv_catpvf_nocontext|SV* sv|const char* pat|...
-fnp |void |sv_setpvf_nocontext|SV* sv|const char* pat|...
-fnp |void |sv_catpvf_mg_nocontext|SV* sv|const char* pat|...
-fnp |void |sv_setpvf_mg_nocontext|SV* sv|const char* pat|...
-fnp |int |fprintf_nocontext|PerlIO* stream|const char* fmt|...
+Afnrp |void |croak_nocontext|const char* pat|...
+Afnp |OP* |die_nocontext |const char* pat|...
+Afnp |void |deb_nocontext |const char* pat|...
+Afnp |char* |form_nocontext |const char* pat|...
+Afnp |SV* |mess_nocontext |const char* pat|...
+Afnp |void |warn_nocontext |const char* pat|...
+Afnp |void |warner_nocontext|U32 err|const char* pat|...
+Afnp |SV* |newSVpvf_nocontext|const char* pat|...
+Afnp |void |sv_catpvf_nocontext|SV* sv|const char* pat|...
+Afnp |void |sv_setpvf_nocontext|SV* sv|const char* pat|...
+Afnp |void |sv_catpvf_mg_nocontext|SV* sv|const char* pat|...
+Afnp |void |sv_setpvf_mg_nocontext|SV* sv|const char* pat|...
+Afnp |int |fprintf_nocontext|PerlIO* stream|const char* fmt|...
#endif
p |void |cv_ckproto |CV* cv|GV* gv|char* p
p |CV* |cv_clone |CV* proto
p |SV* |cv_const_sv |CV* cv
p |SV* |op_const_sv |OP* o|CV* cv
p |void |cv_undef |CV* cv
-p |void |cx_dump |PERL_CONTEXT* cs
-p |SV* |filter_add |filter_t funcp|SV* datasv
-p |void |filter_del |filter_t funcp
-p |I32 |filter_read |int idx|SV* buffer|int maxlen
-p |char** |get_op_descs
-p |char** |get_op_names
+Ap |void |cx_dump |PERL_CONTEXT* cs
+Ap |SV* |filter_add |filter_t funcp|SV* datasv
+Ap |void |filter_del |filter_t funcp
+Ap |I32 |filter_read |int idx|SV* buffer|int maxlen
+Ap |char** |get_op_descs
+Ap |char** |get_op_names
p |char* |get_no_modify
p |U32* |get_opargs
-p |PPADDR_t*|get_ppaddr
+Ap |PPADDR_t*|get_ppaddr
p |I32 |cxinc
-fp |void |deb |const char* pat|...
-p |void |vdeb |const char* pat|va_list* args
-p |void |debprofdump
-p |I32 |debop |OP* o
-p |I32 |debstack
-p |I32 |debstackptrs
-p |char* |delimcpy |char* to|char* toend|char* from \
+Afp |void |deb |const char* pat|...
+Ap |void |vdeb |const char* pat|va_list* args
+Ap |void |debprofdump
+Ap |I32 |debop |OP* o
+Ap |I32 |debstack
+Ap |I32 |debstackptrs
+Ap |char* |delimcpy |char* to|char* toend|char* from \
|char* fromend|int delim|I32* retlen
p |void |deprecate |char* s
fp |OP* |die |const char* pat|...
@@ -1237,7 +1436,7 @@ p |OP* |die_where |char* message|STRLEN msglen
p |void |dounwind |I32 cxix
p |bool |do_aexec |SV* really|SV** mark|SV** sp
p |bool |do_aexec5 |SV* really|SV** mark|SV** sp|int fd|int flag
-p |int |do_binmode |PerlIO *fp|int iotype|int flag
+Ap |int |do_binmode |PerlIO *fp|int iotype|int flag
p |void |do_chop |SV* asv|SV* sv
p |bool |do_close |GV* gv|bool not_implicit
p |bool |do_eof |GV* gv
@@ -1256,9 +1455,9 @@ p |I32 |do_shmio |I32 optype|SV** mark|SV** sp
#endif
p |void |do_join |SV* sv|SV* del|SV** mark|SV** sp
p |OP* |do_kv
-p |bool |do_open |GV* gv|char* name|I32 len|int as_raw \
+Ap |bool |do_open |GV* gv|char* name|I32 len|int as_raw \
|int rawmode|int rawperm|PerlIO* supplied_fp
-p |bool |do_open9 |GV *gv|char *name|I32 len|int as_raw \
+Ap |bool |do_open9 |GV *gv|char *name|I32 len|int as_raw \
|int rawmode|int rawperm|PerlIO *supplied_fp \
|SV *svs|I32 num
p |void |do_pipe |SV* sv|GV* rgv|GV* wgv
@@ -1274,20 +1473,20 @@ p |UV |do_vecget |SV* sv|I32 offset|I32 size
p |void |do_vecset |SV* sv
p |void |do_vop |I32 optype|SV* sv|SV* left|SV* right
p |OP* |dofile |OP* term
-p |I32 |dowantarray
-p |void |dump_all
-p |void |dump_eval
+Ap |I32 |dowantarray
+Ap |void |dump_all
+Ap |void |dump_eval
#if defined(DUMP_FDS)
-p |void |dump_fds |char* s
+Ap |void |dump_fds |char* s
#endif
-p |void |dump_form |GV* gv
-p |void |gv_dump |GV* gv
-p |void |op_dump |OP* arg
-p |void |pmop_dump |PMOP* pm
-p |void |dump_packsubs |HV* stash
-p |void |dump_sub |GV* gv
-p |void |fbm_compile |SV* sv|U32 flags
-p |char* |fbm_instr |unsigned char* big|unsigned char* bigend \
+Ap |void |dump_form |GV* gv
+Ap |void |gv_dump |GV* gv
+Ap |void |op_dump |OP* arg
+Ap |void |pmop_dump |PMOP* pm
+Ap |void |dump_packsubs |HV* stash
+Ap |void |dump_sub |GV* gv
+Apd |void |fbm_compile |SV* sv|U32 flags
+Apd |char* |fbm_instr |unsigned char* big|unsigned char* bigend \
|SV* littlesv|U32 flags
p |char* |find_script |char *scriptname|bool dosearch \
|char **search_ext|I32 flags
@@ -1296,116 +1495,116 @@ p |PADOFFSET|find_threadsv|const char *name
#endif
p |OP* |force_list |OP* arg
p |OP* |fold_constants |OP* arg
-fp |char* |form |const char* pat|...
-p |char* |vform |const char* pat|va_list* args
-p |void |free_tmps
+Afp |char* |form |const char* pat|...
+Ap |char* |vform |const char* pat|va_list* args
+Ap |void |free_tmps
p |OP* |gen_constant_list|OP* o
#if !defined(HAS_GETENV_LEN)
p |char* |getenv_len |char* key|unsigned long *len
#endif
-p |void |gp_free |GV* gv
-p |GP* |gp_ref |GP* gp
-p |GV* |gv_AVadd |GV* gv
-p |GV* |gv_HVadd |GV* gv
-p |GV* |gv_IOadd |GV* gv
-p |GV* |gv_autoload4 |HV* stash|const char* name|STRLEN len \
+Ap |void |gp_free |GV* gv
+Ap |GP* |gp_ref |GP* gp
+Ap |GV* |gv_AVadd |GV* gv
+Ap |GV* |gv_HVadd |GV* gv
+Ap |GV* |gv_IOadd |GV* gv
+Ap |GV* |gv_autoload4 |HV* stash|const char* name|STRLEN len \
|I32 method
-p |void |gv_check |HV* stash
-p |void |gv_efullname |SV* sv|GV* gv
-p |void |gv_efullname3 |SV* sv|GV* gv|const char* prefix
-p |GV* |gv_fetchfile |const char* name
-p |GV* |gv_fetchmeth |HV* stash|const char* name|STRLEN len \
+Ap |void |gv_check |HV* stash
+Ap |void |gv_efullname |SV* sv|GV* gv
+Ap |void |gv_efullname3 |SV* sv|GV* gv|const char* prefix
+Ap |GV* |gv_fetchfile |const char* name
+Apd |GV* |gv_fetchmeth |HV* stash|const char* name|STRLEN len \
|I32 level
-p |GV* |gv_fetchmethod |HV* stash|const char* name
-p |GV* |gv_fetchmethod_autoload|HV* stash|const char* name \
+Apd |GV* |gv_fetchmethod |HV* stash|const char* name
+Apd |GV* |gv_fetchmethod_autoload|HV* stash|const char* name \
|I32 autoload
-p |GV* |gv_fetchpv |const char* name|I32 add|I32 sv_type
-p |void |gv_fullname |SV* sv|GV* gv
-p |void |gv_fullname3 |SV* sv|GV* gv|const char* prefix
-p |void |gv_init |GV* gv|HV* stash|const char* name \
+Ap |GV* |gv_fetchpv |const char* name|I32 add|I32 sv_type
+Ap |void |gv_fullname |SV* sv|GV* gv
+Ap |void |gv_fullname3 |SV* sv|GV* gv|const char* prefix
+Ap |void |gv_init |GV* gv|HV* stash|const char* name \
|STRLEN len|int multi
-p |HV* |gv_stashpv |const char* name|I32 create
-p |HV* |gv_stashpvn |const char* name|U32 namelen|I32 create
-p |HV* |gv_stashsv |SV* sv|I32 create
-p |void |hv_clear |HV* tb
-p |void |hv_delayfree_ent|HV* hv|HE* entry
-p |SV* |hv_delete |HV* tb|const char* key|U32 klen|I32 flags
-p |SV* |hv_delete_ent |HV* tb|SV* key|I32 flags|U32 hash
-p |bool |hv_exists |HV* tb|const char* key|U32 klen
-p |bool |hv_exists_ent |HV* tb|SV* key|U32 hash
-p |SV** |hv_fetch |HV* tb|const char* key|U32 klen|I32 lval
-p |HE* |hv_fetch_ent |HV* tb|SV* key|I32 lval|U32 hash
-p |void |hv_free_ent |HV* hv|HE* entry
-p |I32 |hv_iterinit |HV* tb
-p |char* |hv_iterkey |HE* entry|I32* retlen
-p |SV* |hv_iterkeysv |HE* entry
-p |HE* |hv_iternext |HV* tb
-p |SV* |hv_iternextsv |HV* hv|char** key|I32* retlen
-p |SV* |hv_iterval |HV* tb|HE* entry
-p |void |hv_ksplit |HV* hv|IV newmax
-p |void |hv_magic |HV* hv|GV* gv|int how
-p |SV** |hv_store |HV* tb|const char* key|U32 klen|SV* val \
+Apd |HV* |gv_stashpv |const char* name|I32 create
+Ap |HV* |gv_stashpvn |const char* name|U32 namelen|I32 create
+Apd |HV* |gv_stashsv |SV* sv|I32 create
+Apd |void |hv_clear |HV* tb
+Ap |void |hv_delayfree_ent|HV* hv|HE* entry
+Apd |SV* |hv_delete |HV* tb|const char* key|U32 klen|I32 flags
+Apd |SV* |hv_delete_ent |HV* tb|SV* key|I32 flags|U32 hash
+Apd |bool |hv_exists |HV* tb|const char* key|U32 klen
+Apd |bool |hv_exists_ent |HV* tb|SV* key|U32 hash
+Apd |SV** |hv_fetch |HV* tb|const char* key|U32 klen|I32 lval
+Apd |HE* |hv_fetch_ent |HV* tb|SV* key|I32 lval|U32 hash
+Ap |void |hv_free_ent |HV* hv|HE* entry
+Apd |I32 |hv_iterinit |HV* tb
+Apd |char* |hv_iterkey |HE* entry|I32* retlen
+Apd |SV* |hv_iterkeysv |HE* entry
+Apd |HE* |hv_iternext |HV* tb
+Apd |SV* |hv_iternextsv |HV* hv|char** key|I32* retlen
+Apd |SV* |hv_iterval |HV* tb|HE* entry
+Ap |void |hv_ksplit |HV* hv|IV newmax
+Apd |void |hv_magic |HV* hv|GV* gv|int how
+Apd |SV** |hv_store |HV* tb|const char* key|U32 klen|SV* val \
|U32 hash
-p |HE* |hv_store_ent |HV* tb|SV* key|SV* val|U32 hash
-p |void |hv_undef |HV* tb
-p |I32 |ibcmp |const char* a|const char* b|I32 len
-p |I32 |ibcmp_locale |const char* a|const char* b|I32 len
+Apd |HE* |hv_store_ent |HV* tb|SV* key|SV* val|U32 hash
+Apd |void |hv_undef |HV* tb
+Ap |I32 |ibcmp |const char* a|const char* b|I32 len
+Ap |I32 |ibcmp_locale |const char* a|const char* b|I32 len
p |bool |ingroup |Gid_t testgid|Uid_t effective
p |void |init_debugger
p |void |init_stacks
p |U32 |intro_my
-p |char* |instr |const char* big|const char* little
+Ap |char* |instr |const char* big|const char* little
p |bool |io_close |IO* io|bool not_implicit
p |OP* |invert |OP* cmd
-p |bool |is_uni_alnum |U32 c
-p |bool |is_uni_alnumc |U32 c
-p |bool |is_uni_idfirst |U32 c
-p |bool |is_uni_alpha |U32 c
-p |bool |is_uni_ascii |U32 c
-p |bool |is_uni_space |U32 c
-p |bool |is_uni_cntrl |U32 c
-p |bool |is_uni_graph |U32 c
-p |bool |is_uni_digit |U32 c
-p |bool |is_uni_upper |U32 c
-p |bool |is_uni_lower |U32 c
-p |bool |is_uni_print |U32 c
-p |bool |is_uni_punct |U32 c
-p |bool |is_uni_xdigit |U32 c
-p |U32 |to_uni_upper |U32 c
-p |U32 |to_uni_title |U32 c
-p |U32 |to_uni_lower |U32 c
-p |bool |is_uni_alnum_lc|U32 c
-p |bool |is_uni_alnumc_lc|U32 c
-p |bool |is_uni_idfirst_lc|U32 c
-p |bool |is_uni_alpha_lc|U32 c
-p |bool |is_uni_ascii_lc|U32 c
-p |bool |is_uni_space_lc|U32 c
-p |bool |is_uni_cntrl_lc|U32 c
-p |bool |is_uni_graph_lc|U32 c
-p |bool |is_uni_digit_lc|U32 c
-p |bool |is_uni_upper_lc|U32 c
-p |bool |is_uni_lower_lc|U32 c
-p |bool |is_uni_print_lc|U32 c
-p |bool |is_uni_punct_lc|U32 c
-p |bool |is_uni_xdigit_lc|U32 c
-p |U32 |to_uni_upper_lc|U32 c
-p |U32 |to_uni_title_lc|U32 c
-p |U32 |to_uni_lower_lc|U32 c
-p |bool |is_utf8_alnum |U8 *p
-p |bool |is_utf8_alnumc |U8 *p
-p |bool |is_utf8_idfirst|U8 *p
-p |bool |is_utf8_alpha |U8 *p
-p |bool |is_utf8_ascii |U8 *p
-p |bool |is_utf8_space |U8 *p
-p |bool |is_utf8_cntrl |U8 *p
-p |bool |is_utf8_digit |U8 *p
-p |bool |is_utf8_graph |U8 *p
-p |bool |is_utf8_upper |U8 *p
-p |bool |is_utf8_lower |U8 *p
-p |bool |is_utf8_print |U8 *p
-p |bool |is_utf8_punct |U8 *p
-p |bool |is_utf8_xdigit |U8 *p
-p |bool |is_utf8_mark |U8 *p
+Ap |bool |is_uni_alnum |U32 c
+Ap |bool |is_uni_alnumc |U32 c
+Ap |bool |is_uni_idfirst |U32 c
+Ap |bool |is_uni_alpha |U32 c
+Ap |bool |is_uni_ascii |U32 c
+Ap |bool |is_uni_space |U32 c
+Ap |bool |is_uni_cntrl |U32 c
+Ap |bool |is_uni_graph |U32 c
+Ap |bool |is_uni_digit |U32 c
+Ap |bool |is_uni_upper |U32 c
+Ap |bool |is_uni_lower |U32 c
+Ap |bool |is_uni_print |U32 c
+Ap |bool |is_uni_punct |U32 c
+Ap |bool |is_uni_xdigit |U32 c
+Ap |U32 |to_uni_upper |U32 c
+Ap |U32 |to_uni_title |U32 c
+Ap |U32 |to_uni_lower |U32 c
+Ap |bool |is_uni_alnum_lc|U32 c
+Ap |bool |is_uni_alnumc_lc|U32 c
+Ap |bool |is_uni_idfirst_lc|U32 c
+Ap |bool |is_uni_alpha_lc|U32 c
+Ap |bool |is_uni_ascii_lc|U32 c
+Ap |bool |is_uni_space_lc|U32 c
+Ap |bool |is_uni_cntrl_lc|U32 c
+Ap |bool |is_uni_graph_lc|U32 c
+Ap |bool |is_uni_digit_lc|U32 c
+Ap |bool |is_uni_upper_lc|U32 c
+Ap |bool |is_uni_lower_lc|U32 c
+Ap |bool |is_uni_print_lc|U32 c
+Ap |bool |is_uni_punct_lc|U32 c
+Ap |bool |is_uni_xdigit_lc|U32 c
+Ap |U32 |to_uni_upper_lc|U32 c
+Ap |U32 |to_uni_title_lc|U32 c
+Ap |U32 |to_uni_lower_lc|U32 c
+Ap |bool |is_utf8_alnum |U8 *p
+Ap |bool |is_utf8_alnumc |U8 *p
+Ap |bool |is_utf8_idfirst|U8 *p
+Ap |bool |is_utf8_alpha |U8 *p
+Ap |bool |is_utf8_ascii |U8 *p
+Ap |bool |is_utf8_space |U8 *p
+Ap |bool |is_utf8_cntrl |U8 *p
+Ap |bool |is_utf8_digit |U8 *p
+Ap |bool |is_utf8_graph |U8 *p
+Ap |bool |is_utf8_upper |U8 *p
+Ap |bool |is_utf8_lower |U8 *p
+Ap |bool |is_utf8_print |U8 *p
+Ap |bool |is_utf8_punct |U8 *p
+Ap |bool |is_utf8_xdigit |U8 *p
+Ap |bool |is_utf8_mark |U8 *p
p |OP* |jmaybe |OP* arg
p |I32 |keyword |char* d|I32 len
p |void |leave_scope |I32 base
@@ -1415,7 +1614,7 @@ p |OP* |linklist |OP* o
p |OP* |list |OP* o
p |OP* |listkids |OP* o
p |OP* |localize |OP* arg|I32 lexical
-p |I32 |looks_like_number|SV* sv
+Apd |I32 |looks_like_number|SV* sv
p |int |magic_clearenv |SV* sv|MAGIC* mg
p |int |magic_clear_all_env|SV* sv|MAGIC* mg
p |int |magic_clearpack|SV* sv|MAGIC* mg
@@ -1467,109 +1666,109 @@ p |int |magic_set_all_env|SV* sv|MAGIC* mg
p |U32 |magic_sizepack |SV* sv|MAGIC* mg
p |int |magic_wipepack |SV* sv|MAGIC* mg
p |void |magicname |char* sym|char* name|I32 namlen
-p |void |markstack_grow
+Ap |void |markstack_grow
#if defined(USE_LOCALE_COLLATE)
p |char* |mem_collxfrm |const char* s|STRLEN len|STRLEN* xlen
#endif
-fp |SV* |mess |const char* pat|...
-p |SV* |vmess |const char* pat|va_list* args
+Afp |SV* |mess |const char* pat|...
+Ap |SV* |vmess |const char* pat|va_list* args
p |void |qerror |SV* err
-p |int |mg_clear |SV* sv
-p |int |mg_copy |SV* sv|SV* nsv|const char* key|I32 klen
-p |MAGIC* |mg_find |SV* sv|int type
-p |int |mg_free |SV* sv
-p |int |mg_get |SV* sv
-p |U32 |mg_length |SV* sv
-p |void |mg_magical |SV* sv
-p |int |mg_set |SV* sv
-p |I32 |mg_size |SV* sv
+Apd |int |mg_clear |SV* sv
+Apd |int |mg_copy |SV* sv|SV* nsv|const char* key|I32 klen
+Apd |MAGIC* |mg_find |SV* sv|int type
+Apd |int |mg_free |SV* sv
+Apd |int |mg_get |SV* sv
+Apd |U32 |mg_length |SV* sv
+Apd |void |mg_magical |SV* sv
+Apd |int |mg_set |SV* sv
+Ap |I32 |mg_size |SV* sv
p |OP* |mod |OP* o|I32 type
p |char* |moreswitches |char* s
p |OP* |my |OP* o
-p |NV |my_atof |const char *s
+Ap |NV |my_atof |const char *s
#if !defined(HAS_BCOPY) || !defined(HAS_SAFE_BCOPY)
-np |char* |my_bcopy |const char* from|char* to|I32 len
+Anp |char* |my_bcopy |const char* from|char* to|I32 len
#endif
#if !defined(HAS_BZERO) && !defined(HAS_MEMSET)
-np |char* |my_bzero |char* loc|I32 len
+Anp |char* |my_bzero |char* loc|I32 len
#endif
-pr |void |my_exit |U32 status
-pr |void |my_failure_exit
-p |I32 |my_fflush_all
-p |I32 |my_lstat
+Apr |void |my_exit |U32 status
+Apr |void |my_failure_exit
+Ap |I32 |my_fflush_all
+Ap |I32 |my_lstat
#if !defined(HAS_MEMCMP) || !defined(HAS_SANE_MEMCMP)
-np |I32 |my_memcmp |const char* s1|const char* s2|I32 len
+Anp |I32 |my_memcmp |const char* s1|const char* s2|I32 len
#endif
#if !defined(HAS_MEMSET)
-np |void* |my_memset |char* loc|I32 ch|I32 len
+Anp |void* |my_memset |char* loc|I32 ch|I32 len
#endif
#if !defined(PERL_OBJECT)
-p |I32 |my_pclose |PerlIO* ptr
-p |PerlIO*|my_popen |char* cmd|char* mode
+Ap |I32 |my_pclose |PerlIO* ptr
+Ap |PerlIO*|my_popen |char* cmd|char* mode
#endif
-p |void |my_setenv |char* nam|char* val
-p |I32 |my_stat
+Ap |void |my_setenv |char* nam|char* val
+Ap |I32 |my_stat
#if defined(MYSWAP)
-p |short |my_swap |short s
-p |long |my_htonl |long l
-p |long |my_ntohl |long l
+Ap |short |my_swap |short s
+Ap |long |my_htonl |long l
+Ap |long |my_ntohl |long l
#endif
p |void |my_unexec
-p |OP* |newANONLIST |OP* o
-p |OP* |newANONHASH |OP* o
-p |OP* |newANONSUB |I32 floor|OP* proto|OP* block
-p |OP* |newASSIGNOP |I32 flags|OP* left|I32 optype|OP* right
-p |OP* |newCONDOP |I32 flags|OP* expr|OP* trueop|OP* falseop
-p |void |newCONSTSUB |HV* stash|char* name|SV* sv
-p |void |newFORM |I32 floor|OP* o|OP* block
-p |OP* |newFOROP |I32 flags|char* label|line_t forline \
+Ap |OP* |newANONLIST |OP* o
+Ap |OP* |newANONHASH |OP* o
+Ap |OP* |newANONSUB |I32 floor|OP* proto|OP* block
+Ap |OP* |newASSIGNOP |I32 flags|OP* left|I32 optype|OP* right
+Ap |OP* |newCONDOP |I32 flags|OP* expr|OP* trueop|OP* falseop
+Apd |void |newCONSTSUB |HV* stash|char* name|SV* sv
+Ap |void |newFORM |I32 floor|OP* o|OP* block
+Ap |OP* |newFOROP |I32 flags|char* label|line_t forline \
|OP* sclr|OP* expr|OP*block|OP*cont
-p |OP* |newLOGOP |I32 optype|I32 flags|OP* left|OP* right
-p |OP* |newLOOPEX |I32 type|OP* label
-p |OP* |newLOOPOP |I32 flags|I32 debuggable|OP* expr|OP* block
-p |OP* |newNULLLIST
-p |OP* |newOP |I32 optype|I32 flags
-p |void |newPROG |OP* o
-p |OP* |newRANGE |I32 flags|OP* left|OP* right
-p |OP* |newSLICEOP |I32 flags|OP* subscript|OP* listop
-p |OP* |newSTATEOP |I32 flags|char* label|OP* o
-p |CV* |newSUB |I32 floor|OP* o|OP* proto|OP* block
-p |CV* |newXS |char* name|XSUBADDR_t f|char* filename
-p |AV* |newAV
-p |OP* |newAVREF |OP* o
-p |OP* |newBINOP |I32 type|I32 flags|OP* first|OP* last
-p |OP* |newCVREF |I32 flags|OP* o
-p |OP* |newGVOP |I32 type|I32 flags|GV* gv
-p |GV* |newGVgen |char* pack
-p |OP* |newGVREF |I32 type|OP* o
-p |OP* |newHVREF |OP* o
-p |HV* |newHV
-p |HV* |newHVhv |HV* hv
-p |IO* |newIO
-p |OP* |newLISTOP |I32 type|I32 flags|OP* first|OP* last
-p |OP* |newPADOP |I32 type|I32 flags|SV* sv
-p |OP* |newPMOP |I32 type|I32 flags
-p |OP* |newPVOP |I32 type|I32 flags|char* pv
-p |SV* |newRV |SV* pref
-p |SV* |newRV_noinc |SV *sv
-p |SV* |newSV |STRLEN len
-p |OP* |newSVREF |OP* o
-p |OP* |newSVOP |I32 type|I32 flags|SV* sv
-p |SV* |newSViv |IV i
-p |SV* |newSVnv |NV n
-p |SV* |newSVpv |const char* s|STRLEN len
-p |SV* |newSVpvn |const char* s|STRLEN len
-fp |SV* |newSVpvf |const char* pat|...
-p |SV* |vnewSVpvf |const char* pat|va_list* args
-p |SV* |newSVrv |SV* rv|const char* classname
-p |SV* |newSVsv |SV* old
-p |OP* |newUNOP |I32 type|I32 flags|OP* first
-p |OP* |newWHILEOP |I32 flags|I32 debuggable|LOOP* loop \
+Ap |OP* |newLOGOP |I32 optype|I32 flags|OP* left|OP* right
+Ap |OP* |newLOOPEX |I32 type|OP* label
+Ap |OP* |newLOOPOP |I32 flags|I32 debuggable|OP* expr|OP* block
+Ap |OP* |newNULLLIST
+Ap |OP* |newOP |I32 optype|I32 flags
+Ap |void |newPROG |OP* o
+Ap |OP* |newRANGE |I32 flags|OP* left|OP* right
+Ap |OP* |newSLICEOP |I32 flags|OP* subscript|OP* listop
+Ap |OP* |newSTATEOP |I32 flags|char* label|OP* o
+Ap |CV* |newSUB |I32 floor|OP* o|OP* proto|OP* block
+Apd |CV* |newXS |char* name|XSUBADDR_t f|char* filename
+Apd |AV* |newAV
+Ap |OP* |newAVREF |OP* o
+Ap |OP* |newBINOP |I32 type|I32 flags|OP* first|OP* last
+Ap |OP* |newCVREF |I32 flags|OP* o
+Ap |OP* |newGVOP |I32 type|I32 flags|GV* gv
+Ap |GV* |newGVgen |char* pack
+Ap |OP* |newGVREF |I32 type|OP* o
+Ap |OP* |newHVREF |OP* o
+Apd |HV* |newHV
+Ap |HV* |newHVhv |HV* hv
+Ap |IO* |newIO
+Ap |OP* |newLISTOP |I32 type|I32 flags|OP* first|OP* last
+Ap |OP* |newPADOP |I32 type|I32 flags|SV* sv
+Ap |OP* |newPMOP |I32 type|I32 flags
+Ap |OP* |newPVOP |I32 type|I32 flags|char* pv
+Ap |SV* |newRV |SV* pref
+Apd |SV* |newRV_noinc |SV *sv
+Ap |SV* |newSV |STRLEN len
+Ap |OP* |newSVREF |OP* o
+Ap |OP* |newSVOP |I32 type|I32 flags|SV* sv
+Apd |SV* |newSViv |IV i
+Apd |SV* |newSVnv |NV n
+Apd |SV* |newSVpv |const char* s|STRLEN len
+Apd |SV* |newSVpvn |const char* s|STRLEN len
+Afpd |SV* |newSVpvf |const char* pat|...
+Ap |SV* |vnewSVpvf |const char* pat|va_list* args
+Apd |SV* |newSVrv |SV* rv|const char* classname
+Apd |SV* |newSVsv |SV* old
+Ap |OP* |newUNOP |I32 type|I32 flags|OP* first
+Ap |OP* |newWHILEOP |I32 flags|I32 debuggable|LOOP* loop \
|I32 whileline|OP* expr|OP* block|OP* cont
p |PERL_SI*|new_stackinfo|I32 stitems|I32 cxitems
p |PerlIO*|nextargv |GV* gv
-p |char* |ninstr |const char* big|const char* bigend \
+Ap |char* |ninstr |const char* big|const char* bigend \
|const char* little|const char* lend
p |OP* |oopsCV |OP* o
p |void |op_free |OP* arg
@@ -1586,48 +1785,48 @@ p |void |pad_reset
p |void |pad_swipe |PADOFFSET po
p |void |peep |OP* o
#if defined(PERL_OBJECT)
-ox |void |Perl_construct
-ox |void |Perl_destruct
-ox |void |Perl_free
-ox |int |Perl_run
-ox |int |Perl_parse |XSINIT_t xsinit \
+Aox |void |Perl_construct
+Aox |void |Perl_destruct
+Aox |void |Perl_free
+Aox |int |Perl_run
+Aox |int |Perl_parse |XSINIT_t xsinit \
|int argc|char** argv|char** env
#endif
#if defined(USE_THREADS)
-p |struct perl_thread* |new_struct_thread|struct perl_thread *t
+Ap |struct perl_thread* |new_struct_thread|struct perl_thread *t
#endif
-p |void |call_atexit |ATEXIT_t fn|void *ptr
-p |I32 |call_argv |const char* sub_name|I32 flags|char** argv
-p |I32 |call_method |const char* methname|I32 flags
-p |I32 |call_pv |const char* sub_name|I32 flags
-p |I32 |call_sv |SV* sv|I32 flags
-p |SV* |eval_pv |const char* p|I32 croak_on_error
-p |I32 |eval_sv |SV* sv|I32 flags
-p |SV* |get_sv |const char* name|I32 create
-p |AV* |get_av |const char* name|I32 create
-p |HV* |get_hv |const char* name|I32 create
-p |CV* |get_cv |const char* name|I32 create
+Ap |void |call_atexit |ATEXIT_t fn|void *ptr
+Apd |I32 |call_argv |const char* sub_name|I32 flags|char** argv
+Apd |I32 |call_method |const char* methname|I32 flags
+Apd |I32 |call_pv |const char* sub_name|I32 flags
+Apd |I32 |call_sv |SV* sv|I32 flags
+Apd |SV* |eval_pv |const char* p|I32 croak_on_error
+Apd |I32 |eval_sv |SV* sv|I32 flags
+Apd |SV* |get_sv |const char* name|I32 create
+Apd |AV* |get_av |const char* name|I32 create
+Apd |HV* |get_hv |const char* name|I32 create
+Apd |CV* |get_cv |const char* name|I32 create
p |int |init_i18nl10n |int printwarn
p |int |init_i18nl14n |int printwarn
-p |void |new_collate |const char* newcoll
-p |void |new_ctype |const char* newctype
-p |void |new_numeric |const char* newcoll
-p |void |set_numeric_local
-p |void |set_numeric_radix
-p |void |set_numeric_standard
-p |void |require_pv |const char* pv
+Ap |void |new_collate |const char* newcoll
+Ap |void |new_ctype |const char* newctype
+Ap |void |new_numeric |const char* newcoll
+Ap |void |set_numeric_local
+Ap |void |set_numeric_radix
+Ap |void |set_numeric_standard
+Apd |void |require_pv |const char* pv
p |void |pidgone |Pid_t pid|int status
p |void |pmflag |U16* pmfl|int ch
p |OP* |pmruntime |OP* pm|OP* expr|OP* repl
p |OP* |pmtrans |OP* o|OP* expr|OP* repl
p |OP* |pop_return
-p |void |pop_scope
+Ap |void |pop_scope
p |OP* |prepend_elem |I32 optype|OP* head|OP* tail
p |void |push_return |OP* o
-p |void |push_scope
+Ap |void |push_scope
p |OP* |ref |OP* o|I32 type
p |OP* |refkids |OP* o|I32 type
-p |void |regdump |regexp* r
+Ap |void |regdump |regexp* r
p |I32 |pregexec |regexp* prog|char* stringarg \
|char* strend|char* strbeg|I32 minend \
|SV* screamer|U32 nosave
@@ -1643,7 +1842,7 @@ p |I32 |regexec_flags |regexp* prog|char* stringarg \
p |regnode*|regnext |regnode* p
p |void |regprop |SV* sv|regnode* o
p |void |repeatcpy |char* to|const char* from|I32 len|I32 count
-p |char* |rninstr |const char* big|const char* bigend \
+Ap |char* |rninstr |const char* big|const char* bigend \
|const char* little|const char* lend
p |Sighandler_t|rsignal |int i|Sighandler_t t
p |int |rsignal_restore|int i|Sigsave_t* t
@@ -1655,43 +1854,43 @@ p |void |rxres_save |void** rsp|REGEXP* prx
#if !defined(HAS_RENAME)
p |I32 |same_dirent |char* a|char* b
#endif
-p |char* |savepv |const char* sv
-p |char* |savepvn |const char* sv|I32 len
-p |void |savestack_grow
-p |void |save_aelem |AV* av|I32 idx|SV **sptr
-p |I32 |save_alloc |I32 size|I32 pad
-p |void |save_aptr |AV** aptr
-p |AV* |save_ary |GV* gv
-p |void |save_clearsv |SV** svp
-p |void |save_delete |HV* hv|char* key|I32 klen
-p |void |save_destructor|DESTRUCTORFUNC_NOCONTEXT_t f|void* p
-p |void |save_destructor_x|DESTRUCTORFUNC_t f|void* p
-p |void |save_freesv |SV* sv
+Apd |char* |savepv |const char* sv
+Apd |char* |savepvn |const char* sv|I32 len
+Ap |void |savestack_grow
+Ap |void |save_aelem |AV* av|I32 idx|SV **sptr
+Ap |I32 |save_alloc |I32 size|I32 pad
+Ap |void |save_aptr |AV** aptr
+Ap |AV* |save_ary |GV* gv
+Ap |void |save_clearsv |SV** svp
+Ap |void |save_delete |HV* hv|char* key|I32 klen
+Ap |void |save_destructor|DESTRUCTORFUNC_NOCONTEXT_t f|void* p
+Ap |void |save_destructor_x|DESTRUCTORFUNC_t f|void* p
+Ap |void |save_freesv |SV* sv
p |void |save_freeop |OP* o
-p |void |save_freepv |char* pv
-p |void |save_generic_svref|SV** sptr
-p |void |save_gp |GV* gv|I32 empty
-p |HV* |save_hash |GV* gv
-p |void |save_helem |HV* hv|SV *key|SV **sptr
-p |void |save_hints
-p |void |save_hptr |HV** hptr
-p |void |save_I16 |I16* intp
-p |void |save_I32 |I32* intp
-p |void |save_I8 |I8* bytep
-p |void |save_int |int* intp
-p |void |save_item |SV* item
-p |void |save_iv |IV* iv
-p |void |save_list |SV** sarg|I32 maxsarg
-p |void |save_long |long* longp
-p |void |save_nogv |GV* gv
+Ap |void |save_freepv |char* pv
+Ap |void |save_generic_svref|SV** sptr
+Ap |void |save_gp |GV* gv|I32 empty
+Ap |HV* |save_hash |GV* gv
+Ap |void |save_helem |HV* hv|SV *key|SV **sptr
+Ap |void |save_hints
+Ap |void |save_hptr |HV** hptr
+Ap |void |save_I16 |I16* intp
+Ap |void |save_I32 |I32* intp
+Ap |void |save_I8 |I8* bytep
+Ap |void |save_int |int* intp
+Ap |void |save_item |SV* item
+Ap |void |save_iv |IV* iv
+Ap |void |save_list |SV** sarg|I32 maxsarg
+Ap |void |save_long |long* longp
+Ap |void |save_nogv |GV* gv
p |void |save_op
-p |SV* |save_scalar |GV* gv
-p |void |save_pptr |char** pptr
-p |void |save_vptr |void* pptr
-p |void |save_re_context
-p |void |save_sptr |SV** sptr
-p |SV* |save_svref |SV** sptr
-p |SV** |save_threadsv |PADOFFSET i
+Ap |SV* |save_scalar |GV* gv
+Ap |void |save_pptr |char** pptr
+Ap |void |save_vptr |void* pptr
+Ap |void |save_re_context
+Ap |void |save_sptr |SV** sptr
+Ap |SV* |save_svref |SV** sptr
+Ap |SV** |save_threadsv |PADOFFSET i
p |OP* |sawparens |OP* o
p |OP* |scalar |OP* o
p |OP* |scalarkids |OP* o
@@ -1711,111 +1910,111 @@ p |void |setdefout |GV* gv
p |char* |sharepvn |const char* sv|I32 len|U32 hash
p |HEK* |share_hek |const char* sv|I32 len|U32 hash
np |Signal_t |sighandler |int sig
-p |SV** |stack_grow |SV** sp|SV**p|int n
-p |I32 |start_subparse |I32 is_format|U32 flags
+Ap |SV** |stack_grow |SV** sp|SV**p|int n
+Ap |I32 |start_subparse |I32 is_format|U32 flags
p |void |sub_crush_depth|CV* cv
-p |bool |sv_2bool |SV* sv
-p |CV* |sv_2cv |SV* sv|HV** st|GV** gvp|I32 lref
-p |IO* |sv_2io |SV* sv
-p |IV |sv_2iv |SV* sv
-p |SV* |sv_2mortal |SV* sv
-p |NV |sv_2nv |SV* sv
-p |char* |sv_2pv |SV* sv|STRLEN* lp
-p |char* |sv_2pvutf8 |SV* sv|STRLEN* lp
-p |char* |sv_2pvbyte |SV* sv|STRLEN* lp
-p |UV |sv_2uv |SV* sv
-p |IV |sv_iv |SV* sv
-p |UV |sv_uv |SV* sv
-p |NV |sv_nv |SV* sv
-p |char* |sv_pvn |SV *sv|STRLEN *len
-p |char* |sv_pvutf8n |SV *sv|STRLEN *len
-p |char* |sv_pvbyten |SV *sv|STRLEN *len
-p |I32 |sv_true |SV *sv
+Ap |bool |sv_2bool |SV* sv
+Ap |CV* |sv_2cv |SV* sv|HV** st|GV** gvp|I32 lref
+Ap |IO* |sv_2io |SV* sv
+Ap |IV |sv_2iv |SV* sv
+Apd |SV* |sv_2mortal |SV* sv
+Ap |NV |sv_2nv |SV* sv
+Ap |char* |sv_2pv |SV* sv|STRLEN* lp
+Ap |char* |sv_2pvutf8 |SV* sv|STRLEN* lp
+Ap |char* |sv_2pvbyte |SV* sv|STRLEN* lp
+Ap |UV |sv_2uv |SV* sv
+Ap |IV |sv_iv |SV* sv
+Ap |UV |sv_uv |SV* sv
+Ap |NV |sv_nv |SV* sv
+Ap |char* |sv_pvn |SV *sv|STRLEN *len
+Ap |char* |sv_pvutf8n |SV *sv|STRLEN *len
+Ap |char* |sv_pvbyten |SV *sv|STRLEN *len
+Ap |I32 |sv_true |SV *sv
p |void |sv_add_arena |char* ptr|U32 size|U32 flags
-p |int |sv_backoff |SV* sv
-p |SV* |sv_bless |SV* sv|HV* stash
-fp |void |sv_catpvf |SV* sv|const char* pat|...
-p |void |sv_vcatpvf |SV* sv|const char* pat|va_list* args
-p |void |sv_catpv |SV* sv|const char* ptr
-p |void |sv_catpvn |SV* sv|const char* ptr|STRLEN len
-p |void |sv_catsv |SV* dsv|SV* ssv
-p |void |sv_chop |SV* sv|char* ptr
+Ap |int |sv_backoff |SV* sv
+Apd |SV* |sv_bless |SV* sv|HV* stash
+Afpd |void |sv_catpvf |SV* sv|const char* pat|...
+Ap |void |sv_vcatpvf |SV* sv|const char* pat|va_list* args
+Apd |void |sv_catpv |SV* sv|const char* ptr
+Apd |void |sv_catpvn |SV* sv|const char* ptr|STRLEN len
+Apd |void |sv_catsv |SV* dsv|SV* ssv
+Apd |void |sv_chop |SV* sv|char* ptr
p |void |sv_clean_all
p |void |sv_clean_objs
-p |void |sv_clear |SV* sv
-p |I32 |sv_cmp |SV* sv1|SV* sv2
-p |I32 |sv_cmp_locale |SV* sv1|SV* sv2
+Ap |void |sv_clear |SV* sv
+Apd |I32 |sv_cmp |SV* sv1|SV* sv2
+Ap |I32 |sv_cmp_locale |SV* sv1|SV* sv2
#if defined(USE_LOCALE_COLLATE)
-p |char* |sv_collxfrm |SV* sv|STRLEN* nxp
+Ap |char* |sv_collxfrm |SV* sv|STRLEN* nxp
#endif
p |OP* |sv_compile_2op |SV* sv|OP** startp|char* code|AV** avp
-p |void |sv_dec |SV* sv
-p |void |sv_dump |SV* sv
-p |bool |sv_derived_from|SV* sv|const char* name
-p |I32 |sv_eq |SV* sv1|SV* sv2
-p |void |sv_free |SV* sv
+Apd |void |sv_dec |SV* sv
+Ap |void |sv_dump |SV* sv
+Apd |bool |sv_derived_from|SV* sv|const char* name
+Apd |I32 |sv_eq |SV* sv1|SV* sv2
+Ap |void |sv_free |SV* sv
p |void |sv_free_arenas
p |char* |sv_gets |SV* sv|PerlIO* fp|I32 append
-p |char* |sv_grow |SV* sv|STRLEN newlen
-p |void |sv_inc |SV* sv
-p |void |sv_insert |SV* bigsv|STRLEN offset|STRLEN len \
+Apd |char* |sv_grow |SV* sv|STRLEN newlen
+Apd |void |sv_inc |SV* sv
+Apd |void |sv_insert |SV* bigsv|STRLEN offset|STRLEN len \
|char* little|STRLEN littlelen
-p |int |sv_isa |SV* sv|const char* name
-p |int |sv_isobject |SV* sv
-p |STRLEN |sv_len |SV* sv
-p |STRLEN |sv_len_utf8 |SV* sv
-p |void |sv_magic |SV* sv|SV* obj|int how|const char* name \
+Apd |int |sv_isa |SV* sv|const char* name
+Apd |int |sv_isobject |SV* sv
+Apd |STRLEN |sv_len |SV* sv
+Ap |STRLEN |sv_len_utf8 |SV* sv
+Apd |void |sv_magic |SV* sv|SV* obj|int how|const char* name \
|I32 namlen
-p |SV* |sv_mortalcopy |SV* oldsv
-p |SV* |sv_newmortal
-p |SV* |sv_newref |SV* sv
-p |char* |sv_peek |SV* sv
-p |void |sv_pos_u2b |SV* sv|I32* offsetp|I32* lenp
-p |void |sv_pos_b2u |SV* sv|I32* offsetp
-p |char* |sv_pvn_force |SV* sv|STRLEN* lp
-p |char* |sv_pvutf8n_force|SV* sv|STRLEN* lp
-p |char* |sv_pvbyten_force|SV* sv|STRLEN* lp
-p |char* |sv_reftype |SV* sv|int ob
-p |void |sv_replace |SV* sv|SV* nsv
-p |void |sv_report_used
-p |void |sv_reset |char* s|HV* stash
-fp |void |sv_setpvf |SV* sv|const char* pat|...
-p |void |sv_vsetpvf |SV* sv|const char* pat|va_list* args
-p |void |sv_setiv |SV* sv|IV num
-p |void |sv_setpviv |SV* sv|IV num
-p |void |sv_setuv |SV* sv|UV num
-p |void |sv_setnv |SV* sv|NV num
-p |SV* |sv_setref_iv |SV* rv|const char* classname|IV iv
-p |SV* |sv_setref_nv |SV* rv|const char* classname|NV nv
-p |SV* |sv_setref_pv |SV* rv|const char* classname|void* pv
-p |SV* |sv_setref_pvn |SV* rv|const char* classname|char* pv \
+Apd |SV* |sv_mortalcopy |SV* oldsv
+Apd |SV* |sv_newmortal
+Ap |SV* |sv_newref |SV* sv
+Ap |char* |sv_peek |SV* sv
+Ap |void |sv_pos_u2b |SV* sv|I32* offsetp|I32* lenp
+Ap |void |sv_pos_b2u |SV* sv|I32* offsetp
+Ap |char* |sv_pvn_force |SV* sv|STRLEN* lp
+Ap |char* |sv_pvutf8n_force|SV* sv|STRLEN* lp
+Ap |char* |sv_pvbyten_force|SV* sv|STRLEN* lp
+Ap |char* |sv_reftype |SV* sv|int ob
+Ap |void |sv_replace |SV* sv|SV* nsv
+Ap |void |sv_report_used
+Ap |void |sv_reset |char* s|HV* stash
+Afpd |void |sv_setpvf |SV* sv|const char* pat|...
+Ap |void |sv_vsetpvf |SV* sv|const char* pat|va_list* args
+Apd |void |sv_setiv |SV* sv|IV num
+Apd |void |sv_setpviv |SV* sv|IV num
+Apd |void |sv_setuv |SV* sv|UV num
+Apd |void |sv_setnv |SV* sv|NV num
+Apd |SV* |sv_setref_iv |SV* rv|const char* classname|IV iv
+Apd |SV* |sv_setref_nv |SV* rv|const char* classname|NV nv
+Apd |SV* |sv_setref_pv |SV* rv|const char* classname|void* pv
+Apd |SV* |sv_setref_pvn |SV* rv|const char* classname|char* pv \
|STRLEN n
-p |void |sv_setpv |SV* sv|const char* ptr
-p |void |sv_setpvn |SV* sv|const char* ptr|STRLEN len
-p |void |sv_setsv |SV* dsv|SV* ssv
-p |void |sv_taint |SV* sv
-p |bool |sv_tainted |SV* sv
-p |int |sv_unmagic |SV* sv|int type
-p |void |sv_unref |SV* sv
-p |void |sv_untaint |SV* sv
-p |bool |sv_upgrade |SV* sv|U32 mt
-p |void |sv_usepvn |SV* sv|char* ptr|STRLEN len
-p |void |sv_vcatpvfn |SV* sv|const char* pat|STRLEN patlen \
+Apd |void |sv_setpv |SV* sv|const char* ptr
+Apd |void |sv_setpvn |SV* sv|const char* ptr|STRLEN len
+Apd |void |sv_setsv |SV* dsv|SV* ssv
+Ap |void |sv_taint |SV* sv
+Ap |bool |sv_tainted |SV* sv
+Ap |int |sv_unmagic |SV* sv|int type
+Apd |void |sv_unref |SV* sv
+Ap |void |sv_untaint |SV* sv
+Apd |bool |sv_upgrade |SV* sv|U32 mt
+Apd |void |sv_usepvn |SV* sv|char* ptr|STRLEN len
+Apd |void |sv_vcatpvfn |SV* sv|const char* pat|STRLEN patlen \
|va_list* args|SV** svargs|I32 svmax \
|bool *maybe_tainted
-p |void |sv_vsetpvfn |SV* sv|const char* pat|STRLEN patlen \
+Apd |void |sv_vsetpvfn |SV* sv|const char* pat|STRLEN patlen \
|va_list* args|SV** svargs|I32 svmax \
|bool *maybe_tainted
p |SV* |swash_init |char* pkg|char* name|SV* listsv \
|I32 minbits|I32 none
p |UV |swash_fetch |SV *sv|U8 *ptr
-p |void |taint_env
-p |void |taint_proper |const char* f|const char* s
-p |UV |to_utf8_lower |U8 *p
-p |UV |to_utf8_upper |U8 *p
-p |UV |to_utf8_title |U8 *p
+Ap |void |taint_env
+Ap |void |taint_proper |const char* f|const char* s
+Ap |UV |to_utf8_lower |U8 *p
+Ap |UV |to_utf8_upper |U8 *p
+Ap |UV |to_utf8_title |U8 *p
#if defined(UNLINK_ALL_VERSIONS)
-p |I32 |unlnk |char* f
+Ap |I32 |unlnk |char* f
#endif
#if defined(USE_THREADS)
p |void |unlock_condpair|void* svv
@@ -1823,21 +2022,21 @@ p |void |unlock_condpair|void* svv
p |void |unsharepvn |const char* sv|I32 len|U32 hash
p |void |unshare_hek |HEK* hek
p |void |utilize |int aver|I32 floor|OP* version|OP* id|OP* arg
-p |U8* |utf16_to_utf8 |U16* p|U8 *d|I32 bytelen
-p |U8* |utf16_to_utf8_reversed|U16* p|U8 *d|I32 bytelen
-p |I32 |utf8_distance |U8 *a|U8 *b
-p |U8* |utf8_hop |U8 *s|I32 off
-p |UV |utf8_to_uv |U8 *s|I32* retlen
-p |U8* |uv_to_utf8 |U8 *d|UV uv
+Ap |U8* |utf16_to_utf8 |U16* p|U8 *d|I32 bytelen
+Ap |U8* |utf16_to_utf8_reversed|U16* p|U8 *d|I32 bytelen
+Ap |I32 |utf8_distance |U8 *a|U8 *b
+Ap |U8* |utf8_hop |U8 *s|I32 off
+Ap |UV |utf8_to_uv |U8 *s|I32* retlen
+Ap |U8* |uv_to_utf8 |U8 *d|UV uv
p |void |vivify_defelem |SV* sv
p |void |vivify_ref |SV* sv|U32 to_what
p |I32 |wait4pid |Pid_t pid|int* statusp|int flags
p |void |report_closed_fh|GV *gv|IO *io|const char *func|const char *obj
p |void |report_uninit
-fp |void |warn |const char* pat|...
-p |void |vwarn |const char* pat|va_list* args
-fp |void |warner |U32 err|const char* pat|...
-p |void |vwarner |U32 err|const char* pat|va_list* args
+Afpd |void |warn |const char* pat|...
+Ap |void |vwarn |const char* pat|va_list* args
+Afp |void |warner |U32 err|const char* pat|...
+Ap |void |vwarner |U32 err|const char* pat|va_list* args
p |void |watch |char** addr
p |I32 |whichsig |char* sig
p |int |yyerror |char* s
@@ -1849,94 +2048,94 @@ p |int |yylex
p |int |yyparse
p |int |yywarn |char* s
#if defined(MYMALLOC)
-p |void |dump_mstats |char* s
+Ap |void |dump_mstats |char* s
#endif
-np |Malloc_t|safesysmalloc |MEM_SIZE nbytes
-np |Malloc_t|safesyscalloc |MEM_SIZE elements|MEM_SIZE size
-np |Malloc_t|safesysrealloc|Malloc_t where|MEM_SIZE nbytes
-np |Free_t |safesysfree |Malloc_t where
+Anp |Malloc_t|safesysmalloc |MEM_SIZE nbytes
+Anp |Malloc_t|safesyscalloc |MEM_SIZE elements|MEM_SIZE size
+Anp |Malloc_t|safesysrealloc|Malloc_t where|MEM_SIZE nbytes
+Anp |Free_t |safesysfree |Malloc_t where
#if defined(LEAKTEST)
-np |Malloc_t|safexmalloc |I32 x|MEM_SIZE size
-np |Malloc_t|safexcalloc |I32 x|MEM_SIZE elements|MEM_SIZE size
-np |Malloc_t|safexrealloc |Malloc_t where|MEM_SIZE size
-np |void |safexfree |Malloc_t where
+Anp |Malloc_t|safexmalloc |I32 x|MEM_SIZE size
+Anp |Malloc_t|safexcalloc |I32 x|MEM_SIZE elements|MEM_SIZE size
+Anp |Malloc_t|safexrealloc |Malloc_t where|MEM_SIZE size
+Anp |void |safexfree |Malloc_t where
#endif
#if defined(PERL_GLOBAL_STRUCT)
-p |struct perl_vars *|GetVars
+Ap |struct perl_vars *|GetVars
#endif
-p |int |runops_standard
-p |int |runops_debug
-fp |void |sv_catpvf_mg |SV *sv|const char* pat|...
-p |void |sv_vcatpvf_mg |SV* sv|const char* pat|va_list* args
-p |void |sv_catpv_mg |SV *sv|const char *ptr
-p |void |sv_catpvn_mg |SV *sv|const char *ptr|STRLEN len
-p |void |sv_catsv_mg |SV *dstr|SV *sstr
-fp |void |sv_setpvf_mg |SV *sv|const char* pat|...
-p |void |sv_vsetpvf_mg |SV* sv|const char* pat|va_list* args
-p |void |sv_setiv_mg |SV *sv|IV i
-p |void |sv_setpviv_mg |SV *sv|IV iv
-p |void |sv_setuv_mg |SV *sv|UV u
-p |void |sv_setnv_mg |SV *sv|NV num
-p |void |sv_setpv_mg |SV *sv|const char *ptr
-p |void |sv_setpvn_mg |SV *sv|const char *ptr|STRLEN len
-p |void |sv_setsv_mg |SV *dstr|SV *sstr
-p |void |sv_usepvn_mg |SV *sv|char *ptr|STRLEN len
-p |MGVTBL*|get_vtbl |int vtbl_id
+Ap |int |runops_standard
+Ap |int |runops_debug
+Afpd |void |sv_catpvf_mg |SV *sv|const char* pat|...
+Ap |void |sv_vcatpvf_mg |SV* sv|const char* pat|va_list* args
+Apd |void |sv_catpv_mg |SV *sv|const char *ptr
+Apd |void |sv_catpvn_mg |SV *sv|const char *ptr|STRLEN len
+Apd |void |sv_catsv_mg |SV *dstr|SV *sstr
+Afpd |void |sv_setpvf_mg |SV *sv|const char* pat|...
+Ap |void |sv_vsetpvf_mg |SV* sv|const char* pat|va_list* args
+Apd |void |sv_setiv_mg |SV *sv|IV i
+Apd |void |sv_setpviv_mg |SV *sv|IV iv
+Apd |void |sv_setuv_mg |SV *sv|UV u
+Apd |void |sv_setnv_mg |SV *sv|NV num
+Apd |void |sv_setpv_mg |SV *sv|const char *ptr
+Apd |void |sv_setpvn_mg |SV *sv|const char *ptr|STRLEN len
+Apd |void |sv_setsv_mg |SV *dstr|SV *sstr
+Apd |void |sv_usepvn_mg |SV *sv|char *ptr|STRLEN len
+Ap |MGVTBL*|get_vtbl |int vtbl_id
p |char* |pv_display |SV *sv|char *pv|STRLEN cur|STRLEN len \
|STRLEN pvlim
-fp |void |dump_indent |I32 level|PerlIO *file|const char* pat|...
-p |void |dump_vindent |I32 level|PerlIO *file|const char* pat \
+Afp |void |dump_indent |I32 level|PerlIO *file|const char* pat|...
+Ap |void |dump_vindent |I32 level|PerlIO *file|const char* pat \
|va_list *args
-p |void |do_gv_dump |I32 level|PerlIO *file|char *name|GV *sv
-p |void |do_gvgv_dump |I32 level|PerlIO *file|char *name|GV *sv
-p |void |do_hv_dump |I32 level|PerlIO *file|char *name|HV *sv
-p |void |do_magic_dump |I32 level|PerlIO *file|MAGIC *mg|I32 nest \
+Ap |void |do_gv_dump |I32 level|PerlIO *file|char *name|GV *sv
+Ap |void |do_gvgv_dump |I32 level|PerlIO *file|char *name|GV *sv
+Ap |void |do_hv_dump |I32 level|PerlIO *file|char *name|HV *sv
+Ap |void |do_magic_dump |I32 level|PerlIO *file|MAGIC *mg|I32 nest \
|I32 maxnest|bool dumpops|STRLEN pvlim
-p |void |do_op_dump |I32 level|PerlIO *file|OP *o
-p |void |do_pmop_dump |I32 level|PerlIO *file|PMOP *pm
-p |void |do_sv_dump |I32 level|PerlIO *file|SV *sv|I32 nest \
+Ap |void |do_op_dump |I32 level|PerlIO *file|OP *o
+Ap |void |do_pmop_dump |I32 level|PerlIO *file|PMOP *pm
+Ap |void |do_sv_dump |I32 level|PerlIO *file|SV *sv|I32 nest \
|I32 maxnest|bool dumpops|STRLEN pvlim
-p |void |magic_dump |MAGIC *mg
-p |void* |default_protect|volatile JMPENV *je|int *excpt \
+Ap |void |magic_dump |MAGIC *mg
+Ap |void* |default_protect|volatile JMPENV *je|int *excpt \
|protect_body_t body|...
-p |void* |vdefault_protect|volatile JMPENV *je|int *excpt \
+Ap |void* |vdefault_protect|volatile JMPENV *je|int *excpt \
|protect_body_t body|va_list *args
-p |void |reginitcolors
-p |char* |sv_2pv_nolen |SV* sv
-p |char* |sv_2pvutf8_nolen|SV* sv
-p |char* |sv_2pvbyte_nolen|SV* sv
-p |char* |sv_pv |SV *sv
-p |char* |sv_pvutf8 |SV *sv
-p |char* |sv_pvbyte |SV *sv
-p |void |sv_force_normal|SV *sv
-p |void |tmps_grow |I32 n
-p |SV* |sv_rvweaken |SV *sv
+Ap |void |reginitcolors
+Ap |char* |sv_2pv_nolen |SV* sv
+Ap |char* |sv_2pvutf8_nolen|SV* sv
+Ap |char* |sv_2pvbyte_nolen|SV* sv
+Ap |char* |sv_pv |SV *sv
+Ap |char* |sv_pvutf8 |SV *sv
+Ap |char* |sv_pvbyte |SV *sv
+Ap |void |sv_force_normal|SV *sv
+Ap |void |tmps_grow |I32 n
+Ap |SV* |sv_rvweaken |SV *sv
p |int |magic_killbackrefs|SV *sv|MAGIC *mg
-p |OP* |newANONATTRSUB |I32 floor|OP *proto|OP *attrs|OP *block
-p |CV* |newATTRSUB |I32 floor|OP *o|OP *proto|OP *attrs|OP *block
-p |void |newMYSUB |I32 floor|OP *o|OP *proto|OP *attrs|OP *block
+Ap |OP* |newANONATTRSUB |I32 floor|OP *proto|OP *attrs|OP *block
+Ap |CV* |newATTRSUB |I32 floor|OP *o|OP *proto|OP *attrs|OP *block
+Ap |void |newMYSUB |I32 floor|OP *o|OP *proto|OP *attrs|OP *block
p |OP * |my_attrs |OP *o|OP *attrs
p |void |boot_core_xsutils
#if defined(USE_ITHREADS)
-p |PERL_CONTEXT*|cx_dup |PERL_CONTEXT* cx|I32 ix|I32 max
-p |PERL_SI*|si_dup |PERL_SI* si
-p |ANY* |ss_dup |PerlInterpreter* proto_perl
-p |void* |any_dup |void* v|PerlInterpreter* proto_perl
-p |HE* |he_dup |HE* e|bool shared
-p |REGEXP*|re_dup |REGEXP* r
-p |PerlIO*|fp_dup |PerlIO* fp|char type
-p |DIR* |dirp_dup |DIR* dp
-p |GP* |gp_dup |GP* gp
-p |MAGIC* |mg_dup |MAGIC* mg
-p |SV* |sv_dup |SV* sstr
+Ap |PERL_CONTEXT*|cx_dup |PERL_CONTEXT* cx|I32 ix|I32 max
+Ap |PERL_SI*|si_dup |PERL_SI* si
+Ap |ANY* |ss_dup |PerlInterpreter* proto_perl
+Ap |void* |any_dup |void* v|PerlInterpreter* proto_perl
+Ap |HE* |he_dup |HE* e|bool shared
+Ap |REGEXP*|re_dup |REGEXP* r
+Ap |PerlIO*|fp_dup |PerlIO* fp|char type
+Ap |DIR* |dirp_dup |DIR* dp
+Ap |GP* |gp_dup |GP* gp
+Ap |MAGIC* |mg_dup |MAGIC* mg
+Ap |SV* |sv_dup |SV* sstr
#if defined(HAVE_INTERP_INTERN)
-p |void |sys_intern_dup |struct interp_intern* src \
+Ap |void |sys_intern_dup |struct interp_intern* src \
|struct interp_intern* dst
#endif
-p |PTR_TBL_t*|ptr_table_new
-p |void* |ptr_table_fetch|PTR_TBL_t *tbl|void *sv
-p |void |ptr_table_store|PTR_TBL_t *tbl|void *oldsv|void *newsv
-p |void |ptr_table_split|PTR_TBL_t *tbl
+Ap |PTR_TBL_t*|ptr_table_new
+Ap |void* |ptr_table_fetch|PTR_TBL_t *tbl|void *sv
+Ap |void |ptr_table_store|PTR_TBL_t *tbl|void *oldsv|void *newsv
+Ap |void |ptr_table_split|PTR_TBL_t *tbl
#endif
#if defined(PERL_OBJECT)
diff --git a/global.sym b/global.sym
index 734b663884..d3d4cd6b94 100644
--- a/global.sym
+++ b/global.sym
@@ -17,12 +17,8 @@ Perl_malloc
Perl_calloc
Perl_realloc
Perl_mfree
-Perl_malloced_size
Perl_amagic_call
Perl_Gv_AMupdate
-Perl_append_elem
-Perl_append_list
-Perl_apply
Perl_avhv_delete_ent
Perl_avhv_exists_ent
Perl_avhv_fetch_ent
@@ -45,20 +41,12 @@ Perl_av_shift
Perl_av_store
Perl_av_undef
Perl_av_unshift
-Perl_bind_match
-Perl_block_end
Perl_block_gimme
-Perl_block_start
-Perl_boot_core_UNIVERSAL
-Perl_call_list
-Perl_cando
Perl_cast_ulong
Perl_cast_i32
Perl_cast_iv
Perl_cast_uv
Perl_my_chsize
-Perl_condpair_magic
-Perl_convert
Perl_croak
Perl_vcroak
Perl_croak_nocontext
@@ -74,21 +62,13 @@ Perl_sv_setpvf_nocontext
Perl_sv_catpvf_mg_nocontext
Perl_sv_setpvf_mg_nocontext
Perl_fprintf_nocontext
-Perl_cv_ckproto
-Perl_cv_clone
-Perl_cv_const_sv
-Perl_op_const_sv
-Perl_cv_undef
Perl_cx_dump
Perl_filter_add
Perl_filter_del
Perl_filter_read
Perl_get_op_descs
Perl_get_op_names
-Perl_get_no_modify
-Perl_get_opargs
Perl_get_ppaddr
-Perl_cxinc
Perl_deb
Perl_vdeb
Perl_debprofdump
@@ -96,43 +76,9 @@ Perl_debop
Perl_debstack
Perl_debstackptrs
Perl_delimcpy
-Perl_deprecate
-Perl_die
-Perl_vdie
-Perl_die_where
-Perl_dounwind
-Perl_do_aexec
-Perl_do_aexec5
Perl_do_binmode
-Perl_do_chop
-Perl_do_close
-Perl_do_eof
-Perl_do_exec
-Perl_do_exec3
-Perl_do_execfree
-Perl_do_ipcctl
-Perl_do_ipcget
-Perl_do_msgrcv
-Perl_do_msgsnd
-Perl_do_semop
-Perl_do_shmio
-Perl_do_join
-Perl_do_kv
Perl_do_open
Perl_do_open9
-Perl_do_pipe
-Perl_do_print
-Perl_do_readline
-Perl_do_chomp
-Perl_do_seek
-Perl_do_sprintf
-Perl_do_sysseek
-Perl_do_tell
-Perl_do_trans
-Perl_do_vecget
-Perl_do_vecset
-Perl_do_vop
-Perl_dofile
Perl_dowantarray
Perl_dump_all
Perl_dump_eval
@@ -145,15 +91,9 @@ Perl_dump_packsubs
Perl_dump_sub
Perl_fbm_compile
Perl_fbm_instr
-Perl_find_script
-Perl_find_threadsv
-Perl_force_list
-Perl_fold_constants
Perl_form
Perl_vform
Perl_free_tmps
-Perl_gen_constant_list
-Perl_getenv_len
Perl_gp_free
Perl_gp_ref
Perl_gv_AVadd
@@ -196,13 +136,7 @@ Perl_hv_store_ent
Perl_hv_undef
Perl_ibcmp
Perl_ibcmp_locale
-Perl_ingroup
-Perl_init_debugger
-Perl_init_stacks
-Perl_intro_my
Perl_instr
-Perl_io_close
-Perl_invert
Perl_is_uni_alnum
Perl_is_uni_alnumc
Perl_is_uni_idfirst
@@ -252,68 +186,10 @@ Perl_is_utf8_print
Perl_is_utf8_punct
Perl_is_utf8_xdigit
Perl_is_utf8_mark
-Perl_jmaybe
-Perl_keyword
-Perl_leave_scope
-Perl_lex_end
-Perl_lex_start
-Perl_linklist
-Perl_list
-Perl_listkids
-Perl_localize
Perl_looks_like_number
-Perl_magic_clearenv
-Perl_magic_clear_all_env
-Perl_magic_clearpack
-Perl_magic_clearsig
-Perl_magic_existspack
-Perl_magic_freeregexp
-Perl_magic_get
-Perl_magic_getarylen
-Perl_magic_getdefelem
-Perl_magic_getglob
-Perl_magic_getnkeys
-Perl_magic_getpack
-Perl_magic_getpos
-Perl_magic_getsig
-Perl_magic_getsubstr
-Perl_magic_gettaint
-Perl_magic_getuvar
-Perl_magic_getvec
-Perl_magic_len
-Perl_magic_mutexfree
-Perl_magic_nextpack
-Perl_magic_regdata_cnt
-Perl_magic_regdatum_get
-Perl_magic_set
-Perl_magic_setamagic
-Perl_magic_setarylen
-Perl_magic_setbm
-Perl_magic_setdbline
-Perl_magic_setcollxfrm
-Perl_magic_setdefelem
-Perl_magic_setenv
-Perl_magic_setfm
-Perl_magic_setisa
-Perl_magic_setglob
-Perl_magic_setmglob
-Perl_magic_setnkeys
-Perl_magic_setpack
-Perl_magic_setpos
-Perl_magic_setsig
-Perl_magic_setsubstr
-Perl_magic_settaint
-Perl_magic_setuvar
-Perl_magic_setvec
-Perl_magic_set_all_env
-Perl_magic_sizepack
-Perl_magic_wipepack
-Perl_magicname
Perl_markstack_grow
-Perl_mem_collxfrm
Perl_mess
Perl_vmess
-Perl_qerror
Perl_mg_clear
Perl_mg_copy
Perl_mg_find
@@ -323,9 +199,6 @@ Perl_mg_length
Perl_mg_magical
Perl_mg_set
Perl_mg_size
-Perl_mod
-Perl_moreswitches
-Perl_my
Perl_my_atof
Perl_my_bcopy
Perl_my_bzero
@@ -342,7 +215,6 @@ Perl_my_stat
Perl_my_swap
Perl_my_htonl
Perl_my_ntohl
-Perl_my_unexec
Perl_newANONLIST
Perl_newANONHASH
Perl_newANONSUB
@@ -392,23 +264,7 @@ Perl_newSVrv
Perl_newSVsv
Perl_newUNOP
Perl_newWHILEOP
-Perl_new_stackinfo
-Perl_nextargv
Perl_ninstr
-Perl_oopsCV
-Perl_op_free
-Perl_package
-Perl_pad_alloc
-Perl_pad_allocmy
-Perl_pad_findmy
-Perl_oopsAV
-Perl_oopsHV
-Perl_pad_leavemy
-Perl_pad_sv
-Perl_pad_free
-Perl_pad_reset
-Perl_pad_swipe
-Perl_peep
Perl_new_struct_thread
Perl_call_atexit
Perl_call_argv
@@ -421,8 +277,6 @@ Perl_get_sv
Perl_get_av
Perl_get_hv
Perl_get_cv
-Perl_init_i18nl10n
-Perl_init_i18nl14n
Perl_new_collate
Perl_new_ctype
Perl_new_numeric
@@ -430,36 +284,10 @@ Perl_set_numeric_local
Perl_set_numeric_radix
Perl_set_numeric_standard
Perl_require_pv
-Perl_pidgone
-Perl_pmflag
-Perl_pmruntime
-Perl_pmtrans
-Perl_pop_return
Perl_pop_scope
-Perl_prepend_elem
-Perl_push_return
Perl_push_scope
-Perl_ref
-Perl_refkids
Perl_regdump
-Perl_pregexec
-Perl_pregfree
-Perl_pregcomp
-Perl_re_intuit_start
-Perl_re_intuit_string
-Perl_regexec_flags
-Perl_regnext
-Perl_regprop
-Perl_repeatcpy
Perl_rninstr
-Perl_rsignal
-Perl_rsignal_restore
-Perl_rsignal_save
-Perl_rsignal_state
-Perl_rxres_free
-Perl_rxres_restore
-Perl_rxres_save
-Perl_same_dirent
Perl_savepv
Perl_savepvn
Perl_savestack_grow
@@ -472,7 +300,6 @@ Perl_save_delete
Perl_save_destructor
Perl_save_destructor_x
Perl_save_freesv
-Perl_save_freeop
Perl_save_freepv
Perl_save_generic_svref
Perl_save_gp
@@ -489,7 +316,6 @@ Perl_save_iv
Perl_save_list
Perl_save_long
Perl_save_nogv
-Perl_save_op
Perl_save_scalar
Perl_save_pptr
Perl_save_vptr
@@ -497,25 +323,8 @@ Perl_save_re_context
Perl_save_sptr
Perl_save_svref
Perl_save_threadsv
-Perl_sawparens
-Perl_scalar
-Perl_scalarkids
-Perl_scalarseq
-Perl_scalarvoid
-Perl_scan_bin
-Perl_scan_hex
-Perl_scan_num
-Perl_scan_oct
-Perl_scope
-Perl_screaminstr
-Perl_setenv_getix
-Perl_setdefout
-Perl_sharepvn
-Perl_share_hek
-Perl_sighandler
Perl_stack_grow
Perl_start_subparse
-Perl_sub_crush_depth
Perl_sv_2bool
Perl_sv_2cv
Perl_sv_2io
@@ -533,7 +342,6 @@ Perl_sv_pvn
Perl_sv_pvutf8n
Perl_sv_pvbyten
Perl_sv_true
-Perl_sv_add_arena
Perl_sv_backoff
Perl_sv_bless
Perl_sv_catpvf
@@ -542,20 +350,15 @@ Perl_sv_catpv
Perl_sv_catpvn
Perl_sv_catsv
Perl_sv_chop
-Perl_sv_clean_all
-Perl_sv_clean_objs
Perl_sv_clear
Perl_sv_cmp
Perl_sv_cmp_locale
Perl_sv_collxfrm
-Perl_sv_compile_2op
Perl_sv_dec
Perl_sv_dump
Perl_sv_derived_from
Perl_sv_eq
Perl_sv_free
-Perl_sv_free_arenas
-Perl_sv_gets
Perl_sv_grow
Perl_sv_inc
Perl_sv_insert
@@ -599,40 +402,22 @@ Perl_sv_upgrade
Perl_sv_usepvn
Perl_sv_vcatpvfn
Perl_sv_vsetpvfn
-Perl_swash_init
-Perl_swash_fetch
Perl_taint_env
Perl_taint_proper
Perl_to_utf8_lower
Perl_to_utf8_upper
Perl_to_utf8_title
Perl_unlnk
-Perl_unlock_condpair
-Perl_unsharepvn
-Perl_unshare_hek
-Perl_utilize
Perl_utf16_to_utf8
Perl_utf16_to_utf8_reversed
Perl_utf8_distance
Perl_utf8_hop
Perl_utf8_to_uv
Perl_uv_to_utf8
-Perl_vivify_defelem
-Perl_vivify_ref
-Perl_wait4pid
-Perl_report_closed_fh
-Perl_report_uninit
Perl_warn
Perl_vwarn
Perl_warner
Perl_vwarner
-Perl_watch
-Perl_whichsig
-Perl_yyerror
-Perl_yylex
-Perl_yylex
-Perl_yyparse
-Perl_yywarn
Perl_dump_mstats
Perl_safesysmalloc
Perl_safesyscalloc
@@ -661,7 +446,6 @@ Perl_sv_setpvn_mg
Perl_sv_setsv_mg
Perl_sv_usepvn_mg
Perl_get_vtbl
-Perl_pv_display
Perl_dump_indent
Perl_dump_vindent
Perl_do_gv_dump
@@ -684,12 +468,9 @@ Perl_sv_pvbyte
Perl_sv_force_normal
Perl_tmps_grow
Perl_sv_rvweaken
-Perl_magic_killbackrefs
Perl_newANONATTRSUB
Perl_newATTRSUB
Perl_newMYSUB
-Perl_my_attrs
-Perl_boot_core_xsutils
Perl_cx_dup
Perl_si_dup
Perl_ss_dup
diff --git a/gv.c b/gv.c
index 907620b7b7..854a8220a2 100644
--- a/gv.c
+++ b/gv.c
@@ -154,6 +154,27 @@ S_gv_init_sv(pTHX_ GV *gv, I32 sv_type)
}
}
+/*
+=for apidoc gv_fetchmeth
+
+Returns the glob with the given C<name> and a defined subroutine or
+C<NULL>. The glob lives in the given C<stash>, or in the stashes
+accessible via @ISA and @UNIVERSAL.
+
+The argument C<level> should be either 0 or -1. If C<level==0>, as a
+side-effect creates a glob with the given C<name> in the given C<stash>
+which in the case of success contains an alias for the subroutine, and sets
+up caching info for this glob. Similarly for all the searched stashes.
+
+This function grants C<"SUPER"> token as a postfix of the stash name. The
+GV returned from C<gv_fetchmeth> may be a method cache entry, which is not
+visible to Perl code. So when calling C<perl_call_sv>, you should not use
+the GV directly; instead, you should use the method's CV, which can be
+obtained from the GV with the C<GvCV> macro.
+
+=cut
+*/
+
GV *
Perl_gv_fetchmeth(pTHX_ HV *stash, const char *name, STRLEN len, I32 level)
{
@@ -275,12 +296,48 @@ Perl_gv_fetchmeth(pTHX_ HV *stash, const char *name, STRLEN len, I32 level)
return 0;
}
+/*
+=for apidoc gv_fetchmethod
+
+See L<gv_fetchmethod_autoload.
+
+=cut
+*/
+
GV *
Perl_gv_fetchmethod(pTHX_ HV *stash, const char *name)
{
return gv_fetchmethod_autoload(stash, name, TRUE);
}
+/*
+=for apidoc gv_fetchmethod_autoload
+
+Returns the glob which contains the subroutine to call to invoke the method
+on the C<stash>. In fact in the presence of autoloading this may be the
+glob for "AUTOLOAD". In this case the corresponding variable $AUTOLOAD is
+already setup.
+
+The third parameter of C<gv_fetchmethod_autoload> determines whether
+AUTOLOAD lookup is performed if the given method is not present: non-zero
+means yes, look for AUTOLOAD; zero means no, don't look for AUTOLOAD.
+Calling C<gv_fetchmethod> is equivalent to calling C<gv_fetchmethod_autoload>
+with a non-zero C<autoload> parameter.
+
+These functions grant C<"SUPER"> token as a prefix of the method name. Note
+that if you want to keep the returned glob for a long time, you need to
+check for it being "AUTOLOAD", since at the later time the call may load a
+different subroutine due to $AUTOLOAD changing its value. Use the glob
+created via a side effect to do this.
+
+These functions have the same side-effects and as C<gv_fetchmeth> with
+C<level==0>. C<name> should be writable if contains C<':'> or C<'
+''>. The warning against passing the GV returned by C<gv_fetchmeth> to
+C<perl_call_sv> apply equally to these functions.
+
+=cut
+*/
+
GV *
Perl_gv_fetchmethod_autoload(pTHX_ HV *stash, const char *name, I32 autoload)
{
@@ -387,6 +444,17 @@ Perl_gv_autoload4(pTHX_ HV *stash, const char *name, STRLEN len, I32 method)
return gv;
}
+/*
+=for apidoc gv_stashpv
+
+Returns a pointer to the stash for a specified package. If C<create> is
+set then the package will be created if it does not already exist. If
+C<create> is not set and the package does not exist then NULL is
+returned.
+
+=cut
+*/
+
HV*
Perl_gv_stashpv(pTHX_ const char *name, I32 create)
{
@@ -422,6 +490,15 @@ Perl_gv_stashpvn(pTHX_ const char *name, U32 namelen, I32 create)
return stash;
}
+/*
+=for apidoc gv_stashsv
+
+Returns a pointer to the stash for a specified package. See
+C<gv_stashpv>.
+
+=cut
+*/
+
HV*
Perl_gv_stashsv(pTHX_ SV *sv, I32 create)
{
diff --git a/gv.h b/gv.h
index f489d2d50b..680f2c0eb6 100644
--- a/gv.h
+++ b/gv.h
@@ -34,6 +34,14 @@ struct gp {
#define GvSTASH(gv) (GvXPVGV(gv)->xgv_stash)
#define GvFLAGS(gv) (GvXPVGV(gv)->xgv_flags)
+/*
+=for apidoc Am|SV*|GvSV|GV* gv
+
+Return the SV from the GV.
+
+=cut
+*/
+
#define GvSV(gv) (GvGP(gv)->gp_sv)
#define GvREFCNT(gv) (GvGP(gv)->gp_refcnt)
#define GvIO(gv) ((gv) && SvTYPE((SV*)gv) == SVt_PVGV ? GvIOp(gv) : 0)
diff --git a/handy.h b/handy.h
index 92d163ea52..741c7162b0 100644
--- a/handy.h
+++ b/handy.h
@@ -19,6 +19,17 @@
#endif
#define Null(type) ((type)NULL)
+
+/*
+=for apidoc AmU||Nullch
+Null character pointer.
+
+=for apidoc AmU||Nullsv
+Null SV pointer.
+
+=cut
+*/
+
#define Nullch Null(char*)
#define Nullfp Null(PerlIO*)
#define Nullsv Null(SV*)
@@ -173,6 +184,43 @@ typedef U64TYPE U64;
#define Ctl(ch) ((ch) & 037)
+/*
+=for apidoc Am|bool|strNE|char* s1|char* s2
+Test two strings to see if they are different. Returns true or
+false.
+
+=for apidoc Am|bool|strEQ|char* s1|char* s2
+Test two strings to see if they are equal. Returns true or false.
+
+=for apidoc Am|bool|strLT|char* s1|char* s2
+Test two strings to see if the first, C<s1>, is less than the second,
+C<s2>. Returns true or false.
+
+=for apidoc Am|bool|strLE|char* s1|char* s2
+Test two strings to see if the first, C<s1>, is less than or equal to the
+second, C<s2>. Returns true or false.
+
+=for apidoc Am|bool|strGT|char* s1|char* s2
+Test two strings to see if the first, C<s1>, is greater than the second,
+C<s2>. Returns true or false.
+
+=for apidoc Am|bool|strGE|char* s1|char* s2
+Test two strings to see if the first, C<s1>, is greater than or equal to
+the second, C<s2>. Returns true or false.
+
+=for apidoc Am|bool|strnNE|char* s1|char* s2|STRLEN len
+Test two strings to see if they are different. The C<len> parameter
+indicates the number of bytes to compare. Returns true or false. (A
+wrapper for C<strncmp>).
+
+=for apidoc Am|bool|strnEQ|char* s1|char* s2|STRLEN len
+Test two strings to see if they are equal. The C<len> parameter indicates
+the number of bytes to compare. Returns true or false. (A wrapper for
+C<strncmp>).
+
+=cut
+*/
+
#define strNE(s1,s2) (strcmp(s1,s2))
#define strEQ(s1,s2) (!strcmp(s1,s2))
#define strLT(s1,s2) (strcmp(s1,s2) < 0)
@@ -209,6 +257,39 @@ typedef U64TYPE U64;
# endif
#endif
+/*
+=for apidoc Am|bool|isALNUM|char ch
+Returns a boolean indicating whether the C C<char> is an ascii alphanumeric
+character or digit.
+
+=for apidoc Am|bool|isALPHA|char ch
+Returns a boolean indicating whether the C C<char> is an ascii alphabetic
+character.
+
+=for apidoc Am|bool|isSPACE|char ch
+Returns a boolean indicating whether the C C<char> is whitespace.
+
+=for apidoc Am|bool|isDIGIT|char ch
+Returns a boolean indicating whether the C C<char> is an ascii
+digit.
+
+=for apidoc Am|bool|isUPPER|char ch
+Returns a boolean indicating whether the C C<char> is an uppercase
+character.
+
+=for apidoc Am|bool|isLOWER|char ch
+Returns a boolean indicating whether the C C<char> is a lowercase
+character.
+
+=for apidoc Am|char|toUPPER|char ch
+Converts the specified character to uppercase.
+
+=for apidoc Am|char|toLOWER|char ch
+Converts the specified character to lowercase.
+
+=cut
+*/
+
#define isALNUM(c) (isALPHA(c) || isDIGIT(c) || (c) == '_')
#define isIDFIRST(c) (isALPHA(c) || (c) == '_')
#define isALPHA(c) (isUPPER(c) || isLOWER(c))
@@ -397,6 +478,56 @@ typedef U16 line_t;
--Andy Dougherty August 1996
*/
+/*
+=for apidoc Am|SV*|NEWSV|int id|STRLEN len
+Creates a new SV. A non-zero C<len> parameter indicates the number of
+bytes of preallocated string space the SV should have. An extra byte for a
+tailing NUL is also reserved. (SvPOK is not set for the SV even if string
+space is allocated.) The reference count for the new SV is set to 1.
+C<id> is an integer id between 0 and 1299 (used to identify leaks).
+
+=for apidoc Am|void|New|int id|void* ptr|int nitems|type
+The XSUB-writer's interface to the C C<malloc> function.
+
+=for apidoc Am|void|Newc|int id|void* ptr|int nitems|type|cast
+The XSUB-writer's interface to the C C<malloc> function, with
+cast.
+
+=for apidoc Am|void|Newz|int id|void* ptr|int nitems|type
+The XSUB-writer's interface to the C C<malloc> function. The allocated
+memory is zeroed with C<memzero>.
+
+=for apidoc Am|void|Renew|void* ptr|int nitems|type
+The XSUB-writer's interface to the C C<realloc> function.
+
+=for apidoc Am|void|Renewc|void* ptr|int nitems|type|cast
+The XSUB-writer's interface to the C C<realloc> function, with
+cast.
+
+=for apidoc Am|void|Safefree|void* src|void* dest|int nitems|type
+The XSUB-writer's interface to the C C<free> function.
+
+=for apidoc Am|void|Move|void* src|void* dest|int nitems|type
+The XSUB-writer's interface to the C C<memmove> function. The C<src> is the
+source, C<dest> is the destination, C<nitems> is the number of items, and C<type> is
+the type. Can do overlapping moves. See also C<Copy>.
+
+=for apidoc Am|void|Copy|void* src|void* dest|int nitems|type
+The XSUB-writer's interface to the C C<memcpy> function. The C<src> is the
+source, C<dest> is the destination, C<nitems> is the number of items, and C<type> is
+the type. May fail on overlapping copies. See also C<Move>.
+
+=for apidoc Am|void|Zero|void* dest|int nitems|type
+
+The XSUB-writer's interface to the C C<memzero> function. The C<dest> is the
+destination, C<nitems> is the number of items, and C<type> is the type.
+
+=for apidoc Am|void|StructCopy|type src|type dest|type
+This is an architecture-independant macro to copy one structure to another.
+
+=cut
+*/
+
#ifndef lint
#define NEWSV(x,len) newSV(len)
diff --git a/hv.c b/hv.c
index 9b01db7471..e48e8b071b 100644
--- a/hv.c
+++ b/hv.c
@@ -105,6 +105,20 @@ Perl_he_dup(pTHX_ HE *e, bool shared)
/* (klen == HEf_SVKEY) is special for MAGICAL hv entries, meaning key slot
* contains an SV* */
+/*
+=for apidoc hv_fetch
+
+Returns the SV which corresponds to the specified key in the hash. The
+C<klen> is the length of the key. If C<lval> is set then the fetch will be
+part of a store. Check that the return value is non-null before
+dereferencing it to a C<SV*>.
+
+See L<Understanding the Magic of Tied Hashes and Arrays> for more
+information on how to use this function on tied hashes.
+
+=cut
+*/
+
SV**
Perl_hv_fetch(pTHX_ HV *hv, const char *key, U32 klen, I32 lval)
{
@@ -184,6 +198,23 @@ Perl_hv_fetch(pTHX_ HV *hv, const char *key, U32 klen, I32 lval)
/* returns a HE * structure with the all fields set */
/* note that hent_val will be a mortal sv for MAGICAL hashes */
+/*
+=for apidoc hv_fetch_ent
+
+Returns the hash entry which corresponds to the specified key in the hash.
+C<hash> must be a valid precomputed hash number for the given C<key>, or 0
+if you want the function to compute it. IF C<lval> is set then the fetch
+will be part of a store. Make sure the return value is non-null before
+accessing it. The return value when C<tb> is a tied hash is a pointer to a
+static location, so be sure to make a copy of the structure if you need to
+store it somewhere.
+
+See L<Understanding the Magic of Tied Hashes and Arrays> for more
+information on how to use this function on tied hashes.
+
+=cut
+*/
+
HE *
Perl_hv_fetch_ent(pTHX_ HV *hv, SV *keysv, I32 lval, register U32 hash)
{
@@ -293,6 +324,24 @@ S_hv_magic_check(pTHX_ HV *hv, bool *needs_copy, bool *needs_store)
}
}
+/*
+=for apidoc hv_store
+
+Stores an SV in a hash. The hash key is specified as C<key> and C<klen> is
+the length of the key. The C<hash> parameter is the precomputed hash
+value; if it is zero then Perl will compute it. The return value will be
+NULL if the operation failed or if the value did not need to be actually
+stored within the hash (as in the case of tied hashes). Otherwise it can
+be dereferenced to get the original C<SV*>. Note that the caller is
+responsible for suitably incrementing the reference count of C<val> before
+the call, and decrementing it if the function returned NULL.
+
+See L<Understanding the Magic of Tied Hashes and Arrays> for more
+information on how to use this function on tied hashes.
+
+=cut
+*/
+
SV**
Perl_hv_store(pTHX_ HV *hv, const char *key, U32 klen, SV *val, register U32 hash)
{
@@ -363,6 +412,25 @@ Perl_hv_store(pTHX_ HV *hv, const char *key, U32 klen, SV *val, register U32 has
return &HeVAL(entry);
}
+/*
+=for apidoc hv_store_ent
+
+Stores C<val> in a hash. The hash key is specified as C<key>. The C<hash>
+parameter is the precomputed hash value; if it is zero then Perl will
+compute it. The return value is the new hash entry so created. It will be
+NULL if the operation failed or if the value did not need to be actually
+stored within the hash (as in the case of tied hashes). Otherwise the
+contents of the return value can be accessed using the C<He???> macros
+described here. Note that the caller is responsible for suitably
+incrementing the reference count of C<val> before the call, and
+decrementing it if the function returned NULL.
+
+See L<Understanding the Magic of Tied Hashes and Arrays> for more
+information on how to use this function on tied hashes.
+
+=cut
+*/
+
HE *
Perl_hv_store_ent(pTHX_ HV *hv, SV *keysv, SV *val, register U32 hash)
{
@@ -445,6 +513,17 @@ Perl_hv_store_ent(pTHX_ HV *hv, SV *keysv, SV *val, register U32 hash)
return entry;
}
+/*
+=for apidoc hv_delete
+
+Deletes a key/value pair in the hash. The value SV is removed from the
+hash and returned to the caller. The C<klen> is the length of the key.
+The C<flags> value will normally be zero; if set to G_DISCARD then NULL
+will be returned.
+
+=cut
+*/
+
SV *
Perl_hv_delete(pTHX_ HV *hv, const char *key, U32 klen, I32 flags)
{
@@ -516,6 +595,17 @@ Perl_hv_delete(pTHX_ HV *hv, const char *key, U32 klen, I32 flags)
return Nullsv;
}
+/*
+=for apidoc hv_delete_ent
+
+Deletes a key/value pair in the hash. The value SV is removed from the
+hash and returned to the caller. The C<flags> value will normally be zero;
+if set to G_DISCARD then NULL will be returned. C<hash> can be a valid
+precomputed hash value, or 0 to ask for it to be computed.
+
+=cut
+*/
+
SV *
Perl_hv_delete_ent(pTHX_ HV *hv, SV *keysv, I32 flags, U32 hash)
{
@@ -592,6 +682,15 @@ Perl_hv_delete_ent(pTHX_ HV *hv, SV *keysv, I32 flags, U32 hash)
return Nullsv;
}
+/*
+=for apidoc hv_exists
+
+Returns a boolean indicating whether the specified hash key exists. The
+C<klen> is the length of the key.
+
+=cut
+*/
+
bool
Perl_hv_exists(pTHX_ HV *hv, const char *key, U32 klen)
{
@@ -657,6 +756,16 @@ Perl_hv_exists(pTHX_ HV *hv, const char *key, U32 klen)
}
+/*
+=for apidoc hv_exists_ent
+
+Returns a boolean indicating whether the specified hash key exists. C<hash>
+can be a valid precomputed hash value, or 0 to ask for it to be
+computed.
+
+=cut
+*/
+
bool
Perl_hv_exists_ent(pTHX_ HV *hv, SV *keysv, U32 hash)
{
@@ -867,6 +976,14 @@ Perl_hv_ksplit(pTHX_ HV *hv, IV newmax)
}
}
+/*
+=for apidoc newHV
+
+Creates a new HV. The reference count is set to 1.
+
+=cut
+*/
+
HV *
Perl_newHV(pTHX)
{
@@ -967,6 +1084,14 @@ Perl_hv_delayfree_ent(pTHX_ HV *hv, register HE *entry)
del_he(entry);
}
+/*
+=for apidoc hv_clear
+
+Clears a hash, making it empty.
+
+=cut
+*/
+
void
Perl_hv_clear(pTHX_ HV *hv)
{
@@ -1017,6 +1142,14 @@ S_hfreeentries(pTHX_ HV *hv)
(void)hv_iterinit(hv);
}
+/*
+=for apidoc hv_undef
+
+Undefines the hash.
+
+=cut
+*/
+
void
Perl_hv_undef(pTHX_ HV *hv)
{
@@ -1039,6 +1172,20 @@ Perl_hv_undef(pTHX_ HV *hv)
mg_clear((SV*)hv);
}
+/*
+=for apidoc hv_iterinit
+
+Prepares a starting point to traverse a hash table. Returns the number of
+keys in the hash (i.e. the same as C<HvKEYS(tb)>). The return value is
+currently only meaningful for hashes without tie magic.
+
+NOTE: Before version 5.004_65, C<hv_iterinit> used to return the number of
+hash buckets that happen to be in use. If you still need that esoteric
+value, you can get it through the macro C<HvFILL(tb)>.
+
+=cut
+*/
+
I32
Perl_hv_iterinit(pTHX_ HV *hv)
{
@@ -1058,6 +1205,14 @@ Perl_hv_iterinit(pTHX_ HV *hv)
return xhv->xhv_keys; /* used to be xhv->xhv_fill before 5.004_65 */
}
+/*
+=for apidoc hv_iternext
+
+Returns entries from a hash iterator. See C<hv_iterinit>.
+
+=cut
+*/
+
HE *
Perl_hv_iternext(pTHX_ HV *hv)
{
@@ -1129,6 +1284,15 @@ Perl_hv_iternext(pTHX_ HV *hv)
return entry;
}
+/*
+=for apidoc hv_iterkey
+
+Returns the key from the current position of the hash iterator. See
+C<hv_iterinit>.
+
+=cut
+*/
+
char *
Perl_hv_iterkey(pTHX_ register HE *entry, I32 *retlen)
{
@@ -1145,6 +1309,16 @@ Perl_hv_iterkey(pTHX_ register HE *entry, I32 *retlen)
}
/* unlike hv_iterval(), this always returns a mortal copy of the key */
+/*
+=for apidoc hv_iterkeysv
+
+Returns the key as an C<SV*> from the current position of the hash
+iterator. The return value will always be a mortal copy of the key. Also
+see C<hv_iterinit>.
+
+=cut
+*/
+
SV *
Perl_hv_iterkeysv(pTHX_ register HE *entry)
{
@@ -1155,6 +1329,15 @@ Perl_hv_iterkeysv(pTHX_ register HE *entry)
HeKLEN(entry)));
}
+/*
+=for apidoc hv_iterval
+
+Returns the value from the current position of the hash iterator. See
+C<hv_iterkey>.
+
+=cut
+*/
+
SV *
Perl_hv_iterval(pTHX_ HV *hv, register HE *entry)
{
@@ -1170,6 +1353,15 @@ Perl_hv_iterval(pTHX_ HV *hv, register HE *entry)
return HeVAL(entry);
}
+/*
+=for apidoc hv_iternextsv
+
+Performs an C<hv_iternext>, C<hv_iterkey>, and C<hv_iterval> in one
+operation.
+
+=cut
+*/
+
SV *
Perl_hv_iternextsv(pTHX_ HV *hv, char **key, I32 *retlen)
{
@@ -1180,6 +1372,14 @@ Perl_hv_iternextsv(pTHX_ HV *hv, char **key, I32 *retlen)
return hv_iterval(hv, he);
}
+/*
+=for apidoc hv_magic
+
+Adds magic to a hash. See C<sv_magic>.
+
+=cut
+*/
+
void
Perl_hv_magic(pTHX_ HV *hv, GV *gv, int how)
{
diff --git a/hv.h b/hv.h
index 11a602c1b7..f0522580bb 100644
--- a/hv.h
+++ b/hv.h
@@ -48,6 +48,62 @@ struct xpvhv {
(hash) = hash_PeRlHaSh + (hash_PeRlHaSh>>5); \
} STMT_END
+/*
+=for apidoc AmU||HEf_SVKEY
+This flag, used in the length slot of hash entries and magic structures,
+specifies the structure contains a C<SV*> pointer where a C<char*> pointer
+is to be expected. (For information only--not to be used).
+
+=for apidoc AmU||Nullhv
+Null HV pointer.
+
+=for apidoc Am|char*|HvNAME|HV* stash
+Returns the package name of a stash. See C<SvSTASH>, C<CvSTASH>.
+
+=for apidoc Am|void*|HeKEY|HE* he
+Returns the actual pointer stored in the key slot of the hash entry. The
+pointer may be either C<char*> or C<SV*>, depending on the value of
+C<HeKLEN()>. Can be assigned to. The C<HePV()> or C<HeSVKEY()> macros are
+usually preferable for finding the value of a key.
+
+=for apidoc Am|STRLEN|HeKLEN|HE* he
+If this is negative, and amounts to C<HEf_SVKEY>, it indicates the entry
+holds an C<SV*> key. Otherwise, holds the actual length of the key. Can
+be assigned to. The C<HePV()> macro is usually preferable for finding key
+lengths.
+
+=for apidoc Am|SV*|HeVAL|HE* he
+Returns the value slot (type C<SV*>) stored in the hash entry.
+
+=for apidoc Am|U32|HeHASH|HE* he
+Returns the computed hash stored in the hash entry.
+
+=for apidoc Am|char*|HePV|HE* he|STRLEN len
+Returns the key slot of the hash entry as a C<char*> value, doing any
+necessary dereferencing of possibly C<SV*> keys. The length of the string
+is placed in C<len> (this is a macro, so do I<not> use C<&len>). If you do
+not care about what the length of the key is, you may use the global
+variable C<PL_na>, though this is rather less efficient than using a local
+variable. Remember though, that hash keys in perl are free to contain
+embedded nulls, so using C<strlen()> or similar is not a good way to find
+the length of hash keys. This is very similar to the C<SvPV()> macro
+described elsewhere in this document.
+
+=for apidoc Am|SV*|HeSVKEY|HE* he
+Returns the key as an C<SV*>, or C<Nullsv> if the hash entry does not
+contain an C<SV*> key.
+
+=for apidoc Am|SV*|HeSVKEY_force|HE* he
+Returns the key as an C<SV*>. Will create and return a temporary mortal
+C<SV*> if the hash entry contains only a C<char*> key.
+
+=for apidoc Am|SV*|HeSVKEY_set|HE* he|SV* sv
+Sets the key to a given C<SV*>, taking care to set the appropriate flags to
+indicate the presence of an C<SV*> key, and returns the same
+C<SV*>.
+
+=cut
+*/
/* these hash entry flags ride on hent_klen (for use only in magic/tied HVs) */
#define HEf_SVKEY -2 /* hent_key is a SV* */
diff --git a/intrpvar.h b/intrpvar.h
index f110b32748..2dde0dc4cd 100644
--- a/intrpvar.h
+++ b/intrpvar.h
@@ -35,6 +35,15 @@ PERLVAR(Iminus_l, bool)
PERLVAR(Iminus_a, bool)
PERLVAR(Iminus_F, bool)
PERLVAR(Idoswitches, bool)
+
+/*
+=for apidoc Amn|bool|PL_dowarn
+
+The C variable which corresponds to Perl's $^W warning variable.
+
+=cut
+*/
+
PERLVAR(Idowarn, bool)
PERLVAR(Idoextract, bool)
PERLVAR(Isawampersand, bool) /* must save all match strings */
@@ -80,6 +89,29 @@ PERLVAR(Ierrgv, GV *)
/* shortcuts to debugging objects */
PERLVAR(IDBgv, GV *)
PERLVAR(IDBline, GV *)
+
+/*
+=for apidoc Amn|GV *|PL_DBsub
+When Perl is run in debugging mode, with the B<-d> switch, this GV contains
+the SV which holds the name of the sub being debugged. This is the C
+variable which corresponds to Perl's $DB::sub variable. See
+C<PL_DBsingle>.
+
+=for apidoc Amn|SV *|PL_DBsingle
+When Perl is run in debugging mode, with the B<-d> switch, this SV is a
+boolean which indicates whether subs are being single-stepped.
+Single-stepping is automatically turned on after every step. This is the C
+variable which corresponds to Perl's $DB::single variable. See
+C<PL_DBsub>.
+
+=for apidoc Amn|SV *|PL_DBtrace
+Trace variable used when Perl is run in debugging mode, with the B<-d>
+switch. This is the C variable which corresponds to Perl's $DB::trace
+variable. See C<PL_DBsingle>.
+
+=cut
+*/
+
PERLVAR(IDBsub, GV *)
PERLVAR(IDBsingle, SV *)
PERLVAR(IDBtrace, SV *)
@@ -147,6 +179,19 @@ PERLVAR(Iofmt, char *) /* output format for numbers $# */
PERLVARI(Iexitlist, PerlExitListEntry *, NULL)
/* list of exit functions */
PERLVARI(Iexitlistlen, I32, 0) /* length of same */
+
+/*
+=for apidoc Amn|HV*|PL_modglobal
+
+C<PL_modglobal> is a general purpose, interpreter global HV for use by
+extensions that need to keep information on a per-interpreter basis.
+In a pinch, it can also be used as a symbol table for extensions
+to share data among each other. It is a good idea to use keys
+prefixed by the package name of the extension that owns the data.
+
+=cut
+*/
+
PERLVAR(Imodglobal, HV *) /* per-interp module data */
/* these used to be in global before 5.004_68 */
@@ -222,6 +267,21 @@ PERLVARI(Irunops, runops_proc_t, MEMBER_TO_FPTR(RUNOPS_DEFAULT))
PERLVARA(Itokenbuf,256, char)
+/*
+=for apidoc Amn|SV|PL_sv_undef
+This is the C<undef> SV. Always refer to this as C<&PL_sv_undef>.
+
+=for apidoc Amn|SV|PL_sv_no
+This is the C<false> SV. See C<PL_sv_yes>. Always refer to this as
+C<&PL_sv_no>.
+
+=for apidoc Amn|SV|PL_sv_yes
+This is the C<true> SV. See C<PL_sv_no>. Always refer to this as
+C<&PL_sv_yes>.
+
+=cut
+*/
+
PERLVAR(Isv_undef, SV)
PERLVAR(Isv_no, SV)
PERLVAR(Isv_yes, SV)
diff --git a/makedef.pl b/makedef.pl
index 9c2e96ac48..5846875117 100644
--- a/makedef.pl
+++ b/makedef.pl
@@ -448,7 +448,7 @@ if ($define{'PERL_GLOBAL_STRUCT'}) {
# functions from *.sym files
-my @syms = ($global_sym, $pp_sym, $globvar_sym);
+my @syms = ($global_sym, $globvar_sym); # $pp_sym is not part of the API
if ($define{'USE_PERLIO'}) {
push @syms, $perlio_sym;
diff --git a/mg.c b/mg.c
index 4274a20149..edabb11562 100644
--- a/mg.c
+++ b/mg.c
@@ -60,6 +60,14 @@ S_save_magic(pTHX_ I32 mgs_ix, SV *sv)
SvFLAGS(sv) |= (SvFLAGS(sv) & (SVp_IOK|SVp_NOK|SVp_POK)) >> PRIVSHIFT;
}
+/*
+=for apidoc mg_magical
+
+Turns on the magical status of an SV. See C<sv_magic>.
+
+=cut
+*/
+
void
Perl_mg_magical(pTHX_ SV *sv)
{
@@ -77,6 +85,14 @@ Perl_mg_magical(pTHX_ SV *sv)
}
}
+/*
+=for apidoc mg_get
+
+Do magic after a value is retrieved from the SV. See C<sv_magic>.
+
+=cut
+*/
+
int
Perl_mg_get(pTHX_ SV *sv)
{
@@ -112,6 +128,14 @@ Perl_mg_get(pTHX_ SV *sv)
return 0;
}
+/*
+=for apidoc mg_set
+
+Do magic after a value is assigned to the SV. See C<sv_magic>.
+
+=cut
+*/
+
int
Perl_mg_set(pTHX_ SV *sv)
{
@@ -138,6 +162,14 @@ Perl_mg_set(pTHX_ SV *sv)
return 0;
}
+/*
+=for apidoc mg_length
+
+Report on the SV's length. See C<sv_magic>.
+
+=cut
+*/
+
U32
Perl_mg_length(pTHX_ SV *sv)
{
@@ -196,6 +228,14 @@ Perl_mg_size(pTHX_ SV *sv)
return 0;
}
+/*
+=for apidoc mg_clear
+
+Clear something magical that the SV represents. See C<sv_magic>.
+
+=cut
+*/
+
int
Perl_mg_clear(pTHX_ SV *sv)
{
@@ -217,6 +257,14 @@ Perl_mg_clear(pTHX_ SV *sv)
return 0;
}
+/*
+=for apidoc mg_find
+
+Finds the magic pointer for type matching the SV. See C<sv_magic>.
+
+=cut
+*/
+
MAGIC*
Perl_mg_find(pTHX_ SV *sv, int type)
{
@@ -228,6 +276,14 @@ Perl_mg_find(pTHX_ SV *sv, int type)
return 0;
}
+/*
+=for apidoc mg_copy
+
+Copies the magic from one SV to another. See C<sv_magic>.
+
+=cut
+*/
+
int
Perl_mg_copy(pTHX_ SV *sv, SV *nsv, const char *key, I32 klen)
{
@@ -244,6 +300,14 @@ Perl_mg_copy(pTHX_ SV *sv, SV *nsv, const char *key, I32 klen)
return count;
}
+/*
+=for apidoc mg_free
+
+Free any magic storage used by the SV. See C<sv_magic>.
+
+=cut
+*/
+
int
Perl_mg_free(pTHX_ SV *sv)
{
diff --git a/objXSUB.h b/objXSUB.h
index 262ead9f35..8d31e9928f 100644
--- a/objXSUB.h
+++ b/objXSUB.h
@@ -36,18 +36,6 @@
#define Perl_Gv_AMupdate pPerl->Perl_Gv_AMupdate
#undef Gv_AMupdate
#define Gv_AMupdate Perl_Gv_AMupdate
-#undef Perl_append_elem
-#define Perl_append_elem pPerl->Perl_append_elem
-#undef append_elem
-#define append_elem Perl_append_elem
-#undef Perl_append_list
-#define Perl_append_list pPerl->Perl_append_list
-#undef append_list
-#define append_list Perl_append_list
-#undef Perl_apply
-#define Perl_apply pPerl->Perl_apply
-#undef apply
-#define apply Perl_apply
#undef Perl_avhv_delete_ent
#define Perl_avhv_delete_ent pPerl->Perl_avhv_delete_ent
#undef avhv_delete_ent
@@ -136,34 +124,10 @@
#define Perl_av_unshift pPerl->Perl_av_unshift
#undef av_unshift
#define av_unshift Perl_av_unshift
-#undef Perl_bind_match
-#define Perl_bind_match pPerl->Perl_bind_match
-#undef bind_match
-#define bind_match Perl_bind_match
-#undef Perl_block_end
-#define Perl_block_end pPerl->Perl_block_end
-#undef block_end
-#define block_end Perl_block_end
#undef Perl_block_gimme
#define Perl_block_gimme pPerl->Perl_block_gimme
#undef block_gimme
#define block_gimme Perl_block_gimme
-#undef Perl_block_start
-#define Perl_block_start pPerl->Perl_block_start
-#undef block_start
-#define block_start Perl_block_start
-#undef Perl_boot_core_UNIVERSAL
-#define Perl_boot_core_UNIVERSAL pPerl->Perl_boot_core_UNIVERSAL
-#undef boot_core_UNIVERSAL
-#define boot_core_UNIVERSAL Perl_boot_core_UNIVERSAL
-#undef Perl_call_list
-#define Perl_call_list pPerl->Perl_call_list
-#undef call_list
-#define call_list Perl_call_list
-#undef Perl_cando
-#define Perl_cando pPerl->Perl_cando
-#undef cando
-#define cando Perl_cando
#undef Perl_cast_ulong
#define Perl_cast_ulong pPerl->Perl_cast_ulong
#undef cast_ulong
@@ -187,15 +151,7 @@
#define my_chsize Perl_my_chsize
#endif
#if defined(USE_THREADS)
-#undef Perl_condpair_magic
-#define Perl_condpair_magic pPerl->Perl_condpair_magic
-#undef condpair_magic
-#define condpair_magic Perl_condpair_magic
#endif
-#undef Perl_convert
-#define Perl_convert pPerl->Perl_convert
-#undef convert
-#define convert Perl_convert
#undef Perl_croak
#define Perl_croak pPerl->Perl_croak
#undef croak
@@ -258,26 +214,6 @@
#undef fprintf_nocontext
#define fprintf_nocontext Perl_fprintf_nocontext
#endif
-#undef Perl_cv_ckproto
-#define Perl_cv_ckproto pPerl->Perl_cv_ckproto
-#undef cv_ckproto
-#define cv_ckproto Perl_cv_ckproto
-#undef Perl_cv_clone
-#define Perl_cv_clone pPerl->Perl_cv_clone
-#undef cv_clone
-#define cv_clone Perl_cv_clone
-#undef Perl_cv_const_sv
-#define Perl_cv_const_sv pPerl->Perl_cv_const_sv
-#undef cv_const_sv
-#define cv_const_sv Perl_cv_const_sv
-#undef Perl_op_const_sv
-#define Perl_op_const_sv pPerl->Perl_op_const_sv
-#undef op_const_sv
-#define op_const_sv Perl_op_const_sv
-#undef Perl_cv_undef
-#define Perl_cv_undef pPerl->Perl_cv_undef
-#undef cv_undef
-#define cv_undef Perl_cv_undef
#undef Perl_cx_dump
#define Perl_cx_dump pPerl->Perl_cx_dump
#undef cx_dump
@@ -302,22 +238,10 @@
#define Perl_get_op_names pPerl->Perl_get_op_names
#undef get_op_names
#define get_op_names Perl_get_op_names
-#undef Perl_get_no_modify
-#define Perl_get_no_modify pPerl->Perl_get_no_modify
-#undef get_no_modify
-#define get_no_modify Perl_get_no_modify
-#undef Perl_get_opargs
-#define Perl_get_opargs pPerl->Perl_get_opargs
-#undef get_opargs
-#define get_opargs Perl_get_opargs
#undef Perl_get_ppaddr
#define Perl_get_ppaddr pPerl->Perl_get_ppaddr
#undef get_ppaddr
#define get_ppaddr Perl_get_ppaddr
-#undef Perl_cxinc
-#define Perl_cxinc pPerl->Perl_cxinc
-#undef cxinc
-#define cxinc Perl_cxinc
#undef Perl_deb
#define Perl_deb pPerl->Perl_deb
#undef deb
@@ -346,98 +270,14 @@
#define Perl_delimcpy pPerl->Perl_delimcpy
#undef delimcpy
#define delimcpy Perl_delimcpy
-#undef Perl_deprecate
-#define Perl_deprecate pPerl->Perl_deprecate
-#undef deprecate
-#define deprecate Perl_deprecate
-#undef Perl_die
-#define Perl_die pPerl->Perl_die
-#undef die
-#define die Perl_die
-#undef Perl_vdie
-#define Perl_vdie pPerl->Perl_vdie
-#undef vdie
-#define vdie Perl_vdie
-#undef Perl_die_where
-#define Perl_die_where pPerl->Perl_die_where
-#undef die_where
-#define die_where Perl_die_where
-#undef Perl_dounwind
-#define Perl_dounwind pPerl->Perl_dounwind
-#undef dounwind
-#define dounwind Perl_dounwind
-#undef Perl_do_aexec
-#define Perl_do_aexec pPerl->Perl_do_aexec
-#undef do_aexec
-#define do_aexec Perl_do_aexec
-#undef Perl_do_aexec5
-#define Perl_do_aexec5 pPerl->Perl_do_aexec5
-#undef do_aexec5
-#define do_aexec5 Perl_do_aexec5
#undef Perl_do_binmode
#define Perl_do_binmode pPerl->Perl_do_binmode
#undef do_binmode
#define do_binmode Perl_do_binmode
-#undef Perl_do_chop
-#define Perl_do_chop pPerl->Perl_do_chop
-#undef do_chop
-#define do_chop Perl_do_chop
-#undef Perl_do_close
-#define Perl_do_close pPerl->Perl_do_close
-#undef do_close
-#define do_close Perl_do_close
-#undef Perl_do_eof
-#define Perl_do_eof pPerl->Perl_do_eof
-#undef do_eof
-#define do_eof Perl_do_eof
-#undef Perl_do_exec
-#define Perl_do_exec pPerl->Perl_do_exec
-#undef do_exec
-#define do_exec Perl_do_exec
#if !defined(WIN32)
-#undef Perl_do_exec3
-#define Perl_do_exec3 pPerl->Perl_do_exec3
-#undef do_exec3
-#define do_exec3 Perl_do_exec3
#endif
-#undef Perl_do_execfree
-#define Perl_do_execfree pPerl->Perl_do_execfree
-#undef do_execfree
-#define do_execfree Perl_do_execfree
#if defined(HAS_MSG) || defined(HAS_SEM) || defined(HAS_SHM)
-#undef Perl_do_ipcctl
-#define Perl_do_ipcctl pPerl->Perl_do_ipcctl
-#undef do_ipcctl
-#define do_ipcctl Perl_do_ipcctl
-#undef Perl_do_ipcget
-#define Perl_do_ipcget pPerl->Perl_do_ipcget
-#undef do_ipcget
-#define do_ipcget Perl_do_ipcget
-#undef Perl_do_msgrcv
-#define Perl_do_msgrcv pPerl->Perl_do_msgrcv
-#undef do_msgrcv
-#define do_msgrcv Perl_do_msgrcv
-#undef Perl_do_msgsnd
-#define Perl_do_msgsnd pPerl->Perl_do_msgsnd
-#undef do_msgsnd
-#define do_msgsnd Perl_do_msgsnd
-#undef Perl_do_semop
-#define Perl_do_semop pPerl->Perl_do_semop
-#undef do_semop
-#define do_semop Perl_do_semop
-#undef Perl_do_shmio
-#define Perl_do_shmio pPerl->Perl_do_shmio
-#undef do_shmio
-#define do_shmio Perl_do_shmio
#endif
-#undef Perl_do_join
-#define Perl_do_join pPerl->Perl_do_join
-#undef do_join
-#define do_join Perl_do_join
-#undef Perl_do_kv
-#define Perl_do_kv pPerl->Perl_do_kv
-#undef do_kv
-#define do_kv Perl_do_kv
#undef Perl_do_open
#define Perl_do_open pPerl->Perl_do_open
#undef do_open
@@ -446,58 +286,6 @@
#define Perl_do_open9 pPerl->Perl_do_open9
#undef do_open9
#define do_open9 Perl_do_open9
-#undef Perl_do_pipe
-#define Perl_do_pipe pPerl->Perl_do_pipe
-#undef do_pipe
-#define do_pipe Perl_do_pipe
-#undef Perl_do_print
-#define Perl_do_print pPerl->Perl_do_print
-#undef do_print
-#define do_print Perl_do_print
-#undef Perl_do_readline
-#define Perl_do_readline pPerl->Perl_do_readline
-#undef do_readline
-#define do_readline Perl_do_readline
-#undef Perl_do_chomp
-#define Perl_do_chomp pPerl->Perl_do_chomp
-#undef do_chomp
-#define do_chomp Perl_do_chomp
-#undef Perl_do_seek
-#define Perl_do_seek pPerl->Perl_do_seek
-#undef do_seek
-#define do_seek Perl_do_seek
-#undef Perl_do_sprintf
-#define Perl_do_sprintf pPerl->Perl_do_sprintf
-#undef do_sprintf
-#define do_sprintf Perl_do_sprintf
-#undef Perl_do_sysseek
-#define Perl_do_sysseek pPerl->Perl_do_sysseek
-#undef do_sysseek
-#define do_sysseek Perl_do_sysseek
-#undef Perl_do_tell
-#define Perl_do_tell pPerl->Perl_do_tell
-#undef do_tell
-#define do_tell Perl_do_tell
-#undef Perl_do_trans
-#define Perl_do_trans pPerl->Perl_do_trans
-#undef do_trans
-#define do_trans Perl_do_trans
-#undef Perl_do_vecget
-#define Perl_do_vecget pPerl->Perl_do_vecget
-#undef do_vecget
-#define do_vecget Perl_do_vecget
-#undef Perl_do_vecset
-#define Perl_do_vecset pPerl->Perl_do_vecset
-#undef do_vecset
-#define do_vecset Perl_do_vecset
-#undef Perl_do_vop
-#define Perl_do_vop pPerl->Perl_do_vop
-#undef do_vop
-#define do_vop Perl_do_vop
-#undef Perl_dofile
-#define Perl_dofile pPerl->Perl_dofile
-#undef dofile
-#define dofile Perl_dofile
#undef Perl_dowantarray
#define Perl_dowantarray pPerl->Perl_dowantarray
#undef dowantarray
@@ -548,24 +336,8 @@
#define Perl_fbm_instr pPerl->Perl_fbm_instr
#undef fbm_instr
#define fbm_instr Perl_fbm_instr
-#undef Perl_find_script
-#define Perl_find_script pPerl->Perl_find_script
-#undef find_script
-#define find_script Perl_find_script
#if defined(USE_THREADS)
-#undef Perl_find_threadsv
-#define Perl_find_threadsv pPerl->Perl_find_threadsv
-#undef find_threadsv
-#define find_threadsv Perl_find_threadsv
#endif
-#undef Perl_force_list
-#define Perl_force_list pPerl->Perl_force_list
-#undef force_list
-#define force_list Perl_force_list
-#undef Perl_fold_constants
-#define Perl_fold_constants pPerl->Perl_fold_constants
-#undef fold_constants
-#define fold_constants Perl_fold_constants
#undef Perl_form
#define Perl_form pPerl->Perl_form
#undef form
@@ -578,15 +350,7 @@
#define Perl_free_tmps pPerl->Perl_free_tmps
#undef free_tmps
#define free_tmps Perl_free_tmps
-#undef Perl_gen_constant_list
-#define Perl_gen_constant_list pPerl->Perl_gen_constant_list
-#undef gen_constant_list
-#define gen_constant_list Perl_gen_constant_list
#if !defined(HAS_GETENV_LEN)
-#undef Perl_getenv_len
-#define Perl_getenv_len pPerl->Perl_getenv_len
-#undef getenv_len
-#define getenv_len Perl_getenv_len
#endif
#undef Perl_gp_free
#define Perl_gp_free pPerl->Perl_gp_free
@@ -756,34 +520,10 @@
#define Perl_ibcmp_locale pPerl->Perl_ibcmp_locale
#undef ibcmp_locale
#define ibcmp_locale Perl_ibcmp_locale
-#undef Perl_ingroup
-#define Perl_ingroup pPerl->Perl_ingroup
-#undef ingroup
-#define ingroup Perl_ingroup
-#undef Perl_init_debugger
-#define Perl_init_debugger pPerl->Perl_init_debugger
-#undef init_debugger
-#define init_debugger Perl_init_debugger
-#undef Perl_init_stacks
-#define Perl_init_stacks pPerl->Perl_init_stacks
-#undef init_stacks
-#define init_stacks Perl_init_stacks
-#undef Perl_intro_my
-#define Perl_intro_my pPerl->Perl_intro_my
-#undef intro_my
-#define intro_my Perl_intro_my
#undef Perl_instr
#define Perl_instr pPerl->Perl_instr
#undef instr
#define instr Perl_instr
-#undef Perl_io_close
-#define Perl_io_close pPerl->Perl_io_close
-#undef io_close
-#define io_close Perl_io_close
-#undef Perl_invert
-#define Perl_invert pPerl->Perl_invert
-#undef invert
-#define invert Perl_invert
#undef Perl_is_uni_alnum
#define Perl_is_uni_alnum pPerl->Perl_is_uni_alnum
#undef is_uni_alnum
@@ -980,247 +720,19 @@
#define Perl_is_utf8_mark pPerl->Perl_is_utf8_mark
#undef is_utf8_mark
#define is_utf8_mark Perl_is_utf8_mark
-#undef Perl_jmaybe
-#define Perl_jmaybe pPerl->Perl_jmaybe
-#undef jmaybe
-#define jmaybe Perl_jmaybe
-#undef Perl_keyword
-#define Perl_keyword pPerl->Perl_keyword
-#undef keyword
-#define keyword Perl_keyword
-#undef Perl_leave_scope
-#define Perl_leave_scope pPerl->Perl_leave_scope
-#undef leave_scope
-#define leave_scope Perl_leave_scope
-#undef Perl_lex_end
-#define Perl_lex_end pPerl->Perl_lex_end
-#undef lex_end
-#define lex_end Perl_lex_end
-#undef Perl_lex_start
-#define Perl_lex_start pPerl->Perl_lex_start
-#undef lex_start
-#define lex_start Perl_lex_start
-#undef Perl_linklist
-#define Perl_linklist pPerl->Perl_linklist
-#undef linklist
-#define linklist Perl_linklist
-#undef Perl_list
-#define Perl_list pPerl->Perl_list
-#undef list
-#define list Perl_list
-#undef Perl_listkids
-#define Perl_listkids pPerl->Perl_listkids
-#undef listkids
-#define listkids Perl_listkids
-#undef Perl_localize
-#define Perl_localize pPerl->Perl_localize
-#undef localize
-#define localize Perl_localize
#undef Perl_looks_like_number
#define Perl_looks_like_number pPerl->Perl_looks_like_number
#undef looks_like_number
#define looks_like_number Perl_looks_like_number
-#undef Perl_magic_clearenv
-#define Perl_magic_clearenv pPerl->Perl_magic_clearenv
-#undef magic_clearenv
-#define magic_clearenv Perl_magic_clearenv
-#undef Perl_magic_clear_all_env
-#define Perl_magic_clear_all_env pPerl->Perl_magic_clear_all_env
-#undef magic_clear_all_env
-#define magic_clear_all_env Perl_magic_clear_all_env
-#undef Perl_magic_clearpack
-#define Perl_magic_clearpack pPerl->Perl_magic_clearpack
-#undef magic_clearpack
-#define magic_clearpack Perl_magic_clearpack
-#undef Perl_magic_clearsig
-#define Perl_magic_clearsig pPerl->Perl_magic_clearsig
-#undef magic_clearsig
-#define magic_clearsig Perl_magic_clearsig
-#undef Perl_magic_existspack
-#define Perl_magic_existspack pPerl->Perl_magic_existspack
-#undef magic_existspack
-#define magic_existspack Perl_magic_existspack
-#undef Perl_magic_freeregexp
-#define Perl_magic_freeregexp pPerl->Perl_magic_freeregexp
-#undef magic_freeregexp
-#define magic_freeregexp Perl_magic_freeregexp
-#undef Perl_magic_get
-#define Perl_magic_get pPerl->Perl_magic_get
-#undef magic_get
-#define magic_get Perl_magic_get
-#undef Perl_magic_getarylen
-#define Perl_magic_getarylen pPerl->Perl_magic_getarylen
-#undef magic_getarylen
-#define magic_getarylen Perl_magic_getarylen
-#undef Perl_magic_getdefelem
-#define Perl_magic_getdefelem pPerl->Perl_magic_getdefelem
-#undef magic_getdefelem
-#define magic_getdefelem Perl_magic_getdefelem
-#undef Perl_magic_getglob
-#define Perl_magic_getglob pPerl->Perl_magic_getglob
-#undef magic_getglob
-#define magic_getglob Perl_magic_getglob
-#undef Perl_magic_getnkeys
-#define Perl_magic_getnkeys pPerl->Perl_magic_getnkeys
-#undef magic_getnkeys
-#define magic_getnkeys Perl_magic_getnkeys
-#undef Perl_magic_getpack
-#define Perl_magic_getpack pPerl->Perl_magic_getpack
-#undef magic_getpack
-#define magic_getpack Perl_magic_getpack
-#undef Perl_magic_getpos
-#define Perl_magic_getpos pPerl->Perl_magic_getpos
-#undef magic_getpos
-#define magic_getpos Perl_magic_getpos
-#undef Perl_magic_getsig
-#define Perl_magic_getsig pPerl->Perl_magic_getsig
-#undef magic_getsig
-#define magic_getsig Perl_magic_getsig
-#undef Perl_magic_getsubstr
-#define Perl_magic_getsubstr pPerl->Perl_magic_getsubstr
-#undef magic_getsubstr
-#define magic_getsubstr Perl_magic_getsubstr
-#undef Perl_magic_gettaint
-#define Perl_magic_gettaint pPerl->Perl_magic_gettaint
-#undef magic_gettaint
-#define magic_gettaint Perl_magic_gettaint
-#undef Perl_magic_getuvar
-#define Perl_magic_getuvar pPerl->Perl_magic_getuvar
-#undef magic_getuvar
-#define magic_getuvar Perl_magic_getuvar
-#undef Perl_magic_getvec
-#define Perl_magic_getvec pPerl->Perl_magic_getvec
-#undef magic_getvec
-#define magic_getvec Perl_magic_getvec
-#undef Perl_magic_len
-#define Perl_magic_len pPerl->Perl_magic_len
-#undef magic_len
-#define magic_len Perl_magic_len
#if defined(USE_THREADS)
-#undef Perl_magic_mutexfree
-#define Perl_magic_mutexfree pPerl->Perl_magic_mutexfree
-#undef magic_mutexfree
-#define magic_mutexfree Perl_magic_mutexfree
#endif
-#undef Perl_magic_nextpack
-#define Perl_magic_nextpack pPerl->Perl_magic_nextpack
-#undef magic_nextpack
-#define magic_nextpack Perl_magic_nextpack
-#undef Perl_magic_regdata_cnt
-#define Perl_magic_regdata_cnt pPerl->Perl_magic_regdata_cnt
-#undef magic_regdata_cnt
-#define magic_regdata_cnt Perl_magic_regdata_cnt
-#undef Perl_magic_regdatum_get
-#define Perl_magic_regdatum_get pPerl->Perl_magic_regdatum_get
-#undef magic_regdatum_get
-#define magic_regdatum_get Perl_magic_regdatum_get
-#undef Perl_magic_set
-#define Perl_magic_set pPerl->Perl_magic_set
-#undef magic_set
-#define magic_set Perl_magic_set
-#undef Perl_magic_setamagic
-#define Perl_magic_setamagic pPerl->Perl_magic_setamagic
-#undef magic_setamagic
-#define magic_setamagic Perl_magic_setamagic
-#undef Perl_magic_setarylen
-#define Perl_magic_setarylen pPerl->Perl_magic_setarylen
-#undef magic_setarylen
-#define magic_setarylen Perl_magic_setarylen
-#undef Perl_magic_setbm
-#define Perl_magic_setbm pPerl->Perl_magic_setbm
-#undef magic_setbm
-#define magic_setbm Perl_magic_setbm
-#undef Perl_magic_setdbline
-#define Perl_magic_setdbline pPerl->Perl_magic_setdbline
-#undef magic_setdbline
-#define magic_setdbline Perl_magic_setdbline
#if defined(USE_LOCALE_COLLATE)
-#undef Perl_magic_setcollxfrm
-#define Perl_magic_setcollxfrm pPerl->Perl_magic_setcollxfrm
-#undef magic_setcollxfrm
-#define magic_setcollxfrm Perl_magic_setcollxfrm
#endif
-#undef Perl_magic_setdefelem
-#define Perl_magic_setdefelem pPerl->Perl_magic_setdefelem
-#undef magic_setdefelem
-#define magic_setdefelem Perl_magic_setdefelem
-#undef Perl_magic_setenv
-#define Perl_magic_setenv pPerl->Perl_magic_setenv
-#undef magic_setenv
-#define magic_setenv Perl_magic_setenv
-#undef Perl_magic_setfm
-#define Perl_magic_setfm pPerl->Perl_magic_setfm
-#undef magic_setfm
-#define magic_setfm Perl_magic_setfm
-#undef Perl_magic_setisa
-#define Perl_magic_setisa pPerl->Perl_magic_setisa
-#undef magic_setisa
-#define magic_setisa Perl_magic_setisa
-#undef Perl_magic_setglob
-#define Perl_magic_setglob pPerl->Perl_magic_setglob
-#undef magic_setglob
-#define magic_setglob Perl_magic_setglob
-#undef Perl_magic_setmglob
-#define Perl_magic_setmglob pPerl->Perl_magic_setmglob
-#undef magic_setmglob
-#define magic_setmglob Perl_magic_setmglob
-#undef Perl_magic_setnkeys
-#define Perl_magic_setnkeys pPerl->Perl_magic_setnkeys
-#undef magic_setnkeys
-#define magic_setnkeys Perl_magic_setnkeys
-#undef Perl_magic_setpack
-#define Perl_magic_setpack pPerl->Perl_magic_setpack
-#undef magic_setpack
-#define magic_setpack Perl_magic_setpack
-#undef Perl_magic_setpos
-#define Perl_magic_setpos pPerl->Perl_magic_setpos
-#undef magic_setpos
-#define magic_setpos Perl_magic_setpos
-#undef Perl_magic_setsig
-#define Perl_magic_setsig pPerl->Perl_magic_setsig
-#undef magic_setsig
-#define magic_setsig Perl_magic_setsig
-#undef Perl_magic_setsubstr
-#define Perl_magic_setsubstr pPerl->Perl_magic_setsubstr
-#undef magic_setsubstr
-#define magic_setsubstr Perl_magic_setsubstr
-#undef Perl_magic_settaint
-#define Perl_magic_settaint pPerl->Perl_magic_settaint
-#undef magic_settaint
-#define magic_settaint Perl_magic_settaint
-#undef Perl_magic_setuvar
-#define Perl_magic_setuvar pPerl->Perl_magic_setuvar
-#undef magic_setuvar
-#define magic_setuvar Perl_magic_setuvar
-#undef Perl_magic_setvec
-#define Perl_magic_setvec pPerl->Perl_magic_setvec
-#undef magic_setvec
-#define magic_setvec Perl_magic_setvec
-#undef Perl_magic_set_all_env
-#define Perl_magic_set_all_env pPerl->Perl_magic_set_all_env
-#undef magic_set_all_env
-#define magic_set_all_env Perl_magic_set_all_env
-#undef Perl_magic_sizepack
-#define Perl_magic_sizepack pPerl->Perl_magic_sizepack
-#undef magic_sizepack
-#define magic_sizepack Perl_magic_sizepack
-#undef Perl_magic_wipepack
-#define Perl_magic_wipepack pPerl->Perl_magic_wipepack
-#undef magic_wipepack
-#define magic_wipepack Perl_magic_wipepack
-#undef Perl_magicname
-#define Perl_magicname pPerl->Perl_magicname
-#undef magicname
-#define magicname Perl_magicname
#undef Perl_markstack_grow
#define Perl_markstack_grow pPerl->Perl_markstack_grow
#undef markstack_grow
#define markstack_grow Perl_markstack_grow
#if defined(USE_LOCALE_COLLATE)
-#undef Perl_mem_collxfrm
-#define Perl_mem_collxfrm pPerl->Perl_mem_collxfrm
-#undef mem_collxfrm
-#define mem_collxfrm Perl_mem_collxfrm
#endif
#undef Perl_mess
#define Perl_mess pPerl->Perl_mess
@@ -1230,10 +742,6 @@
#define Perl_vmess pPerl->Perl_vmess
#undef vmess
#define vmess Perl_vmess
-#undef Perl_qerror
-#define Perl_qerror pPerl->Perl_qerror
-#undef qerror
-#define qerror Perl_qerror
#undef Perl_mg_clear
#define Perl_mg_clear pPerl->Perl_mg_clear
#undef mg_clear
@@ -1270,18 +778,6 @@
#define Perl_mg_size pPerl->Perl_mg_size
#undef mg_size
#define mg_size Perl_mg_size
-#undef Perl_mod
-#define Perl_mod pPerl->Perl_mod
-#undef mod
-#define mod Perl_mod
-#undef Perl_moreswitches
-#define Perl_moreswitches pPerl->Perl_moreswitches
-#undef moreswitches
-#define moreswitches Perl_moreswitches
-#undef Perl_my
-#define Perl_my pPerl->Perl_my
-#undef my
-#define my Perl_my
#undef Perl_my_atof
#define Perl_my_atof pPerl->Perl_my_atof
#undef my_atof
@@ -1358,10 +854,6 @@
#undef my_ntohl
#define my_ntohl Perl_my_ntohl
#endif
-#undef Perl_my_unexec
-#define Perl_my_unexec pPerl->Perl_my_unexec
-#undef my_unexec
-#define my_unexec Perl_my_unexec
#undef Perl_newANONLIST
#define Perl_newANONLIST pPerl->Perl_newANONLIST
#undef newANONLIST
@@ -1558,74 +1050,10 @@
#define Perl_newWHILEOP pPerl->Perl_newWHILEOP
#undef newWHILEOP
#define newWHILEOP Perl_newWHILEOP
-#undef Perl_new_stackinfo
-#define Perl_new_stackinfo pPerl->Perl_new_stackinfo
-#undef new_stackinfo
-#define new_stackinfo Perl_new_stackinfo
-#undef Perl_nextargv
-#define Perl_nextargv pPerl->Perl_nextargv
-#undef nextargv
-#define nextargv Perl_nextargv
#undef Perl_ninstr
#define Perl_ninstr pPerl->Perl_ninstr
#undef ninstr
#define ninstr Perl_ninstr
-#undef Perl_oopsCV
-#define Perl_oopsCV pPerl->Perl_oopsCV
-#undef oopsCV
-#define oopsCV Perl_oopsCV
-#undef Perl_op_free
-#define Perl_op_free pPerl->Perl_op_free
-#undef op_free
-#define op_free Perl_op_free
-#undef Perl_package
-#define Perl_package pPerl->Perl_package
-#undef package
-#define package Perl_package
-#undef Perl_pad_alloc
-#define Perl_pad_alloc pPerl->Perl_pad_alloc
-#undef pad_alloc
-#define pad_alloc Perl_pad_alloc
-#undef Perl_pad_allocmy
-#define Perl_pad_allocmy pPerl->Perl_pad_allocmy
-#undef pad_allocmy
-#define pad_allocmy Perl_pad_allocmy
-#undef Perl_pad_findmy
-#define Perl_pad_findmy pPerl->Perl_pad_findmy
-#undef pad_findmy
-#define pad_findmy Perl_pad_findmy
-#undef Perl_oopsAV
-#define Perl_oopsAV pPerl->Perl_oopsAV
-#undef oopsAV
-#define oopsAV Perl_oopsAV
-#undef Perl_oopsHV
-#define Perl_oopsHV pPerl->Perl_oopsHV
-#undef oopsHV
-#define oopsHV Perl_oopsHV
-#undef Perl_pad_leavemy
-#define Perl_pad_leavemy pPerl->Perl_pad_leavemy
-#undef pad_leavemy
-#define pad_leavemy Perl_pad_leavemy
-#undef Perl_pad_sv
-#define Perl_pad_sv pPerl->Perl_pad_sv
-#undef pad_sv
-#define pad_sv Perl_pad_sv
-#undef Perl_pad_free
-#define Perl_pad_free pPerl->Perl_pad_free
-#undef pad_free
-#define pad_free Perl_pad_free
-#undef Perl_pad_reset
-#define Perl_pad_reset pPerl->Perl_pad_reset
-#undef pad_reset
-#define pad_reset Perl_pad_reset
-#undef Perl_pad_swipe
-#define Perl_pad_swipe pPerl->Perl_pad_swipe
-#undef pad_swipe
-#define pad_swipe Perl_pad_swipe
-#undef Perl_peep
-#define Perl_peep pPerl->Perl_peep
-#undef peep
-#define peep Perl_peep
#if defined(PERL_OBJECT)
#undef Perl_construct
#define Perl_construct pPerl->Perl_construct
@@ -1688,14 +1116,6 @@
#define Perl_get_cv pPerl->Perl_get_cv
#undef get_cv
#define get_cv Perl_get_cv
-#undef Perl_init_i18nl10n
-#define Perl_init_i18nl10n pPerl->Perl_init_i18nl10n
-#undef init_i18nl10n
-#define init_i18nl10n Perl_init_i18nl10n
-#undef Perl_init_i18nl14n
-#define Perl_init_i18nl14n pPerl->Perl_init_i18nl14n
-#undef init_i18nl14n
-#define init_i18nl14n Perl_init_i18nl14n
#undef Perl_new_collate
#define Perl_new_collate pPerl->Perl_new_collate
#undef new_collate
@@ -1724,127 +1144,23 @@
#define Perl_require_pv pPerl->Perl_require_pv
#undef require_pv
#define require_pv Perl_require_pv
-#undef Perl_pidgone
-#define Perl_pidgone pPerl->Perl_pidgone
-#undef pidgone
-#define pidgone Perl_pidgone
-#undef Perl_pmflag
-#define Perl_pmflag pPerl->Perl_pmflag
-#undef pmflag
-#define pmflag Perl_pmflag
-#undef Perl_pmruntime
-#define Perl_pmruntime pPerl->Perl_pmruntime
-#undef pmruntime
-#define pmruntime Perl_pmruntime
-#undef Perl_pmtrans
-#define Perl_pmtrans pPerl->Perl_pmtrans
-#undef pmtrans
-#define pmtrans Perl_pmtrans
-#undef Perl_pop_return
-#define Perl_pop_return pPerl->Perl_pop_return
-#undef pop_return
-#define pop_return Perl_pop_return
#undef Perl_pop_scope
#define Perl_pop_scope pPerl->Perl_pop_scope
#undef pop_scope
#define pop_scope Perl_pop_scope
-#undef Perl_prepend_elem
-#define Perl_prepend_elem pPerl->Perl_prepend_elem
-#undef prepend_elem
-#define prepend_elem Perl_prepend_elem
-#undef Perl_push_return
-#define Perl_push_return pPerl->Perl_push_return
-#undef push_return
-#define push_return Perl_push_return
#undef Perl_push_scope
#define Perl_push_scope pPerl->Perl_push_scope
#undef push_scope
#define push_scope Perl_push_scope
-#undef Perl_ref
-#define Perl_ref pPerl->Perl_ref
-#undef ref
-#define ref Perl_ref
-#undef Perl_refkids
-#define Perl_refkids pPerl->Perl_refkids
-#undef refkids
-#define refkids Perl_refkids
#undef Perl_regdump
#define Perl_regdump pPerl->Perl_regdump
#undef regdump
#define regdump Perl_regdump
-#undef Perl_pregexec
-#define Perl_pregexec pPerl->Perl_pregexec
-#undef pregexec
-#define pregexec Perl_pregexec
-#undef Perl_pregfree
-#define Perl_pregfree pPerl->Perl_pregfree
-#undef pregfree
-#define pregfree Perl_pregfree
-#undef Perl_pregcomp
-#define Perl_pregcomp pPerl->Perl_pregcomp
-#undef pregcomp
-#define pregcomp Perl_pregcomp
-#undef Perl_re_intuit_start
-#define Perl_re_intuit_start pPerl->Perl_re_intuit_start
-#undef re_intuit_start
-#define re_intuit_start Perl_re_intuit_start
-#undef Perl_re_intuit_string
-#define Perl_re_intuit_string pPerl->Perl_re_intuit_string
-#undef re_intuit_string
-#define re_intuit_string Perl_re_intuit_string
-#undef Perl_regexec_flags
-#define Perl_regexec_flags pPerl->Perl_regexec_flags
-#undef regexec_flags
-#define regexec_flags Perl_regexec_flags
-#undef Perl_regnext
-#define Perl_regnext pPerl->Perl_regnext
-#undef regnext
-#define regnext Perl_regnext
-#undef Perl_regprop
-#define Perl_regprop pPerl->Perl_regprop
-#undef regprop
-#define regprop Perl_regprop
-#undef Perl_repeatcpy
-#define Perl_repeatcpy pPerl->Perl_repeatcpy
-#undef repeatcpy
-#define repeatcpy Perl_repeatcpy
#undef Perl_rninstr
#define Perl_rninstr pPerl->Perl_rninstr
#undef rninstr
#define rninstr Perl_rninstr
-#undef Perl_rsignal
-#define Perl_rsignal pPerl->Perl_rsignal
-#undef rsignal
-#define rsignal Perl_rsignal
-#undef Perl_rsignal_restore
-#define Perl_rsignal_restore pPerl->Perl_rsignal_restore
-#undef rsignal_restore
-#define rsignal_restore Perl_rsignal_restore
-#undef Perl_rsignal_save
-#define Perl_rsignal_save pPerl->Perl_rsignal_save
-#undef rsignal_save
-#define rsignal_save Perl_rsignal_save
-#undef Perl_rsignal_state
-#define Perl_rsignal_state pPerl->Perl_rsignal_state
-#undef rsignal_state
-#define rsignal_state Perl_rsignal_state
-#undef Perl_rxres_free
-#define Perl_rxres_free pPerl->Perl_rxres_free
-#undef rxres_free
-#define rxres_free Perl_rxres_free
-#undef Perl_rxres_restore
-#define Perl_rxres_restore pPerl->Perl_rxres_restore
-#undef rxres_restore
-#define rxres_restore Perl_rxres_restore
-#undef Perl_rxres_save
-#define Perl_rxres_save pPerl->Perl_rxres_save
-#undef rxres_save
-#define rxres_save Perl_rxres_save
#if !defined(HAS_RENAME)
-#undef Perl_same_dirent
-#define Perl_same_dirent pPerl->Perl_same_dirent
-#undef same_dirent
-#define same_dirent Perl_same_dirent
#endif
#undef Perl_savepv
#define Perl_savepv pPerl->Perl_savepv
@@ -1894,10 +1210,6 @@
#define Perl_save_freesv pPerl->Perl_save_freesv
#undef save_freesv
#define save_freesv Perl_save_freesv
-#undef Perl_save_freeop
-#define Perl_save_freeop pPerl->Perl_save_freeop
-#undef save_freeop
-#define save_freeop Perl_save_freeop
#undef Perl_save_freepv
#define Perl_save_freepv pPerl->Perl_save_freepv
#undef save_freepv
@@ -1962,10 +1274,6 @@
#define Perl_save_nogv pPerl->Perl_save_nogv
#undef save_nogv
#define save_nogv Perl_save_nogv
-#undef Perl_save_op
-#define Perl_save_op pPerl->Perl_save_op
-#undef save_op
-#define save_op Perl_save_op
#undef Perl_save_scalar
#define Perl_save_scalar pPerl->Perl_save_scalar
#undef save_scalar
@@ -1994,72 +1302,8 @@
#define Perl_save_threadsv pPerl->Perl_save_threadsv
#undef save_threadsv
#define save_threadsv Perl_save_threadsv
-#undef Perl_sawparens
-#define Perl_sawparens pPerl->Perl_sawparens
-#undef sawparens
-#define sawparens Perl_sawparens
-#undef Perl_scalar
-#define Perl_scalar pPerl->Perl_scalar
-#undef scalar
-#define scalar Perl_scalar
-#undef Perl_scalarkids
-#define Perl_scalarkids pPerl->Perl_scalarkids
-#undef scalarkids
-#define scalarkids Perl_scalarkids
-#undef Perl_scalarseq
-#define Perl_scalarseq pPerl->Perl_scalarseq
-#undef scalarseq
-#define scalarseq Perl_scalarseq
-#undef Perl_scalarvoid
-#define Perl_scalarvoid pPerl->Perl_scalarvoid
-#undef scalarvoid
-#define scalarvoid Perl_scalarvoid
-#undef Perl_scan_bin
-#define Perl_scan_bin pPerl->Perl_scan_bin
-#undef scan_bin
-#define scan_bin Perl_scan_bin
-#undef Perl_scan_hex
-#define Perl_scan_hex pPerl->Perl_scan_hex
-#undef scan_hex
-#define scan_hex Perl_scan_hex
-#undef Perl_scan_num
-#define Perl_scan_num pPerl->Perl_scan_num
-#undef scan_num
-#define scan_num Perl_scan_num
-#undef Perl_scan_oct
-#define Perl_scan_oct pPerl->Perl_scan_oct
-#undef scan_oct
-#define scan_oct Perl_scan_oct
-#undef Perl_scope
-#define Perl_scope pPerl->Perl_scope
-#undef scope
-#define scope Perl_scope
-#undef Perl_screaminstr
-#define Perl_screaminstr pPerl->Perl_screaminstr
-#undef screaminstr
-#define screaminstr Perl_screaminstr
#if !defined(VMS)
-#undef Perl_setenv_getix
-#define Perl_setenv_getix pPerl->Perl_setenv_getix
-#undef setenv_getix
-#define setenv_getix Perl_setenv_getix
#endif
-#undef Perl_setdefout
-#define Perl_setdefout pPerl->Perl_setdefout
-#undef setdefout
-#define setdefout Perl_setdefout
-#undef Perl_sharepvn
-#define Perl_sharepvn pPerl->Perl_sharepvn
-#undef sharepvn
-#define sharepvn Perl_sharepvn
-#undef Perl_share_hek
-#define Perl_share_hek pPerl->Perl_share_hek
-#undef share_hek
-#define share_hek Perl_share_hek
-#undef Perl_sighandler
-#define Perl_sighandler pPerl->Perl_sighandler
-#undef sighandler
-#define sighandler Perl_sighandler
#undef Perl_stack_grow
#define Perl_stack_grow pPerl->Perl_stack_grow
#undef stack_grow
@@ -2068,10 +1312,6 @@
#define Perl_start_subparse pPerl->Perl_start_subparse
#undef start_subparse
#define start_subparse Perl_start_subparse
-#undef Perl_sub_crush_depth
-#define Perl_sub_crush_depth pPerl->Perl_sub_crush_depth
-#undef sub_crush_depth
-#define sub_crush_depth Perl_sub_crush_depth
#undef Perl_sv_2bool
#define Perl_sv_2bool pPerl->Perl_sv_2bool
#undef sv_2bool
@@ -2140,10 +1380,6 @@
#define Perl_sv_true pPerl->Perl_sv_true
#undef sv_true
#define sv_true Perl_sv_true
-#undef Perl_sv_add_arena
-#define Perl_sv_add_arena pPerl->Perl_sv_add_arena
-#undef sv_add_arena
-#define sv_add_arena Perl_sv_add_arena
#undef Perl_sv_backoff
#define Perl_sv_backoff pPerl->Perl_sv_backoff
#undef sv_backoff
@@ -2176,14 +1412,6 @@
#define Perl_sv_chop pPerl->Perl_sv_chop
#undef sv_chop
#define sv_chop Perl_sv_chop
-#undef Perl_sv_clean_all
-#define Perl_sv_clean_all pPerl->Perl_sv_clean_all
-#undef sv_clean_all
-#define sv_clean_all Perl_sv_clean_all
-#undef Perl_sv_clean_objs
-#define Perl_sv_clean_objs pPerl->Perl_sv_clean_objs
-#undef sv_clean_objs
-#define sv_clean_objs Perl_sv_clean_objs
#undef Perl_sv_clear
#define Perl_sv_clear pPerl->Perl_sv_clear
#undef sv_clear
@@ -2202,10 +1430,6 @@
#undef sv_collxfrm
#define sv_collxfrm Perl_sv_collxfrm
#endif
-#undef Perl_sv_compile_2op
-#define Perl_sv_compile_2op pPerl->Perl_sv_compile_2op
-#undef sv_compile_2op
-#define sv_compile_2op Perl_sv_compile_2op
#undef Perl_sv_dec
#define Perl_sv_dec pPerl->Perl_sv_dec
#undef sv_dec
@@ -2226,14 +1450,6 @@
#define Perl_sv_free pPerl->Perl_sv_free
#undef sv_free
#define sv_free Perl_sv_free
-#undef Perl_sv_free_arenas
-#define Perl_sv_free_arenas pPerl->Perl_sv_free_arenas
-#undef sv_free_arenas
-#define sv_free_arenas Perl_sv_free_arenas
-#undef Perl_sv_gets
-#define Perl_sv_gets pPerl->Perl_sv_gets
-#undef sv_gets
-#define sv_gets Perl_sv_gets
#undef Perl_sv_grow
#define Perl_sv_grow pPerl->Perl_sv_grow
#undef sv_grow
@@ -2406,14 +1622,6 @@
#define Perl_sv_vsetpvfn pPerl->Perl_sv_vsetpvfn
#undef sv_vsetpvfn
#define sv_vsetpvfn Perl_sv_vsetpvfn
-#undef Perl_swash_init
-#define Perl_swash_init pPerl->Perl_swash_init
-#undef swash_init
-#define swash_init Perl_swash_init
-#undef Perl_swash_fetch
-#define Perl_swash_fetch pPerl->Perl_swash_fetch
-#undef swash_fetch
-#define swash_fetch Perl_swash_fetch
#undef Perl_taint_env
#define Perl_taint_env pPerl->Perl_taint_env
#undef taint_env
@@ -2441,23 +1649,7 @@
#define unlnk Perl_unlnk
#endif
#if defined(USE_THREADS)
-#undef Perl_unlock_condpair
-#define Perl_unlock_condpair pPerl->Perl_unlock_condpair
-#undef unlock_condpair
-#define unlock_condpair Perl_unlock_condpair
#endif
-#undef Perl_unsharepvn
-#define Perl_unsharepvn pPerl->Perl_unsharepvn
-#undef unsharepvn
-#define unsharepvn Perl_unsharepvn
-#undef Perl_unshare_hek
-#define Perl_unshare_hek pPerl->Perl_unshare_hek
-#undef unshare_hek
-#define unshare_hek Perl_unshare_hek
-#undef Perl_utilize
-#define Perl_utilize pPerl->Perl_utilize
-#undef utilize
-#define utilize Perl_utilize
#undef Perl_utf16_to_utf8
#define Perl_utf16_to_utf8 pPerl->Perl_utf16_to_utf8
#undef utf16_to_utf8
@@ -2482,26 +1674,6 @@
#define Perl_uv_to_utf8 pPerl->Perl_uv_to_utf8
#undef uv_to_utf8
#define uv_to_utf8 Perl_uv_to_utf8
-#undef Perl_vivify_defelem
-#define Perl_vivify_defelem pPerl->Perl_vivify_defelem
-#undef vivify_defelem
-#define vivify_defelem Perl_vivify_defelem
-#undef Perl_vivify_ref
-#define Perl_vivify_ref pPerl->Perl_vivify_ref
-#undef vivify_ref
-#define vivify_ref Perl_vivify_ref
-#undef Perl_wait4pid
-#define Perl_wait4pid pPerl->Perl_wait4pid
-#undef wait4pid
-#define wait4pid Perl_wait4pid
-#undef Perl_report_closed_fh
-#define Perl_report_closed_fh pPerl->Perl_report_closed_fh
-#undef report_closed_fh
-#define report_closed_fh Perl_report_closed_fh
-#undef Perl_report_uninit
-#define Perl_report_uninit pPerl->Perl_report_uninit
-#undef report_uninit
-#define report_uninit Perl_report_uninit
#undef Perl_warn
#define Perl_warn pPerl->Perl_warn
#undef warn
@@ -2518,37 +1690,9 @@
#define Perl_vwarner pPerl->Perl_vwarner
#undef vwarner
#define vwarner Perl_vwarner
-#undef Perl_watch
-#define Perl_watch pPerl->Perl_watch
-#undef watch
-#define watch Perl_watch
-#undef Perl_whichsig
-#define Perl_whichsig pPerl->Perl_whichsig
-#undef whichsig
-#define whichsig Perl_whichsig
-#undef Perl_yyerror
-#define Perl_yyerror pPerl->Perl_yyerror
-#undef yyerror
-#define yyerror Perl_yyerror
#if defined(USE_PURE_BISON)
-#undef Perl_yylex
-#define Perl_yylex pPerl->Perl_yylex
-#undef yylex
-#define yylex Perl_yylex
#else
-#undef Perl_yylex
-#define Perl_yylex pPerl->Perl_yylex
-#undef yylex
-#define yylex Perl_yylex
#endif
-#undef Perl_yyparse
-#define Perl_yyparse pPerl->Perl_yyparse
-#undef yyparse
-#define yyparse Perl_yyparse
-#undef Perl_yywarn
-#define Perl_yywarn pPerl->Perl_yywarn
-#undef yywarn
-#define yywarn Perl_yywarn
#if defined(MYMALLOC)
#undef Perl_dump_mstats
#define Perl_dump_mstats pPerl->Perl_dump_mstats
@@ -2667,10 +1811,6 @@
#define Perl_get_vtbl pPerl->Perl_get_vtbl
#undef get_vtbl
#define get_vtbl Perl_get_vtbl
-#undef Perl_pv_display
-#define Perl_pv_display pPerl->Perl_pv_display
-#undef pv_display
-#define pv_display Perl_pv_display
#undef Perl_dump_indent
#define Perl_dump_indent pPerl->Perl_dump_indent
#undef dump_indent
@@ -2759,10 +1899,6 @@
#define Perl_sv_rvweaken pPerl->Perl_sv_rvweaken
#undef sv_rvweaken
#define sv_rvweaken Perl_sv_rvweaken
-#undef Perl_magic_killbackrefs
-#define Perl_magic_killbackrefs pPerl->Perl_magic_killbackrefs
-#undef magic_killbackrefs
-#define magic_killbackrefs Perl_magic_killbackrefs
#undef Perl_newANONATTRSUB
#define Perl_newANONATTRSUB pPerl->Perl_newANONATTRSUB
#undef newANONATTRSUB
@@ -2775,14 +1911,6 @@
#define Perl_newMYSUB pPerl->Perl_newMYSUB
#undef newMYSUB
#define newMYSUB Perl_newMYSUB
-#undef Perl_my_attrs
-#define Perl_my_attrs pPerl->Perl_my_attrs
-#undef my_attrs
-#define my_attrs Perl_my_attrs
-#undef Perl_boot_core_xsutils
-#define Perl_boot_core_xsutils pPerl->Perl_boot_core_xsutils
-#undef boot_core_xsutils
-#define boot_core_xsutils Perl_boot_core_xsutils
#if defined(USE_ITHREADS)
#undef Perl_cx_dup
#define Perl_cx_dup pPerl->Perl_cx_dup
@@ -2913,1538 +2041,6 @@
#endif
#if defined(PERL_OBJECT)
#endif
-#undef Perl_ck_anoncode
-#define Perl_ck_anoncode pPerl->Perl_ck_anoncode
-#undef ck_anoncode
-#define ck_anoncode Perl_ck_anoncode
-#undef Perl_ck_bitop
-#define Perl_ck_bitop pPerl->Perl_ck_bitop
-#undef ck_bitop
-#define ck_bitop Perl_ck_bitop
-#undef Perl_ck_concat
-#define Perl_ck_concat pPerl->Perl_ck_concat
-#undef ck_concat
-#define ck_concat Perl_ck_concat
-#undef Perl_ck_defined
-#define Perl_ck_defined pPerl->Perl_ck_defined
-#undef ck_defined
-#define ck_defined Perl_ck_defined
-#undef Perl_ck_delete
-#define Perl_ck_delete pPerl->Perl_ck_delete
-#undef ck_delete
-#define ck_delete Perl_ck_delete
-#undef Perl_ck_eof
-#define Perl_ck_eof pPerl->Perl_ck_eof
-#undef ck_eof
-#define ck_eof Perl_ck_eof
-#undef Perl_ck_eval
-#define Perl_ck_eval pPerl->Perl_ck_eval
-#undef ck_eval
-#define ck_eval Perl_ck_eval
-#undef Perl_ck_exec
-#define Perl_ck_exec pPerl->Perl_ck_exec
-#undef ck_exec
-#define ck_exec Perl_ck_exec
-#undef Perl_ck_exists
-#define Perl_ck_exists pPerl->Perl_ck_exists
-#undef ck_exists
-#define ck_exists Perl_ck_exists
-#undef Perl_ck_ftst
-#define Perl_ck_ftst pPerl->Perl_ck_ftst
-#undef ck_ftst
-#define ck_ftst Perl_ck_ftst
-#undef Perl_ck_fun
-#define Perl_ck_fun pPerl->Perl_ck_fun
-#undef ck_fun
-#define ck_fun Perl_ck_fun
-#undef Perl_ck_fun_locale
-#define Perl_ck_fun_locale pPerl->Perl_ck_fun_locale
-#undef ck_fun_locale
-#define ck_fun_locale Perl_ck_fun_locale
-#undef Perl_ck_glob
-#define Perl_ck_glob pPerl->Perl_ck_glob
-#undef ck_glob
-#define ck_glob Perl_ck_glob
-#undef Perl_ck_grep
-#define Perl_ck_grep pPerl->Perl_ck_grep
-#undef ck_grep
-#define ck_grep Perl_ck_grep
-#undef Perl_ck_index
-#define Perl_ck_index pPerl->Perl_ck_index
-#undef ck_index
-#define ck_index Perl_ck_index
-#undef Perl_ck_join
-#define Perl_ck_join pPerl->Perl_ck_join
-#undef ck_join
-#define ck_join Perl_ck_join
-#undef Perl_ck_lengthconst
-#define Perl_ck_lengthconst pPerl->Perl_ck_lengthconst
-#undef ck_lengthconst
-#define ck_lengthconst Perl_ck_lengthconst
-#undef Perl_ck_lfun
-#define Perl_ck_lfun pPerl->Perl_ck_lfun
-#undef ck_lfun
-#define ck_lfun Perl_ck_lfun
-#undef Perl_ck_listiob
-#define Perl_ck_listiob pPerl->Perl_ck_listiob
-#undef ck_listiob
-#define ck_listiob Perl_ck_listiob
-#undef Perl_ck_match
-#define Perl_ck_match pPerl->Perl_ck_match
-#undef ck_match
-#define ck_match Perl_ck_match
-#undef Perl_ck_method
-#define Perl_ck_method pPerl->Perl_ck_method
-#undef ck_method
-#define ck_method Perl_ck_method
-#undef Perl_ck_null
-#define Perl_ck_null pPerl->Perl_ck_null
-#undef ck_null
-#define ck_null Perl_ck_null
-#undef Perl_ck_repeat
-#define Perl_ck_repeat pPerl->Perl_ck_repeat
-#undef ck_repeat
-#define ck_repeat Perl_ck_repeat
-#undef Perl_ck_require
-#define Perl_ck_require pPerl->Perl_ck_require
-#undef ck_require
-#define ck_require Perl_ck_require
-#undef Perl_ck_rfun
-#define Perl_ck_rfun pPerl->Perl_ck_rfun
-#undef ck_rfun
-#define ck_rfun Perl_ck_rfun
-#undef Perl_ck_rvconst
-#define Perl_ck_rvconst pPerl->Perl_ck_rvconst
-#undef ck_rvconst
-#define ck_rvconst Perl_ck_rvconst
-#undef Perl_ck_sassign
-#define Perl_ck_sassign pPerl->Perl_ck_sassign
-#undef ck_sassign
-#define ck_sassign Perl_ck_sassign
-#undef Perl_ck_scmp
-#define Perl_ck_scmp pPerl->Perl_ck_scmp
-#undef ck_scmp
-#define ck_scmp Perl_ck_scmp
-#undef Perl_ck_select
-#define Perl_ck_select pPerl->Perl_ck_select
-#undef ck_select
-#define ck_select Perl_ck_select
-#undef Perl_ck_shift
-#define Perl_ck_shift pPerl->Perl_ck_shift
-#undef ck_shift
-#define ck_shift Perl_ck_shift
-#undef Perl_ck_sort
-#define Perl_ck_sort pPerl->Perl_ck_sort
-#undef ck_sort
-#define ck_sort Perl_ck_sort
-#undef Perl_ck_spair
-#define Perl_ck_spair pPerl->Perl_ck_spair
-#undef ck_spair
-#define ck_spair Perl_ck_spair
-#undef Perl_ck_split
-#define Perl_ck_split pPerl->Perl_ck_split
-#undef ck_split
-#define ck_split Perl_ck_split
-#undef Perl_ck_subr
-#define Perl_ck_subr pPerl->Perl_ck_subr
-#undef ck_subr
-#define ck_subr Perl_ck_subr
-#undef Perl_ck_svconst
-#define Perl_ck_svconst pPerl->Perl_ck_svconst
-#undef ck_svconst
-#define ck_svconst Perl_ck_svconst
-#undef Perl_ck_trunc
-#define Perl_ck_trunc pPerl->Perl_ck_trunc
-#undef ck_trunc
-#define ck_trunc Perl_ck_trunc
-#undef Perl_pp_aassign
-#define Perl_pp_aassign pPerl->Perl_pp_aassign
-#undef pp_aassign
-#define pp_aassign Perl_pp_aassign
-#undef Perl_pp_abs
-#define Perl_pp_abs pPerl->Perl_pp_abs
-#undef pp_abs
-#define pp_abs Perl_pp_abs
-#undef Perl_pp_accept
-#define Perl_pp_accept pPerl->Perl_pp_accept
-#undef pp_accept
-#define pp_accept Perl_pp_accept
-#undef Perl_pp_add
-#define Perl_pp_add pPerl->Perl_pp_add
-#undef pp_add
-#define pp_add Perl_pp_add
-#undef Perl_pp_aelem
-#define Perl_pp_aelem pPerl->Perl_pp_aelem
-#undef pp_aelem
-#define pp_aelem Perl_pp_aelem
-#undef Perl_pp_aelemfast
-#define Perl_pp_aelemfast pPerl->Perl_pp_aelemfast
-#undef pp_aelemfast
-#define pp_aelemfast Perl_pp_aelemfast
-#undef Perl_pp_alarm
-#define Perl_pp_alarm pPerl->Perl_pp_alarm
-#undef pp_alarm
-#define pp_alarm Perl_pp_alarm
-#undef Perl_pp_and
-#define Perl_pp_and pPerl->Perl_pp_and
-#undef pp_and
-#define pp_and Perl_pp_and
-#undef Perl_pp_andassign
-#define Perl_pp_andassign pPerl->Perl_pp_andassign
-#undef pp_andassign
-#define pp_andassign Perl_pp_andassign
-#undef Perl_pp_anoncode
-#define Perl_pp_anoncode pPerl->Perl_pp_anoncode
-#undef pp_anoncode
-#define pp_anoncode Perl_pp_anoncode
-#undef Perl_pp_anonhash
-#define Perl_pp_anonhash pPerl->Perl_pp_anonhash
-#undef pp_anonhash
-#define pp_anonhash Perl_pp_anonhash
-#undef Perl_pp_anonlist
-#define Perl_pp_anonlist pPerl->Perl_pp_anonlist
-#undef pp_anonlist
-#define pp_anonlist Perl_pp_anonlist
-#undef Perl_pp_aslice
-#define Perl_pp_aslice pPerl->Perl_pp_aslice
-#undef pp_aslice
-#define pp_aslice Perl_pp_aslice
-#undef Perl_pp_atan2
-#define Perl_pp_atan2 pPerl->Perl_pp_atan2
-#undef pp_atan2
-#define pp_atan2 Perl_pp_atan2
-#undef Perl_pp_av2arylen
-#define Perl_pp_av2arylen pPerl->Perl_pp_av2arylen
-#undef pp_av2arylen
-#define pp_av2arylen Perl_pp_av2arylen
-#undef Perl_pp_backtick
-#define Perl_pp_backtick pPerl->Perl_pp_backtick
-#undef pp_backtick
-#define pp_backtick Perl_pp_backtick
-#undef Perl_pp_bind
-#define Perl_pp_bind pPerl->Perl_pp_bind
-#undef pp_bind
-#define pp_bind Perl_pp_bind
-#undef Perl_pp_binmode
-#define Perl_pp_binmode pPerl->Perl_pp_binmode
-#undef pp_binmode
-#define pp_binmode Perl_pp_binmode
-#undef Perl_pp_bit_and
-#define Perl_pp_bit_and pPerl->Perl_pp_bit_and
-#undef pp_bit_and
-#define pp_bit_and Perl_pp_bit_and
-#undef Perl_pp_bit_or
-#define Perl_pp_bit_or pPerl->Perl_pp_bit_or
-#undef pp_bit_or
-#define pp_bit_or Perl_pp_bit_or
-#undef Perl_pp_bit_xor
-#define Perl_pp_bit_xor pPerl->Perl_pp_bit_xor
-#undef pp_bit_xor
-#define pp_bit_xor Perl_pp_bit_xor
-#undef Perl_pp_bless
-#define Perl_pp_bless pPerl->Perl_pp_bless
-#undef pp_bless
-#define pp_bless Perl_pp_bless
-#undef Perl_pp_caller
-#define Perl_pp_caller pPerl->Perl_pp_caller
-#undef pp_caller
-#define pp_caller Perl_pp_caller
-#undef Perl_pp_chdir
-#define Perl_pp_chdir pPerl->Perl_pp_chdir
-#undef pp_chdir
-#define pp_chdir Perl_pp_chdir
-#undef Perl_pp_chmod
-#define Perl_pp_chmod pPerl->Perl_pp_chmod
-#undef pp_chmod
-#define pp_chmod Perl_pp_chmod
-#undef Perl_pp_chomp
-#define Perl_pp_chomp pPerl->Perl_pp_chomp
-#undef pp_chomp
-#define pp_chomp Perl_pp_chomp
-#undef Perl_pp_chop
-#define Perl_pp_chop pPerl->Perl_pp_chop
-#undef pp_chop
-#define pp_chop Perl_pp_chop
-#undef Perl_pp_chown
-#define Perl_pp_chown pPerl->Perl_pp_chown
-#undef pp_chown
-#define pp_chown Perl_pp_chown
-#undef Perl_pp_chr
-#define Perl_pp_chr pPerl->Perl_pp_chr
-#undef pp_chr
-#define pp_chr Perl_pp_chr
-#undef Perl_pp_chroot
-#define Perl_pp_chroot pPerl->Perl_pp_chroot
-#undef pp_chroot
-#define pp_chroot Perl_pp_chroot
-#undef Perl_pp_close
-#define Perl_pp_close pPerl->Perl_pp_close
-#undef pp_close
-#define pp_close Perl_pp_close
-#undef Perl_pp_closedir
-#define Perl_pp_closedir pPerl->Perl_pp_closedir
-#undef pp_closedir
-#define pp_closedir Perl_pp_closedir
-#undef Perl_pp_complement
-#define Perl_pp_complement pPerl->Perl_pp_complement
-#undef pp_complement
-#define pp_complement Perl_pp_complement
-#undef Perl_pp_concat
-#define Perl_pp_concat pPerl->Perl_pp_concat
-#undef pp_concat
-#define pp_concat Perl_pp_concat
-#undef Perl_pp_cond_expr
-#define Perl_pp_cond_expr pPerl->Perl_pp_cond_expr
-#undef pp_cond_expr
-#define pp_cond_expr Perl_pp_cond_expr
-#undef Perl_pp_connect
-#define Perl_pp_connect pPerl->Perl_pp_connect
-#undef pp_connect
-#define pp_connect Perl_pp_connect
-#undef Perl_pp_const
-#define Perl_pp_const pPerl->Perl_pp_const
-#undef pp_const
-#define pp_const Perl_pp_const
-#undef Perl_pp_cos
-#define Perl_pp_cos pPerl->Perl_pp_cos
-#undef pp_cos
-#define pp_cos Perl_pp_cos
-#undef Perl_pp_crypt
-#define Perl_pp_crypt pPerl->Perl_pp_crypt
-#undef pp_crypt
-#define pp_crypt Perl_pp_crypt
-#undef Perl_pp_dbmclose
-#define Perl_pp_dbmclose pPerl->Perl_pp_dbmclose
-#undef pp_dbmclose
-#define pp_dbmclose Perl_pp_dbmclose
-#undef Perl_pp_dbmopen
-#define Perl_pp_dbmopen pPerl->Perl_pp_dbmopen
-#undef pp_dbmopen
-#define pp_dbmopen Perl_pp_dbmopen
-#undef Perl_pp_dbstate
-#define Perl_pp_dbstate pPerl->Perl_pp_dbstate
-#undef pp_dbstate
-#define pp_dbstate Perl_pp_dbstate
-#undef Perl_pp_defined
-#define Perl_pp_defined pPerl->Perl_pp_defined
-#undef pp_defined
-#define pp_defined Perl_pp_defined
-#undef Perl_pp_delete
-#define Perl_pp_delete pPerl->Perl_pp_delete
-#undef pp_delete
-#define pp_delete Perl_pp_delete
-#undef Perl_pp_die
-#define Perl_pp_die pPerl->Perl_pp_die
-#undef pp_die
-#define pp_die Perl_pp_die
-#undef Perl_pp_divide
-#define Perl_pp_divide pPerl->Perl_pp_divide
-#undef pp_divide
-#define pp_divide Perl_pp_divide
-#undef Perl_pp_dofile
-#define Perl_pp_dofile pPerl->Perl_pp_dofile
-#undef pp_dofile
-#define pp_dofile Perl_pp_dofile
-#undef Perl_pp_dump
-#define Perl_pp_dump pPerl->Perl_pp_dump
-#undef pp_dump
-#define pp_dump Perl_pp_dump
-#undef Perl_pp_each
-#define Perl_pp_each pPerl->Perl_pp_each
-#undef pp_each
-#define pp_each Perl_pp_each
-#undef Perl_pp_egrent
-#define Perl_pp_egrent pPerl->Perl_pp_egrent
-#undef pp_egrent
-#define pp_egrent Perl_pp_egrent
-#undef Perl_pp_ehostent
-#define Perl_pp_ehostent pPerl->Perl_pp_ehostent
-#undef pp_ehostent
-#define pp_ehostent Perl_pp_ehostent
-#undef Perl_pp_enetent
-#define Perl_pp_enetent pPerl->Perl_pp_enetent
-#undef pp_enetent
-#define pp_enetent Perl_pp_enetent
-#undef Perl_pp_enter
-#define Perl_pp_enter pPerl->Perl_pp_enter
-#undef pp_enter
-#define pp_enter Perl_pp_enter
-#undef Perl_pp_entereval
-#define Perl_pp_entereval pPerl->Perl_pp_entereval
-#undef pp_entereval
-#define pp_entereval Perl_pp_entereval
-#undef Perl_pp_enteriter
-#define Perl_pp_enteriter pPerl->Perl_pp_enteriter
-#undef pp_enteriter
-#define pp_enteriter Perl_pp_enteriter
-#undef Perl_pp_enterloop
-#define Perl_pp_enterloop pPerl->Perl_pp_enterloop
-#undef pp_enterloop
-#define pp_enterloop Perl_pp_enterloop
-#undef Perl_pp_entersub
-#define Perl_pp_entersub pPerl->Perl_pp_entersub
-#undef pp_entersub
-#define pp_entersub Perl_pp_entersub
-#undef Perl_pp_entertry
-#define Perl_pp_entertry pPerl->Perl_pp_entertry
-#undef pp_entertry
-#define pp_entertry Perl_pp_entertry
-#undef Perl_pp_enterwrite
-#define Perl_pp_enterwrite pPerl->Perl_pp_enterwrite
-#undef pp_enterwrite
-#define pp_enterwrite Perl_pp_enterwrite
-#undef Perl_pp_eof
-#define Perl_pp_eof pPerl->Perl_pp_eof
-#undef pp_eof
-#define pp_eof Perl_pp_eof
-#undef Perl_pp_eprotoent
-#define Perl_pp_eprotoent pPerl->Perl_pp_eprotoent
-#undef pp_eprotoent
-#define pp_eprotoent Perl_pp_eprotoent
-#undef Perl_pp_epwent
-#define Perl_pp_epwent pPerl->Perl_pp_epwent
-#undef pp_epwent
-#define pp_epwent Perl_pp_epwent
-#undef Perl_pp_eq
-#define Perl_pp_eq pPerl->Perl_pp_eq
-#undef pp_eq
-#define pp_eq Perl_pp_eq
-#undef Perl_pp_eservent
-#define Perl_pp_eservent pPerl->Perl_pp_eservent
-#undef pp_eservent
-#define pp_eservent Perl_pp_eservent
-#undef Perl_pp_exec
-#define Perl_pp_exec pPerl->Perl_pp_exec
-#undef pp_exec
-#define pp_exec Perl_pp_exec
-#undef Perl_pp_exists
-#define Perl_pp_exists pPerl->Perl_pp_exists
-#undef pp_exists
-#define pp_exists Perl_pp_exists
-#undef Perl_pp_exit
-#define Perl_pp_exit pPerl->Perl_pp_exit
-#undef pp_exit
-#define pp_exit Perl_pp_exit
-#undef Perl_pp_exp
-#define Perl_pp_exp pPerl->Perl_pp_exp
-#undef pp_exp
-#define pp_exp Perl_pp_exp
-#undef Perl_pp_fcntl
-#define Perl_pp_fcntl pPerl->Perl_pp_fcntl
-#undef pp_fcntl
-#define pp_fcntl Perl_pp_fcntl
-#undef Perl_pp_fileno
-#define Perl_pp_fileno pPerl->Perl_pp_fileno
-#undef pp_fileno
-#define pp_fileno Perl_pp_fileno
-#undef Perl_pp_flip
-#define Perl_pp_flip pPerl->Perl_pp_flip
-#undef pp_flip
-#define pp_flip Perl_pp_flip
-#undef Perl_pp_flock
-#define Perl_pp_flock pPerl->Perl_pp_flock
-#undef pp_flock
-#define pp_flock Perl_pp_flock
-#undef Perl_pp_flop
-#define Perl_pp_flop pPerl->Perl_pp_flop
-#undef pp_flop
-#define pp_flop Perl_pp_flop
-#undef Perl_pp_fork
-#define Perl_pp_fork pPerl->Perl_pp_fork
-#undef pp_fork
-#define pp_fork Perl_pp_fork
-#undef Perl_pp_formline
-#define Perl_pp_formline pPerl->Perl_pp_formline
-#undef pp_formline
-#define pp_formline Perl_pp_formline
-#undef Perl_pp_ftatime
-#define Perl_pp_ftatime pPerl->Perl_pp_ftatime
-#undef pp_ftatime
-#define pp_ftatime Perl_pp_ftatime
-#undef Perl_pp_ftbinary
-#define Perl_pp_ftbinary pPerl->Perl_pp_ftbinary
-#undef pp_ftbinary
-#define pp_ftbinary Perl_pp_ftbinary
-#undef Perl_pp_ftblk
-#define Perl_pp_ftblk pPerl->Perl_pp_ftblk
-#undef pp_ftblk
-#define pp_ftblk Perl_pp_ftblk
-#undef Perl_pp_ftchr
-#define Perl_pp_ftchr pPerl->Perl_pp_ftchr
-#undef pp_ftchr
-#define pp_ftchr Perl_pp_ftchr
-#undef Perl_pp_ftctime
-#define Perl_pp_ftctime pPerl->Perl_pp_ftctime
-#undef pp_ftctime
-#define pp_ftctime Perl_pp_ftctime
-#undef Perl_pp_ftdir
-#define Perl_pp_ftdir pPerl->Perl_pp_ftdir
-#undef pp_ftdir
-#define pp_ftdir Perl_pp_ftdir
-#undef Perl_pp_fteexec
-#define Perl_pp_fteexec pPerl->Perl_pp_fteexec
-#undef pp_fteexec
-#define pp_fteexec Perl_pp_fteexec
-#undef Perl_pp_fteowned
-#define Perl_pp_fteowned pPerl->Perl_pp_fteowned
-#undef pp_fteowned
-#define pp_fteowned Perl_pp_fteowned
-#undef Perl_pp_fteread
-#define Perl_pp_fteread pPerl->Perl_pp_fteread
-#undef pp_fteread
-#define pp_fteread Perl_pp_fteread
-#undef Perl_pp_ftewrite
-#define Perl_pp_ftewrite pPerl->Perl_pp_ftewrite
-#undef pp_ftewrite
-#define pp_ftewrite Perl_pp_ftewrite
-#undef Perl_pp_ftfile
-#define Perl_pp_ftfile pPerl->Perl_pp_ftfile
-#undef pp_ftfile
-#define pp_ftfile Perl_pp_ftfile
-#undef Perl_pp_ftis
-#define Perl_pp_ftis pPerl->Perl_pp_ftis
-#undef pp_ftis
-#define pp_ftis Perl_pp_ftis
-#undef Perl_pp_ftlink
-#define Perl_pp_ftlink pPerl->Perl_pp_ftlink
-#undef pp_ftlink
-#define pp_ftlink Perl_pp_ftlink
-#undef Perl_pp_ftmtime
-#define Perl_pp_ftmtime pPerl->Perl_pp_ftmtime
-#undef pp_ftmtime
-#define pp_ftmtime Perl_pp_ftmtime
-#undef Perl_pp_ftpipe
-#define Perl_pp_ftpipe pPerl->Perl_pp_ftpipe
-#undef pp_ftpipe
-#define pp_ftpipe Perl_pp_ftpipe
-#undef Perl_pp_ftrexec
-#define Perl_pp_ftrexec pPerl->Perl_pp_ftrexec
-#undef pp_ftrexec
-#define pp_ftrexec Perl_pp_ftrexec
-#undef Perl_pp_ftrowned
-#define Perl_pp_ftrowned pPerl->Perl_pp_ftrowned
-#undef pp_ftrowned
-#define pp_ftrowned Perl_pp_ftrowned
-#undef Perl_pp_ftrread
-#define Perl_pp_ftrread pPerl->Perl_pp_ftrread
-#undef pp_ftrread
-#define pp_ftrread Perl_pp_ftrread
-#undef Perl_pp_ftrwrite
-#define Perl_pp_ftrwrite pPerl->Perl_pp_ftrwrite
-#undef pp_ftrwrite
-#define pp_ftrwrite Perl_pp_ftrwrite
-#undef Perl_pp_ftsgid
-#define Perl_pp_ftsgid pPerl->Perl_pp_ftsgid
-#undef pp_ftsgid
-#define pp_ftsgid Perl_pp_ftsgid
-#undef Perl_pp_ftsize
-#define Perl_pp_ftsize pPerl->Perl_pp_ftsize
-#undef pp_ftsize
-#define pp_ftsize Perl_pp_ftsize
-#undef Perl_pp_ftsock
-#define Perl_pp_ftsock pPerl->Perl_pp_ftsock
-#undef pp_ftsock
-#define pp_ftsock Perl_pp_ftsock
-#undef Perl_pp_ftsuid
-#define Perl_pp_ftsuid pPerl->Perl_pp_ftsuid
-#undef pp_ftsuid
-#define pp_ftsuid Perl_pp_ftsuid
-#undef Perl_pp_ftsvtx
-#define Perl_pp_ftsvtx pPerl->Perl_pp_ftsvtx
-#undef pp_ftsvtx
-#define pp_ftsvtx Perl_pp_ftsvtx
-#undef Perl_pp_fttext
-#define Perl_pp_fttext pPerl->Perl_pp_fttext
-#undef pp_fttext
-#define pp_fttext Perl_pp_fttext
-#undef Perl_pp_fttty
-#define Perl_pp_fttty pPerl->Perl_pp_fttty
-#undef pp_fttty
-#define pp_fttty Perl_pp_fttty
-#undef Perl_pp_ftzero
-#define Perl_pp_ftzero pPerl->Perl_pp_ftzero
-#undef pp_ftzero
-#define pp_ftzero Perl_pp_ftzero
-#undef Perl_pp_ge
-#define Perl_pp_ge pPerl->Perl_pp_ge
-#undef pp_ge
-#define pp_ge Perl_pp_ge
-#undef Perl_pp_gelem
-#define Perl_pp_gelem pPerl->Perl_pp_gelem
-#undef pp_gelem
-#define pp_gelem Perl_pp_gelem
-#undef Perl_pp_getc
-#define Perl_pp_getc pPerl->Perl_pp_getc
-#undef pp_getc
-#define pp_getc Perl_pp_getc
-#undef Perl_pp_getlogin
-#define Perl_pp_getlogin pPerl->Perl_pp_getlogin
-#undef pp_getlogin
-#define pp_getlogin Perl_pp_getlogin
-#undef Perl_pp_getpeername
-#define Perl_pp_getpeername pPerl->Perl_pp_getpeername
-#undef pp_getpeername
-#define pp_getpeername Perl_pp_getpeername
-#undef Perl_pp_getpgrp
-#define Perl_pp_getpgrp pPerl->Perl_pp_getpgrp
-#undef pp_getpgrp
-#define pp_getpgrp Perl_pp_getpgrp
-#undef Perl_pp_getppid
-#define Perl_pp_getppid pPerl->Perl_pp_getppid
-#undef pp_getppid
-#define pp_getppid Perl_pp_getppid
-#undef Perl_pp_getpriority
-#define Perl_pp_getpriority pPerl->Perl_pp_getpriority
-#undef pp_getpriority
-#define pp_getpriority Perl_pp_getpriority
-#undef Perl_pp_getsockname
-#define Perl_pp_getsockname pPerl->Perl_pp_getsockname
-#undef pp_getsockname
-#define pp_getsockname Perl_pp_getsockname
-#undef Perl_pp_ggrent
-#define Perl_pp_ggrent pPerl->Perl_pp_ggrent
-#undef pp_ggrent
-#define pp_ggrent Perl_pp_ggrent
-#undef Perl_pp_ggrgid
-#define Perl_pp_ggrgid pPerl->Perl_pp_ggrgid
-#undef pp_ggrgid
-#define pp_ggrgid Perl_pp_ggrgid
-#undef Perl_pp_ggrnam
-#define Perl_pp_ggrnam pPerl->Perl_pp_ggrnam
-#undef pp_ggrnam
-#define pp_ggrnam Perl_pp_ggrnam
-#undef Perl_pp_ghbyaddr
-#define Perl_pp_ghbyaddr pPerl->Perl_pp_ghbyaddr
-#undef pp_ghbyaddr
-#define pp_ghbyaddr Perl_pp_ghbyaddr
-#undef Perl_pp_ghbyname
-#define Perl_pp_ghbyname pPerl->Perl_pp_ghbyname
-#undef pp_ghbyname
-#define pp_ghbyname Perl_pp_ghbyname
-#undef Perl_pp_ghostent
-#define Perl_pp_ghostent pPerl->Perl_pp_ghostent
-#undef pp_ghostent
-#define pp_ghostent Perl_pp_ghostent
-#undef Perl_pp_glob
-#define Perl_pp_glob pPerl->Perl_pp_glob
-#undef pp_glob
-#define pp_glob Perl_pp_glob
-#undef Perl_pp_gmtime
-#define Perl_pp_gmtime pPerl->Perl_pp_gmtime
-#undef pp_gmtime
-#define pp_gmtime Perl_pp_gmtime
-#undef Perl_pp_gnbyaddr
-#define Perl_pp_gnbyaddr pPerl->Perl_pp_gnbyaddr
-#undef pp_gnbyaddr
-#define pp_gnbyaddr Perl_pp_gnbyaddr
-#undef Perl_pp_gnbyname
-#define Perl_pp_gnbyname pPerl->Perl_pp_gnbyname
-#undef pp_gnbyname
-#define pp_gnbyname Perl_pp_gnbyname
-#undef Perl_pp_gnetent
-#define Perl_pp_gnetent pPerl->Perl_pp_gnetent
-#undef pp_gnetent
-#define pp_gnetent Perl_pp_gnetent
-#undef Perl_pp_goto
-#define Perl_pp_goto pPerl->Perl_pp_goto
-#undef pp_goto
-#define pp_goto Perl_pp_goto
-#undef Perl_pp_gpbyname
-#define Perl_pp_gpbyname pPerl->Perl_pp_gpbyname
-#undef pp_gpbyname
-#define pp_gpbyname Perl_pp_gpbyname
-#undef Perl_pp_gpbynumber
-#define Perl_pp_gpbynumber pPerl->Perl_pp_gpbynumber
-#undef pp_gpbynumber
-#define pp_gpbynumber Perl_pp_gpbynumber
-#undef Perl_pp_gprotoent
-#define Perl_pp_gprotoent pPerl->Perl_pp_gprotoent
-#undef pp_gprotoent
-#define pp_gprotoent Perl_pp_gprotoent
-#undef Perl_pp_gpwent
-#define Perl_pp_gpwent pPerl->Perl_pp_gpwent
-#undef pp_gpwent
-#define pp_gpwent Perl_pp_gpwent
-#undef Perl_pp_gpwnam
-#define Perl_pp_gpwnam pPerl->Perl_pp_gpwnam
-#undef pp_gpwnam
-#define pp_gpwnam Perl_pp_gpwnam
-#undef Perl_pp_gpwuid
-#define Perl_pp_gpwuid pPerl->Perl_pp_gpwuid
-#undef pp_gpwuid
-#define pp_gpwuid Perl_pp_gpwuid
-#undef Perl_pp_grepstart
-#define Perl_pp_grepstart pPerl->Perl_pp_grepstart
-#undef pp_grepstart
-#define pp_grepstart Perl_pp_grepstart
-#undef Perl_pp_grepwhile
-#define Perl_pp_grepwhile pPerl->Perl_pp_grepwhile
-#undef pp_grepwhile
-#define pp_grepwhile Perl_pp_grepwhile
-#undef Perl_pp_gsbyname
-#define Perl_pp_gsbyname pPerl->Perl_pp_gsbyname
-#undef pp_gsbyname
-#define pp_gsbyname Perl_pp_gsbyname
-#undef Perl_pp_gsbyport
-#define Perl_pp_gsbyport pPerl->Perl_pp_gsbyport
-#undef pp_gsbyport
-#define pp_gsbyport Perl_pp_gsbyport
-#undef Perl_pp_gservent
-#define Perl_pp_gservent pPerl->Perl_pp_gservent
-#undef pp_gservent
-#define pp_gservent Perl_pp_gservent
-#undef Perl_pp_gsockopt
-#define Perl_pp_gsockopt pPerl->Perl_pp_gsockopt
-#undef pp_gsockopt
-#define pp_gsockopt Perl_pp_gsockopt
-#undef Perl_pp_gt
-#define Perl_pp_gt pPerl->Perl_pp_gt
-#undef pp_gt
-#define pp_gt Perl_pp_gt
-#undef Perl_pp_gv
-#define Perl_pp_gv pPerl->Perl_pp_gv
-#undef pp_gv
-#define pp_gv Perl_pp_gv
-#undef Perl_pp_gvsv
-#define Perl_pp_gvsv pPerl->Perl_pp_gvsv
-#undef pp_gvsv
-#define pp_gvsv Perl_pp_gvsv
-#undef Perl_pp_helem
-#define Perl_pp_helem pPerl->Perl_pp_helem
-#undef pp_helem
-#define pp_helem Perl_pp_helem
-#undef Perl_pp_hex
-#define Perl_pp_hex pPerl->Perl_pp_hex
-#undef pp_hex
-#define pp_hex Perl_pp_hex
-#undef Perl_pp_hslice
-#define Perl_pp_hslice pPerl->Perl_pp_hslice
-#undef pp_hslice
-#define pp_hslice Perl_pp_hslice
-#undef Perl_pp_i_add
-#define Perl_pp_i_add pPerl->Perl_pp_i_add
-#undef pp_i_add
-#define pp_i_add Perl_pp_i_add
-#undef Perl_pp_i_divide
-#define Perl_pp_i_divide pPerl->Perl_pp_i_divide
-#undef pp_i_divide
-#define pp_i_divide Perl_pp_i_divide
-#undef Perl_pp_i_eq
-#define Perl_pp_i_eq pPerl->Perl_pp_i_eq
-#undef pp_i_eq
-#define pp_i_eq Perl_pp_i_eq
-#undef Perl_pp_i_ge
-#define Perl_pp_i_ge pPerl->Perl_pp_i_ge
-#undef pp_i_ge
-#define pp_i_ge Perl_pp_i_ge
-#undef Perl_pp_i_gt
-#define Perl_pp_i_gt pPerl->Perl_pp_i_gt
-#undef pp_i_gt
-#define pp_i_gt Perl_pp_i_gt
-#undef Perl_pp_i_le
-#define Perl_pp_i_le pPerl->Perl_pp_i_le
-#undef pp_i_le
-#define pp_i_le Perl_pp_i_le
-#undef Perl_pp_i_lt
-#define Perl_pp_i_lt pPerl->Perl_pp_i_lt
-#undef pp_i_lt
-#define pp_i_lt Perl_pp_i_lt
-#undef Perl_pp_i_modulo
-#define Perl_pp_i_modulo pPerl->Perl_pp_i_modulo
-#undef pp_i_modulo
-#define pp_i_modulo Perl_pp_i_modulo
-#undef Perl_pp_i_multiply
-#define Perl_pp_i_multiply pPerl->Perl_pp_i_multiply
-#undef pp_i_multiply
-#define pp_i_multiply Perl_pp_i_multiply
-#undef Perl_pp_i_ncmp
-#define Perl_pp_i_ncmp pPerl->Perl_pp_i_ncmp
-#undef pp_i_ncmp
-#define pp_i_ncmp Perl_pp_i_ncmp
-#undef Perl_pp_i_ne
-#define Perl_pp_i_ne pPerl->Perl_pp_i_ne
-#undef pp_i_ne
-#define pp_i_ne Perl_pp_i_ne
-#undef Perl_pp_i_negate
-#define Perl_pp_i_negate pPerl->Perl_pp_i_negate
-#undef pp_i_negate
-#define pp_i_negate Perl_pp_i_negate
-#undef Perl_pp_i_subtract
-#define Perl_pp_i_subtract pPerl->Perl_pp_i_subtract
-#undef pp_i_subtract
-#define pp_i_subtract Perl_pp_i_subtract
-#undef Perl_pp_index
-#define Perl_pp_index pPerl->Perl_pp_index
-#undef pp_index
-#define pp_index Perl_pp_index
-#undef Perl_pp_int
-#define Perl_pp_int pPerl->Perl_pp_int
-#undef pp_int
-#define pp_int Perl_pp_int
-#undef Perl_pp_ioctl
-#define Perl_pp_ioctl pPerl->Perl_pp_ioctl
-#undef pp_ioctl
-#define pp_ioctl Perl_pp_ioctl
-#undef Perl_pp_iter
-#define Perl_pp_iter pPerl->Perl_pp_iter
-#undef pp_iter
-#define pp_iter Perl_pp_iter
-#undef Perl_pp_join
-#define Perl_pp_join pPerl->Perl_pp_join
-#undef pp_join
-#define pp_join Perl_pp_join
-#undef Perl_pp_keys
-#define Perl_pp_keys pPerl->Perl_pp_keys
-#undef pp_keys
-#define pp_keys Perl_pp_keys
-#undef Perl_pp_kill
-#define Perl_pp_kill pPerl->Perl_pp_kill
-#undef pp_kill
-#define pp_kill Perl_pp_kill
-#undef Perl_pp_last
-#define Perl_pp_last pPerl->Perl_pp_last
-#undef pp_last
-#define pp_last Perl_pp_last
-#undef Perl_pp_lc
-#define Perl_pp_lc pPerl->Perl_pp_lc
-#undef pp_lc
-#define pp_lc Perl_pp_lc
-#undef Perl_pp_lcfirst
-#define Perl_pp_lcfirst pPerl->Perl_pp_lcfirst
-#undef pp_lcfirst
-#define pp_lcfirst Perl_pp_lcfirst
-#undef Perl_pp_le
-#define Perl_pp_le pPerl->Perl_pp_le
-#undef pp_le
-#define pp_le Perl_pp_le
-#undef Perl_pp_leave
-#define Perl_pp_leave pPerl->Perl_pp_leave
-#undef pp_leave
-#define pp_leave Perl_pp_leave
-#undef Perl_pp_leaveeval
-#define Perl_pp_leaveeval pPerl->Perl_pp_leaveeval
-#undef pp_leaveeval
-#define pp_leaveeval Perl_pp_leaveeval
-#undef Perl_pp_leaveloop
-#define Perl_pp_leaveloop pPerl->Perl_pp_leaveloop
-#undef pp_leaveloop
-#define pp_leaveloop Perl_pp_leaveloop
-#undef Perl_pp_leavesub
-#define Perl_pp_leavesub pPerl->Perl_pp_leavesub
-#undef pp_leavesub
-#define pp_leavesub Perl_pp_leavesub
-#undef Perl_pp_leavesublv
-#define Perl_pp_leavesublv pPerl->Perl_pp_leavesublv
-#undef pp_leavesublv
-#define pp_leavesublv Perl_pp_leavesublv
-#undef Perl_pp_leavetry
-#define Perl_pp_leavetry pPerl->Perl_pp_leavetry
-#undef pp_leavetry
-#define pp_leavetry Perl_pp_leavetry
-#undef Perl_pp_leavewrite
-#define Perl_pp_leavewrite pPerl->Perl_pp_leavewrite
-#undef pp_leavewrite
-#define pp_leavewrite Perl_pp_leavewrite
-#undef Perl_pp_left_shift
-#define Perl_pp_left_shift pPerl->Perl_pp_left_shift
-#undef pp_left_shift
-#define pp_left_shift Perl_pp_left_shift
-#undef Perl_pp_length
-#define Perl_pp_length pPerl->Perl_pp_length
-#undef pp_length
-#define pp_length Perl_pp_length
-#undef Perl_pp_lineseq
-#define Perl_pp_lineseq pPerl->Perl_pp_lineseq
-#undef pp_lineseq
-#define pp_lineseq Perl_pp_lineseq
-#undef Perl_pp_link
-#define Perl_pp_link pPerl->Perl_pp_link
-#undef pp_link
-#define pp_link Perl_pp_link
-#undef Perl_pp_list
-#define Perl_pp_list pPerl->Perl_pp_list
-#undef pp_list
-#define pp_list Perl_pp_list
-#undef Perl_pp_listen
-#define Perl_pp_listen pPerl->Perl_pp_listen
-#undef pp_listen
-#define pp_listen Perl_pp_listen
-#undef Perl_pp_localtime
-#define Perl_pp_localtime pPerl->Perl_pp_localtime
-#undef pp_localtime
-#define pp_localtime Perl_pp_localtime
-#undef Perl_pp_lock
-#define Perl_pp_lock pPerl->Perl_pp_lock
-#undef pp_lock
-#define pp_lock Perl_pp_lock
-#undef Perl_pp_log
-#define Perl_pp_log pPerl->Perl_pp_log
-#undef pp_log
-#define pp_log Perl_pp_log
-#undef Perl_pp_lslice
-#define Perl_pp_lslice pPerl->Perl_pp_lslice
-#undef pp_lslice
-#define pp_lslice Perl_pp_lslice
-#undef Perl_pp_lstat
-#define Perl_pp_lstat pPerl->Perl_pp_lstat
-#undef pp_lstat
-#define pp_lstat Perl_pp_lstat
-#undef Perl_pp_lt
-#define Perl_pp_lt pPerl->Perl_pp_lt
-#undef pp_lt
-#define pp_lt Perl_pp_lt
-#undef Perl_pp_mapstart
-#define Perl_pp_mapstart pPerl->Perl_pp_mapstart
-#undef pp_mapstart
-#define pp_mapstart Perl_pp_mapstart
-#undef Perl_pp_mapwhile
-#define Perl_pp_mapwhile pPerl->Perl_pp_mapwhile
-#undef pp_mapwhile
-#define pp_mapwhile Perl_pp_mapwhile
-#undef Perl_pp_match
-#define Perl_pp_match pPerl->Perl_pp_match
-#undef pp_match
-#define pp_match Perl_pp_match
-#undef Perl_pp_method
-#define Perl_pp_method pPerl->Perl_pp_method
-#undef pp_method
-#define pp_method Perl_pp_method
-#undef Perl_pp_method_named
-#define Perl_pp_method_named pPerl->Perl_pp_method_named
-#undef pp_method_named
-#define pp_method_named Perl_pp_method_named
-#undef Perl_pp_mkdir
-#define Perl_pp_mkdir pPerl->Perl_pp_mkdir
-#undef pp_mkdir
-#define pp_mkdir Perl_pp_mkdir
-#undef Perl_pp_modulo
-#define Perl_pp_modulo pPerl->Perl_pp_modulo
-#undef pp_modulo
-#define pp_modulo Perl_pp_modulo
-#undef Perl_pp_msgctl
-#define Perl_pp_msgctl pPerl->Perl_pp_msgctl
-#undef pp_msgctl
-#define pp_msgctl Perl_pp_msgctl
-#undef Perl_pp_msgget
-#define Perl_pp_msgget pPerl->Perl_pp_msgget
-#undef pp_msgget
-#define pp_msgget Perl_pp_msgget
-#undef Perl_pp_msgrcv
-#define Perl_pp_msgrcv pPerl->Perl_pp_msgrcv
-#undef pp_msgrcv
-#define pp_msgrcv Perl_pp_msgrcv
-#undef Perl_pp_msgsnd
-#define Perl_pp_msgsnd pPerl->Perl_pp_msgsnd
-#undef pp_msgsnd
-#define pp_msgsnd Perl_pp_msgsnd
-#undef Perl_pp_multiply
-#define Perl_pp_multiply pPerl->Perl_pp_multiply
-#undef pp_multiply
-#define pp_multiply Perl_pp_multiply
-#undef Perl_pp_ncmp
-#define Perl_pp_ncmp pPerl->Perl_pp_ncmp
-#undef pp_ncmp
-#define pp_ncmp Perl_pp_ncmp
-#undef Perl_pp_ne
-#define Perl_pp_ne pPerl->Perl_pp_ne
-#undef pp_ne
-#define pp_ne Perl_pp_ne
-#undef Perl_pp_negate
-#define Perl_pp_negate pPerl->Perl_pp_negate
-#undef pp_negate
-#define pp_negate Perl_pp_negate
-#undef Perl_pp_next
-#define Perl_pp_next pPerl->Perl_pp_next
-#undef pp_next
-#define pp_next Perl_pp_next
-#undef Perl_pp_nextstate
-#define Perl_pp_nextstate pPerl->Perl_pp_nextstate
-#undef pp_nextstate
-#define pp_nextstate Perl_pp_nextstate
-#undef Perl_pp_not
-#define Perl_pp_not pPerl->Perl_pp_not
-#undef pp_not
-#define pp_not Perl_pp_not
-#undef Perl_pp_null
-#define Perl_pp_null pPerl->Perl_pp_null
-#undef pp_null
-#define pp_null Perl_pp_null
-#undef Perl_pp_oct
-#define Perl_pp_oct pPerl->Perl_pp_oct
-#undef pp_oct
-#define pp_oct Perl_pp_oct
-#undef Perl_pp_open
-#define Perl_pp_open pPerl->Perl_pp_open
-#undef pp_open
-#define pp_open Perl_pp_open
-#undef Perl_pp_open_dir
-#define Perl_pp_open_dir pPerl->Perl_pp_open_dir
-#undef pp_open_dir
-#define pp_open_dir Perl_pp_open_dir
-#undef Perl_pp_or
-#define Perl_pp_or pPerl->Perl_pp_or
-#undef pp_or
-#define pp_or Perl_pp_or
-#undef Perl_pp_orassign
-#define Perl_pp_orassign pPerl->Perl_pp_orassign
-#undef pp_orassign
-#define pp_orassign Perl_pp_orassign
-#undef Perl_pp_ord
-#define Perl_pp_ord pPerl->Perl_pp_ord
-#undef pp_ord
-#define pp_ord Perl_pp_ord
-#undef Perl_pp_pack
-#define Perl_pp_pack pPerl->Perl_pp_pack
-#undef pp_pack
-#define pp_pack Perl_pp_pack
-#undef Perl_pp_padany
-#define Perl_pp_padany pPerl->Perl_pp_padany
-#undef pp_padany
-#define pp_padany Perl_pp_padany
-#undef Perl_pp_padav
-#define Perl_pp_padav pPerl->Perl_pp_padav
-#undef pp_padav
-#define pp_padav Perl_pp_padav
-#undef Perl_pp_padhv
-#define Perl_pp_padhv pPerl->Perl_pp_padhv
-#undef pp_padhv
-#define pp_padhv Perl_pp_padhv
-#undef Perl_pp_padsv
-#define Perl_pp_padsv pPerl->Perl_pp_padsv
-#undef pp_padsv
-#define pp_padsv Perl_pp_padsv
-#undef Perl_pp_pipe_op
-#define Perl_pp_pipe_op pPerl->Perl_pp_pipe_op
-#undef pp_pipe_op
-#define pp_pipe_op Perl_pp_pipe_op
-#undef Perl_pp_pop
-#define Perl_pp_pop pPerl->Perl_pp_pop
-#undef pp_pop
-#define pp_pop Perl_pp_pop
-#undef Perl_pp_pos
-#define Perl_pp_pos pPerl->Perl_pp_pos
-#undef pp_pos
-#define pp_pos Perl_pp_pos
-#undef Perl_pp_postdec
-#define Perl_pp_postdec pPerl->Perl_pp_postdec
-#undef pp_postdec
-#define pp_postdec Perl_pp_postdec
-#undef Perl_pp_postinc
-#define Perl_pp_postinc pPerl->Perl_pp_postinc
-#undef pp_postinc
-#define pp_postinc Perl_pp_postinc
-#undef Perl_pp_pow
-#define Perl_pp_pow pPerl->Perl_pp_pow
-#undef pp_pow
-#define pp_pow Perl_pp_pow
-#undef Perl_pp_predec
-#define Perl_pp_predec pPerl->Perl_pp_predec
-#undef pp_predec
-#define pp_predec Perl_pp_predec
-#undef Perl_pp_preinc
-#define Perl_pp_preinc pPerl->Perl_pp_preinc
-#undef pp_preinc
-#define pp_preinc Perl_pp_preinc
-#undef Perl_pp_print
-#define Perl_pp_print pPerl->Perl_pp_print
-#undef pp_print
-#define pp_print Perl_pp_print
-#undef Perl_pp_prototype
-#define Perl_pp_prototype pPerl->Perl_pp_prototype
-#undef pp_prototype
-#define pp_prototype Perl_pp_prototype
-#undef Perl_pp_prtf
-#define Perl_pp_prtf pPerl->Perl_pp_prtf
-#undef pp_prtf
-#define pp_prtf Perl_pp_prtf
-#undef Perl_pp_push
-#define Perl_pp_push pPerl->Perl_pp_push
-#undef pp_push
-#define pp_push Perl_pp_push
-#undef Perl_pp_pushmark
-#define Perl_pp_pushmark pPerl->Perl_pp_pushmark
-#undef pp_pushmark
-#define pp_pushmark Perl_pp_pushmark
-#undef Perl_pp_pushre
-#define Perl_pp_pushre pPerl->Perl_pp_pushre
-#undef pp_pushre
-#define pp_pushre Perl_pp_pushre
-#undef Perl_pp_qr
-#define Perl_pp_qr pPerl->Perl_pp_qr
-#undef pp_qr
-#define pp_qr Perl_pp_qr
-#undef Perl_pp_quotemeta
-#define Perl_pp_quotemeta pPerl->Perl_pp_quotemeta
-#undef pp_quotemeta
-#define pp_quotemeta Perl_pp_quotemeta
-#undef Perl_pp_rand
-#define Perl_pp_rand pPerl->Perl_pp_rand
-#undef pp_rand
-#define pp_rand Perl_pp_rand
-#undef Perl_pp_range
-#define Perl_pp_range pPerl->Perl_pp_range
-#undef pp_range
-#define pp_range Perl_pp_range
-#undef Perl_pp_rcatline
-#define Perl_pp_rcatline pPerl->Perl_pp_rcatline
-#undef pp_rcatline
-#define pp_rcatline Perl_pp_rcatline
-#undef Perl_pp_read
-#define Perl_pp_read pPerl->Perl_pp_read
-#undef pp_read
-#define pp_read Perl_pp_read
-#undef Perl_pp_readdir
-#define Perl_pp_readdir pPerl->Perl_pp_readdir
-#undef pp_readdir
-#define pp_readdir Perl_pp_readdir
-#undef Perl_pp_readline
-#define Perl_pp_readline pPerl->Perl_pp_readline
-#undef pp_readline
-#define pp_readline Perl_pp_readline
-#undef Perl_pp_readlink
-#define Perl_pp_readlink pPerl->Perl_pp_readlink
-#undef pp_readlink
-#define pp_readlink Perl_pp_readlink
-#undef Perl_pp_recv
-#define Perl_pp_recv pPerl->Perl_pp_recv
-#undef pp_recv
-#define pp_recv Perl_pp_recv
-#undef Perl_pp_redo
-#define Perl_pp_redo pPerl->Perl_pp_redo
-#undef pp_redo
-#define pp_redo Perl_pp_redo
-#undef Perl_pp_ref
-#define Perl_pp_ref pPerl->Perl_pp_ref
-#undef pp_ref
-#define pp_ref Perl_pp_ref
-#undef Perl_pp_refgen
-#define Perl_pp_refgen pPerl->Perl_pp_refgen
-#undef pp_refgen
-#define pp_refgen Perl_pp_refgen
-#undef Perl_pp_regcmaybe
-#define Perl_pp_regcmaybe pPerl->Perl_pp_regcmaybe
-#undef pp_regcmaybe
-#define pp_regcmaybe Perl_pp_regcmaybe
-#undef Perl_pp_regcomp
-#define Perl_pp_regcomp pPerl->Perl_pp_regcomp
-#undef pp_regcomp
-#define pp_regcomp Perl_pp_regcomp
-#undef Perl_pp_regcreset
-#define Perl_pp_regcreset pPerl->Perl_pp_regcreset
-#undef pp_regcreset
-#define pp_regcreset Perl_pp_regcreset
-#undef Perl_pp_rename
-#define Perl_pp_rename pPerl->Perl_pp_rename
-#undef pp_rename
-#define pp_rename Perl_pp_rename
-#undef Perl_pp_repeat
-#define Perl_pp_repeat pPerl->Perl_pp_repeat
-#undef pp_repeat
-#define pp_repeat Perl_pp_repeat
-#undef Perl_pp_require
-#define Perl_pp_require pPerl->Perl_pp_require
-#undef pp_require
-#define pp_require Perl_pp_require
-#undef Perl_pp_reset
-#define Perl_pp_reset pPerl->Perl_pp_reset
-#undef pp_reset
-#define pp_reset Perl_pp_reset
-#undef Perl_pp_return
-#define Perl_pp_return pPerl->Perl_pp_return
-#undef pp_return
-#define pp_return Perl_pp_return
-#undef Perl_pp_reverse
-#define Perl_pp_reverse pPerl->Perl_pp_reverse
-#undef pp_reverse
-#define pp_reverse Perl_pp_reverse
-#undef Perl_pp_rewinddir
-#define Perl_pp_rewinddir pPerl->Perl_pp_rewinddir
-#undef pp_rewinddir
-#define pp_rewinddir Perl_pp_rewinddir
-#undef Perl_pp_right_shift
-#define Perl_pp_right_shift pPerl->Perl_pp_right_shift
-#undef pp_right_shift
-#define pp_right_shift Perl_pp_right_shift
-#undef Perl_pp_rindex
-#define Perl_pp_rindex pPerl->Perl_pp_rindex
-#undef pp_rindex
-#define pp_rindex Perl_pp_rindex
-#undef Perl_pp_rmdir
-#define Perl_pp_rmdir pPerl->Perl_pp_rmdir
-#undef pp_rmdir
-#define pp_rmdir Perl_pp_rmdir
-#undef Perl_pp_rv2av
-#define Perl_pp_rv2av pPerl->Perl_pp_rv2av
-#undef pp_rv2av
-#define pp_rv2av Perl_pp_rv2av
-#undef Perl_pp_rv2cv
-#define Perl_pp_rv2cv pPerl->Perl_pp_rv2cv
-#undef pp_rv2cv
-#define pp_rv2cv Perl_pp_rv2cv
-#undef Perl_pp_rv2gv
-#define Perl_pp_rv2gv pPerl->Perl_pp_rv2gv
-#undef pp_rv2gv
-#define pp_rv2gv Perl_pp_rv2gv
-#undef Perl_pp_rv2hv
-#define Perl_pp_rv2hv pPerl->Perl_pp_rv2hv
-#undef pp_rv2hv
-#define pp_rv2hv Perl_pp_rv2hv
-#undef Perl_pp_rv2sv
-#define Perl_pp_rv2sv pPerl->Perl_pp_rv2sv
-#undef pp_rv2sv
-#define pp_rv2sv Perl_pp_rv2sv
-#undef Perl_pp_sassign
-#define Perl_pp_sassign pPerl->Perl_pp_sassign
-#undef pp_sassign
-#define pp_sassign Perl_pp_sassign
-#undef Perl_pp_scalar
-#define Perl_pp_scalar pPerl->Perl_pp_scalar
-#undef pp_scalar
-#define pp_scalar Perl_pp_scalar
-#undef Perl_pp_schomp
-#define Perl_pp_schomp pPerl->Perl_pp_schomp
-#undef pp_schomp
-#define pp_schomp Perl_pp_schomp
-#undef Perl_pp_schop
-#define Perl_pp_schop pPerl->Perl_pp_schop
-#undef pp_schop
-#define pp_schop Perl_pp_schop
-#undef Perl_pp_scmp
-#define Perl_pp_scmp pPerl->Perl_pp_scmp
-#undef pp_scmp
-#define pp_scmp Perl_pp_scmp
-#undef Perl_pp_scope
-#define Perl_pp_scope pPerl->Perl_pp_scope
-#undef pp_scope
-#define pp_scope Perl_pp_scope
-#undef Perl_pp_seek
-#define Perl_pp_seek pPerl->Perl_pp_seek
-#undef pp_seek
-#define pp_seek Perl_pp_seek
-#undef Perl_pp_seekdir
-#define Perl_pp_seekdir pPerl->Perl_pp_seekdir
-#undef pp_seekdir
-#define pp_seekdir Perl_pp_seekdir
-#undef Perl_pp_select
-#define Perl_pp_select pPerl->Perl_pp_select
-#undef pp_select
-#define pp_select Perl_pp_select
-#undef Perl_pp_semctl
-#define Perl_pp_semctl pPerl->Perl_pp_semctl
-#undef pp_semctl
-#define pp_semctl Perl_pp_semctl
-#undef Perl_pp_semget
-#define Perl_pp_semget pPerl->Perl_pp_semget
-#undef pp_semget
-#define pp_semget Perl_pp_semget
-#undef Perl_pp_semop
-#define Perl_pp_semop pPerl->Perl_pp_semop
-#undef pp_semop
-#define pp_semop Perl_pp_semop
-#undef Perl_pp_send
-#define Perl_pp_send pPerl->Perl_pp_send
-#undef pp_send
-#define pp_send Perl_pp_send
-#undef Perl_pp_seq
-#define Perl_pp_seq pPerl->Perl_pp_seq
-#undef pp_seq
-#define pp_seq Perl_pp_seq
-#undef Perl_pp_setpgrp
-#define Perl_pp_setpgrp pPerl->Perl_pp_setpgrp
-#undef pp_setpgrp
-#define pp_setpgrp Perl_pp_setpgrp
-#undef Perl_pp_setpriority
-#define Perl_pp_setpriority pPerl->Perl_pp_setpriority
-#undef pp_setpriority
-#define pp_setpriority Perl_pp_setpriority
-#undef Perl_pp_setstate
-#define Perl_pp_setstate pPerl->Perl_pp_setstate
-#undef pp_setstate
-#define pp_setstate Perl_pp_setstate
-#undef Perl_pp_sge
-#define Perl_pp_sge pPerl->Perl_pp_sge
-#undef pp_sge
-#define pp_sge Perl_pp_sge
-#undef Perl_pp_sgrent
-#define Perl_pp_sgrent pPerl->Perl_pp_sgrent
-#undef pp_sgrent
-#define pp_sgrent Perl_pp_sgrent
-#undef Perl_pp_sgt
-#define Perl_pp_sgt pPerl->Perl_pp_sgt
-#undef pp_sgt
-#define pp_sgt Perl_pp_sgt
-#undef Perl_pp_shift
-#define Perl_pp_shift pPerl->Perl_pp_shift
-#undef pp_shift
-#define pp_shift Perl_pp_shift
-#undef Perl_pp_shmctl
-#define Perl_pp_shmctl pPerl->Perl_pp_shmctl
-#undef pp_shmctl
-#define pp_shmctl Perl_pp_shmctl
-#undef Perl_pp_shmget
-#define Perl_pp_shmget pPerl->Perl_pp_shmget
-#undef pp_shmget
-#define pp_shmget Perl_pp_shmget
-#undef Perl_pp_shmread
-#define Perl_pp_shmread pPerl->Perl_pp_shmread
-#undef pp_shmread
-#define pp_shmread Perl_pp_shmread
-#undef Perl_pp_shmwrite
-#define Perl_pp_shmwrite pPerl->Perl_pp_shmwrite
-#undef pp_shmwrite
-#define pp_shmwrite Perl_pp_shmwrite
-#undef Perl_pp_shostent
-#define Perl_pp_shostent pPerl->Perl_pp_shostent
-#undef pp_shostent
-#define pp_shostent Perl_pp_shostent
-#undef Perl_pp_shutdown
-#define Perl_pp_shutdown pPerl->Perl_pp_shutdown
-#undef pp_shutdown
-#define pp_shutdown Perl_pp_shutdown
-#undef Perl_pp_sin
-#define Perl_pp_sin pPerl->Perl_pp_sin
-#undef pp_sin
-#define pp_sin Perl_pp_sin
-#undef Perl_pp_sle
-#define Perl_pp_sle pPerl->Perl_pp_sle
-#undef pp_sle
-#define pp_sle Perl_pp_sle
-#undef Perl_pp_sleep
-#define Perl_pp_sleep pPerl->Perl_pp_sleep
-#undef pp_sleep
-#define pp_sleep Perl_pp_sleep
-#undef Perl_pp_slt
-#define Perl_pp_slt pPerl->Perl_pp_slt
-#undef pp_slt
-#define pp_slt Perl_pp_slt
-#undef Perl_pp_sne
-#define Perl_pp_sne pPerl->Perl_pp_sne
-#undef pp_sne
-#define pp_sne Perl_pp_sne
-#undef Perl_pp_snetent
-#define Perl_pp_snetent pPerl->Perl_pp_snetent
-#undef pp_snetent
-#define pp_snetent Perl_pp_snetent
-#undef Perl_pp_socket
-#define Perl_pp_socket pPerl->Perl_pp_socket
-#undef pp_socket
-#define pp_socket Perl_pp_socket
-#undef Perl_pp_sockpair
-#define Perl_pp_sockpair pPerl->Perl_pp_sockpair
-#undef pp_sockpair
-#define pp_sockpair Perl_pp_sockpair
-#undef Perl_pp_sort
-#define Perl_pp_sort pPerl->Perl_pp_sort
-#undef pp_sort
-#define pp_sort Perl_pp_sort
-#undef Perl_pp_splice
-#define Perl_pp_splice pPerl->Perl_pp_splice
-#undef pp_splice
-#define pp_splice Perl_pp_splice
-#undef Perl_pp_split
-#define Perl_pp_split pPerl->Perl_pp_split
-#undef pp_split
-#define pp_split Perl_pp_split
-#undef Perl_pp_sprintf
-#define Perl_pp_sprintf pPerl->Perl_pp_sprintf
-#undef pp_sprintf
-#define pp_sprintf Perl_pp_sprintf
-#undef Perl_pp_sprotoent
-#define Perl_pp_sprotoent pPerl->Perl_pp_sprotoent
-#undef pp_sprotoent
-#define pp_sprotoent Perl_pp_sprotoent
-#undef Perl_pp_spwent
-#define Perl_pp_spwent pPerl->Perl_pp_spwent
-#undef pp_spwent
-#define pp_spwent Perl_pp_spwent
-#undef Perl_pp_sqrt
-#define Perl_pp_sqrt pPerl->Perl_pp_sqrt
-#undef pp_sqrt
-#define pp_sqrt Perl_pp_sqrt
-#undef Perl_pp_srand
-#define Perl_pp_srand pPerl->Perl_pp_srand
-#undef pp_srand
-#define pp_srand Perl_pp_srand
-#undef Perl_pp_srefgen
-#define Perl_pp_srefgen pPerl->Perl_pp_srefgen
-#undef pp_srefgen
-#define pp_srefgen Perl_pp_srefgen
-#undef Perl_pp_sselect
-#define Perl_pp_sselect pPerl->Perl_pp_sselect
-#undef pp_sselect
-#define pp_sselect Perl_pp_sselect
-#undef Perl_pp_sservent
-#define Perl_pp_sservent pPerl->Perl_pp_sservent
-#undef pp_sservent
-#define pp_sservent Perl_pp_sservent
-#undef Perl_pp_ssockopt
-#define Perl_pp_ssockopt pPerl->Perl_pp_ssockopt
-#undef pp_ssockopt
-#define pp_ssockopt Perl_pp_ssockopt
-#undef Perl_pp_stat
-#define Perl_pp_stat pPerl->Perl_pp_stat
-#undef pp_stat
-#define pp_stat Perl_pp_stat
-#undef Perl_pp_stringify
-#define Perl_pp_stringify pPerl->Perl_pp_stringify
-#undef pp_stringify
-#define pp_stringify Perl_pp_stringify
-#undef Perl_pp_stub
-#define Perl_pp_stub pPerl->Perl_pp_stub
-#undef pp_stub
-#define pp_stub Perl_pp_stub
-#undef Perl_pp_study
-#define Perl_pp_study pPerl->Perl_pp_study
-#undef pp_study
-#define pp_study Perl_pp_study
-#undef Perl_pp_subst
-#define Perl_pp_subst pPerl->Perl_pp_subst
-#undef pp_subst
-#define pp_subst Perl_pp_subst
-#undef Perl_pp_substcont
-#define Perl_pp_substcont pPerl->Perl_pp_substcont
-#undef pp_substcont
-#define pp_substcont Perl_pp_substcont
-#undef Perl_pp_substr
-#define Perl_pp_substr pPerl->Perl_pp_substr
-#undef pp_substr
-#define pp_substr Perl_pp_substr
-#undef Perl_pp_subtract
-#define Perl_pp_subtract pPerl->Perl_pp_subtract
-#undef pp_subtract
-#define pp_subtract Perl_pp_subtract
-#undef Perl_pp_symlink
-#define Perl_pp_symlink pPerl->Perl_pp_symlink
-#undef pp_symlink
-#define pp_symlink Perl_pp_symlink
-#undef Perl_pp_syscall
-#define Perl_pp_syscall pPerl->Perl_pp_syscall
-#undef pp_syscall
-#define pp_syscall Perl_pp_syscall
-#undef Perl_pp_sysopen
-#define Perl_pp_sysopen pPerl->Perl_pp_sysopen
-#undef pp_sysopen
-#define pp_sysopen Perl_pp_sysopen
-#undef Perl_pp_sysread
-#define Perl_pp_sysread pPerl->Perl_pp_sysread
-#undef pp_sysread
-#define pp_sysread Perl_pp_sysread
-#undef Perl_pp_sysseek
-#define Perl_pp_sysseek pPerl->Perl_pp_sysseek
-#undef pp_sysseek
-#define pp_sysseek Perl_pp_sysseek
-#undef Perl_pp_system
-#define Perl_pp_system pPerl->Perl_pp_system
-#undef pp_system
-#define pp_system Perl_pp_system
-#undef Perl_pp_syswrite
-#define Perl_pp_syswrite pPerl->Perl_pp_syswrite
-#undef pp_syswrite
-#define pp_syswrite Perl_pp_syswrite
-#undef Perl_pp_tell
-#define Perl_pp_tell pPerl->Perl_pp_tell
-#undef pp_tell
-#define pp_tell Perl_pp_tell
-#undef Perl_pp_telldir
-#define Perl_pp_telldir pPerl->Perl_pp_telldir
-#undef pp_telldir
-#define pp_telldir Perl_pp_telldir
-#undef Perl_pp_threadsv
-#define Perl_pp_threadsv pPerl->Perl_pp_threadsv
-#undef pp_threadsv
-#define pp_threadsv Perl_pp_threadsv
-#undef Perl_pp_tie
-#define Perl_pp_tie pPerl->Perl_pp_tie
-#undef pp_tie
-#define pp_tie Perl_pp_tie
-#undef Perl_pp_tied
-#define Perl_pp_tied pPerl->Perl_pp_tied
-#undef pp_tied
-#define pp_tied Perl_pp_tied
-#undef Perl_pp_time
-#define Perl_pp_time pPerl->Perl_pp_time
-#undef pp_time
-#define pp_time Perl_pp_time
-#undef Perl_pp_tms
-#define Perl_pp_tms pPerl->Perl_pp_tms
-#undef pp_tms
-#define pp_tms Perl_pp_tms
-#undef Perl_pp_trans
-#define Perl_pp_trans pPerl->Perl_pp_trans
-#undef pp_trans
-#define pp_trans Perl_pp_trans
-#undef Perl_pp_truncate
-#define Perl_pp_truncate pPerl->Perl_pp_truncate
-#undef pp_truncate
-#define pp_truncate Perl_pp_truncate
-#undef Perl_pp_uc
-#define Perl_pp_uc pPerl->Perl_pp_uc
-#undef pp_uc
-#define pp_uc Perl_pp_uc
-#undef Perl_pp_ucfirst
-#define Perl_pp_ucfirst pPerl->Perl_pp_ucfirst
-#undef pp_ucfirst
-#define pp_ucfirst Perl_pp_ucfirst
-#undef Perl_pp_umask
-#define Perl_pp_umask pPerl->Perl_pp_umask
-#undef pp_umask
-#define pp_umask Perl_pp_umask
-#undef Perl_pp_undef
-#define Perl_pp_undef pPerl->Perl_pp_undef
-#undef pp_undef
-#define pp_undef Perl_pp_undef
-#undef Perl_pp_unlink
-#define Perl_pp_unlink pPerl->Perl_pp_unlink
-#undef pp_unlink
-#define pp_unlink Perl_pp_unlink
-#undef Perl_pp_unpack
-#define Perl_pp_unpack pPerl->Perl_pp_unpack
-#undef pp_unpack
-#define pp_unpack Perl_pp_unpack
-#undef Perl_pp_unshift
-#define Perl_pp_unshift pPerl->Perl_pp_unshift
-#undef pp_unshift
-#define pp_unshift Perl_pp_unshift
-#undef Perl_pp_unstack
-#define Perl_pp_unstack pPerl->Perl_pp_unstack
-#undef pp_unstack
-#define pp_unstack Perl_pp_unstack
-#undef Perl_pp_untie
-#define Perl_pp_untie pPerl->Perl_pp_untie
-#undef pp_untie
-#define pp_untie Perl_pp_untie
-#undef Perl_pp_utime
-#define Perl_pp_utime pPerl->Perl_pp_utime
-#undef pp_utime
-#define pp_utime Perl_pp_utime
-#undef Perl_pp_values
-#define Perl_pp_values pPerl->Perl_pp_values
-#undef pp_values
-#define pp_values Perl_pp_values
-#undef Perl_pp_vec
-#define Perl_pp_vec pPerl->Perl_pp_vec
-#undef pp_vec
-#define pp_vec Perl_pp_vec
-#undef Perl_pp_wait
-#define Perl_pp_wait pPerl->Perl_pp_wait
-#undef pp_wait
-#define pp_wait Perl_pp_wait
-#undef Perl_pp_waitpid
-#define Perl_pp_waitpid pPerl->Perl_pp_waitpid
-#undef pp_waitpid
-#define pp_waitpid Perl_pp_waitpid
-#undef Perl_pp_wantarray
-#define Perl_pp_wantarray pPerl->Perl_pp_wantarray
-#undef pp_wantarray
-#define pp_wantarray Perl_pp_wantarray
-#undef Perl_pp_warn
-#define Perl_pp_warn pPerl->Perl_pp_warn
-#undef pp_warn
-#define pp_warn Perl_pp_warn
-#undef Perl_pp_xor
-#define Perl_pp_xor pPerl->Perl_pp_xor
-#undef pp_xor
-#define pp_xor Perl_pp_xor
#endif /* PERL_CORE && PERL_OBJECT */
#endif /* __objXSUB_h__ */
diff --git a/op.c b/op.c
index f5938c35e8..02edc8d9f1 100644
--- a/op.c
+++ b/op.c
@@ -4601,6 +4601,15 @@ Perl_newATTRSUB(pTHX_ I32 floor, OP *o, OP *proto, OP *attrs, OP *block)
}
/* XXX unsafe for threads if eval_owner isn't held */
+/*
+=for apidoc newCONSTSUB
+
+Creates a constant sub equivalent to Perl C<sub FOO () { 123 }> which is
+eligible for inlining at compile-time.
+
+=cut
+*/
+
void
Perl_newCONSTSUB(pTHX_ HV *stash, char *name, SV *sv)
{
@@ -4635,6 +4644,14 @@ Perl_newCONSTSUB(pTHX_ HV *stash, char *name, SV *sv)
LEAVE;
}
+/*
+=for apidoc U||newXS
+
+Used by C<xsubpp> to hook up XSUBs as Perl subs.
+
+=cut
+*/
+
CV *
Perl_newXS(pTHX_ char *name, XSUBADDR_t subaddr, char *filename)
{
diff --git a/op.h b/op.h
index 91cdb6b1c9..fc38b9cc6b 100644
--- a/op.h
+++ b/op.h
@@ -52,6 +52,20 @@ typedef U32 PADOFFSET;
((op)->op_flags & OPf_WANT) == OPf_WANT_LIST ? G_ARRAY : \
dfl)
+/*
+=for apidoc Amn|U32|GIMME_V
+The XSUB-writer's equivalent to Perl's C<wantarray>. Returns C<G_VOID>,
+C<G_SCALAR> or C<G_ARRAY> for void, scalar or array context,
+respectively.
+
+=for apidoc Amn|U32|GIMME
+A backward-compatible version of C<GIMME_V> which can only return
+C<G_SCALAR> or C<G_ARRAY>; in a void context, it returns C<G_SCALAR>.
+Deprecated. Use C<GIMME_V> instead.
+
+=cut
+*/
+
#define GIMME_V OP_GIMME(PL_op, block_gimme())
/* Public flags */
@@ -85,6 +99,7 @@ typedef U32 PADOFFSET;
/* old names; don't use in new code, but don't break them, either */
#define OPf_LIST OPf_WANT_LIST
#define OPf_KNOW OPf_WANT
+
#define GIMME \
(PL_op->op_flags & OPf_WANT \
? ((PL_op->op_flags & OPf_WANT) == OPf_WANT_LIST \
diff --git a/perl.c b/perl.c
index 7f1e3f6fe1..3153f59186 100644
--- a/perl.c
+++ b/perl.c
@@ -86,6 +86,15 @@ perl_alloc_using(struct IPerlMem* ipM, struct IPerlMem* ipMS,
return my_perl;
}
#else
+
+/*
+=for apidoc perl_alloc
+
+Allocates a new Perl interpreter. See L<perlembed>.
+
+=cut
+*/
+
PerlInterpreter *
perl_alloc(void)
{
@@ -99,6 +108,14 @@ perl_alloc(void)
}
#endif /* PERL_IMPLICIT_SYS */
+/*
+=for apidoc perl_construct
+
+Initializes a new Perl interpreter. See L<perlembed>.
+
+=cut
+*/
+
void
perl_construct(pTHXx)
{
@@ -239,6 +256,14 @@ perl_construct(pTHXx)
ENTER;
}
+/*
+=for apidoc perl_destruct
+
+Shuts down a Perl interpreter. See L<perlembed>.
+
+=cut
+*/
+
void
perl_destruct(pTHXx)
{
@@ -664,6 +689,14 @@ perl_destruct(pTHXx)
}
}
+/*
+=for apidoc perl_free
+
+Releases a Perl interpreter. See L<perlembed>.
+
+=cut
+*/
+
void
perl_free(pTHXx)
{
@@ -683,6 +716,14 @@ Perl_call_atexit(pTHX_ ATEXIT_t fn, void *ptr)
++PL_exitlistlen;
}
+/*
+=for apidoc perl_parse
+
+Tells a Perl interpreter to parse a Perl script. See L<perlembed>.
+
+=cut
+*/
+
int
perl_parse(pTHXx_ XSINIT_t xsinit, int argc, char **argv, char **env)
{
@@ -1152,6 +1193,14 @@ print \" \\@INC:\\n @INC\\n\";");
return NULL;
}
+/*
+=for apidoc perl_run
+
+Tells a Perl interpreter to run. See L<perlembed>.
+
+=cut
+*/
+
int
perl_run(pTHXx)
{
@@ -1241,6 +1290,16 @@ S_run_body(pTHX_ va_list args)
return NULL;
}
+/*
+=for apidoc p||get_sv
+
+Returns the SV of the specified Perl scalar. If C<create> is set and the
+Perl variable does not exist then it will be created. If C<create> is not
+set and the variable does not exist then NULL is returned.
+
+=cut
+*/
+
SV*
Perl_get_sv(pTHX_ const char *name, I32 create)
{
@@ -1260,6 +1319,16 @@ Perl_get_sv(pTHX_ const char *name, I32 create)
return Nullsv;
}
+/*
+=for apidoc p||get_av
+
+Returns the AV of the specified Perl array. If C<create> is set and the
+Perl variable does not exist then it will be created. If C<create> is not
+set and the variable does not exist then NULL is returned.
+
+=cut
+*/
+
AV*
Perl_get_av(pTHX_ const char *name, I32 create)
{
@@ -1271,6 +1340,16 @@ Perl_get_av(pTHX_ const char *name, I32 create)
return Nullav;
}
+/*
+=for apidoc p||get_hv
+
+Returns the HV of the specified Perl hash. If C<create> is set and the
+Perl variable does not exist then it will be created. If C<create> is not
+set and the variable does not exist then NULL is returned.
+
+=cut
+*/
+
HV*
Perl_get_hv(pTHX_ const char *name, I32 create)
{
@@ -1282,6 +1361,17 @@ Perl_get_hv(pTHX_ const char *name, I32 create)
return Nullhv;
}
+/*
+=for apidoc p||get_cv
+
+Returns the CV of the specified Perl subroutine. If C<create> is set and
+the Perl subroutine does not exist then it will be declared (which has the
+same effect as saying C<sub name;>). If C<create> is not set and the
+subroutine does not exist then NULL is returned.
+
+=cut
+*/
+
CV*
Perl_get_cv(pTHX_ const char *name, I32 create)
{
@@ -1302,6 +1392,14 @@ Perl_get_cv(pTHX_ const char *name, I32 create)
/* Be sure to refetch the stack pointer after calling these routines. */
+/*
+=for apidoc p||call_argv
+
+Performs a callback to the specified Perl sub. See L<perlcall>.
+
+=cut
+*/
+
I32
Perl_call_argv(pTHX_ const char *sub_name, I32 flags, register char **argv)
@@ -1321,6 +1419,14 @@ Perl_call_argv(pTHX_ const char *sub_name, I32 flags, register char **argv)
return call_pv(sub_name, flags);
}
+/*
+=for apidoc p||call_pv
+
+Performs a callback to the specified Perl sub. See L<perlcall>.
+
+=cut
+*/
+
I32
Perl_call_pv(pTHX_ const char *sub_name, I32 flags)
/* name of the subroutine */
@@ -1329,6 +1435,15 @@ Perl_call_pv(pTHX_ const char *sub_name, I32 flags)
return call_sv((SV*)get_cv(sub_name, TRUE), flags);
}
+/*
+=for apidoc p||call_method
+
+Performs a callback to the specified Perl method. The blessed object must
+be on the stack. See L<perlcall>.
+
+=cut
+*/
+
I32
Perl_call_method(pTHX_ const char *methname, I32 flags)
/* name of the subroutine */
@@ -1347,6 +1462,15 @@ Perl_call_method(pTHX_ const char *methname, I32 flags)
}
/* May be called with any of a CV, a GV, or an SV containing the name. */
+/*
+=for apidoc p||call_sv
+
+Performs a callback to the Perl sub whose name is in the SV. See
+L<perlcall>.
+
+=cut
+*/
+
I32
Perl_call_sv(pTHX_ SV *sv, I32 flags)
@@ -1509,6 +1633,14 @@ S_call_xbody(pTHX_ OP *myop, int is_eval)
/* Eval a string. The G_EVAL flag is always assumed. */
+/*
+=for apidoc p||eval_sv
+
+Tells Perl to C<eval> the string in the SV.
+
+=cut
+*/
+
I32
Perl_eval_sv(pTHX_ SV *sv, I32 flags)
@@ -1591,6 +1723,14 @@ Perl_eval_sv(pTHX_ SV *sv, I32 flags)
return retval;
}
+/*
+=for apidoc p||eval_pv
+
+Tells Perl to C<eval> the given string and return an SV* result.
+
+=cut
+*/
+
SV*
Perl_eval_pv(pTHX_ const char *p, I32 croak_on_error)
{
@@ -1615,6 +1755,14 @@ Perl_eval_pv(pTHX_ const char *p, I32 croak_on_error)
/* Require a module. */
+/*
+=for apidoc p||require_pv
+
+Tells Perl to C<require> a module.
+
+=cut
+*/
+
void
Perl_require_pv(pTHX_ const char *pv)
{
diff --git a/perlapi.c b/perlapi.c
index b28c4b5be6..f9b37aac86 100644
--- a/perlapi.c
+++ b/perlapi.c
@@ -83,27 +83,6 @@ Perl_Gv_AMupdate(pTHXo_ HV* stash)
return ((CPerlObj*)pPerl)->Perl_Gv_AMupdate(stash);
}
-#undef Perl_append_elem
-OP*
-Perl_append_elem(pTHXo_ I32 optype, OP* head, OP* tail)
-{
- return ((CPerlObj*)pPerl)->Perl_append_elem(optype, head, tail);
-}
-
-#undef Perl_append_list
-OP*
-Perl_append_list(pTHXo_ I32 optype, LISTOP* first, LISTOP* last)
-{
- return ((CPerlObj*)pPerl)->Perl_append_list(optype, first, last);
-}
-
-#undef Perl_apply
-I32
-Perl_apply(pTHXo_ I32 type, SV** mark, SV** sp)
-{
- return ((CPerlObj*)pPerl)->Perl_apply(type, mark, sp);
-}
-
#undef Perl_avhv_delete_ent
SV*
Perl_avhv_delete_ent(pTHXo_ AV *ar, SV* keysv, I32 flags, U32 hash)
@@ -258,20 +237,6 @@ Perl_av_unshift(pTHXo_ AV* ar, I32 num)
((CPerlObj*)pPerl)->Perl_av_unshift(ar, num);
}
-#undef Perl_bind_match
-OP*
-Perl_bind_match(pTHXo_ I32 type, OP* left, OP* pat)
-{
- return ((CPerlObj*)pPerl)->Perl_bind_match(type, left, pat);
-}
-
-#undef Perl_block_end
-OP*
-Perl_block_end(pTHXo_ I32 floor, OP* seq)
-{
- return ((CPerlObj*)pPerl)->Perl_block_end(floor, seq);
-}
-
#undef Perl_block_gimme
I32
Perl_block_gimme(pTHXo)
@@ -279,34 +244,6 @@ Perl_block_gimme(pTHXo)
return ((CPerlObj*)pPerl)->Perl_block_gimme();
}
-#undef Perl_block_start
-int
-Perl_block_start(pTHXo_ int full)
-{
- return ((CPerlObj*)pPerl)->Perl_block_start(full);
-}
-
-#undef Perl_boot_core_UNIVERSAL
-void
-Perl_boot_core_UNIVERSAL(pTHXo)
-{
- ((CPerlObj*)pPerl)->Perl_boot_core_UNIVERSAL();
-}
-
-#undef Perl_call_list
-void
-Perl_call_list(pTHXo_ I32 oldscope, AV* av_list)
-{
- ((CPerlObj*)pPerl)->Perl_call_list(oldscope, av_list);
-}
-
-#undef Perl_cando
-bool
-Perl_cando(pTHXo_ Mode_t mode, Uid_t effective, Stat_t* statbufp)
-{
- return ((CPerlObj*)pPerl)->Perl_cando(mode, effective, statbufp);
-}
-
#undef Perl_cast_ulong
U32
Perl_cast_ulong(pTHXo_ NV f)
@@ -344,22 +281,8 @@ Perl_my_chsize(pTHXo_ int fd, Off_t length)
}
#endif
#if defined(USE_THREADS)
-
-#undef Perl_condpair_magic
-MAGIC*
-Perl_condpair_magic(pTHXo_ SV *sv)
-{
- return ((CPerlObj*)pPerl)->Perl_condpair_magic(sv);
-}
#endif
-#undef Perl_convert
-OP*
-Perl_convert(pTHXo_ I32 optype, I32 flags, OP* o)
-{
- return ((CPerlObj*)pPerl)->Perl_convert(optype, flags, o);
-}
-
#undef Perl_croak
void
Perl_croak(pTHXo_ const char* pat, ...)
@@ -525,41 +448,6 @@ Perl_sv_setpvf_mg_nocontext(SV* sv, const char* pat, ...)
#undef Perl_fprintf_nocontext
#endif
-#undef Perl_cv_ckproto
-void
-Perl_cv_ckproto(pTHXo_ CV* cv, GV* gv, char* p)
-{
- ((CPerlObj*)pPerl)->Perl_cv_ckproto(cv, gv, p);
-}
-
-#undef Perl_cv_clone
-CV*
-Perl_cv_clone(pTHXo_ CV* proto)
-{
- return ((CPerlObj*)pPerl)->Perl_cv_clone(proto);
-}
-
-#undef Perl_cv_const_sv
-SV*
-Perl_cv_const_sv(pTHXo_ CV* cv)
-{
- return ((CPerlObj*)pPerl)->Perl_cv_const_sv(cv);
-}
-
-#undef Perl_op_const_sv
-SV*
-Perl_op_const_sv(pTHXo_ OP* o, CV* cv)
-{
- return ((CPerlObj*)pPerl)->Perl_op_const_sv(o, cv);
-}
-
-#undef Perl_cv_undef
-void
-Perl_cv_undef(pTHXo_ CV* cv)
-{
- ((CPerlObj*)pPerl)->Perl_cv_undef(cv);
-}
-
#undef Perl_cx_dump
void
Perl_cx_dump(pTHXo_ PERL_CONTEXT* cs)
@@ -602,20 +490,6 @@ Perl_get_op_names(pTHXo)
return ((CPerlObj*)pPerl)->Perl_get_op_names();
}
-#undef Perl_get_no_modify
-char*
-Perl_get_no_modify(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_get_no_modify();
-}
-
-#undef Perl_get_opargs
-U32*
-Perl_get_opargs(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_get_opargs();
-}
-
#undef Perl_get_ppaddr
PPADDR_t*
Perl_get_ppaddr(pTHXo)
@@ -623,13 +497,6 @@ Perl_get_ppaddr(pTHXo)
return ((CPerlObj*)pPerl)->Perl_get_ppaddr();
}
-#undef Perl_cxinc
-I32
-Perl_cxinc(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_cxinc();
-}
-
#undef Perl_deb
void
Perl_deb(pTHXo_ const char* pat, ...)
@@ -682,170 +549,17 @@ Perl_delimcpy(pTHXo_ char* to, char* toend, char* from, char* fromend, int delim
return ((CPerlObj*)pPerl)->Perl_delimcpy(to, toend, from, fromend, delim, retlen);
}
-#undef Perl_deprecate
-void
-Perl_deprecate(pTHXo_ char* s)
-{
- ((CPerlObj*)pPerl)->Perl_deprecate(s);
-}
-
-#undef Perl_die
-OP*
-Perl_die(pTHXo_ const char* pat, ...)
-{
- OP* retval;
- va_list args;
- va_start(args, pat);
- retval = ((CPerlObj*)pPerl)->Perl_vdie(pat, &args);
- va_end(args);
- return retval;
-
-}
-
-#undef Perl_vdie
-OP*
-Perl_vdie(pTHXo_ const char* pat, va_list* args)
-{
- return ((CPerlObj*)pPerl)->Perl_vdie(pat, args);
-}
-
-#undef Perl_die_where
-OP*
-Perl_die_where(pTHXo_ char* message, STRLEN msglen)
-{
- return ((CPerlObj*)pPerl)->Perl_die_where(message, msglen);
-}
-
-#undef Perl_dounwind
-void
-Perl_dounwind(pTHXo_ I32 cxix)
-{
- ((CPerlObj*)pPerl)->Perl_dounwind(cxix);
-}
-
-#undef Perl_do_aexec
-bool
-Perl_do_aexec(pTHXo_ SV* really, SV** mark, SV** sp)
-{
- return ((CPerlObj*)pPerl)->Perl_do_aexec(really, mark, sp);
-}
-
-#undef Perl_do_aexec5
-bool
-Perl_do_aexec5(pTHXo_ SV* really, SV** mark, SV** sp, int fd, int flag)
-{
- return ((CPerlObj*)pPerl)->Perl_do_aexec5(really, mark, sp, fd, flag);
-}
-
#undef Perl_do_binmode
int
Perl_do_binmode(pTHXo_ PerlIO *fp, int iotype, int flag)
{
return ((CPerlObj*)pPerl)->Perl_do_binmode(fp, iotype, flag);
}
-
-#undef Perl_do_chop
-void
-Perl_do_chop(pTHXo_ SV* asv, SV* sv)
-{
- ((CPerlObj*)pPerl)->Perl_do_chop(asv, sv);
-}
-
-#undef Perl_do_close
-bool
-Perl_do_close(pTHXo_ GV* gv, bool not_implicit)
-{
- return ((CPerlObj*)pPerl)->Perl_do_close(gv, not_implicit);
-}
-
-#undef Perl_do_eof
-bool
-Perl_do_eof(pTHXo_ GV* gv)
-{
- return ((CPerlObj*)pPerl)->Perl_do_eof(gv);
-}
-
-#undef Perl_do_exec
-bool
-Perl_do_exec(pTHXo_ char* cmd)
-{
- return ((CPerlObj*)pPerl)->Perl_do_exec(cmd);
-}
#if !defined(WIN32)
-
-#undef Perl_do_exec3
-bool
-Perl_do_exec3(pTHXo_ char* cmd, int fd, int flag)
-{
- return ((CPerlObj*)pPerl)->Perl_do_exec3(cmd, fd, flag);
-}
#endif
-
-#undef Perl_do_execfree
-void
-Perl_do_execfree(pTHXo)
-{
- ((CPerlObj*)pPerl)->Perl_do_execfree();
-}
#if defined(HAS_MSG) || defined(HAS_SEM) || defined(HAS_SHM)
-
-#undef Perl_do_ipcctl
-I32
-Perl_do_ipcctl(pTHXo_ I32 optype, SV** mark, SV** sp)
-{
- return ((CPerlObj*)pPerl)->Perl_do_ipcctl(optype, mark, sp);
-}
-
-#undef Perl_do_ipcget
-I32
-Perl_do_ipcget(pTHXo_ I32 optype, SV** mark, SV** sp)
-{
- return ((CPerlObj*)pPerl)->Perl_do_ipcget(optype, mark, sp);
-}
-
-#undef Perl_do_msgrcv
-I32
-Perl_do_msgrcv(pTHXo_ SV** mark, SV** sp)
-{
- return ((CPerlObj*)pPerl)->Perl_do_msgrcv(mark, sp);
-}
-
-#undef Perl_do_msgsnd
-I32
-Perl_do_msgsnd(pTHXo_ SV** mark, SV** sp)
-{
- return ((CPerlObj*)pPerl)->Perl_do_msgsnd(mark, sp);
-}
-
-#undef Perl_do_semop
-I32
-Perl_do_semop(pTHXo_ SV** mark, SV** sp)
-{
- return ((CPerlObj*)pPerl)->Perl_do_semop(mark, sp);
-}
-
-#undef Perl_do_shmio
-I32
-Perl_do_shmio(pTHXo_ I32 optype, SV** mark, SV** sp)
-{
- return ((CPerlObj*)pPerl)->Perl_do_shmio(optype, mark, sp);
-}
#endif
-#undef Perl_do_join
-void
-Perl_do_join(pTHXo_ SV* sv, SV* del, SV** mark, SV** sp)
-{
- ((CPerlObj*)pPerl)->Perl_do_join(sv, del, mark, sp);
-}
-
-#undef Perl_do_kv
-OP*
-Perl_do_kv(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_do_kv();
-}
-
#undef Perl_do_open
bool
Perl_do_open(pTHXo_ GV* gv, char* name, I32 len, int as_raw, int rawmode, int rawperm, PerlIO* supplied_fp)
@@ -860,97 +574,6 @@ Perl_do_open9(pTHXo_ GV *gv, char *name, I32 len, int as_raw, int rawmode, int r
return ((CPerlObj*)pPerl)->Perl_do_open9(gv, name, len, as_raw, rawmode, rawperm, supplied_fp, svs, num);
}
-#undef Perl_do_pipe
-void
-Perl_do_pipe(pTHXo_ SV* sv, GV* rgv, GV* wgv)
-{
- ((CPerlObj*)pPerl)->Perl_do_pipe(sv, rgv, wgv);
-}
-
-#undef Perl_do_print
-bool
-Perl_do_print(pTHXo_ SV* sv, PerlIO* fp)
-{
- return ((CPerlObj*)pPerl)->Perl_do_print(sv, fp);
-}
-
-#undef Perl_do_readline
-OP*
-Perl_do_readline(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_do_readline();
-}
-
-#undef Perl_do_chomp
-I32
-Perl_do_chomp(pTHXo_ SV* sv)
-{
- return ((CPerlObj*)pPerl)->Perl_do_chomp(sv);
-}
-
-#undef Perl_do_seek
-bool
-Perl_do_seek(pTHXo_ GV* gv, Off_t pos, int whence)
-{
- return ((CPerlObj*)pPerl)->Perl_do_seek(gv, pos, whence);
-}
-
-#undef Perl_do_sprintf
-void
-Perl_do_sprintf(pTHXo_ SV* sv, I32 len, SV** sarg)
-{
- ((CPerlObj*)pPerl)->Perl_do_sprintf(sv, len, sarg);
-}
-
-#undef Perl_do_sysseek
-Off_t
-Perl_do_sysseek(pTHXo_ GV* gv, Off_t pos, int whence)
-{
- return ((CPerlObj*)pPerl)->Perl_do_sysseek(gv, pos, whence);
-}
-
-#undef Perl_do_tell
-Off_t
-Perl_do_tell(pTHXo_ GV* gv)
-{
- return ((CPerlObj*)pPerl)->Perl_do_tell(gv);
-}
-
-#undef Perl_do_trans
-I32
-Perl_do_trans(pTHXo_ SV* sv)
-{
- return ((CPerlObj*)pPerl)->Perl_do_trans(sv);
-}
-
-#undef Perl_do_vecget
-UV
-Perl_do_vecget(pTHXo_ SV* sv, I32 offset, I32 size)
-{
- return ((CPerlObj*)pPerl)->Perl_do_vecget(sv, offset, size);
-}
-
-#undef Perl_do_vecset
-void
-Perl_do_vecset(pTHXo_ SV* sv)
-{
- ((CPerlObj*)pPerl)->Perl_do_vecset(sv);
-}
-
-#undef Perl_do_vop
-void
-Perl_do_vop(pTHXo_ I32 optype, SV* sv, SV* left, SV* right)
-{
- ((CPerlObj*)pPerl)->Perl_do_vop(optype, sv, left, right);
-}
-
-#undef Perl_dofile
-OP*
-Perl_dofile(pTHXo_ OP* term)
-{
- return ((CPerlObj*)pPerl)->Perl_dofile(term);
-}
-
#undef Perl_dowantarray
I32
Perl_dowantarray(pTHXo)
@@ -1036,37 +659,9 @@ Perl_fbm_instr(pTHXo_ unsigned char* big, unsigned char* bigend, SV* littlesv, U
{
return ((CPerlObj*)pPerl)->Perl_fbm_instr(big, bigend, littlesv, flags);
}
-
-#undef Perl_find_script
-char*
-Perl_find_script(pTHXo_ char *scriptname, bool dosearch, char **search_ext, I32 flags)
-{
- return ((CPerlObj*)pPerl)->Perl_find_script(scriptname, dosearch, search_ext, flags);
-}
#if defined(USE_THREADS)
-
-#undef Perl_find_threadsv
-PADOFFSET
-Perl_find_threadsv(pTHXo_ const char *name)
-{
- return ((CPerlObj*)pPerl)->Perl_find_threadsv(name);
-}
#endif
-#undef Perl_force_list
-OP*
-Perl_force_list(pTHXo_ OP* arg)
-{
- return ((CPerlObj*)pPerl)->Perl_force_list(arg);
-}
-
-#undef Perl_fold_constants
-OP*
-Perl_fold_constants(pTHXo_ OP* arg)
-{
- return ((CPerlObj*)pPerl)->Perl_fold_constants(arg);
-}
-
#undef Perl_form
char*
Perl_form(pTHXo_ const char* pat, ...)
@@ -1093,21 +688,7 @@ Perl_free_tmps(pTHXo)
{
((CPerlObj*)pPerl)->Perl_free_tmps();
}
-
-#undef Perl_gen_constant_list
-OP*
-Perl_gen_constant_list(pTHXo_ OP* o)
-{
- return ((CPerlObj*)pPerl)->Perl_gen_constant_list(o);
-}
#if !defined(HAS_GETENV_LEN)
-
-#undef Perl_getenv_len
-char*
-Perl_getenv_len(pTHXo_ char* key, unsigned long *len)
-{
- return ((CPerlObj*)pPerl)->Perl_getenv_len(key, len);
-}
#endif
#undef Perl_gp_free
@@ -1404,34 +985,6 @@ Perl_ibcmp_locale(pTHXo_ const char* a, const char* b, I32 len)
return ((CPerlObj*)pPerl)->Perl_ibcmp_locale(a, b, len);
}
-#undef Perl_ingroup
-bool
-Perl_ingroup(pTHXo_ Gid_t testgid, Uid_t effective)
-{
- return ((CPerlObj*)pPerl)->Perl_ingroup(testgid, effective);
-}
-
-#undef Perl_init_debugger
-void
-Perl_init_debugger(pTHXo)
-{
- ((CPerlObj*)pPerl)->Perl_init_debugger();
-}
-
-#undef Perl_init_stacks
-void
-Perl_init_stacks(pTHXo)
-{
- ((CPerlObj*)pPerl)->Perl_init_stacks();
-}
-
-#undef Perl_intro_my
-U32
-Perl_intro_my(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_intro_my();
-}
-
#undef Perl_instr
char*
Perl_instr(pTHXo_ const char* big, const char* little)
@@ -1439,20 +992,6 @@ Perl_instr(pTHXo_ const char* big, const char* little)
return ((CPerlObj*)pPerl)->Perl_instr(big, little);
}
-#undef Perl_io_close
-bool
-Perl_io_close(pTHXo_ IO* io, bool not_implicit)
-{
- return ((CPerlObj*)pPerl)->Perl_io_close(io, not_implicit);
-}
-
-#undef Perl_invert
-OP*
-Perl_invert(pTHXo_ OP* cmd)
-{
- return ((CPerlObj*)pPerl)->Perl_invert(cmd);
-}
-
#undef Perl_is_uni_alnum
bool
Perl_is_uni_alnum(pTHXo_ U32 c)
@@ -1796,409 +1335,17 @@ Perl_is_utf8_mark(pTHXo_ U8 *p)
return ((CPerlObj*)pPerl)->Perl_is_utf8_mark(p);
}
-#undef Perl_jmaybe
-OP*
-Perl_jmaybe(pTHXo_ OP* arg)
-{
- return ((CPerlObj*)pPerl)->Perl_jmaybe(arg);
-}
-
-#undef Perl_keyword
-I32
-Perl_keyword(pTHXo_ char* d, I32 len)
-{
- return ((CPerlObj*)pPerl)->Perl_keyword(d, len);
-}
-
-#undef Perl_leave_scope
-void
-Perl_leave_scope(pTHXo_ I32 base)
-{
- ((CPerlObj*)pPerl)->Perl_leave_scope(base);
-}
-
-#undef Perl_lex_end
-void
-Perl_lex_end(pTHXo)
-{
- ((CPerlObj*)pPerl)->Perl_lex_end();
-}
-
-#undef Perl_lex_start
-void
-Perl_lex_start(pTHXo_ SV* line)
-{
- ((CPerlObj*)pPerl)->Perl_lex_start(line);
-}
-
-#undef Perl_linklist
-OP*
-Perl_linklist(pTHXo_ OP* o)
-{
- return ((CPerlObj*)pPerl)->Perl_linklist(o);
-}
-
-#undef Perl_list
-OP*
-Perl_list(pTHXo_ OP* o)
-{
- return ((CPerlObj*)pPerl)->Perl_list(o);
-}
-
-#undef Perl_listkids
-OP*
-Perl_listkids(pTHXo_ OP* o)
-{
- return ((CPerlObj*)pPerl)->Perl_listkids(o);
-}
-
-#undef Perl_localize
-OP*
-Perl_localize(pTHXo_ OP* arg, I32 lexical)
-{
- return ((CPerlObj*)pPerl)->Perl_localize(arg, lexical);
-}
-
#undef Perl_looks_like_number
I32
Perl_looks_like_number(pTHXo_ SV* sv)
{
return ((CPerlObj*)pPerl)->Perl_looks_like_number(sv);
}
-
-#undef Perl_magic_clearenv
-int
-Perl_magic_clearenv(pTHXo_ SV* sv, MAGIC* mg)
-{
- return ((CPerlObj*)pPerl)->Perl_magic_clearenv(sv, mg);
-}
-
-#undef Perl_magic_clear_all_env
-int
-Perl_magic_clear_all_env(pTHXo_ SV* sv, MAGIC* mg)
-{
- return ((CPerlObj*)pPerl)->Perl_magic_clear_all_env(sv, mg);
-}
-
-#undef Perl_magic_clearpack
-int
-Perl_magic_clearpack(pTHXo_ SV* sv, MAGIC* mg)
-{
- return ((CPerlObj*)pPerl)->Perl_magic_clearpack(sv, mg);
-}
-
-#undef Perl_magic_clearsig
-int
-Perl_magic_clearsig(pTHXo_ SV* sv, MAGIC* mg)
-{
- return ((CPerlObj*)pPerl)->Perl_magic_clearsig(sv, mg);
-}
-
-#undef Perl_magic_existspack
-int
-Perl_magic_existspack(pTHXo_ SV* sv, MAGIC* mg)
-{
- return ((CPerlObj*)pPerl)->Perl_magic_existspack(sv, mg);
-}
-
-#undef Perl_magic_freeregexp
-int
-Perl_magic_freeregexp(pTHXo_ SV* sv, MAGIC* mg)
-{
- return ((CPerlObj*)pPerl)->Perl_magic_freeregexp(sv, mg);
-}
-
-#undef Perl_magic_get
-int
-Perl_magic_get(pTHXo_ SV* sv, MAGIC* mg)
-{
- return ((CPerlObj*)pPerl)->Perl_magic_get(sv, mg);
-}
-
-#undef Perl_magic_getarylen
-int
-Perl_magic_getarylen(pTHXo_ SV* sv, MAGIC* mg)
-{
- return ((CPerlObj*)pPerl)->Perl_magic_getarylen(sv, mg);
-}
-
-#undef Perl_magic_getdefelem
-int
-Perl_magic_getdefelem(pTHXo_ SV* sv, MAGIC* mg)
-{
- return ((CPerlObj*)pPerl)->Perl_magic_getdefelem(sv, mg);
-}
-
-#undef Perl_magic_getglob
-int
-Perl_magic_getglob(pTHXo_ SV* sv, MAGIC* mg)
-{
- return ((CPerlObj*)pPerl)->Perl_magic_getglob(sv, mg);
-}
-
-#undef Perl_magic_getnkeys
-int
-Perl_magic_getnkeys(pTHXo_ SV* sv, MAGIC* mg)
-{
- return ((CPerlObj*)pPerl)->Perl_magic_getnkeys(sv, mg);
-}
-
-#undef Perl_magic_getpack
-int
-Perl_magic_getpack(pTHXo_ SV* sv, MAGIC* mg)
-{
- return ((CPerlObj*)pPerl)->Perl_magic_getpack(sv, mg);
-}
-
-#undef Perl_magic_getpos
-int
-Perl_magic_getpos(pTHXo_ SV* sv, MAGIC* mg)
-{
- return ((CPerlObj*)pPerl)->Perl_magic_getpos(sv, mg);
-}
-
-#undef Perl_magic_getsig
-int
-Perl_magic_getsig(pTHXo_ SV* sv, MAGIC* mg)
-{
- return ((CPerlObj*)pPerl)->Perl_magic_getsig(sv, mg);
-}
-
-#undef Perl_magic_getsubstr
-int
-Perl_magic_getsubstr(pTHXo_ SV* sv, MAGIC* mg)
-{
- return ((CPerlObj*)pPerl)->Perl_magic_getsubstr(sv, mg);
-}
-
-#undef Perl_magic_gettaint
-int
-Perl_magic_gettaint(pTHXo_ SV* sv, MAGIC* mg)
-{
- return ((CPerlObj*)pPerl)->Perl_magic_gettaint(sv, mg);
-}
-
-#undef Perl_magic_getuvar
-int
-Perl_magic_getuvar(pTHXo_ SV* sv, MAGIC* mg)
-{
- return ((CPerlObj*)pPerl)->Perl_magic_getuvar(sv, mg);
-}
-
-#undef Perl_magic_getvec
-int
-Perl_magic_getvec(pTHXo_ SV* sv, MAGIC* mg)
-{
- return ((CPerlObj*)pPerl)->Perl_magic_getvec(sv, mg);
-}
-
-#undef Perl_magic_len
-U32
-Perl_magic_len(pTHXo_ SV* sv, MAGIC* mg)
-{
- return ((CPerlObj*)pPerl)->Perl_magic_len(sv, mg);
-}
#if defined(USE_THREADS)
-
-#undef Perl_magic_mutexfree
-int
-Perl_magic_mutexfree(pTHXo_ SV* sv, MAGIC* mg)
-{
- return ((CPerlObj*)pPerl)->Perl_magic_mutexfree(sv, mg);
-}
#endif
-
-#undef Perl_magic_nextpack
-int
-Perl_magic_nextpack(pTHXo_ SV* sv, MAGIC* mg, SV* key)
-{
- return ((CPerlObj*)pPerl)->Perl_magic_nextpack(sv, mg, key);
-}
-
-#undef Perl_magic_regdata_cnt
-U32
-Perl_magic_regdata_cnt(pTHXo_ SV* sv, MAGIC* mg)
-{
- return ((CPerlObj*)pPerl)->Perl_magic_regdata_cnt(sv, mg);
-}
-
-#undef Perl_magic_regdatum_get
-int
-Perl_magic_regdatum_get(pTHXo_ SV* sv, MAGIC* mg)
-{
- return ((CPerlObj*)pPerl)->Perl_magic_regdatum_get(sv, mg);
-}
-
-#undef Perl_magic_set
-int
-Perl_magic_set(pTHXo_ SV* sv, MAGIC* mg)
-{
- return ((CPerlObj*)pPerl)->Perl_magic_set(sv, mg);
-}
-
-#undef Perl_magic_setamagic
-int
-Perl_magic_setamagic(pTHXo_ SV* sv, MAGIC* mg)
-{
- return ((CPerlObj*)pPerl)->Perl_magic_setamagic(sv, mg);
-}
-
-#undef Perl_magic_setarylen
-int
-Perl_magic_setarylen(pTHXo_ SV* sv, MAGIC* mg)
-{
- return ((CPerlObj*)pPerl)->Perl_magic_setarylen(sv, mg);
-}
-
-#undef Perl_magic_setbm
-int
-Perl_magic_setbm(pTHXo_ SV* sv, MAGIC* mg)
-{
- return ((CPerlObj*)pPerl)->Perl_magic_setbm(sv, mg);
-}
-
-#undef Perl_magic_setdbline
-int
-Perl_magic_setdbline(pTHXo_ SV* sv, MAGIC* mg)
-{
- return ((CPerlObj*)pPerl)->Perl_magic_setdbline(sv, mg);
-}
#if defined(USE_LOCALE_COLLATE)
-
-#undef Perl_magic_setcollxfrm
-int
-Perl_magic_setcollxfrm(pTHXo_ SV* sv, MAGIC* mg)
-{
- return ((CPerlObj*)pPerl)->Perl_magic_setcollxfrm(sv, mg);
-}
#endif
-#undef Perl_magic_setdefelem
-int
-Perl_magic_setdefelem(pTHXo_ SV* sv, MAGIC* mg)
-{
- return ((CPerlObj*)pPerl)->Perl_magic_setdefelem(sv, mg);
-}
-
-#undef Perl_magic_setenv
-int
-Perl_magic_setenv(pTHXo_ SV* sv, MAGIC* mg)
-{
- return ((CPerlObj*)pPerl)->Perl_magic_setenv(sv, mg);
-}
-
-#undef Perl_magic_setfm
-int
-Perl_magic_setfm(pTHXo_ SV* sv, MAGIC* mg)
-{
- return ((CPerlObj*)pPerl)->Perl_magic_setfm(sv, mg);
-}
-
-#undef Perl_magic_setisa
-int
-Perl_magic_setisa(pTHXo_ SV* sv, MAGIC* mg)
-{
- return ((CPerlObj*)pPerl)->Perl_magic_setisa(sv, mg);
-}
-
-#undef Perl_magic_setglob
-int
-Perl_magic_setglob(pTHXo_ SV* sv, MAGIC* mg)
-{
- return ((CPerlObj*)pPerl)->Perl_magic_setglob(sv, mg);
-}
-
-#undef Perl_magic_setmglob
-int
-Perl_magic_setmglob(pTHXo_ SV* sv, MAGIC* mg)
-{
- return ((CPerlObj*)pPerl)->Perl_magic_setmglob(sv, mg);
-}
-
-#undef Perl_magic_setnkeys
-int
-Perl_magic_setnkeys(pTHXo_ SV* sv, MAGIC* mg)
-{
- return ((CPerlObj*)pPerl)->Perl_magic_setnkeys(sv, mg);
-}
-
-#undef Perl_magic_setpack
-int
-Perl_magic_setpack(pTHXo_ SV* sv, MAGIC* mg)
-{
- return ((CPerlObj*)pPerl)->Perl_magic_setpack(sv, mg);
-}
-
-#undef Perl_magic_setpos
-int
-Perl_magic_setpos(pTHXo_ SV* sv, MAGIC* mg)
-{
- return ((CPerlObj*)pPerl)->Perl_magic_setpos(sv, mg);
-}
-
-#undef Perl_magic_setsig
-int
-Perl_magic_setsig(pTHXo_ SV* sv, MAGIC* mg)
-{
- return ((CPerlObj*)pPerl)->Perl_magic_setsig(sv, mg);
-}
-
-#undef Perl_magic_setsubstr
-int
-Perl_magic_setsubstr(pTHXo_ SV* sv, MAGIC* mg)
-{
- return ((CPerlObj*)pPerl)->Perl_magic_setsubstr(sv, mg);
-}
-
-#undef Perl_magic_settaint
-int
-Perl_magic_settaint(pTHXo_ SV* sv, MAGIC* mg)
-{
- return ((CPerlObj*)pPerl)->Perl_magic_settaint(sv, mg);
-}
-
-#undef Perl_magic_setuvar
-int
-Perl_magic_setuvar(pTHXo_ SV* sv, MAGIC* mg)
-{
- return ((CPerlObj*)pPerl)->Perl_magic_setuvar(sv, mg);
-}
-
-#undef Perl_magic_setvec
-int
-Perl_magic_setvec(pTHXo_ SV* sv, MAGIC* mg)
-{
- return ((CPerlObj*)pPerl)->Perl_magic_setvec(sv, mg);
-}
-
-#undef Perl_magic_set_all_env
-int
-Perl_magic_set_all_env(pTHXo_ SV* sv, MAGIC* mg)
-{
- return ((CPerlObj*)pPerl)->Perl_magic_set_all_env(sv, mg);
-}
-
-#undef Perl_magic_sizepack
-U32
-Perl_magic_sizepack(pTHXo_ SV* sv, MAGIC* mg)
-{
- return ((CPerlObj*)pPerl)->Perl_magic_sizepack(sv, mg);
-}
-
-#undef Perl_magic_wipepack
-int
-Perl_magic_wipepack(pTHXo_ SV* sv, MAGIC* mg)
-{
- return ((CPerlObj*)pPerl)->Perl_magic_wipepack(sv, mg);
-}
-
-#undef Perl_magicname
-void
-Perl_magicname(pTHXo_ char* sym, char* name, I32 namlen)
-{
- ((CPerlObj*)pPerl)->Perl_magicname(sym, name, namlen);
-}
-
#undef Perl_markstack_grow
void
Perl_markstack_grow(pTHXo)
@@ -2206,13 +1353,6 @@ Perl_markstack_grow(pTHXo)
((CPerlObj*)pPerl)->Perl_markstack_grow();
}
#if defined(USE_LOCALE_COLLATE)
-
-#undef Perl_mem_collxfrm
-char*
-Perl_mem_collxfrm(pTHXo_ const char* s, STRLEN len, STRLEN* xlen)
-{
- return ((CPerlObj*)pPerl)->Perl_mem_collxfrm(s, len, xlen);
-}
#endif
#undef Perl_mess
@@ -2235,13 +1375,6 @@ Perl_vmess(pTHXo_ const char* pat, va_list* args)
return ((CPerlObj*)pPerl)->Perl_vmess(pat, args);
}
-#undef Perl_qerror
-void
-Perl_qerror(pTHXo_ SV* err)
-{
- ((CPerlObj*)pPerl)->Perl_qerror(err);
-}
-
#undef Perl_mg_clear
int
Perl_mg_clear(pTHXo_ SV* sv)
@@ -2305,27 +1438,6 @@ Perl_mg_size(pTHXo_ SV* sv)
return ((CPerlObj*)pPerl)->Perl_mg_size(sv);
}
-#undef Perl_mod
-OP*
-Perl_mod(pTHXo_ OP* o, I32 type)
-{
- return ((CPerlObj*)pPerl)->Perl_mod(o, type);
-}
-
-#undef Perl_moreswitches
-char*
-Perl_moreswitches(pTHXo_ char* s)
-{
- return ((CPerlObj*)pPerl)->Perl_moreswitches(s);
-}
-
-#undef Perl_my
-OP*
-Perl_my(pTHXo_ OP* o)
-{
- return ((CPerlObj*)pPerl)->Perl_my(o);
-}
-
#undef Perl_my_atof
NV
Perl_my_atof(pTHXo_ const char *s)
@@ -2454,13 +1566,6 @@ Perl_my_ntohl(pTHXo_ long l)
}
#endif
-#undef Perl_my_unexec
-void
-Perl_my_unexec(pTHXo)
-{
- ((CPerlObj*)pPerl)->Perl_my_unexec();
-}
-
#undef Perl_newANONLIST
OP*
Perl_newANONLIST(pTHXo_ OP* o)
@@ -2810,124 +1915,12 @@ Perl_newWHILEOP(pTHXo_ I32 flags, I32 debuggable, LOOP* loop, I32 whileline, OP*
return ((CPerlObj*)pPerl)->Perl_newWHILEOP(flags, debuggable, loop, whileline, expr, block, cont);
}
-#undef Perl_new_stackinfo
-PERL_SI*
-Perl_new_stackinfo(pTHXo_ I32 stitems, I32 cxitems)
-{
- return ((CPerlObj*)pPerl)->Perl_new_stackinfo(stitems, cxitems);
-}
-
-#undef Perl_nextargv
-PerlIO*
-Perl_nextargv(pTHXo_ GV* gv)
-{
- return ((CPerlObj*)pPerl)->Perl_nextargv(gv);
-}
-
#undef Perl_ninstr
char*
Perl_ninstr(pTHXo_ const char* big, const char* bigend, const char* little, const char* lend)
{
return ((CPerlObj*)pPerl)->Perl_ninstr(big, bigend, little, lend);
}
-
-#undef Perl_oopsCV
-OP*
-Perl_oopsCV(pTHXo_ OP* o)
-{
- return ((CPerlObj*)pPerl)->Perl_oopsCV(o);
-}
-
-#undef Perl_op_free
-void
-Perl_op_free(pTHXo_ OP* arg)
-{
- ((CPerlObj*)pPerl)->Perl_op_free(arg);
-}
-
-#undef Perl_package
-void
-Perl_package(pTHXo_ OP* o)
-{
- ((CPerlObj*)pPerl)->Perl_package(o);
-}
-
-#undef Perl_pad_alloc
-PADOFFSET
-Perl_pad_alloc(pTHXo_ I32 optype, U32 tmptype)
-{
- return ((CPerlObj*)pPerl)->Perl_pad_alloc(optype, tmptype);
-}
-
-#undef Perl_pad_allocmy
-PADOFFSET
-Perl_pad_allocmy(pTHXo_ char* name)
-{
- return ((CPerlObj*)pPerl)->Perl_pad_allocmy(name);
-}
-
-#undef Perl_pad_findmy
-PADOFFSET
-Perl_pad_findmy(pTHXo_ char* name)
-{
- return ((CPerlObj*)pPerl)->Perl_pad_findmy(name);
-}
-
-#undef Perl_oopsAV
-OP*
-Perl_oopsAV(pTHXo_ OP* o)
-{
- return ((CPerlObj*)pPerl)->Perl_oopsAV(o);
-}
-
-#undef Perl_oopsHV
-OP*
-Perl_oopsHV(pTHXo_ OP* o)
-{
- return ((CPerlObj*)pPerl)->Perl_oopsHV(o);
-}
-
-#undef Perl_pad_leavemy
-void
-Perl_pad_leavemy(pTHXo_ I32 fill)
-{
- ((CPerlObj*)pPerl)->Perl_pad_leavemy(fill);
-}
-
-#undef Perl_pad_sv
-SV*
-Perl_pad_sv(pTHXo_ PADOFFSET po)
-{
- return ((CPerlObj*)pPerl)->Perl_pad_sv(po);
-}
-
-#undef Perl_pad_free
-void
-Perl_pad_free(pTHXo_ PADOFFSET po)
-{
- ((CPerlObj*)pPerl)->Perl_pad_free(po);
-}
-
-#undef Perl_pad_reset
-void
-Perl_pad_reset(pTHXo)
-{
- ((CPerlObj*)pPerl)->Perl_pad_reset();
-}
-
-#undef Perl_pad_swipe
-void
-Perl_pad_swipe(pTHXo_ PADOFFSET po)
-{
- ((CPerlObj*)pPerl)->Perl_pad_swipe(po);
-}
-
-#undef Perl_peep
-void
-Perl_peep(pTHXo_ OP* o)
-{
- ((CPerlObj*)pPerl)->Perl_peep(o);
-}
#if defined(PERL_OBJECT)
#undef Perl_construct
@@ -3052,20 +2045,6 @@ Perl_get_cv(pTHXo_ const char* name, I32 create)
return ((CPerlObj*)pPerl)->Perl_get_cv(name, create);
}
-#undef Perl_init_i18nl10n
-int
-Perl_init_i18nl10n(pTHXo_ int printwarn)
-{
- return ((CPerlObj*)pPerl)->Perl_init_i18nl10n(printwarn);
-}
-
-#undef Perl_init_i18nl14n
-int
-Perl_init_i18nl14n(pTHXo_ int printwarn)
-{
- return ((CPerlObj*)pPerl)->Perl_init_i18nl14n(printwarn);
-}
-
#undef Perl_new_collate
void
Perl_new_collate(pTHXo_ const char* newcoll)
@@ -3115,41 +2094,6 @@ Perl_require_pv(pTHXo_ const char* pv)
((CPerlObj*)pPerl)->Perl_require_pv(pv);
}
-#undef Perl_pidgone
-void
-Perl_pidgone(pTHXo_ Pid_t pid, int status)
-{
- ((CPerlObj*)pPerl)->Perl_pidgone(pid, status);
-}
-
-#undef Perl_pmflag
-void
-Perl_pmflag(pTHXo_ U16* pmfl, int ch)
-{
- ((CPerlObj*)pPerl)->Perl_pmflag(pmfl, ch);
-}
-
-#undef Perl_pmruntime
-OP*
-Perl_pmruntime(pTHXo_ OP* pm, OP* expr, OP* repl)
-{
- return ((CPerlObj*)pPerl)->Perl_pmruntime(pm, expr, repl);
-}
-
-#undef Perl_pmtrans
-OP*
-Perl_pmtrans(pTHXo_ OP* o, OP* expr, OP* repl)
-{
- return ((CPerlObj*)pPerl)->Perl_pmtrans(o, expr, repl);
-}
-
-#undef Perl_pop_return
-OP*
-Perl_pop_return(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pop_return();
-}
-
#undef Perl_pop_scope
void
Perl_pop_scope(pTHXo)
@@ -3157,20 +2101,6 @@ Perl_pop_scope(pTHXo)
((CPerlObj*)pPerl)->Perl_pop_scope();
}
-#undef Perl_prepend_elem
-OP*
-Perl_prepend_elem(pTHXo_ I32 optype, OP* head, OP* tail)
-{
- return ((CPerlObj*)pPerl)->Perl_prepend_elem(optype, head, tail);
-}
-
-#undef Perl_push_return
-void
-Perl_push_return(pTHXo_ OP* o)
-{
- ((CPerlObj*)pPerl)->Perl_push_return(o);
-}
-
#undef Perl_push_scope
void
Perl_push_scope(pTHXo)
@@ -3178,20 +2108,6 @@ Perl_push_scope(pTHXo)
((CPerlObj*)pPerl)->Perl_push_scope();
}
-#undef Perl_ref
-OP*
-Perl_ref(pTHXo_ OP* o, I32 type)
-{
- return ((CPerlObj*)pPerl)->Perl_ref(o, type);
-}
-
-#undef Perl_refkids
-OP*
-Perl_refkids(pTHXo_ OP* o, I32 type)
-{
- return ((CPerlObj*)pPerl)->Perl_refkids(o, type);
-}
-
#undef Perl_regdump
void
Perl_regdump(pTHXo_ regexp* r)
@@ -3199,132 +2115,13 @@ Perl_regdump(pTHXo_ regexp* r)
((CPerlObj*)pPerl)->Perl_regdump(r);
}
-#undef Perl_pregexec
-I32
-Perl_pregexec(pTHXo_ regexp* prog, char* stringarg, char* strend, char* strbeg, I32 minend, SV* screamer, U32 nosave)
-{
- return ((CPerlObj*)pPerl)->Perl_pregexec(prog, stringarg, strend, strbeg, minend, screamer, nosave);
-}
-
-#undef Perl_pregfree
-void
-Perl_pregfree(pTHXo_ struct regexp* r)
-{
- ((CPerlObj*)pPerl)->Perl_pregfree(r);
-}
-
-#undef Perl_pregcomp
-regexp*
-Perl_pregcomp(pTHXo_ char* exp, char* xend, PMOP* pm)
-{
- return ((CPerlObj*)pPerl)->Perl_pregcomp(exp, xend, pm);
-}
-
-#undef Perl_re_intuit_start
-char*
-Perl_re_intuit_start(pTHXo_ regexp* prog, SV* sv, char* strpos, char* strend, U32 flags, struct re_scream_pos_data_s *data)
-{
- return ((CPerlObj*)pPerl)->Perl_re_intuit_start(prog, sv, strpos, strend, flags, data);
-}
-
-#undef Perl_re_intuit_string
-SV*
-Perl_re_intuit_string(pTHXo_ regexp* prog)
-{
- return ((CPerlObj*)pPerl)->Perl_re_intuit_string(prog);
-}
-
-#undef Perl_regexec_flags
-I32
-Perl_regexec_flags(pTHXo_ regexp* prog, char* stringarg, char* strend, char* strbeg, I32 minend, SV* screamer, void* data, U32 flags)
-{
- return ((CPerlObj*)pPerl)->Perl_regexec_flags(prog, stringarg, strend, strbeg, minend, screamer, data, flags);
-}
-
-#undef Perl_regnext
-regnode*
-Perl_regnext(pTHXo_ regnode* p)
-{
- return ((CPerlObj*)pPerl)->Perl_regnext(p);
-}
-
-#undef Perl_regprop
-void
-Perl_regprop(pTHXo_ SV* sv, regnode* o)
-{
- ((CPerlObj*)pPerl)->Perl_regprop(sv, o);
-}
-
-#undef Perl_repeatcpy
-void
-Perl_repeatcpy(pTHXo_ char* to, const char* from, I32 len, I32 count)
-{
- ((CPerlObj*)pPerl)->Perl_repeatcpy(to, from, len, count);
-}
-
#undef Perl_rninstr
char*
Perl_rninstr(pTHXo_ const char* big, const char* bigend, const char* little, const char* lend)
{
return ((CPerlObj*)pPerl)->Perl_rninstr(big, bigend, little, lend);
}
-
-#undef Perl_rsignal
-Sighandler_t
-Perl_rsignal(pTHXo_ int i, Sighandler_t t)
-{
- return ((CPerlObj*)pPerl)->Perl_rsignal(i, t);
-}
-
-#undef Perl_rsignal_restore
-int
-Perl_rsignal_restore(pTHXo_ int i, Sigsave_t* t)
-{
- return ((CPerlObj*)pPerl)->Perl_rsignal_restore(i, t);
-}
-
-#undef Perl_rsignal_save
-int
-Perl_rsignal_save(pTHXo_ int i, Sighandler_t t1, Sigsave_t* t2)
-{
- return ((CPerlObj*)pPerl)->Perl_rsignal_save(i, t1, t2);
-}
-
-#undef Perl_rsignal_state
-Sighandler_t
-Perl_rsignal_state(pTHXo_ int i)
-{
- return ((CPerlObj*)pPerl)->Perl_rsignal_state(i);
-}
-
-#undef Perl_rxres_free
-void
-Perl_rxres_free(pTHXo_ void** rsp)
-{
- ((CPerlObj*)pPerl)->Perl_rxres_free(rsp);
-}
-
-#undef Perl_rxres_restore
-void
-Perl_rxres_restore(pTHXo_ void** rsp, REGEXP* prx)
-{
- ((CPerlObj*)pPerl)->Perl_rxres_restore(rsp, prx);
-}
-
-#undef Perl_rxres_save
-void
-Perl_rxres_save(pTHXo_ void** rsp, REGEXP* prx)
-{
- ((CPerlObj*)pPerl)->Perl_rxres_save(rsp, prx);
-}
#if !defined(HAS_RENAME)
-
-#undef Perl_same_dirent
-I32
-Perl_same_dirent(pTHXo_ char* a, char* b)
-{
- return ((CPerlObj*)pPerl)->Perl_same_dirent(a, b);
-}
#endif
#undef Perl_savepv
@@ -3411,13 +2208,6 @@ Perl_save_freesv(pTHXo_ SV* sv)
((CPerlObj*)pPerl)->Perl_save_freesv(sv);
}
-#undef Perl_save_freeop
-void
-Perl_save_freeop(pTHXo_ OP* o)
-{
- ((CPerlObj*)pPerl)->Perl_save_freeop(o);
-}
-
#undef Perl_save_freepv
void
Perl_save_freepv(pTHXo_ char* pv)
@@ -3530,13 +2320,6 @@ Perl_save_nogv(pTHXo_ GV* gv)
((CPerlObj*)pPerl)->Perl_save_nogv(gv);
}
-#undef Perl_save_op
-void
-Perl_save_op(pTHXo)
-{
- ((CPerlObj*)pPerl)->Perl_save_op();
-}
-
#undef Perl_save_scalar
SV*
Perl_save_scalar(pTHXo_ GV* gv)
@@ -3585,122 +2368,9 @@ Perl_save_threadsv(pTHXo_ PADOFFSET i)
{
return ((CPerlObj*)pPerl)->Perl_save_threadsv(i);
}
-
-#undef Perl_sawparens
-OP*
-Perl_sawparens(pTHXo_ OP* o)
-{
- return ((CPerlObj*)pPerl)->Perl_sawparens(o);
-}
-
-#undef Perl_scalar
-OP*
-Perl_scalar(pTHXo_ OP* o)
-{
- return ((CPerlObj*)pPerl)->Perl_scalar(o);
-}
-
-#undef Perl_scalarkids
-OP*
-Perl_scalarkids(pTHXo_ OP* o)
-{
- return ((CPerlObj*)pPerl)->Perl_scalarkids(o);
-}
-
-#undef Perl_scalarseq
-OP*
-Perl_scalarseq(pTHXo_ OP* o)
-{
- return ((CPerlObj*)pPerl)->Perl_scalarseq(o);
-}
-
-#undef Perl_scalarvoid
-OP*
-Perl_scalarvoid(pTHXo_ OP* o)
-{
- return ((CPerlObj*)pPerl)->Perl_scalarvoid(o);
-}
-
-#undef Perl_scan_bin
-NV
-Perl_scan_bin(pTHXo_ char* start, I32 len, I32* retlen)
-{
- return ((CPerlObj*)pPerl)->Perl_scan_bin(start, len, retlen);
-}
-
-#undef Perl_scan_hex
-NV
-Perl_scan_hex(pTHXo_ char* start, I32 len, I32* retlen)
-{
- return ((CPerlObj*)pPerl)->Perl_scan_hex(start, len, retlen);
-}
-
-#undef Perl_scan_num
-char*
-Perl_scan_num(pTHXo_ char* s)
-{
- return ((CPerlObj*)pPerl)->Perl_scan_num(s);
-}
-
-#undef Perl_scan_oct
-NV
-Perl_scan_oct(pTHXo_ char* start, I32 len, I32* retlen)
-{
- return ((CPerlObj*)pPerl)->Perl_scan_oct(start, len, retlen);
-}
-
-#undef Perl_scope
-OP*
-Perl_scope(pTHXo_ OP* o)
-{
- return ((CPerlObj*)pPerl)->Perl_scope(o);
-}
-
-#undef Perl_screaminstr
-char*
-Perl_screaminstr(pTHXo_ SV* bigsv, SV* littlesv, I32 start_shift, I32 end_shift, I32 *state, I32 last)
-{
- return ((CPerlObj*)pPerl)->Perl_screaminstr(bigsv, littlesv, start_shift, end_shift, state, last);
-}
#if !defined(VMS)
-
-#undef Perl_setenv_getix
-I32
-Perl_setenv_getix(pTHXo_ char* nam)
-{
- return ((CPerlObj*)pPerl)->Perl_setenv_getix(nam);
-}
#endif
-#undef Perl_setdefout
-void
-Perl_setdefout(pTHXo_ GV* gv)
-{
- ((CPerlObj*)pPerl)->Perl_setdefout(gv);
-}
-
-#undef Perl_sharepvn
-char*
-Perl_sharepvn(pTHXo_ const char* sv, I32 len, U32 hash)
-{
- return ((CPerlObj*)pPerl)->Perl_sharepvn(sv, len, hash);
-}
-
-#undef Perl_share_hek
-HEK*
-Perl_share_hek(pTHXo_ const char* sv, I32 len, U32 hash)
-{
- return ((CPerlObj*)pPerl)->Perl_share_hek(sv, len, hash);
-}
-
-#undef Perl_sighandler
-Signal_t
-Perl_sighandler(int sig)
-{
- dTHXo;
- ((CPerlObj*)pPerl)->Perl_sighandler(sig);
-}
-
#undef Perl_stack_grow
SV**
Perl_stack_grow(pTHXo_ SV** sp, SV**p, int n)
@@ -3715,13 +2385,6 @@ Perl_start_subparse(pTHXo_ I32 is_format, U32 flags)
return ((CPerlObj*)pPerl)->Perl_start_subparse(is_format, flags);
}
-#undef Perl_sub_crush_depth
-void
-Perl_sub_crush_depth(pTHXo_ CV* cv)
-{
- ((CPerlObj*)pPerl)->Perl_sub_crush_depth(cv);
-}
-
#undef Perl_sv_2bool
bool
Perl_sv_2bool(pTHXo_ SV* sv)
@@ -3841,13 +2504,6 @@ Perl_sv_true(pTHXo_ SV *sv)
return ((CPerlObj*)pPerl)->Perl_sv_true(sv);
}
-#undef Perl_sv_add_arena
-void
-Perl_sv_add_arena(pTHXo_ char* ptr, U32 size, U32 flags)
-{
- ((CPerlObj*)pPerl)->Perl_sv_add_arena(ptr, size, flags);
-}
-
#undef Perl_sv_backoff
int
Perl_sv_backoff(pTHXo_ SV* sv)
@@ -3907,20 +2563,6 @@ Perl_sv_chop(pTHXo_ SV* sv, char* ptr)
((CPerlObj*)pPerl)->Perl_sv_chop(sv, ptr);
}
-#undef Perl_sv_clean_all
-void
-Perl_sv_clean_all(pTHXo)
-{
- ((CPerlObj*)pPerl)->Perl_sv_clean_all();
-}
-
-#undef Perl_sv_clean_objs
-void
-Perl_sv_clean_objs(pTHXo)
-{
- ((CPerlObj*)pPerl)->Perl_sv_clean_objs();
-}
-
#undef Perl_sv_clear
void
Perl_sv_clear(pTHXo_ SV* sv)
@@ -3951,13 +2593,6 @@ Perl_sv_collxfrm(pTHXo_ SV* sv, STRLEN* nxp)
}
#endif
-#undef Perl_sv_compile_2op
-OP*
-Perl_sv_compile_2op(pTHXo_ SV* sv, OP** startp, char* code, AV** avp)
-{
- return ((CPerlObj*)pPerl)->Perl_sv_compile_2op(sv, startp, code, avp);
-}
-
#undef Perl_sv_dec
void
Perl_sv_dec(pTHXo_ SV* sv)
@@ -3993,20 +2628,6 @@ Perl_sv_free(pTHXo_ SV* sv)
((CPerlObj*)pPerl)->Perl_sv_free(sv);
}
-#undef Perl_sv_free_arenas
-void
-Perl_sv_free_arenas(pTHXo)
-{
- ((CPerlObj*)pPerl)->Perl_sv_free_arenas();
-}
-
-#undef Perl_sv_gets
-char*
-Perl_sv_gets(pTHXo_ SV* sv, PerlIO* fp, I32 append)
-{
- return ((CPerlObj*)pPerl)->Perl_sv_gets(sv, fp, append);
-}
-
#undef Perl_sv_grow
char*
Perl_sv_grow(pTHXo_ SV* sv, STRLEN newlen)
@@ -4311,20 +2932,6 @@ Perl_sv_vsetpvfn(pTHXo_ SV* sv, const char* pat, STRLEN patlen, va_list* args, S
((CPerlObj*)pPerl)->Perl_sv_vsetpvfn(sv, pat, patlen, args, svargs, svmax, maybe_tainted);
}
-#undef Perl_swash_init
-SV*
-Perl_swash_init(pTHXo_ char* pkg, char* name, SV* listsv, I32 minbits, I32 none)
-{
- return ((CPerlObj*)pPerl)->Perl_swash_init(pkg, name, listsv, minbits, none);
-}
-
-#undef Perl_swash_fetch
-UV
-Perl_swash_fetch(pTHXo_ SV *sv, U8 *ptr)
-{
- return ((CPerlObj*)pPerl)->Perl_swash_fetch(sv, ptr);
-}
-
#undef Perl_taint_env
void
Perl_taint_env(pTHXo)
@@ -4369,36 +2976,8 @@ Perl_unlnk(pTHXo_ char* f)
}
#endif
#if defined(USE_THREADS)
-
-#undef Perl_unlock_condpair
-void
-Perl_unlock_condpair(pTHXo_ void* svv)
-{
- ((CPerlObj*)pPerl)->Perl_unlock_condpair(svv);
-}
#endif
-#undef Perl_unsharepvn
-void
-Perl_unsharepvn(pTHXo_ const char* sv, I32 len, U32 hash)
-{
- ((CPerlObj*)pPerl)->Perl_unsharepvn(sv, len, hash);
-}
-
-#undef Perl_unshare_hek
-void
-Perl_unshare_hek(pTHXo_ HEK* hek)
-{
- ((CPerlObj*)pPerl)->Perl_unshare_hek(hek);
-}
-
-#undef Perl_utilize
-void
-Perl_utilize(pTHXo_ int aver, I32 floor, OP* version, OP* id, OP* arg)
-{
- ((CPerlObj*)pPerl)->Perl_utilize(aver, floor, version, id, arg);
-}
-
#undef Perl_utf16_to_utf8
U8*
Perl_utf16_to_utf8(pTHXo_ U16* p, U8 *d, I32 bytelen)
@@ -4441,41 +3020,6 @@ Perl_uv_to_utf8(pTHXo_ U8 *d, UV uv)
return ((CPerlObj*)pPerl)->Perl_uv_to_utf8(d, uv);
}
-#undef Perl_vivify_defelem
-void
-Perl_vivify_defelem(pTHXo_ SV* sv)
-{
- ((CPerlObj*)pPerl)->Perl_vivify_defelem(sv);
-}
-
-#undef Perl_vivify_ref
-void
-Perl_vivify_ref(pTHXo_ SV* sv, U32 to_what)
-{
- ((CPerlObj*)pPerl)->Perl_vivify_ref(sv, to_what);
-}
-
-#undef Perl_wait4pid
-I32
-Perl_wait4pid(pTHXo_ Pid_t pid, int* statusp, int flags)
-{
- return ((CPerlObj*)pPerl)->Perl_wait4pid(pid, statusp, flags);
-}
-
-#undef Perl_report_closed_fh
-void
-Perl_report_closed_fh(pTHXo_ GV *gv, IO *io, const char *func, const char *obj)
-{
- ((CPerlObj*)pPerl)->Perl_report_closed_fh(gv, io, func, obj);
-}
-
-#undef Perl_report_uninit
-void
-Perl_report_uninit(pTHXo)
-{
- ((CPerlObj*)pPerl)->Perl_report_uninit();
-}
-
#undef Perl_warn
void
Perl_warn(pTHXo_ const char* pat, ...)
@@ -4509,58 +3053,9 @@ Perl_vwarner(pTHXo_ U32 err, const char* pat, va_list* args)
{
((CPerlObj*)pPerl)->Perl_vwarner(err, pat, args);
}
-
-#undef Perl_watch
-void
-Perl_watch(pTHXo_ char** addr)
-{
- ((CPerlObj*)pPerl)->Perl_watch(addr);
-}
-
-#undef Perl_whichsig
-I32
-Perl_whichsig(pTHXo_ char* sig)
-{
- return ((CPerlObj*)pPerl)->Perl_whichsig(sig);
-}
-
-#undef Perl_yyerror
-int
-Perl_yyerror(pTHXo_ char* s)
-{
- return ((CPerlObj*)pPerl)->Perl_yyerror(s);
-}
#if defined(USE_PURE_BISON)
-
-#undef Perl_yylex
-int
-Perl_yylex(pTHXo_ YYSTYPE *lvalp, int *lcharp)
-{
- return ((CPerlObj*)pPerl)->Perl_yylex(lvalp, lcharp);
-}
#else
-
-#undef Perl_yylex
-int
-Perl_yylex(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_yylex();
-}
#endif
-
-#undef Perl_yyparse
-int
-Perl_yyparse(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_yyparse();
-}
-
-#undef Perl_yywarn
-int
-Perl_yywarn(pTHXo_ char* s)
-{
- return ((CPerlObj*)pPerl)->Perl_yywarn(s);
-}
#if defined(MYMALLOC)
#undef Perl_dump_mstats
@@ -4778,13 +3273,6 @@ Perl_get_vtbl(pTHXo_ int vtbl_id)
return ((CPerlObj*)pPerl)->Perl_get_vtbl(vtbl_id);
}
-#undef Perl_pv_display
-char*
-Perl_pv_display(pTHXo_ SV *sv, char *pv, STRLEN cur, STRLEN len, STRLEN pvlim)
-{
- return ((CPerlObj*)pPerl)->Perl_pv_display(sv, pv, cur, len, pvlim);
-}
-
#undef Perl_dump_indent
void
Perl_dump_indent(pTHXo_ I32 level, PerlIO *file, const char* pat, ...)
@@ -4948,13 +3436,6 @@ Perl_sv_rvweaken(pTHXo_ SV *sv)
return ((CPerlObj*)pPerl)->Perl_sv_rvweaken(sv);
}
-#undef Perl_magic_killbackrefs
-int
-Perl_magic_killbackrefs(pTHXo_ SV *sv, MAGIC *mg)
-{
- return ((CPerlObj*)pPerl)->Perl_magic_killbackrefs(sv, mg);
-}
-
#undef Perl_newANONATTRSUB
OP*
Perl_newANONATTRSUB(pTHXo_ I32 floor, OP *proto, OP *attrs, OP *block)
@@ -4975,20 +3456,6 @@ Perl_newMYSUB(pTHXo_ I32 floor, OP *o, OP *proto, OP *attrs, OP *block)
{
((CPerlObj*)pPerl)->Perl_newMYSUB(floor, o, proto, attrs, block);
}
-
-#undef Perl_my_attrs
-OP *
-Perl_my_attrs(pTHXo_ OP *o, OP *attrs)
-{
- return ((CPerlObj*)pPerl)->Perl_my_attrs(o, attrs);
-}
-
-#undef Perl_boot_core_xsutils
-void
-Perl_boot_core_xsutils(pTHXo)
-{
- ((CPerlObj*)pPerl)->Perl_boot_core_xsutils();
-}
#if defined(USE_ITHREADS)
#undef Perl_cx_dup
@@ -5168,2687 +3635,6 @@ Perl_ptr_table_split(pTHXo_ PTR_TBL_t *tbl)
#if defined(PERL_OBJECT)
#endif
-#undef Perl_ck_anoncode
-OP *
-Perl_ck_anoncode(pTHXo_ OP *o)
-{
- return ((CPerlObj*)pPerl)->Perl_ck_anoncode(o);
-}
-
-#undef Perl_ck_bitop
-OP *
-Perl_ck_bitop(pTHXo_ OP *o)
-{
- return ((CPerlObj*)pPerl)->Perl_ck_bitop(o);
-}
-
-#undef Perl_ck_concat
-OP *
-Perl_ck_concat(pTHXo_ OP *o)
-{
- return ((CPerlObj*)pPerl)->Perl_ck_concat(o);
-}
-
-#undef Perl_ck_defined
-OP *
-Perl_ck_defined(pTHXo_ OP *o)
-{
- return ((CPerlObj*)pPerl)->Perl_ck_defined(o);
-}
-
-#undef Perl_ck_delete
-OP *
-Perl_ck_delete(pTHXo_ OP *o)
-{
- return ((CPerlObj*)pPerl)->Perl_ck_delete(o);
-}
-
-#undef Perl_ck_eof
-OP *
-Perl_ck_eof(pTHXo_ OP *o)
-{
- return ((CPerlObj*)pPerl)->Perl_ck_eof(o);
-}
-
-#undef Perl_ck_eval
-OP *
-Perl_ck_eval(pTHXo_ OP *o)
-{
- return ((CPerlObj*)pPerl)->Perl_ck_eval(o);
-}
-
-#undef Perl_ck_exec
-OP *
-Perl_ck_exec(pTHXo_ OP *o)
-{
- return ((CPerlObj*)pPerl)->Perl_ck_exec(o);
-}
-
-#undef Perl_ck_exists
-OP *
-Perl_ck_exists(pTHXo_ OP *o)
-{
- return ((CPerlObj*)pPerl)->Perl_ck_exists(o);
-}
-
-#undef Perl_ck_ftst
-OP *
-Perl_ck_ftst(pTHXo_ OP *o)
-{
- return ((CPerlObj*)pPerl)->Perl_ck_ftst(o);
-}
-
-#undef Perl_ck_fun
-OP *
-Perl_ck_fun(pTHXo_ OP *o)
-{
- return ((CPerlObj*)pPerl)->Perl_ck_fun(o);
-}
-
-#undef Perl_ck_fun_locale
-OP *
-Perl_ck_fun_locale(pTHXo_ OP *o)
-{
- return ((CPerlObj*)pPerl)->Perl_ck_fun_locale(o);
-}
-
-#undef Perl_ck_glob
-OP *
-Perl_ck_glob(pTHXo_ OP *o)
-{
- return ((CPerlObj*)pPerl)->Perl_ck_glob(o);
-}
-
-#undef Perl_ck_grep
-OP *
-Perl_ck_grep(pTHXo_ OP *o)
-{
- return ((CPerlObj*)pPerl)->Perl_ck_grep(o);
-}
-
-#undef Perl_ck_index
-OP *
-Perl_ck_index(pTHXo_ OP *o)
-{
- return ((CPerlObj*)pPerl)->Perl_ck_index(o);
-}
-
-#undef Perl_ck_join
-OP *
-Perl_ck_join(pTHXo_ OP *o)
-{
- return ((CPerlObj*)pPerl)->Perl_ck_join(o);
-}
-
-#undef Perl_ck_lengthconst
-OP *
-Perl_ck_lengthconst(pTHXo_ OP *o)
-{
- return ((CPerlObj*)pPerl)->Perl_ck_lengthconst(o);
-}
-
-#undef Perl_ck_lfun
-OP *
-Perl_ck_lfun(pTHXo_ OP *o)
-{
- return ((CPerlObj*)pPerl)->Perl_ck_lfun(o);
-}
-
-#undef Perl_ck_listiob
-OP *
-Perl_ck_listiob(pTHXo_ OP *o)
-{
- return ((CPerlObj*)pPerl)->Perl_ck_listiob(o);
-}
-
-#undef Perl_ck_match
-OP *
-Perl_ck_match(pTHXo_ OP *o)
-{
- return ((CPerlObj*)pPerl)->Perl_ck_match(o);
-}
-
-#undef Perl_ck_method
-OP *
-Perl_ck_method(pTHXo_ OP *o)
-{
- return ((CPerlObj*)pPerl)->Perl_ck_method(o);
-}
-
-#undef Perl_ck_null
-OP *
-Perl_ck_null(pTHXo_ OP *o)
-{
- return ((CPerlObj*)pPerl)->Perl_ck_null(o);
-}
-
-#undef Perl_ck_repeat
-OP *
-Perl_ck_repeat(pTHXo_ OP *o)
-{
- return ((CPerlObj*)pPerl)->Perl_ck_repeat(o);
-}
-
-#undef Perl_ck_require
-OP *
-Perl_ck_require(pTHXo_ OP *o)
-{
- return ((CPerlObj*)pPerl)->Perl_ck_require(o);
-}
-
-#undef Perl_ck_rfun
-OP *
-Perl_ck_rfun(pTHXo_ OP *o)
-{
- return ((CPerlObj*)pPerl)->Perl_ck_rfun(o);
-}
-
-#undef Perl_ck_rvconst
-OP *
-Perl_ck_rvconst(pTHXo_ OP *o)
-{
- return ((CPerlObj*)pPerl)->Perl_ck_rvconst(o);
-}
-
-#undef Perl_ck_sassign
-OP *
-Perl_ck_sassign(pTHXo_ OP *o)
-{
- return ((CPerlObj*)pPerl)->Perl_ck_sassign(o);
-}
-
-#undef Perl_ck_scmp
-OP *
-Perl_ck_scmp(pTHXo_ OP *o)
-{
- return ((CPerlObj*)pPerl)->Perl_ck_scmp(o);
-}
-
-#undef Perl_ck_select
-OP *
-Perl_ck_select(pTHXo_ OP *o)
-{
- return ((CPerlObj*)pPerl)->Perl_ck_select(o);
-}
-
-#undef Perl_ck_shift
-OP *
-Perl_ck_shift(pTHXo_ OP *o)
-{
- return ((CPerlObj*)pPerl)->Perl_ck_shift(o);
-}
-
-#undef Perl_ck_sort
-OP *
-Perl_ck_sort(pTHXo_ OP *o)
-{
- return ((CPerlObj*)pPerl)->Perl_ck_sort(o);
-}
-
-#undef Perl_ck_spair
-OP *
-Perl_ck_spair(pTHXo_ OP *o)
-{
- return ((CPerlObj*)pPerl)->Perl_ck_spair(o);
-}
-
-#undef Perl_ck_split
-OP *
-Perl_ck_split(pTHXo_ OP *o)
-{
- return ((CPerlObj*)pPerl)->Perl_ck_split(o);
-}
-
-#undef Perl_ck_subr
-OP *
-Perl_ck_subr(pTHXo_ OP *o)
-{
- return ((CPerlObj*)pPerl)->Perl_ck_subr(o);
-}
-
-#undef Perl_ck_svconst
-OP *
-Perl_ck_svconst(pTHXo_ OP *o)
-{
- return ((CPerlObj*)pPerl)->Perl_ck_svconst(o);
-}
-
-#undef Perl_ck_trunc
-OP *
-Perl_ck_trunc(pTHXo_ OP *o)
-{
- return ((CPerlObj*)pPerl)->Perl_ck_trunc(o);
-}
-
-#undef Perl_pp_aassign
-OP *
-Perl_pp_aassign(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_aassign();
-}
-
-#undef Perl_pp_abs
-OP *
-Perl_pp_abs(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_abs();
-}
-
-#undef Perl_pp_accept
-OP *
-Perl_pp_accept(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_accept();
-}
-
-#undef Perl_pp_add
-OP *
-Perl_pp_add(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_add();
-}
-
-#undef Perl_pp_aelem
-OP *
-Perl_pp_aelem(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_aelem();
-}
-
-#undef Perl_pp_aelemfast
-OP *
-Perl_pp_aelemfast(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_aelemfast();
-}
-
-#undef Perl_pp_alarm
-OP *
-Perl_pp_alarm(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_alarm();
-}
-
-#undef Perl_pp_and
-OP *
-Perl_pp_and(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_and();
-}
-
-#undef Perl_pp_andassign
-OP *
-Perl_pp_andassign(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_andassign();
-}
-
-#undef Perl_pp_anoncode
-OP *
-Perl_pp_anoncode(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_anoncode();
-}
-
-#undef Perl_pp_anonhash
-OP *
-Perl_pp_anonhash(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_anonhash();
-}
-
-#undef Perl_pp_anonlist
-OP *
-Perl_pp_anonlist(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_anonlist();
-}
-
-#undef Perl_pp_aslice
-OP *
-Perl_pp_aslice(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_aslice();
-}
-
-#undef Perl_pp_atan2
-OP *
-Perl_pp_atan2(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_atan2();
-}
-
-#undef Perl_pp_av2arylen
-OP *
-Perl_pp_av2arylen(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_av2arylen();
-}
-
-#undef Perl_pp_backtick
-OP *
-Perl_pp_backtick(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_backtick();
-}
-
-#undef Perl_pp_bind
-OP *
-Perl_pp_bind(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_bind();
-}
-
-#undef Perl_pp_binmode
-OP *
-Perl_pp_binmode(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_binmode();
-}
-
-#undef Perl_pp_bit_and
-OP *
-Perl_pp_bit_and(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_bit_and();
-}
-
-#undef Perl_pp_bit_or
-OP *
-Perl_pp_bit_or(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_bit_or();
-}
-
-#undef Perl_pp_bit_xor
-OP *
-Perl_pp_bit_xor(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_bit_xor();
-}
-
-#undef Perl_pp_bless
-OP *
-Perl_pp_bless(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_bless();
-}
-
-#undef Perl_pp_caller
-OP *
-Perl_pp_caller(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_caller();
-}
-
-#undef Perl_pp_chdir
-OP *
-Perl_pp_chdir(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_chdir();
-}
-
-#undef Perl_pp_chmod
-OP *
-Perl_pp_chmod(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_chmod();
-}
-
-#undef Perl_pp_chomp
-OP *
-Perl_pp_chomp(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_chomp();
-}
-
-#undef Perl_pp_chop
-OP *
-Perl_pp_chop(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_chop();
-}
-
-#undef Perl_pp_chown
-OP *
-Perl_pp_chown(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_chown();
-}
-
-#undef Perl_pp_chr
-OP *
-Perl_pp_chr(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_chr();
-}
-
-#undef Perl_pp_chroot
-OP *
-Perl_pp_chroot(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_chroot();
-}
-
-#undef Perl_pp_close
-OP *
-Perl_pp_close(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_close();
-}
-
-#undef Perl_pp_closedir
-OP *
-Perl_pp_closedir(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_closedir();
-}
-
-#undef Perl_pp_complement
-OP *
-Perl_pp_complement(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_complement();
-}
-
-#undef Perl_pp_concat
-OP *
-Perl_pp_concat(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_concat();
-}
-
-#undef Perl_pp_cond_expr
-OP *
-Perl_pp_cond_expr(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_cond_expr();
-}
-
-#undef Perl_pp_connect
-OP *
-Perl_pp_connect(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_connect();
-}
-
-#undef Perl_pp_const
-OP *
-Perl_pp_const(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_const();
-}
-
-#undef Perl_pp_cos
-OP *
-Perl_pp_cos(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_cos();
-}
-
-#undef Perl_pp_crypt
-OP *
-Perl_pp_crypt(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_crypt();
-}
-
-#undef Perl_pp_dbmclose
-OP *
-Perl_pp_dbmclose(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_dbmclose();
-}
-
-#undef Perl_pp_dbmopen
-OP *
-Perl_pp_dbmopen(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_dbmopen();
-}
-
-#undef Perl_pp_dbstate
-OP *
-Perl_pp_dbstate(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_dbstate();
-}
-
-#undef Perl_pp_defined
-OP *
-Perl_pp_defined(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_defined();
-}
-
-#undef Perl_pp_delete
-OP *
-Perl_pp_delete(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_delete();
-}
-
-#undef Perl_pp_die
-OP *
-Perl_pp_die(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_die();
-}
-
-#undef Perl_pp_divide
-OP *
-Perl_pp_divide(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_divide();
-}
-
-#undef Perl_pp_dofile
-OP *
-Perl_pp_dofile(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_dofile();
-}
-
-#undef Perl_pp_dump
-OP *
-Perl_pp_dump(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_dump();
-}
-
-#undef Perl_pp_each
-OP *
-Perl_pp_each(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_each();
-}
-
-#undef Perl_pp_egrent
-OP *
-Perl_pp_egrent(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_egrent();
-}
-
-#undef Perl_pp_ehostent
-OP *
-Perl_pp_ehostent(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_ehostent();
-}
-
-#undef Perl_pp_enetent
-OP *
-Perl_pp_enetent(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_enetent();
-}
-
-#undef Perl_pp_enter
-OP *
-Perl_pp_enter(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_enter();
-}
-
-#undef Perl_pp_entereval
-OP *
-Perl_pp_entereval(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_entereval();
-}
-
-#undef Perl_pp_enteriter
-OP *
-Perl_pp_enteriter(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_enteriter();
-}
-
-#undef Perl_pp_enterloop
-OP *
-Perl_pp_enterloop(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_enterloop();
-}
-
-#undef Perl_pp_entersub
-OP *
-Perl_pp_entersub(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_entersub();
-}
-
-#undef Perl_pp_entertry
-OP *
-Perl_pp_entertry(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_entertry();
-}
-
-#undef Perl_pp_enterwrite
-OP *
-Perl_pp_enterwrite(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_enterwrite();
-}
-
-#undef Perl_pp_eof
-OP *
-Perl_pp_eof(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_eof();
-}
-
-#undef Perl_pp_eprotoent
-OP *
-Perl_pp_eprotoent(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_eprotoent();
-}
-
-#undef Perl_pp_epwent
-OP *
-Perl_pp_epwent(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_epwent();
-}
-
-#undef Perl_pp_eq
-OP *
-Perl_pp_eq(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_eq();
-}
-
-#undef Perl_pp_eservent
-OP *
-Perl_pp_eservent(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_eservent();
-}
-
-#undef Perl_pp_exec
-OP *
-Perl_pp_exec(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_exec();
-}
-
-#undef Perl_pp_exists
-OP *
-Perl_pp_exists(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_exists();
-}
-
-#undef Perl_pp_exit
-OP *
-Perl_pp_exit(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_exit();
-}
-
-#undef Perl_pp_exp
-OP *
-Perl_pp_exp(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_exp();
-}
-
-#undef Perl_pp_fcntl
-OP *
-Perl_pp_fcntl(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_fcntl();
-}
-
-#undef Perl_pp_fileno
-OP *
-Perl_pp_fileno(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_fileno();
-}
-
-#undef Perl_pp_flip
-OP *
-Perl_pp_flip(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_flip();
-}
-
-#undef Perl_pp_flock
-OP *
-Perl_pp_flock(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_flock();
-}
-
-#undef Perl_pp_flop
-OP *
-Perl_pp_flop(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_flop();
-}
-
-#undef Perl_pp_fork
-OP *
-Perl_pp_fork(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_fork();
-}
-
-#undef Perl_pp_formline
-OP *
-Perl_pp_formline(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_formline();
-}
-
-#undef Perl_pp_ftatime
-OP *
-Perl_pp_ftatime(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_ftatime();
-}
-
-#undef Perl_pp_ftbinary
-OP *
-Perl_pp_ftbinary(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_ftbinary();
-}
-
-#undef Perl_pp_ftblk
-OP *
-Perl_pp_ftblk(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_ftblk();
-}
-
-#undef Perl_pp_ftchr
-OP *
-Perl_pp_ftchr(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_ftchr();
-}
-
-#undef Perl_pp_ftctime
-OP *
-Perl_pp_ftctime(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_ftctime();
-}
-
-#undef Perl_pp_ftdir
-OP *
-Perl_pp_ftdir(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_ftdir();
-}
-
-#undef Perl_pp_fteexec
-OP *
-Perl_pp_fteexec(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_fteexec();
-}
-
-#undef Perl_pp_fteowned
-OP *
-Perl_pp_fteowned(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_fteowned();
-}
-
-#undef Perl_pp_fteread
-OP *
-Perl_pp_fteread(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_fteread();
-}
-
-#undef Perl_pp_ftewrite
-OP *
-Perl_pp_ftewrite(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_ftewrite();
-}
-
-#undef Perl_pp_ftfile
-OP *
-Perl_pp_ftfile(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_ftfile();
-}
-
-#undef Perl_pp_ftis
-OP *
-Perl_pp_ftis(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_ftis();
-}
-
-#undef Perl_pp_ftlink
-OP *
-Perl_pp_ftlink(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_ftlink();
-}
-
-#undef Perl_pp_ftmtime
-OP *
-Perl_pp_ftmtime(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_ftmtime();
-}
-
-#undef Perl_pp_ftpipe
-OP *
-Perl_pp_ftpipe(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_ftpipe();
-}
-
-#undef Perl_pp_ftrexec
-OP *
-Perl_pp_ftrexec(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_ftrexec();
-}
-
-#undef Perl_pp_ftrowned
-OP *
-Perl_pp_ftrowned(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_ftrowned();
-}
-
-#undef Perl_pp_ftrread
-OP *
-Perl_pp_ftrread(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_ftrread();
-}
-
-#undef Perl_pp_ftrwrite
-OP *
-Perl_pp_ftrwrite(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_ftrwrite();
-}
-
-#undef Perl_pp_ftsgid
-OP *
-Perl_pp_ftsgid(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_ftsgid();
-}
-
-#undef Perl_pp_ftsize
-OP *
-Perl_pp_ftsize(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_ftsize();
-}
-
-#undef Perl_pp_ftsock
-OP *
-Perl_pp_ftsock(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_ftsock();
-}
-
-#undef Perl_pp_ftsuid
-OP *
-Perl_pp_ftsuid(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_ftsuid();
-}
-
-#undef Perl_pp_ftsvtx
-OP *
-Perl_pp_ftsvtx(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_ftsvtx();
-}
-
-#undef Perl_pp_fttext
-OP *
-Perl_pp_fttext(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_fttext();
-}
-
-#undef Perl_pp_fttty
-OP *
-Perl_pp_fttty(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_fttty();
-}
-
-#undef Perl_pp_ftzero
-OP *
-Perl_pp_ftzero(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_ftzero();
-}
-
-#undef Perl_pp_ge
-OP *
-Perl_pp_ge(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_ge();
-}
-
-#undef Perl_pp_gelem
-OP *
-Perl_pp_gelem(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_gelem();
-}
-
-#undef Perl_pp_getc
-OP *
-Perl_pp_getc(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_getc();
-}
-
-#undef Perl_pp_getlogin
-OP *
-Perl_pp_getlogin(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_getlogin();
-}
-
-#undef Perl_pp_getpeername
-OP *
-Perl_pp_getpeername(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_getpeername();
-}
-
-#undef Perl_pp_getpgrp
-OP *
-Perl_pp_getpgrp(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_getpgrp();
-}
-
-#undef Perl_pp_getppid
-OP *
-Perl_pp_getppid(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_getppid();
-}
-
-#undef Perl_pp_getpriority
-OP *
-Perl_pp_getpriority(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_getpriority();
-}
-
-#undef Perl_pp_getsockname
-OP *
-Perl_pp_getsockname(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_getsockname();
-}
-
-#undef Perl_pp_ggrent
-OP *
-Perl_pp_ggrent(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_ggrent();
-}
-
-#undef Perl_pp_ggrgid
-OP *
-Perl_pp_ggrgid(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_ggrgid();
-}
-
-#undef Perl_pp_ggrnam
-OP *
-Perl_pp_ggrnam(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_ggrnam();
-}
-
-#undef Perl_pp_ghbyaddr
-OP *
-Perl_pp_ghbyaddr(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_ghbyaddr();
-}
-
-#undef Perl_pp_ghbyname
-OP *
-Perl_pp_ghbyname(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_ghbyname();
-}
-
-#undef Perl_pp_ghostent
-OP *
-Perl_pp_ghostent(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_ghostent();
-}
-
-#undef Perl_pp_glob
-OP *
-Perl_pp_glob(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_glob();
-}
-
-#undef Perl_pp_gmtime
-OP *
-Perl_pp_gmtime(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_gmtime();
-}
-
-#undef Perl_pp_gnbyaddr
-OP *
-Perl_pp_gnbyaddr(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_gnbyaddr();
-}
-
-#undef Perl_pp_gnbyname
-OP *
-Perl_pp_gnbyname(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_gnbyname();
-}
-
-#undef Perl_pp_gnetent
-OP *
-Perl_pp_gnetent(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_gnetent();
-}
-
-#undef Perl_pp_goto
-OP *
-Perl_pp_goto(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_goto();
-}
-
-#undef Perl_pp_gpbyname
-OP *
-Perl_pp_gpbyname(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_gpbyname();
-}
-
-#undef Perl_pp_gpbynumber
-OP *
-Perl_pp_gpbynumber(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_gpbynumber();
-}
-
-#undef Perl_pp_gprotoent
-OP *
-Perl_pp_gprotoent(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_gprotoent();
-}
-
-#undef Perl_pp_gpwent
-OP *
-Perl_pp_gpwent(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_gpwent();
-}
-
-#undef Perl_pp_gpwnam
-OP *
-Perl_pp_gpwnam(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_gpwnam();
-}
-
-#undef Perl_pp_gpwuid
-OP *
-Perl_pp_gpwuid(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_gpwuid();
-}
-
-#undef Perl_pp_grepstart
-OP *
-Perl_pp_grepstart(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_grepstart();
-}
-
-#undef Perl_pp_grepwhile
-OP *
-Perl_pp_grepwhile(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_grepwhile();
-}
-
-#undef Perl_pp_gsbyname
-OP *
-Perl_pp_gsbyname(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_gsbyname();
-}
-
-#undef Perl_pp_gsbyport
-OP *
-Perl_pp_gsbyport(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_gsbyport();
-}
-
-#undef Perl_pp_gservent
-OP *
-Perl_pp_gservent(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_gservent();
-}
-
-#undef Perl_pp_gsockopt
-OP *
-Perl_pp_gsockopt(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_gsockopt();
-}
-
-#undef Perl_pp_gt
-OP *
-Perl_pp_gt(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_gt();
-}
-
-#undef Perl_pp_gv
-OP *
-Perl_pp_gv(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_gv();
-}
-
-#undef Perl_pp_gvsv
-OP *
-Perl_pp_gvsv(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_gvsv();
-}
-
-#undef Perl_pp_helem
-OP *
-Perl_pp_helem(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_helem();
-}
-
-#undef Perl_pp_hex
-OP *
-Perl_pp_hex(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_hex();
-}
-
-#undef Perl_pp_hslice
-OP *
-Perl_pp_hslice(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_hslice();
-}
-
-#undef Perl_pp_i_add
-OP *
-Perl_pp_i_add(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_i_add();
-}
-
-#undef Perl_pp_i_divide
-OP *
-Perl_pp_i_divide(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_i_divide();
-}
-
-#undef Perl_pp_i_eq
-OP *
-Perl_pp_i_eq(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_i_eq();
-}
-
-#undef Perl_pp_i_ge
-OP *
-Perl_pp_i_ge(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_i_ge();
-}
-
-#undef Perl_pp_i_gt
-OP *
-Perl_pp_i_gt(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_i_gt();
-}
-
-#undef Perl_pp_i_le
-OP *
-Perl_pp_i_le(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_i_le();
-}
-
-#undef Perl_pp_i_lt
-OP *
-Perl_pp_i_lt(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_i_lt();
-}
-
-#undef Perl_pp_i_modulo
-OP *
-Perl_pp_i_modulo(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_i_modulo();
-}
-
-#undef Perl_pp_i_multiply
-OP *
-Perl_pp_i_multiply(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_i_multiply();
-}
-
-#undef Perl_pp_i_ncmp
-OP *
-Perl_pp_i_ncmp(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_i_ncmp();
-}
-
-#undef Perl_pp_i_ne
-OP *
-Perl_pp_i_ne(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_i_ne();
-}
-
-#undef Perl_pp_i_negate
-OP *
-Perl_pp_i_negate(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_i_negate();
-}
-
-#undef Perl_pp_i_subtract
-OP *
-Perl_pp_i_subtract(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_i_subtract();
-}
-
-#undef Perl_pp_index
-OP *
-Perl_pp_index(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_index();
-}
-
-#undef Perl_pp_int
-OP *
-Perl_pp_int(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_int();
-}
-
-#undef Perl_pp_ioctl
-OP *
-Perl_pp_ioctl(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_ioctl();
-}
-
-#undef Perl_pp_iter
-OP *
-Perl_pp_iter(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_iter();
-}
-
-#undef Perl_pp_join
-OP *
-Perl_pp_join(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_join();
-}
-
-#undef Perl_pp_keys
-OP *
-Perl_pp_keys(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_keys();
-}
-
-#undef Perl_pp_kill
-OP *
-Perl_pp_kill(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_kill();
-}
-
-#undef Perl_pp_last
-OP *
-Perl_pp_last(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_last();
-}
-
-#undef Perl_pp_lc
-OP *
-Perl_pp_lc(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_lc();
-}
-
-#undef Perl_pp_lcfirst
-OP *
-Perl_pp_lcfirst(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_lcfirst();
-}
-
-#undef Perl_pp_le
-OP *
-Perl_pp_le(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_le();
-}
-
-#undef Perl_pp_leave
-OP *
-Perl_pp_leave(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_leave();
-}
-
-#undef Perl_pp_leaveeval
-OP *
-Perl_pp_leaveeval(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_leaveeval();
-}
-
-#undef Perl_pp_leaveloop
-OP *
-Perl_pp_leaveloop(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_leaveloop();
-}
-
-#undef Perl_pp_leavesub
-OP *
-Perl_pp_leavesub(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_leavesub();
-}
-
-#undef Perl_pp_leavesublv
-OP *
-Perl_pp_leavesublv(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_leavesublv();
-}
-
-#undef Perl_pp_leavetry
-OP *
-Perl_pp_leavetry(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_leavetry();
-}
-
-#undef Perl_pp_leavewrite
-OP *
-Perl_pp_leavewrite(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_leavewrite();
-}
-
-#undef Perl_pp_left_shift
-OP *
-Perl_pp_left_shift(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_left_shift();
-}
-
-#undef Perl_pp_length
-OP *
-Perl_pp_length(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_length();
-}
-
-#undef Perl_pp_lineseq
-OP *
-Perl_pp_lineseq(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_lineseq();
-}
-
-#undef Perl_pp_link
-OP *
-Perl_pp_link(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_link();
-}
-
-#undef Perl_pp_list
-OP *
-Perl_pp_list(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_list();
-}
-
-#undef Perl_pp_listen
-OP *
-Perl_pp_listen(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_listen();
-}
-
-#undef Perl_pp_localtime
-OP *
-Perl_pp_localtime(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_localtime();
-}
-
-#undef Perl_pp_lock
-OP *
-Perl_pp_lock(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_lock();
-}
-
-#undef Perl_pp_log
-OP *
-Perl_pp_log(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_log();
-}
-
-#undef Perl_pp_lslice
-OP *
-Perl_pp_lslice(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_lslice();
-}
-
-#undef Perl_pp_lstat
-OP *
-Perl_pp_lstat(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_lstat();
-}
-
-#undef Perl_pp_lt
-OP *
-Perl_pp_lt(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_lt();
-}
-
-#undef Perl_pp_mapstart
-OP *
-Perl_pp_mapstart(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_mapstart();
-}
-
-#undef Perl_pp_mapwhile
-OP *
-Perl_pp_mapwhile(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_mapwhile();
-}
-
-#undef Perl_pp_match
-OP *
-Perl_pp_match(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_match();
-}
-
-#undef Perl_pp_method
-OP *
-Perl_pp_method(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_method();
-}
-
-#undef Perl_pp_method_named
-OP *
-Perl_pp_method_named(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_method_named();
-}
-
-#undef Perl_pp_mkdir
-OP *
-Perl_pp_mkdir(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_mkdir();
-}
-
-#undef Perl_pp_modulo
-OP *
-Perl_pp_modulo(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_modulo();
-}
-
-#undef Perl_pp_msgctl
-OP *
-Perl_pp_msgctl(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_msgctl();
-}
-
-#undef Perl_pp_msgget
-OP *
-Perl_pp_msgget(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_msgget();
-}
-
-#undef Perl_pp_msgrcv
-OP *
-Perl_pp_msgrcv(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_msgrcv();
-}
-
-#undef Perl_pp_msgsnd
-OP *
-Perl_pp_msgsnd(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_msgsnd();
-}
-
-#undef Perl_pp_multiply
-OP *
-Perl_pp_multiply(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_multiply();
-}
-
-#undef Perl_pp_ncmp
-OP *
-Perl_pp_ncmp(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_ncmp();
-}
-
-#undef Perl_pp_ne
-OP *
-Perl_pp_ne(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_ne();
-}
-
-#undef Perl_pp_negate
-OP *
-Perl_pp_negate(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_negate();
-}
-
-#undef Perl_pp_next
-OP *
-Perl_pp_next(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_next();
-}
-
-#undef Perl_pp_nextstate
-OP *
-Perl_pp_nextstate(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_nextstate();
-}
-
-#undef Perl_pp_not
-OP *
-Perl_pp_not(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_not();
-}
-
-#undef Perl_pp_null
-OP *
-Perl_pp_null(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_null();
-}
-
-#undef Perl_pp_oct
-OP *
-Perl_pp_oct(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_oct();
-}
-
-#undef Perl_pp_open
-OP *
-Perl_pp_open(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_open();
-}
-
-#undef Perl_pp_open_dir
-OP *
-Perl_pp_open_dir(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_open_dir();
-}
-
-#undef Perl_pp_or
-OP *
-Perl_pp_or(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_or();
-}
-
-#undef Perl_pp_orassign
-OP *
-Perl_pp_orassign(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_orassign();
-}
-
-#undef Perl_pp_ord
-OP *
-Perl_pp_ord(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_ord();
-}
-
-#undef Perl_pp_pack
-OP *
-Perl_pp_pack(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_pack();
-}
-
-#undef Perl_pp_padany
-OP *
-Perl_pp_padany(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_padany();
-}
-
-#undef Perl_pp_padav
-OP *
-Perl_pp_padav(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_padav();
-}
-
-#undef Perl_pp_padhv
-OP *
-Perl_pp_padhv(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_padhv();
-}
-
-#undef Perl_pp_padsv
-OP *
-Perl_pp_padsv(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_padsv();
-}
-
-#undef Perl_pp_pipe_op
-OP *
-Perl_pp_pipe_op(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_pipe_op();
-}
-
-#undef Perl_pp_pop
-OP *
-Perl_pp_pop(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_pop();
-}
-
-#undef Perl_pp_pos
-OP *
-Perl_pp_pos(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_pos();
-}
-
-#undef Perl_pp_postdec
-OP *
-Perl_pp_postdec(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_postdec();
-}
-
-#undef Perl_pp_postinc
-OP *
-Perl_pp_postinc(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_postinc();
-}
-
-#undef Perl_pp_pow
-OP *
-Perl_pp_pow(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_pow();
-}
-
-#undef Perl_pp_predec
-OP *
-Perl_pp_predec(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_predec();
-}
-
-#undef Perl_pp_preinc
-OP *
-Perl_pp_preinc(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_preinc();
-}
-
-#undef Perl_pp_print
-OP *
-Perl_pp_print(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_print();
-}
-
-#undef Perl_pp_prototype
-OP *
-Perl_pp_prototype(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_prototype();
-}
-
-#undef Perl_pp_prtf
-OP *
-Perl_pp_prtf(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_prtf();
-}
-
-#undef Perl_pp_push
-OP *
-Perl_pp_push(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_push();
-}
-
-#undef Perl_pp_pushmark
-OP *
-Perl_pp_pushmark(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_pushmark();
-}
-
-#undef Perl_pp_pushre
-OP *
-Perl_pp_pushre(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_pushre();
-}
-
-#undef Perl_pp_qr
-OP *
-Perl_pp_qr(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_qr();
-}
-
-#undef Perl_pp_quotemeta
-OP *
-Perl_pp_quotemeta(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_quotemeta();
-}
-
-#undef Perl_pp_rand
-OP *
-Perl_pp_rand(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_rand();
-}
-
-#undef Perl_pp_range
-OP *
-Perl_pp_range(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_range();
-}
-
-#undef Perl_pp_rcatline
-OP *
-Perl_pp_rcatline(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_rcatline();
-}
-
-#undef Perl_pp_read
-OP *
-Perl_pp_read(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_read();
-}
-
-#undef Perl_pp_readdir
-OP *
-Perl_pp_readdir(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_readdir();
-}
-
-#undef Perl_pp_readline
-OP *
-Perl_pp_readline(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_readline();
-}
-
-#undef Perl_pp_readlink
-OP *
-Perl_pp_readlink(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_readlink();
-}
-
-#undef Perl_pp_recv
-OP *
-Perl_pp_recv(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_recv();
-}
-
-#undef Perl_pp_redo
-OP *
-Perl_pp_redo(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_redo();
-}
-
-#undef Perl_pp_ref
-OP *
-Perl_pp_ref(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_ref();
-}
-
-#undef Perl_pp_refgen
-OP *
-Perl_pp_refgen(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_refgen();
-}
-
-#undef Perl_pp_regcmaybe
-OP *
-Perl_pp_regcmaybe(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_regcmaybe();
-}
-
-#undef Perl_pp_regcomp
-OP *
-Perl_pp_regcomp(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_regcomp();
-}
-
-#undef Perl_pp_regcreset
-OP *
-Perl_pp_regcreset(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_regcreset();
-}
-
-#undef Perl_pp_rename
-OP *
-Perl_pp_rename(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_rename();
-}
-
-#undef Perl_pp_repeat
-OP *
-Perl_pp_repeat(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_repeat();
-}
-
-#undef Perl_pp_require
-OP *
-Perl_pp_require(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_require();
-}
-
-#undef Perl_pp_reset
-OP *
-Perl_pp_reset(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_reset();
-}
-
-#undef Perl_pp_return
-OP *
-Perl_pp_return(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_return();
-}
-
-#undef Perl_pp_reverse
-OP *
-Perl_pp_reverse(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_reverse();
-}
-
-#undef Perl_pp_rewinddir
-OP *
-Perl_pp_rewinddir(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_rewinddir();
-}
-
-#undef Perl_pp_right_shift
-OP *
-Perl_pp_right_shift(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_right_shift();
-}
-
-#undef Perl_pp_rindex
-OP *
-Perl_pp_rindex(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_rindex();
-}
-
-#undef Perl_pp_rmdir
-OP *
-Perl_pp_rmdir(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_rmdir();
-}
-
-#undef Perl_pp_rv2av
-OP *
-Perl_pp_rv2av(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_rv2av();
-}
-
-#undef Perl_pp_rv2cv
-OP *
-Perl_pp_rv2cv(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_rv2cv();
-}
-
-#undef Perl_pp_rv2gv
-OP *
-Perl_pp_rv2gv(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_rv2gv();
-}
-
-#undef Perl_pp_rv2hv
-OP *
-Perl_pp_rv2hv(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_rv2hv();
-}
-
-#undef Perl_pp_rv2sv
-OP *
-Perl_pp_rv2sv(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_rv2sv();
-}
-
-#undef Perl_pp_sassign
-OP *
-Perl_pp_sassign(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_sassign();
-}
-
-#undef Perl_pp_scalar
-OP *
-Perl_pp_scalar(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_scalar();
-}
-
-#undef Perl_pp_schomp
-OP *
-Perl_pp_schomp(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_schomp();
-}
-
-#undef Perl_pp_schop
-OP *
-Perl_pp_schop(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_schop();
-}
-
-#undef Perl_pp_scmp
-OP *
-Perl_pp_scmp(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_scmp();
-}
-
-#undef Perl_pp_scope
-OP *
-Perl_pp_scope(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_scope();
-}
-
-#undef Perl_pp_seek
-OP *
-Perl_pp_seek(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_seek();
-}
-
-#undef Perl_pp_seekdir
-OP *
-Perl_pp_seekdir(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_seekdir();
-}
-
-#undef Perl_pp_select
-OP *
-Perl_pp_select(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_select();
-}
-
-#undef Perl_pp_semctl
-OP *
-Perl_pp_semctl(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_semctl();
-}
-
-#undef Perl_pp_semget
-OP *
-Perl_pp_semget(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_semget();
-}
-
-#undef Perl_pp_semop
-OP *
-Perl_pp_semop(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_semop();
-}
-
-#undef Perl_pp_send
-OP *
-Perl_pp_send(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_send();
-}
-
-#undef Perl_pp_seq
-OP *
-Perl_pp_seq(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_seq();
-}
-
-#undef Perl_pp_setpgrp
-OP *
-Perl_pp_setpgrp(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_setpgrp();
-}
-
-#undef Perl_pp_setpriority
-OP *
-Perl_pp_setpriority(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_setpriority();
-}
-
-#undef Perl_pp_setstate
-OP *
-Perl_pp_setstate(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_setstate();
-}
-
-#undef Perl_pp_sge
-OP *
-Perl_pp_sge(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_sge();
-}
-
-#undef Perl_pp_sgrent
-OP *
-Perl_pp_sgrent(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_sgrent();
-}
-
-#undef Perl_pp_sgt
-OP *
-Perl_pp_sgt(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_sgt();
-}
-
-#undef Perl_pp_shift
-OP *
-Perl_pp_shift(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_shift();
-}
-
-#undef Perl_pp_shmctl
-OP *
-Perl_pp_shmctl(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_shmctl();
-}
-
-#undef Perl_pp_shmget
-OP *
-Perl_pp_shmget(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_shmget();
-}
-
-#undef Perl_pp_shmread
-OP *
-Perl_pp_shmread(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_shmread();
-}
-
-#undef Perl_pp_shmwrite
-OP *
-Perl_pp_shmwrite(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_shmwrite();
-}
-
-#undef Perl_pp_shostent
-OP *
-Perl_pp_shostent(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_shostent();
-}
-
-#undef Perl_pp_shutdown
-OP *
-Perl_pp_shutdown(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_shutdown();
-}
-
-#undef Perl_pp_sin
-OP *
-Perl_pp_sin(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_sin();
-}
-
-#undef Perl_pp_sle
-OP *
-Perl_pp_sle(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_sle();
-}
-
-#undef Perl_pp_sleep
-OP *
-Perl_pp_sleep(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_sleep();
-}
-
-#undef Perl_pp_slt
-OP *
-Perl_pp_slt(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_slt();
-}
-
-#undef Perl_pp_sne
-OP *
-Perl_pp_sne(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_sne();
-}
-
-#undef Perl_pp_snetent
-OP *
-Perl_pp_snetent(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_snetent();
-}
-
-#undef Perl_pp_socket
-OP *
-Perl_pp_socket(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_socket();
-}
-
-#undef Perl_pp_sockpair
-OP *
-Perl_pp_sockpair(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_sockpair();
-}
-
-#undef Perl_pp_sort
-OP *
-Perl_pp_sort(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_sort();
-}
-
-#undef Perl_pp_splice
-OP *
-Perl_pp_splice(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_splice();
-}
-
-#undef Perl_pp_split
-OP *
-Perl_pp_split(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_split();
-}
-
-#undef Perl_pp_sprintf
-OP *
-Perl_pp_sprintf(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_sprintf();
-}
-
-#undef Perl_pp_sprotoent
-OP *
-Perl_pp_sprotoent(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_sprotoent();
-}
-
-#undef Perl_pp_spwent
-OP *
-Perl_pp_spwent(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_spwent();
-}
-
-#undef Perl_pp_sqrt
-OP *
-Perl_pp_sqrt(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_sqrt();
-}
-
-#undef Perl_pp_srand
-OP *
-Perl_pp_srand(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_srand();
-}
-
-#undef Perl_pp_srefgen
-OP *
-Perl_pp_srefgen(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_srefgen();
-}
-
-#undef Perl_pp_sselect
-OP *
-Perl_pp_sselect(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_sselect();
-}
-
-#undef Perl_pp_sservent
-OP *
-Perl_pp_sservent(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_sservent();
-}
-
-#undef Perl_pp_ssockopt
-OP *
-Perl_pp_ssockopt(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_ssockopt();
-}
-
-#undef Perl_pp_stat
-OP *
-Perl_pp_stat(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_stat();
-}
-
-#undef Perl_pp_stringify
-OP *
-Perl_pp_stringify(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_stringify();
-}
-
-#undef Perl_pp_stub
-OP *
-Perl_pp_stub(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_stub();
-}
-
-#undef Perl_pp_study
-OP *
-Perl_pp_study(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_study();
-}
-
-#undef Perl_pp_subst
-OP *
-Perl_pp_subst(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_subst();
-}
-
-#undef Perl_pp_substcont
-OP *
-Perl_pp_substcont(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_substcont();
-}
-
-#undef Perl_pp_substr
-OP *
-Perl_pp_substr(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_substr();
-}
-
-#undef Perl_pp_subtract
-OP *
-Perl_pp_subtract(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_subtract();
-}
-
-#undef Perl_pp_symlink
-OP *
-Perl_pp_symlink(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_symlink();
-}
-
-#undef Perl_pp_syscall
-OP *
-Perl_pp_syscall(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_syscall();
-}
-
-#undef Perl_pp_sysopen
-OP *
-Perl_pp_sysopen(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_sysopen();
-}
-
-#undef Perl_pp_sysread
-OP *
-Perl_pp_sysread(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_sysread();
-}
-
-#undef Perl_pp_sysseek
-OP *
-Perl_pp_sysseek(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_sysseek();
-}
-
-#undef Perl_pp_system
-OP *
-Perl_pp_system(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_system();
-}
-
-#undef Perl_pp_syswrite
-OP *
-Perl_pp_syswrite(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_syswrite();
-}
-
-#undef Perl_pp_tell
-OP *
-Perl_pp_tell(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_tell();
-}
-
-#undef Perl_pp_telldir
-OP *
-Perl_pp_telldir(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_telldir();
-}
-
-#undef Perl_pp_threadsv
-OP *
-Perl_pp_threadsv(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_threadsv();
-}
-
-#undef Perl_pp_tie
-OP *
-Perl_pp_tie(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_tie();
-}
-
-#undef Perl_pp_tied
-OP *
-Perl_pp_tied(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_tied();
-}
-
-#undef Perl_pp_time
-OP *
-Perl_pp_time(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_time();
-}
-
-#undef Perl_pp_tms
-OP *
-Perl_pp_tms(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_tms();
-}
-
-#undef Perl_pp_trans
-OP *
-Perl_pp_trans(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_trans();
-}
-
-#undef Perl_pp_truncate
-OP *
-Perl_pp_truncate(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_truncate();
-}
-
-#undef Perl_pp_uc
-OP *
-Perl_pp_uc(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_uc();
-}
-
-#undef Perl_pp_ucfirst
-OP *
-Perl_pp_ucfirst(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_ucfirst();
-}
-
-#undef Perl_pp_umask
-OP *
-Perl_pp_umask(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_umask();
-}
-
-#undef Perl_pp_undef
-OP *
-Perl_pp_undef(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_undef();
-}
-
-#undef Perl_pp_unlink
-OP *
-Perl_pp_unlink(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_unlink();
-}
-
-#undef Perl_pp_unpack
-OP *
-Perl_pp_unpack(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_unpack();
-}
-
-#undef Perl_pp_unshift
-OP *
-Perl_pp_unshift(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_unshift();
-}
-
-#undef Perl_pp_unstack
-OP *
-Perl_pp_unstack(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_unstack();
-}
-
-#undef Perl_pp_untie
-OP *
-Perl_pp_untie(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_untie();
-}
-
-#undef Perl_pp_utime
-OP *
-Perl_pp_utime(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_utime();
-}
-
-#undef Perl_pp_values
-OP *
-Perl_pp_values(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_values();
-}
-
-#undef Perl_pp_vec
-OP *
-Perl_pp_vec(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_vec();
-}
-
-#undef Perl_pp_wait
-OP *
-Perl_pp_wait(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_wait();
-}
-
-#undef Perl_pp_waitpid
-OP *
-Perl_pp_waitpid(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_waitpid();
-}
-
-#undef Perl_pp_wantarray
-OP *
-Perl_pp_wantarray(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_wantarray();
-}
-
-#undef Perl_pp_warn
-OP *
-Perl_pp_warn(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_warn();
-}
-
-#undef Perl_pp_xor
-OP *
-Perl_pp_xor(pTHXo)
-{
- return ((CPerlObj*)pPerl)->Perl_pp_xor();
-}
-
#undef Perl_fprintf_nocontext
int
Perl_fprintf_nocontext(PerlIO *stream, const char *format, ...)
diff --git a/pod/Makefile b/pod/Makefile
index 3aadd9efc6..8199390e63 100644
--- a/pod/Makefile
+++ b/pod/Makefile
@@ -62,6 +62,8 @@ POD = \
perlcall.pod \
perlcompile.pod \
perltodo.pod \
+ perlapi.pod \
+ perlintern.pod \
perlhack.pod \
perlhist.pod \
perlfaq.pod \
@@ -124,6 +126,8 @@ MAN = \
perlcall.man \
perlcompile.man \
perltodo.man \
+ perlapi.man \
+ perlintern.man \
perlhack.man \
perlhist.man \
perlfaq.man \
@@ -186,6 +190,8 @@ HTML = \
perlcall.html \
perlcompile.html \
perltodo.html \
+ perlapi.html \
+ perlintern.html \
perlhack.html \
perlhist.html \
perlfaq.html \
@@ -248,6 +254,8 @@ TEX = \
perlcall.tex \
perlcompile.tex \
perltodo.tex \
+ perlapi.tex \
+ perlintern.tex \
perlhack.tex \
perlhist.tex \
perlfaq.tex \
diff --git a/pod/buildtoc b/pod/buildtoc
index 8192b5bd3d..f158cbaebb 100644
--- a/pod/buildtoc
+++ b/pod/buildtoc
@@ -14,7 +14,7 @@ sub output ($);
perldbmfilter perldebug
perldiag perlsec perltrap perlport perlstyle perlpod perlbook
perlembed perlapio perlxs perlxstut perlguts perlcall perlcompile
- perlhist
+ perlapi perlintern perlhist
);
for (@pods) { s/$/.pod/ }
diff --git a/pod/perl.pod b/pod/perl.pod
index 9b5db8250c..d52aff30fa 100644
--- a/pod/perl.pod
+++ b/pod/perl.pod
@@ -68,6 +68,8 @@ sections:
perlxstut Perl XS tutorial
perlguts Perl internal functions for those doing extensions
perlcall Perl calling conventions from C
+ perlapi Perl API listing (autogenerated)
+ perlintern Perl internal functions (autogenerated)
perltodo Perl things to do
perlhack Perl hackers guide
diff --git a/pod/perlapi.pod b/pod/perlapi.pod
new file mode 100644
index 0000000000..897fcdc9da
--- /dev/null
+++ b/pod/perlapi.pod
@@ -0,0 +1,2225 @@
+=head1 NAME
+
+perlapi - autogenerated documentation for the perl public API
+
+=head1 DESCRIPTION
+
+This file contains the documentation of the perl public API generated by
+embed.pl, specifically a listing of functions, macros, flags, and variables
+that may be used by extension writers. The interfaces of any functions that
+are not listed here are subject to change without notice. For this reason,
+blindly using functions listed in proto.h is to be avoided when writing
+extensions.
+
+Note that all Perl API global variables must be referenced with the C<PL_>
+prefix. Some macros are provided for compatibility with the older,
+unadorned names, but this support may be disabled in a future release.
+
+The listing is alphabetical, case insensitive.
+
+=over 8
+
+=item AvFILL
+
+Same as C<av_len()>. Deprecated, use C<av_len()> instead.
+
+ int AvFILL(AV* av)
+
+=item av_clear
+
+Clears an array, making it empty. Does not free the memory used by the
+array itself.
+
+ void av_clear(AV* ar)
+
+=item av_extend
+
+Pre-extend an array. The C<key> is the index to which the array should be
+extended.
+
+ void av_extend(AV* ar, I32 key)
+
+=item av_fetch
+
+Returns the SV at the specified index in the array. The C<key> is the
+index. If C<lval> is set then the fetch will be part of a store. Check
+that the return value is non-null before dereferencing it to a C<SV*>.
+
+See L<Understanding the Magic of Tied Hashes and Arrays> for more information
+on how to use this function on tied arrays.
+
+ SV** av_fetch(AV* ar, I32 key, I32 lval)
+
+=item av_len
+
+Returns the highest index in the array. Returns -1 if the array is
+empty.
+
+ I32 av_len(AV* ar)
+
+=item av_make
+
+Creates a new AV and populates it with a list of SVs. The SVs are copied
+into the array, so they may be freed after the call to av_make. The new AV
+will have a reference count of 1.
+
+ AV* av_make(I32 size, SV** svp)
+
+=item av_pop
+
+Pops an SV off the end of the array. Returns C<&PL_sv_undef> if the array
+is empty.
+
+ SV* av_pop(AV* ar)
+
+=item av_push
+
+Pushes an SV onto the end of the array. The array will grow automatically
+to accommodate the addition.
+
+ void av_push(AV* ar, SV* val)
+
+=item av_shift
+
+Shifts an SV off the beginning of the array.
+
+ SV* av_shift(AV* ar)
+
+=item av_store
+
+Stores an SV in an array. The array index is specified as C<key>. The
+return value will be NULL if the operation failed or if the value did not
+need to be actually stored within the array (as in the case of tied
+arrays). Otherwise it can be dereferenced to get the original C<SV*>. Note
+that the caller is responsible for suitably incrementing the reference
+count of C<val> before the call, and decrementing it if the function
+returned NULL.
+
+See L<Understanding the Magic of Tied Hashes and Arrays> for
+more information on how to use this function on tied arrays.
+
+ SV** av_store(AV* ar, I32 key, SV* val)
+
+=item av_undef
+
+Undefines the array. Frees the memory used by the array itself.
+
+ void av_undef(AV* ar)
+
+=item av_unshift
+
+Unshift the given number of C<undef> values onto the beginning of the
+array. The array will grow automatically to accommodate the addition. You
+must then use C<av_store> to assign values to these new elements.
+
+ void av_unshift(AV* ar, I32 num)
+
+=item call_argv
+
+Performs a callback to the specified Perl sub. See L<perlcall>.
+
+NOTE: the perl_ form of this function is deprecated.
+
+ I32 call_argv(const char* sub_name, I32 flags, char** argv)
+
+=item call_method
+
+Performs a callback to the specified Perl method. The blessed object must
+be on the stack. See L<perlcall>.
+
+NOTE: the perl_ form of this function is deprecated.
+
+ I32 call_method(const char* methname, I32 flags)
+
+=item call_pv
+
+Performs a callback to the specified Perl sub. See L<perlcall>.
+
+NOTE: the perl_ form of this function is deprecated.
+
+ I32 call_pv(const char* sub_name, I32 flags)
+
+=item call_sv
+
+Performs a callback to the Perl sub whose name is in the SV. See
+L<perlcall>.
+
+NOTE: the perl_ form of this function is deprecated.
+
+ I32 call_sv(SV* sv, I32 flags)
+
+=item CLASS
+
+Variable which is setup by C<xsubpp> to indicate the
+class name for a C++ XS constructor. This is always a C<char*>. See C<THIS>.
+
+ char* CLASS
+
+=item Copy
+
+The XSUB-writer's interface to the C C<memcpy> function. The C<src> is the
+source, C<dest> is the destination, C<nitems> is the number of items, and C<type> is
+the type. May fail on overlapping copies. See also C<Move>.
+
+ void Copy(void* src, void* dest, int nitems, type)
+
+=item croak
+
+This is the XSUB-writer's interface to Perl's C<die> function. Use this
+function the same way you use the C C<printf> function. See
+C<warn>.
+
+ void croak(const char* pat, ...)
+
+=item CvSTASH
+
+Returns the stash of the CV.
+
+ HV* CvSTASH(CV* cv)
+
+=item dMARK
+
+Declare a stack marker variable, C<mark>, for the XSUB. See C<MARK> and
+C<dORIGMARK>.
+
+ dMARK;
+
+=item dORIGMARK
+
+Saves the original stack mark for the XSUB. See C<ORIGMARK>.
+
+ dORIGMARK;
+
+=item dSP
+
+Declares a local copy of perl's stack pointer for the XSUB, available via
+the C<SP> macro. See C<SP>.
+
+ dSP;
+
+=item dXSARGS
+
+Sets up stack and mark pointers for an XSUB, calling dSP and dMARK. This
+is usually handled automatically by C<xsubpp>. Declares the C<items>
+variable to indicate the number of items on the stack.
+
+ dXSARGS;
+
+=item dXSI32
+
+Sets up the C<ix> variable for an XSUB which has aliases. This is usually
+handled automatically by C<xsubpp>.
+
+ dXSI32;
+
+=item ENTER
+
+Opening bracket on a callback. See C<LEAVE> and L<perlcall>.
+
+ ENTER;
+
+=item eval_pv
+
+Tells Perl to C<eval> the given string and return an SV* result.
+
+NOTE: the perl_ form of this function is deprecated.
+
+ SV* eval_pv(const char* p, I32 croak_on_error)
+
+=item eval_sv
+
+Tells Perl to C<eval> the string in the SV.
+
+NOTE: the perl_ form of this function is deprecated.
+
+ I32 eval_sv(SV* sv, I32 flags)
+
+=item EXTEND
+
+Used to extend the argument stack for an XSUB's return values. Once
+used, guarrantees that there is room for at least C<nitems> to be pushed
+onto the stack.
+
+ void EXTEND(SP, int nitems)
+
+=item fbm_compile
+
+Analyses the string in order to make fast searches on it using fbm_instr()
+-- the Boyer-Moore algorithm.
+
+ void fbm_compile(SV* sv, U32 flags)
+
+=item fbm_instr
+
+Returns the location of the SV in the string delimited by C<str> and
+C<strend>. It returns C<Nullch> if the string can't be found. The C<sv>
+does not have to be fbm_compiled, but the search will not be as fast
+then.
+
+ char* fbm_instr(unsigned char* big, unsigned char* bigend, SV* littlesv, U32 flags)
+
+=item FREETMPS
+
+Closing bracket for temporaries on a callback. See C<SAVETMPS> and
+L<perlcall>.
+
+ FREETMPS;
+
+=item get_av
+
+Returns the AV of the specified Perl array. If C<create> is set and the
+Perl variable does not exist then it will be created. If C<create> is not
+set and the variable does not exist then NULL is returned.
+
+NOTE: the perl_ form of this function is deprecated.
+
+ AV* get_av(const char* name, I32 create)
+
+=item get_cv
+
+Returns the CV of the specified Perl subroutine. If C<create> is set and
+the Perl subroutine does not exist then it will be declared (which has the
+same effect as saying C<sub name;>). If C<create> is not set and the
+subroutine does not exist then NULL is returned.
+
+NOTE: the perl_ form of this function is deprecated.
+
+ CV* get_cv(const char* name, I32 create)
+
+=item get_hv
+
+Returns the HV of the specified Perl hash. If C<create> is set and the
+Perl variable does not exist then it will be created. If C<create> is not
+set and the variable does not exist then NULL is returned.
+
+NOTE: the perl_ form of this function is deprecated.
+
+ HV* get_hv(const char* name, I32 create)
+
+=item get_sv
+
+Returns the SV of the specified Perl scalar. If C<create> is set and the
+Perl variable does not exist then it will be created. If C<create> is not
+set and the variable does not exist then NULL is returned.
+
+NOTE: the perl_ form of this function is deprecated.
+
+ SV* get_sv(const char* name, I32 create)
+
+=item GIMME
+
+A backward-compatible version of C<GIMME_V> which can only return
+C<G_SCALAR> or C<G_ARRAY>; in a void context, it returns C<G_SCALAR>.
+Deprecated. Use C<GIMME_V> instead.
+
+ U32 GIMME
+
+=item GIMME_V
+
+The XSUB-writer's equivalent to Perl's C<wantarray>. Returns C<G_VOID>,
+C<G_SCALAR> or C<G_ARRAY> for void, scalar or array context,
+respectively.
+
+ U32 GIMME_V
+
+=item GvSV
+
+Return the SV from the GV.
+
+ SV* GvSV(GV* gv)
+
+=item gv_fetchmeth
+
+Returns the glob with the given C<name> and a defined subroutine or
+C<NULL>. The glob lives in the given C<stash>, or in the stashes
+accessible via @ISA and @UNIVERSAL.
+
+The argument C<level> should be either 0 or -1. If C<level==0>, as a
+side-effect creates a glob with the given C<name> in the given C<stash>
+which in the case of success contains an alias for the subroutine, and sets
+up caching info for this glob. Similarly for all the searched stashes.
+
+This function grants C<"SUPER"> token as a postfix of the stash name. The
+GV returned from C<gv_fetchmeth> may be a method cache entry, which is not
+visible to Perl code. So when calling C<perl_call_sv>, you should not use
+the GV directly; instead, you should use the method's CV, which can be
+obtained from the GV with the C<GvCV> macro.
+
+ GV* gv_fetchmeth(HV* stash, const char* name, STRLEN len, I32 level)
+
+=item gv_fetchmethod
+
+See L<gv_fetchmethod_autoload.
+
+ GV* gv_fetchmethod(HV* stash, const char* name)
+
+=item gv_fetchmethod_autoload
+
+Returns the glob which contains the subroutine to call to invoke the method
+on the C<stash>. In fact in the presence of autoloading this may be the
+glob for "AUTOLOAD". In this case the corresponding variable $AUTOLOAD is
+already setup.
+
+The third parameter of C<gv_fetchmethod_autoload> determines whether
+AUTOLOAD lookup is performed if the given method is not present: non-zero
+means yes, look for AUTOLOAD; zero means no, don't look for AUTOLOAD.
+Calling C<gv_fetchmethod> is equivalent to calling C<gv_fetchmethod_autoload>
+with a non-zero C<autoload> parameter.
+
+These functions grant C<"SUPER"> token as a prefix of the method name. Note
+that if you want to keep the returned glob for a long time, you need to
+check for it being "AUTOLOAD", since at the later time the call may load a
+different subroutine due to $AUTOLOAD changing its value. Use the glob
+created via a side effect to do this.
+
+These functions have the same side-effects and as C<gv_fetchmeth> with
+C<level==0>. C<name> should be writable if contains C<':'> or C<'
+''>. The warning against passing the GV returned by C<gv_fetchmeth> to
+C<perl_call_sv> apply equally to these functions.
+
+ GV* gv_fetchmethod_autoload(HV* stash, const char* name, I32 autoload)
+
+=item gv_stashpv
+
+Returns a pointer to the stash for a specified package. If C<create> is
+set then the package will be created if it does not already exist. If
+C<create> is not set and the package does not exist then NULL is
+returned.
+
+ HV* gv_stashpv(const char* name, I32 create)
+
+=item gv_stashsv
+
+Returns a pointer to the stash for a specified package. See
+C<gv_stashpv>.
+
+ HV* gv_stashsv(SV* sv, I32 create)
+
+=item G_ARRAY
+
+Used to indicate array context. See C<GIMME_V>, C<GIMME> and
+L<perlcall>.
+
+=item G_DISCARD
+
+Indicates that arguments returned from a callback should be discarded. See
+L<perlcall>.
+
+=item G_EVAL
+
+Used to force a Perl C<eval> wrapper around a callback. See
+L<perlcall>.
+
+=item G_NOARGS
+
+Indicates that no arguments are being sent to a callback. See
+L<perlcall>.
+
+=item G_SCALAR
+
+Used to indicate scalar context. See C<GIMME_V>, C<GIMME>, and
+L<perlcall>.
+
+=item G_VOID
+
+Used to indicate void context. See C<GIMME_V> and L<perlcall>.
+
+=item HEf_SVKEY
+
+This flag, used in the length slot of hash entries and magic structures,
+specifies the structure contains a C<SV*> pointer where a C<char*> pointer
+is to be expected. (For information only--not to be used).
+
+=item HeHASH
+
+Returns the computed hash stored in the hash entry.
+
+ U32 HeHASH(HE* he)
+
+=item HeKEY
+
+Returns the actual pointer stored in the key slot of the hash entry. The
+pointer may be either C<char*> or C<SV*>, depending on the value of
+C<HeKLEN()>. Can be assigned to. The C<HePV()> or C<HeSVKEY()> macros are
+usually preferable for finding the value of a key.
+
+ void* HeKEY(HE* he)
+
+=item HeKLEN
+
+If this is negative, and amounts to C<HEf_SVKEY>, it indicates the entry
+holds an C<SV*> key. Otherwise, holds the actual length of the key. Can
+be assigned to. The C<HePV()> macro is usually preferable for finding key
+lengths.
+
+ STRLEN HeKLEN(HE* he)
+
+=item HePV
+
+Returns the key slot of the hash entry as a C<char*> value, doing any
+necessary dereferencing of possibly C<SV*> keys. The length of the string
+is placed in C<len> (this is a macro, so do I<not> use C<&len>). If you do
+not care about what the length of the key is, you may use the global
+variable C<PL_na>, though this is rather less efficient than using a local
+variable. Remember though, that hash keys in perl are free to contain
+embedded nulls, so using C<strlen()> or similar is not a good way to find
+the length of hash keys. This is very similar to the C<SvPV()> macro
+described elsewhere in this document.
+
+ char* HePV(HE* he, STRLEN len)
+
+=item HeSVKEY
+
+Returns the key as an C<SV*>, or C<Nullsv> if the hash entry does not
+contain an C<SV*> key.
+
+ SV* HeSVKEY(HE* he)
+
+=item HeSVKEY_force
+
+Returns the key as an C<SV*>. Will create and return a temporary mortal
+C<SV*> if the hash entry contains only a C<char*> key.
+
+ SV* HeSVKEY_force(HE* he)
+
+=item HeSVKEY_set
+
+Sets the key to a given C<SV*>, taking care to set the appropriate flags to
+indicate the presence of an C<SV*> key, and returns the same
+C<SV*>.
+
+ SV* HeSVKEY_set(HE* he, SV* sv)
+
+=item HeVAL
+
+Returns the value slot (type C<SV*>) stored in the hash entry.
+
+ SV* HeVAL(HE* he)
+
+=item HvNAME
+
+Returns the package name of a stash. See C<SvSTASH>, C<CvSTASH>.
+
+ char* HvNAME(HV* stash)
+
+=item hv_clear
+
+Clears a hash, making it empty.
+
+ void hv_clear(HV* tb)
+
+=item hv_delete
+
+Deletes a key/value pair in the hash. The value SV is removed from the
+hash and returned to the caller. The C<klen> is the length of the key.
+The C<flags> value will normally be zero; if set to G_DISCARD then NULL
+will be returned.
+
+ SV* hv_delete(HV* tb, const char* key, U32 klen, I32 flags)
+
+=item hv_delete_ent
+
+Deletes a key/value pair in the hash. The value SV is removed from the
+hash and returned to the caller. The C<flags> value will normally be zero;
+if set to G_DISCARD then NULL will be returned. C<hash> can be a valid
+precomputed hash value, or 0 to ask for it to be computed.
+
+ SV* hv_delete_ent(HV* tb, SV* key, I32 flags, U32 hash)
+
+=item hv_exists
+
+Returns a boolean indicating whether the specified hash key exists. The
+C<klen> is the length of the key.
+
+ bool hv_exists(HV* tb, const char* key, U32 klen)
+
+=item hv_exists_ent
+
+Returns a boolean indicating whether the specified hash key exists. C<hash>
+can be a valid precomputed hash value, or 0 to ask for it to be
+computed.
+
+ bool hv_exists_ent(HV* tb, SV* key, U32 hash)
+
+=item hv_fetch
+
+Returns the SV which corresponds to the specified key in the hash. The
+C<klen> is the length of the key. If C<lval> is set then the fetch will be
+part of a store. Check that the return value is non-null before
+dereferencing it to a C<SV*>.
+
+See L<Understanding the Magic of Tied Hashes and Arrays> for more
+information on how to use this function on tied hashes.
+
+ SV** hv_fetch(HV* tb, const char* key, U32 klen, I32 lval)
+
+=item hv_fetch_ent
+
+Returns the hash entry which corresponds to the specified key in the hash.
+C<hash> must be a valid precomputed hash number for the given C<key>, or 0
+if you want the function to compute it. IF C<lval> is set then the fetch
+will be part of a store. Make sure the return value is non-null before
+accessing it. The return value when C<tb> is a tied hash is a pointer to a
+static location, so be sure to make a copy of the structure if you need to
+store it somewhere.
+
+See L<Understanding the Magic of Tied Hashes and Arrays> for more
+information on how to use this function on tied hashes.
+
+ HE* hv_fetch_ent(HV* tb, SV* key, I32 lval, U32 hash)
+
+=item hv_iterinit
+
+Prepares a starting point to traverse a hash table. Returns the number of
+keys in the hash (i.e. the same as C<HvKEYS(tb)>). The return value is
+currently only meaningful for hashes without tie magic.
+
+NOTE: Before version 5.004_65, C<hv_iterinit> used to return the number of
+hash buckets that happen to be in use. If you still need that esoteric
+value, you can get it through the macro C<HvFILL(tb)>.
+
+ I32 hv_iterinit(HV* tb)
+
+=item hv_iterkey
+
+Returns the key from the current position of the hash iterator. See
+C<hv_iterinit>.
+
+ char* hv_iterkey(HE* entry, I32* retlen)
+
+=item hv_iterkeysv
+
+Returns the key as an C<SV*> from the current position of the hash
+iterator. The return value will always be a mortal copy of the key. Also
+see C<hv_iterinit>.
+
+ SV* hv_iterkeysv(HE* entry)
+
+=item hv_iternext
+
+Returns entries from a hash iterator. See C<hv_iterinit>.
+
+ HE* hv_iternext(HV* tb)
+
+=item hv_iternextsv
+
+Performs an C<hv_iternext>, C<hv_iterkey>, and C<hv_iterval> in one
+operation.
+
+ SV* hv_iternextsv(HV* hv, char** key, I32* retlen)
+
+=item hv_iterval
+
+Returns the value from the current position of the hash iterator. See
+C<hv_iterkey>.
+
+ SV* hv_iterval(HV* tb, HE* entry)
+
+=item hv_magic
+
+Adds magic to a hash. See C<sv_magic>.
+
+ void hv_magic(HV* hv, GV* gv, int how)
+
+=item hv_store
+
+Stores an SV in a hash. The hash key is specified as C<key> and C<klen> is
+the length of the key. The C<hash> parameter is the precomputed hash
+value; if it is zero then Perl will compute it. The return value will be
+NULL if the operation failed or if the value did not need to be actually
+stored within the hash (as in the case of tied hashes). Otherwise it can
+be dereferenced to get the original C<SV*>. Note that the caller is
+responsible for suitably incrementing the reference count of C<val> before
+the call, and decrementing it if the function returned NULL.
+
+See L<Understanding the Magic of Tied Hashes and Arrays> for more
+information on how to use this function on tied hashes.
+
+ SV** hv_store(HV* tb, const char* key, U32 klen, SV* val, U32 hash)
+
+=item hv_store_ent
+
+Stores C<val> in a hash. The hash key is specified as C<key>. The C<hash>
+parameter is the precomputed hash value; if it is zero then Perl will
+compute it. The return value is the new hash entry so created. It will be
+NULL if the operation failed or if the value did not need to be actually
+stored within the hash (as in the case of tied hashes). Otherwise the
+contents of the return value can be accessed using the C<He???> macros
+described here. Note that the caller is responsible for suitably
+incrementing the reference count of C<val> before the call, and
+decrementing it if the function returned NULL.
+
+See L<Understanding the Magic of Tied Hashes and Arrays> for more
+information on how to use this function on tied hashes.
+
+ HE* hv_store_ent(HV* tb, SV* key, SV* val, U32 hash)
+
+=item hv_undef
+
+Undefines the hash.
+
+ void hv_undef(HV* tb)
+
+=item isALNUM
+
+Returns a boolean indicating whether the C C<char> is an ascii alphanumeric
+character or digit.
+
+ bool isALNUM(char ch)
+
+=item isALPHA
+
+Returns a boolean indicating whether the C C<char> is an ascii alphabetic
+character.
+
+ bool isALPHA(char ch)
+
+=item isDIGIT
+
+Returns a boolean indicating whether the C C<char> is an ascii
+digit.
+
+ bool isDIGIT(char ch)
+
+=item isLOWER
+
+Returns a boolean indicating whether the C C<char> is a lowercase
+character.
+
+ bool isLOWER(char ch)
+
+=item isSPACE
+
+Returns a boolean indicating whether the C C<char> is whitespace.
+
+ bool isSPACE(char ch)
+
+=item isUPPER
+
+Returns a boolean indicating whether the C C<char> is an uppercase
+character.
+
+ bool isUPPER(char ch)
+
+=item items
+
+Variable which is setup by C<xsubpp> to indicate the number of
+items on the stack. See L<perlxs/"Variable-length Parameter Lists">.
+
+ I32 items
+
+=item ix
+
+Variable which is setup by C<xsubpp> to indicate which of an
+XSUB's aliases was used to invoke it. See L<perlxs/"The ALIAS: Keyword">.
+
+ I32 ix
+
+=item LEAVE
+
+Closing bracket on a callback. See C<ENTER> and L<perlcall>.
+
+ LEAVE;
+
+=item looks_like_number
+
+Test if an the content of an SV looks like a number (or is a
+number).
+
+ I32 looks_like_number(SV* sv)
+
+=item MARK
+
+Stack marker variable for the XSUB. See C<dMARK>.
+
+=item mg_clear
+
+Clear something magical that the SV represents. See C<sv_magic>.
+
+ int mg_clear(SV* sv)
+
+=item mg_copy
+
+Copies the magic from one SV to another. See C<sv_magic>.
+
+ int mg_copy(SV* sv, SV* nsv, const char* key, I32 klen)
+
+=item mg_find
+
+Finds the magic pointer for type matching the SV. See C<sv_magic>.
+
+ MAGIC* mg_find(SV* sv, int type)
+
+=item mg_free
+
+Free any magic storage used by the SV. See C<sv_magic>.
+
+ int mg_free(SV* sv)
+
+=item mg_get
+
+Do magic after a value is retrieved from the SV. See C<sv_magic>.
+
+ int mg_get(SV* sv)
+
+=item mg_length
+
+Report on the SV's length. See C<sv_magic>.
+
+ U32 mg_length(SV* sv)
+
+=item mg_magical
+
+Turns on the magical status of an SV. See C<sv_magic>.
+
+ void mg_magical(SV* sv)
+
+=item mg_set
+
+Do magic after a value is assigned to the SV. See C<sv_magic>.
+
+ int mg_set(SV* sv)
+
+=item Move
+
+The XSUB-writer's interface to the C C<memmove> function. The C<src> is the
+source, C<dest> is the destination, C<nitems> is the number of items, and C<type> is
+the type. Can do overlapping moves. See also C<Copy>.
+
+ void Move(void* src, void* dest, int nitems, type)
+
+=item New
+
+The XSUB-writer's interface to the C C<malloc> function.
+
+ void New(int id, void* ptr, int nitems, type)
+
+=item newAV
+
+Creates a new AV. The reference count is set to 1.
+
+ AV* newAV()
+
+=item Newc
+
+The XSUB-writer's interface to the C C<malloc> function, with
+cast.
+
+ void Newc(int id, void* ptr, int nitems, type, cast)
+
+=item newCONSTSUB
+
+Creates a constant sub equivalent to Perl C<sub FOO () { 123 }> which is
+eligible for inlining at compile-time.
+
+ void newCONSTSUB(HV* stash, char* name, SV* sv)
+
+=item newHV
+
+Creates a new HV. The reference count is set to 1.
+
+ HV* newHV()
+
+=item newRV_inc
+
+Creates an RV wrapper for an SV. The reference count for the original SV is
+incremented.
+
+ SV* newRV_inc(SV* sv)
+
+=item newRV_noinc
+
+Creates an RV wrapper for an SV. The reference count for the original
+SV is B<not> incremented.
+
+ SV* newRV_noinc(SV *sv)
+
+=item NEWSV
+
+Creates a new SV. A non-zero C<len> parameter indicates the number of
+bytes of preallocated string space the SV should have. An extra byte for a
+tailing NUL is also reserved. (SvPOK is not set for the SV even if string
+space is allocated.) The reference count for the new SV is set to 1.
+C<id> is an integer id between 0 and 1299 (used to identify leaks).
+
+ SV* NEWSV(int id, STRLEN len)
+
+=item newSViv
+
+Creates a new SV and copies an integer into it. The reference count for the
+SV is set to 1.
+
+ SV* newSViv(IV i)
+
+=item newSVnv
+
+Creates a new SV and copies a floating point value into it.
+The reference count for the SV is set to 1.
+
+ SV* newSVnv(NV n)
+
+=item newSVpv
+
+Creates a new SV and copies a string into it. The reference count for the
+SV is set to 1. If C<len> is zero, Perl will compute the length using
+strlen(). For efficiency, consider using C<newSVpvn> instead.
+
+ SV* newSVpv(const char* s, STRLEN len)
+
+=item newSVpvf
+
+Creates a new SV an initialize it with the string formatted like
+C<sprintf>.
+
+ SV* newSVpvf(const char* pat, ...)
+
+=item newSVpvn
+
+Creates a new SV and copies a string into it. The reference count for the
+SV is set to 1. Note that if C<len> is zero, Perl will create a zero length
+string. You are responsible for ensuring that the source string is at least
+C<len> bytes long.
+
+ SV* newSVpvn(const char* s, STRLEN len)
+
+=item newSVrv
+
+Creates a new SV for the RV, C<rv>, to point to. If C<rv> is not an RV then
+it will be upgraded to one. If C<classname> is non-null then the new SV will
+be blessed in the specified package. The new SV is returned and its
+reference count is 1.
+
+ SV* newSVrv(SV* rv, const char* classname)
+
+=item newSVsv
+
+Creates a new SV which is an exact duplicate of the original SV.
+
+ SV* newSVsv(SV* old)
+
+=item newXS
+
+Used by C<xsubpp> to hook up XSUBs as Perl subs.
+
+=item newXSproto
+
+Used by C<xsubpp> to hook up XSUBs as Perl subs. Adds Perl prototypes to
+the subs.
+
+=item Newz
+
+The XSUB-writer's interface to the C C<malloc> function. The allocated
+memory is zeroed with C<memzero>.
+
+ void Newz(int id, void* ptr, int nitems, type)
+
+=item Nullav
+
+Null AV pointer.
+
+=item Nullch
+
+Null character pointer.
+
+=item Nullcv
+
+Null CV pointer.
+
+=item Nullhv
+
+Null HV pointer.
+
+=item Nullsv
+
+Null SV pointer.
+
+=item ORIGMARK
+
+The original stack mark for the XSUB. See C<dORIGMARK>.
+
+=item perl_alloc
+
+Allocates a new Perl interpreter. See L<perlembed>.
+
+ PerlInterpreter* perl_alloc()
+
+=item perl_construct
+
+Initializes a new Perl interpreter. See L<perlembed>.
+
+ void perl_construct(PerlInterpreter* interp)
+
+=item perl_destruct
+
+Shuts down a Perl interpreter. See L<perlembed>.
+
+ void perl_destruct(PerlInterpreter* interp)
+
+=item perl_free
+
+Releases a Perl interpreter. See L<perlembed>.
+
+ void perl_free(PerlInterpreter* interp)
+
+=item perl_parse
+
+Tells a Perl interpreter to parse a Perl script. See L<perlembed>.
+
+ int perl_parse(PerlInterpreter* interp, XSINIT_t xsinit, int argc, char** argv, char** env)
+
+=item perl_run
+
+Tells a Perl interpreter to run. See L<perlembed>.
+
+ int perl_run(PerlInterpreter* interp)
+
+=item PL_DBsingle
+
+When Perl is run in debugging mode, with the B<-d> switch, this SV is a
+boolean which indicates whether subs are being single-stepped.
+Single-stepping is automatically turned on after every step. This is the C
+variable which corresponds to Perl's $DB::single variable. See
+C<PL_DBsub>.
+
+ SV * PL_DBsingle
+
+=item PL_DBsub
+
+When Perl is run in debugging mode, with the B<-d> switch, this GV contains
+the SV which holds the name of the sub being debugged. This is the C
+variable which corresponds to Perl's $DB::sub variable. See
+C<PL_DBsingle>.
+
+ GV * PL_DBsub
+
+=item PL_DBtrace
+
+Trace variable used when Perl is run in debugging mode, with the B<-d>
+switch. This is the C variable which corresponds to Perl's $DB::trace
+variable. See C<PL_DBsingle>.
+
+ SV * PL_DBtrace
+
+=item PL_dowarn
+
+The C variable which corresponds to Perl's $^W warning variable.
+
+ bool PL_dowarn
+
+=item PL_modglobal
+
+C<PL_modglobal> is a general purpose, interpreter global HV for use by
+extensions that need to keep information on a per-interpreter basis.
+In a pinch, it can also be used as a symbol table for extensions
+to share data among each other. It is a good idea to use keys
+prefixed by the package name of the extension that owns the data.
+
+ HV* PL_modglobal
+
+=item PL_na
+
+A convenience variable which is typically used with C<SvPV> when one
+doesn't care about the length of the string. It is usually more efficient
+to either declare a local variable and use that instead or to use the
+C<SvPV_nolen> macro.
+
+ STRLEN PL_na
+
+=item PL_sv_no
+
+This is the C<false> SV. See C<PL_sv_yes>. Always refer to this as
+C<&PL_sv_no>.
+
+ SV PL_sv_no
+
+=item PL_sv_undef
+
+This is the C<undef> SV. Always refer to this as C<&PL_sv_undef>.
+
+ SV PL_sv_undef
+
+=item PL_sv_yes
+
+This is the C<true> SV. See C<PL_sv_no>. Always refer to this as
+C<&PL_sv_yes>.
+
+ SV PL_sv_yes
+
+=item POPi
+
+Pops an integer off the stack.
+
+ IV POPi
+
+=item POPl
+
+Pops a long off the stack.
+
+ long POPl
+
+=item POPn
+
+Pops a double off the stack.
+
+ NV POPn
+
+=item POPp
+
+Pops a string off the stack.
+
+ char* POPp
+
+=item POPs
+
+Pops an SV off the stack.
+
+ SV* POPs
+
+=item PUSHi
+
+Push an integer onto the stack. The stack must have room for this element.
+Handles 'set' magic. See C<XPUSHi>.
+
+ void PUSHi(IV iv)
+
+=item PUSHMARK
+
+Opening bracket for arguments on a callback. See C<PUTBACK> and
+L<perlcall>.
+
+ PUSHMARK;
+
+=item PUSHn
+
+Push a double onto the stack. The stack must have room for this element.
+Handles 'set' magic. See C<XPUSHn>.
+
+ void PUSHn(NV nv)
+
+=item PUSHp
+
+Push a string onto the stack. The stack must have room for this element.
+The C<len> indicates the length of the string. Handles 'set' magic. See
+C<XPUSHp>.
+
+ void PUSHp(char* str, STRLEN len)
+
+=item PUSHs
+
+Push an SV onto the stack. The stack must have room for this element.
+Does not handle 'set' magic. See C<XPUSHs>.
+
+ void PUSHs(SV* sv)
+
+=item PUSHu
+
+Push an unsigned integer onto the stack. The stack must have room for this
+element. See C<XPUSHu>.
+
+ void PUSHu(UV uv)
+
+=item PUTBACK
+
+Closing bracket for XSUB arguments. This is usually handled by C<xsubpp>.
+See C<PUSHMARK> and L<perlcall> for other uses.
+
+ PUTBACK;
+
+=item Renew
+
+The XSUB-writer's interface to the C C<realloc> function.
+
+ void Renew(void* ptr, int nitems, type)
+
+=item Renewc
+
+The XSUB-writer's interface to the C C<realloc> function, with
+cast.
+
+ void Renewc(void* ptr, int nitems, type, cast)
+
+=item require_pv
+
+Tells Perl to C<require> a module.
+
+NOTE: the perl_ form of this function is deprecated.
+
+ void require_pv(const char* pv)
+
+=item RETVAL
+
+Variable which is setup by C<xsubpp> to hold the return value for an
+XSUB. This is always the proper type for the XSUB. See
+L<perlxs/"The RETVAL Variable">.
+
+ (whatever) RETVAL
+
+=item Safefree
+
+The XSUB-writer's interface to the C C<free> function.
+
+ void Safefree(void* src, void* dest, int nitems, type)
+
+=item savepv
+
+Copy a string to a safe spot. This does not use an SV.
+
+ char* savepv(const char* sv)
+
+=item savepvn
+
+Copy a string to a safe spot. The C<len> indicates number of bytes to
+copy. This does not use an SV.
+
+ char* savepvn(const char* sv, I32 len)
+
+=item SAVETMPS
+
+Opening bracket for temporaries on a callback. See C<FREETMPS> and
+L<perlcall>.
+
+ SAVETMPS;
+
+=item SP
+
+Stack pointer. This is usually handled by C<xsubpp>. See C<dSP> and
+C<SPAGAIN>.
+
+=item SPAGAIN
+
+Refetch the stack pointer. Used after a callback. See L<perlcall>.
+
+ SPAGAIN;
+
+=item ST
+
+Used to access elements on the XSUB's stack.
+
+ SV* ST(int ix)
+
+=item strEQ
+
+Test two strings to see if they are equal. Returns true or false.
+
+ bool strEQ(char* s1, char* s2)
+
+=item strGE
+
+Test two strings to see if the first, C<s1>, is greater than or equal to
+the second, C<s2>. Returns true or false.
+
+ bool strGE(char* s1, char* s2)
+
+=item strGT
+
+Test two strings to see if the first, C<s1>, is greater than the second,
+C<s2>. Returns true or false.
+
+ bool strGT(char* s1, char* s2)
+
+=item strLE
+
+Test two strings to see if the first, C<s1>, is less than or equal to the
+second, C<s2>. Returns true or false.
+
+ bool strLE(char* s1, char* s2)
+
+=item strLT
+
+Test two strings to see if the first, C<s1>, is less than the second,
+C<s2>. Returns true or false.
+
+ bool strLT(char* s1, char* s2)
+
+=item strNE
+
+Test two strings to see if they are different. Returns true or
+false.
+
+ bool strNE(char* s1, char* s2)
+
+=item strnEQ
+
+Test two strings to see if they are equal. The C<len> parameter indicates
+the number of bytes to compare. Returns true or false. (A wrapper for
+C<strncmp>).
+
+ bool strnEQ(char* s1, char* s2, STRLEN len)
+
+=item strnNE
+
+Test two strings to see if they are different. The C<len> parameter
+indicates the number of bytes to compare. Returns true or false. (A
+wrapper for C<strncmp>).
+
+ bool strnNE(char* s1, char* s2, STRLEN len)
+
+=item StructCopy
+
+This is an architecture-independant macro to copy one structure to another.
+
+ void StructCopy(type src, type dest, type)
+
+=item SvCUR
+
+Returns the length of the string which is in the SV. See C<SvLEN>.
+
+ STRLEN SvCUR(SV* sv)
+
+=item SvCUR_set
+
+Set the length of the string which is in the SV. See C<SvCUR>.
+
+ void SvCUR_set(SV* sv, STRLEN len)
+
+=item SvEND
+
+Returns a pointer to the last character in the string which is in the SV.
+See C<SvCUR>. Access the character as *(SvEND(sv)).
+
+ char* SvEND(SV* sv)
+
+=item SvGETMAGIC
+
+Invokes C<mg_get> on an SV if it has 'get' magic. This macro evaluates its
+argument more than once.
+
+ void SvGETMAGIC(SV* sv)
+
+=item SvGROW
+
+Expands the character buffer in the SV so that it has room for the
+indicated number of bytes (remember to reserve space for an extra trailing
+NUL character). Calls C<sv_grow> to perform the expansion if necessary.
+Returns a pointer to the character buffer.
+
+ void SvGROW(SV* sv, STRLEN len)
+
+=item SvIOK
+
+Returns a boolean indicating whether the SV contains an integer.
+
+ bool SvIOK(SV* sv)
+
+=item SvIOKp
+
+Returns a boolean indicating whether the SV contains an integer. Checks
+the B<private> setting. Use C<SvIOK>.
+
+ bool SvIOKp(SV* sv)
+
+=item SvIOK_off
+
+Unsets the IV status of an SV.
+
+ void SvIOK_off(SV* sv)
+
+=item SvIOK_on
+
+Tells an SV that it is an integer.
+
+ void SvIOK_on(SV* sv)
+
+=item SvIOK_only
+
+Tells an SV that it is an integer and disables all other OK bits.
+
+ void SvIOK_only(SV* sv)
+
+=item SvIV
+
+Coerces the given SV to an integer and returns it.
+
+ IV SvIV(SV* sv)
+
+=item SvIVX
+
+Returns the integer which is stored in the SV, assuming SvIOK is
+true.
+
+ IV SvIVX(SV* sv)
+
+=item SvLEN
+
+Returns the size of the string buffer in the SV. See C<SvCUR>.
+
+ STRLEN SvLEN(SV* sv)
+
+=item SvNIOK
+
+Returns a boolean indicating whether the SV contains a number, integer or
+double.
+
+ bool SvNIOK(SV* sv)
+
+=item SvNIOKp
+
+Returns a boolean indicating whether the SV contains a number, integer or
+double. Checks the B<private> setting. Use C<SvNIOK>.
+
+ bool SvNIOKp(SV* sv)
+
+=item SvNIOK_off
+
+Unsets the NV/IV status of an SV.
+
+ void SvNIOK_off(SV* sv)
+
+=item SvNOK
+
+Returns a boolean indicating whether the SV contains a double.
+
+ bool SvNOK(SV* sv)
+
+=item SvNOKp
+
+Returns a boolean indicating whether the SV contains a double. Checks the
+B<private> setting. Use C<SvNOK>.
+
+ bool SvNOKp(SV* sv)
+
+=item SvNOK_off
+
+Unsets the NV status of an SV.
+
+ void SvNOK_off(SV* sv)
+
+=item SvNOK_on
+
+Tells an SV that it is a double.
+
+ void SvNOK_on(SV* sv)
+
+=item SvNOK_only
+
+Tells an SV that it is a double and disables all other OK bits.
+
+ void SvNOK_only(SV* sv)
+
+=item SvNV
+
+Coerce the given SV to a double and return it.
+
+ NV SvNV(SV* sv)
+
+=item SvNVX
+
+Returns the double which is stored in the SV, assuming SvNOK is
+true.
+
+ NV SvNVX(SV* sv)
+
+=item SvOK
+
+Returns a boolean indicating whether the value is an SV.
+
+ bool SvOK(SV* sv)
+
+=item SvOOK
+
+Returns a boolean indicating whether the SvIVX is a valid offset value for
+the SvPVX. This hack is used internally to speed up removal of characters
+from the beginning of a SvPV. When SvOOK is true, then the start of the
+allocated string buffer is really (SvPVX - SvIVX).
+
+ bool SvOOK(SV* sv)
+
+=item SvPOK
+
+Returns a boolean indicating whether the SV contains a character
+string.
+
+ bool SvPOK(SV* sv)
+
+=item SvPOKp
+
+Returns a boolean indicating whether the SV contains a character string.
+Checks the B<private> setting. Use C<SvPOK>.
+
+ bool SvPOKp(SV* sv)
+
+=item SvPOK_off
+
+Unsets the PV status of an SV.
+
+ void SvPOK_off(SV* sv)
+
+=item SvPOK_on
+
+Tells an SV that it is a string.
+
+ void SvPOK_on(SV* sv)
+
+=item SvPOK_only
+
+Tells an SV that it is a string and disables all other OK bits.
+
+ void SvPOK_only(SV* sv)
+
+=item SvPV
+
+Returns a pointer to the string in the SV, or a stringified form of the SV
+if the SV does not contain a string. Handles 'get' magic.
+
+ char* SvPV(SV* sv, STRLEN len)
+
+=item SvPVX
+
+Returns a pointer to the string in the SV. The SV must contain a
+string.
+
+ char* SvPVX(SV* sv)
+
+=item SvPV_force
+
+Like <SvPV> but will force the SV into becoming a string (SvPOK). You want
+force if you are going to update the SvPVX directly.
+
+ char* SvPV_force(SV* sv, STRLEN len)
+
+=item SvPV_nolen
+
+Returns a pointer to the string in the SV, or a stringified form of the SV
+if the SV does not contain a string. Handles 'get' magic.
+
+ char* SvPV_nolen(SV* sv)
+
+=item SvREFCNT
+
+Returns the value of the object's reference count.
+
+ U32 SvREFCNT(SV* sv)
+
+=item SvREFCNT_dec
+
+Decrements the reference count of the given SV.
+
+ void SvREFCNT_dec(SV* sv)
+
+=item SvREFCNT_inc
+
+Increments the reference count of the given SV.
+
+ SV* SvREFCNT_inc(SV* sv)
+
+=item SvROK
+
+Tests if the SV is an RV.
+
+ bool SvROK(SV* sv)
+
+=item SvROK_off
+
+Unsets the RV status of an SV.
+
+ void SvROK_off(SV* sv)
+
+=item SvROK_on
+
+Tells an SV that it is an RV.
+
+ void SvROK_on(SV* sv)
+
+=item SvRV
+
+Dereferences an RV to return the SV.
+
+ SV* SvRV(SV* sv)
+
+=item SvSETMAGIC
+
+Invokes C<mg_set> on an SV if it has 'set' magic. This macro evaluates its
+argument more than once.
+
+ void SvSETMAGIC(SV* sv)
+
+=item SvSetSV
+
+Calls C<sv_setsv> if dsv is not the same as ssv. May evaluate arguments
+more than once.
+
+ void SvSetSV(SV* dsb, SV* ssv)
+
+=item SvSetSV_nosteal
+
+Calls a non-destructive version of C<sv_setsv> if dsv is not the same as
+ssv. May evaluate arguments more than once.
+
+ void SvSetSV_nosteal(SV* dsv, SV* ssv)
+
+=item SvSTASH
+
+Returns the stash of the SV.
+
+ HV* SvSTASH(SV* sv)
+
+=item SvTAINT
+
+Taints an SV if tainting is enabled
+
+ void SvTAINT(SV* sv)
+
+=item SvTAINTED
+
+Checks to see if an SV is tainted. Returns TRUE if it is, FALSE if
+not.
+
+ bool SvTAINTED(SV* sv)
+
+=item SvTAINTED_off
+
+Untaints an SV. Be I<very> careful with this routine, as it short-circuits
+some of Perl's fundamental security features. XS module authors should not
+use this function unless they fully understand all the implications of
+unconditionally untainting the value. Untainting should be done in the
+standard perl fashion, via a carefully crafted regexp, rather than directly
+untainting variables.
+
+ void SvTAINTED_off(SV* sv)
+
+=item SvTAINTED_on
+
+Marks an SV as tainted.
+
+ void SvTAINTED_on(SV* sv)
+
+=item SvTRUE
+
+Returns a boolean indicating whether Perl would evaluate the SV as true or
+false, defined or undefined. Does not handle 'get' magic.
+
+ bool SvTRUE(SV* sv)
+
+=item SvTYPE
+
+Returns the type of the SV. See C<svtype>.
+
+ svtype SvTYPE(SV* sv)
+
+=item svtype
+
+An enum of flags for Perl types. These are found in the file B<sv.h>
+in the C<svtype> enum. Test these flags with the C<SvTYPE> macro.
+
+=item SVt_IV
+
+Integer type flag for scalars. See C<svtype>.
+
+=item SVt_NV
+
+Double type flag for scalars. See C<svtype>.
+
+=item SVt_PV
+
+Pointer type flag for scalars. See C<svtype>.
+
+=item SVt_PVAV
+
+Type flag for arrays. See C<svtype>.
+
+=item SVt_PVCV
+
+Type flag for code refs. See C<svtype>.
+
+=item SVt_PVHV
+
+Type flag for hashes. See C<svtype>.
+
+=item SVt_PVMG
+
+Type flag for blessed scalars. See C<svtype>.
+
+=item SvUPGRADE
+
+Used to upgrade an SV to a more complex form. Uses C<sv_upgrade> to
+perform the upgrade if necessary. See C<svtype>.
+
+ void SvUPGRADE(SV* sv, svtype type)
+
+=item SvUV
+
+Coerces the given SV to an unsigned integer and returns it.
+
+ UV SvUV(SV* sv)
+
+=item SvUVX
+
+Returns the unsigned integer which is stored in the SV, assuming SvIOK is
+true.
+
+ UV SvUVX(SV* sv)
+
+=item sv_2mortal
+
+Marks an SV as mortal. The SV will be destroyed when the current context
+ends.
+
+ SV* sv_2mortal(SV* sv)
+
+=item sv_bless
+
+Blesses an SV into a specified package. The SV must be an RV. The package
+must be designated by its stash (see C<gv_stashpv()>). The reference count
+of the SV is unaffected.
+
+ SV* sv_bless(SV* sv, HV* stash)
+
+=item sv_catpv
+
+Concatenates the string onto the end of the string which is in the SV.
+Handles 'get' magic, but not 'set' magic. See C<sv_catpv_mg>.
+
+ void sv_catpv(SV* sv, const char* ptr)
+
+=item sv_catpvf
+
+Processes its arguments like C<sprintf> and appends the formatted output
+to an SV. Handles 'get' magic, but not 'set' magic. C<SvSETMAGIC()> must
+typically be called after calling this function to handle 'set' magic.
+
+ void sv_catpvf(SV* sv, const char* pat, ...)
+
+=item sv_catpvf_mg
+
+Like C<sv_catpvf>, but also handles 'set' magic.
+
+ void sv_catpvf_mg(SV *sv, const char* pat, ...)
+
+=item sv_catpvn
+
+Concatenates the string onto the end of the string which is in the SV. The
+C<len> indicates number of bytes to copy. Handles 'get' magic, but not
+'set' magic. See C<sv_catpvn_mg>.
+
+ void sv_catpvn(SV* sv, const char* ptr, STRLEN len)
+
+=item sv_catpvn_mg
+
+Like C<sv_catpvn>, but also handles 'set' magic.
+
+ void sv_catpvn_mg(SV *sv, const char *ptr, STRLEN len)
+
+=item sv_catpv_mg
+
+Like C<sv_catpv>, but also handles 'set' magic.
+
+ void sv_catpv_mg(SV *sv, const char *ptr)
+
+=item sv_catsv
+
+Concatenates the string from SV C<ssv> onto the end of the string in SV
+C<dsv>. Handles 'get' magic, but not 'set' magic. See C<sv_catsv_mg>.
+
+ void sv_catsv(SV* dsv, SV* ssv)
+
+=item sv_catsv_mg
+
+Like C<sv_catsv>, but also handles 'set' magic.
+
+ void sv_catsv_mg(SV *dstr, SV *sstr)
+
+=item sv_chop
+
+Efficient removal of characters from the beginning of the string buffer.
+SvPOK(sv) must be true and the C<ptr> must be a pointer to somewhere inside
+the string buffer. The C<ptr> becomes the first character of the adjusted
+string.
+
+ void sv_chop(SV* sv, char* ptr)
+
+=item sv_cmp
+
+Compares the strings in two SVs. Returns -1, 0, or 1 indicating whether the
+string in C<sv1> is less than, equal to, or greater than the string in
+C<sv2>.
+
+ I32 sv_cmp(SV* sv1, SV* sv2)
+
+=item sv_dec
+
+Auto-decrement of the value in the SV.
+
+ void sv_dec(SV* sv)
+
+=item sv_derived_from
+
+Returns a boolean indicating whether the SV is derived from the specified
+class. This is the function that implements C<UNIVERSAL::isa>. It works
+for class names as well as for objects.
+
+ bool sv_derived_from(SV* sv, const char* name)
+
+=item sv_eq
+
+Returns a boolean indicating whether the strings in the two SVs are
+identical.
+
+ I32 sv_eq(SV* sv1, SV* sv2)
+
+=item sv_grow
+
+Expands the character buffer in the SV. This will use C<sv_unref> and will
+upgrade the SV to C<SVt_PV>. Returns a pointer to the character buffer.
+Use C<SvGROW>.
+
+ char* sv_grow(SV* sv, STRLEN newlen)
+
+=item sv_inc
+
+Auto-increment of the value in the SV.
+
+ void sv_inc(SV* sv)
+
+=item sv_insert
+
+Inserts a string at the specified offset/length within the SV. Similar to
+the Perl substr() function.
+
+ void sv_insert(SV* bigsv, STRLEN offset, STRLEN len, char* little, STRLEN littlelen)
+
+=item sv_isa
+
+Returns a boolean indicating whether the SV is blessed into the specified
+class. This does not check for subtypes; use C<sv_derived_from> to verify
+an inheritance relationship.
+
+ int sv_isa(SV* sv, const char* name)
+
+=item sv_isobject
+
+Returns a boolean indicating whether the SV is an RV pointing to a blessed
+object. If the SV is not an RV, or if the object is not blessed, then this
+will return false.
+
+ int sv_isobject(SV* sv)
+
+=item sv_len
+
+Returns the length of the string in the SV. See also C<SvCUR>.
+
+ STRLEN sv_len(SV* sv)
+
+=item sv_magic
+
+Adds magic to an SV.
+
+ void sv_magic(SV* sv, SV* obj, int how, const char* name, I32 namlen)
+
+=item sv_mortalcopy
+
+Creates a new SV which is a copy of the original SV. The new SV is marked
+as mortal.
+
+ SV* sv_mortalcopy(SV* oldsv)
+
+=item sv_newmortal
+
+Creates a new SV which is mortal. The reference count of the SV is set to 1.
+
+ SV* sv_newmortal()
+
+=item sv_setiv
+
+Copies an integer into the given SV. Does not handle 'set' magic. See
+C<sv_setiv_mg>.
+
+ void sv_setiv(SV* sv, IV num)
+
+=item sv_setiv_mg
+
+Like C<sv_setiv>, but also handles 'set' magic.
+
+ void sv_setiv_mg(SV *sv, IV i)
+
+=item sv_setnv
+
+Copies a double into the given SV. Does not handle 'set' magic. See
+C<sv_setnv_mg>.
+
+ void sv_setnv(SV* sv, NV num)
+
+=item sv_setnv_mg
+
+Like C<sv_setnv>, but also handles 'set' magic.
+
+ void sv_setnv_mg(SV *sv, NV num)
+
+=item sv_setpv
+
+Copies a string into an SV. The string must be null-terminated. Does not
+handle 'set' magic. See C<sv_setpv_mg>.
+
+ void sv_setpv(SV* sv, const char* ptr)
+
+=item sv_setpvf
+
+Processes its arguments like C<sprintf> and sets an SV to the formatted
+output. Does not handle 'set' magic. See C<sv_setpvf_mg>.
+
+ void sv_setpvf(SV* sv, const char* pat, ...)
+
+=item sv_setpvf_mg
+
+Like C<sv_setpvf>, but also handles 'set' magic.
+
+ void sv_setpvf_mg(SV *sv, const char* pat, ...)
+
+=item sv_setpviv
+
+Copies an integer into the given SV, also updating its string value.
+Does not handle 'set' magic. See C<sv_setpviv_mg>.
+
+ void sv_setpviv(SV* sv, IV num)
+
+=item sv_setpviv_mg
+
+Like C<sv_setpviv>, but also handles 'set' magic.
+
+ void sv_setpviv_mg(SV *sv, IV iv)
+
+=item sv_setpvn
+
+Copies a string into an SV. The C<len> parameter indicates the number of
+bytes to be copied. Does not handle 'set' magic. See C<sv_setpvn_mg>.
+
+ void sv_setpvn(SV* sv, const char* ptr, STRLEN len)
+
+=item sv_setpvn_mg
+
+Like C<sv_setpvn>, but also handles 'set' magic.
+
+ void sv_setpvn_mg(SV *sv, const char *ptr, STRLEN len)
+
+=item sv_setpv_mg
+
+Like C<sv_setpv>, but also handles 'set' magic.
+
+ void sv_setpv_mg(SV *sv, const char *ptr)
+
+=item sv_setref_iv
+
+Copies an integer into a new SV, optionally blessing the SV. The C<rv>
+argument will be upgraded to an RV. That RV will be modified to point to
+the new SV. The C<classname> argument indicates the package for the
+blessing. Set C<classname> to C<Nullch> to avoid the blessing. The new SV
+will be returned and will have a reference count of 1.
+
+ SV* sv_setref_iv(SV* rv, const char* classname, IV iv)
+
+=item sv_setref_nv
+
+Copies a double into a new SV, optionally blessing the SV. The C<rv>
+argument will be upgraded to an RV. That RV will be modified to point to
+the new SV. The C<classname> argument indicates the package for the
+blessing. Set C<classname> to C<Nullch> to avoid the blessing. The new SV
+will be returned and will have a reference count of 1.
+
+ SV* sv_setref_nv(SV* rv, const char* classname, NV nv)
+
+=item sv_setref_pv
+
+Copies a pointer into a new SV, optionally blessing the SV. The C<rv>
+argument will be upgraded to an RV. That RV will be modified to point to
+the new SV. If the C<pv> argument is NULL then C<PL_sv_undef> will be placed
+into the SV. The C<classname> argument indicates the package for the
+blessing. Set C<classname> to C<Nullch> to avoid the blessing. The new SV
+will be returned and will have a reference count of 1.
+
+Do not use with other Perl types such as HV, AV, SV, CV, because those
+objects will become corrupted by the pointer copy process.
+
+Note that C<sv_setref_pvn> copies the string while this copies the pointer.
+
+ SV* sv_setref_pv(SV* rv, const char* classname, void* pv)
+
+=item sv_setref_pvn
+
+Copies a string into a new SV, optionally blessing the SV. The length of the
+string must be specified with C<n>. The C<rv> argument will be upgraded to
+an RV. That RV will be modified to point to the new SV. The C<classname>
+argument indicates the package for the blessing. Set C<classname> to
+C<Nullch> to avoid the blessing. The new SV will be returned and will have
+a reference count of 1.
+
+Note that C<sv_setref_pv> copies the pointer while this copies the string.
+
+ SV* sv_setref_pvn(SV* rv, const char* classname, char* pv, STRLEN n)
+
+=item sv_setsv
+
+Copies the contents of the source SV C<ssv> into the destination SV C<dsv>.
+The source SV may be destroyed if it is mortal. Does not handle 'set'
+magic. See the macro forms C<SvSetSV>, C<SvSetSV_nosteal> and
+C<sv_setsv_mg>.
+
+ void sv_setsv(SV* dsv, SV* ssv)
+
+=item sv_setsv_mg
+
+Like C<sv_setsv>, but also handles 'set' magic.
+
+ void sv_setsv_mg(SV *dstr, SV *sstr)
+
+=item sv_setuv
+
+Copies an unsigned integer into the given SV. Does not handle 'set' magic.
+See C<sv_setuv_mg>.
+
+ void sv_setuv(SV* sv, UV num)
+
+=item sv_setuv_mg
+
+Like C<sv_setuv>, but also handles 'set' magic.
+
+ void sv_setuv_mg(SV *sv, UV u)
+
+=item sv_unref
+
+Unsets the RV status of the SV, and decrements the reference count of
+whatever was being referenced by the RV. This can almost be thought of
+as a reversal of C<newSVrv>. See C<SvROK_off>.
+
+ void sv_unref(SV* sv)
+
+=item sv_upgrade
+
+Upgrade an SV to a more complex form. Use C<SvUPGRADE>. See
+C<svtype>.
+
+ bool sv_upgrade(SV* sv, U32 mt)
+
+=item sv_usepvn
+
+Tells an SV to use C<ptr> to find its string value. Normally the string is
+stored inside the SV but sv_usepvn allows the SV to use an outside string.
+The C<ptr> should point to memory that was allocated by C<malloc>. The
+string length, C<len>, must be supplied. This function will realloc the
+memory pointed to by C<ptr>, so that pointer should not be freed or used by
+the programmer after giving it to sv_usepvn. Does not handle 'set' magic.
+See C<sv_usepvn_mg>.
+
+ void sv_usepvn(SV* sv, char* ptr, STRLEN len)
+
+=item sv_usepvn_mg
+
+Like C<sv_usepvn>, but also handles 'set' magic.
+
+ void sv_usepvn_mg(SV *sv, char *ptr, STRLEN len)
+
+=item sv_vcatpvfn
+
+Processes its arguments like C<vsprintf> and appends the formatted output
+to an SV. Uses an array of SVs if the C style variable argument list is
+missing (NULL). When running with taint checks enabled, indicates via
+C<maybe_tainted> if results are untrustworthy (often due to the use of
+locales).
+
+ void sv_vcatpvfn(SV* sv, const char* pat, STRLEN patlen, va_list* args, SV** svargs, I32 svmax, bool *maybe_tainted)
+
+=item sv_vsetpvfn
+
+Works like C<vcatpvfn> but copies the text into the SV instead of
+appending it.
+
+ void sv_vsetpvfn(SV* sv, const char* pat, STRLEN patlen, va_list* args, SV** svargs, I32 svmax, bool *maybe_tainted)
+
+=item THIS
+
+Variable which is setup by C<xsubpp> to designate the object in a C++
+XSUB. This is always the proper type for the C++ object. See C<CLASS> and
+L<perlxs/"Using XS With C++">.
+
+ (whatever) THIS
+
+=item toLOWER
+
+Converts the specified character to lowercase.
+
+ char toLOWER(char ch)
+
+=item toUPPER
+
+Converts the specified character to uppercase.
+
+ char toUPPER(char ch)
+
+=item warn
+
+This is the XSUB-writer's interface to Perl's C<warn> function. Use this
+function the same way you use the C C<printf> function. See
+C<croak>.
+
+ void warn(const char* pat, ...)
+
+=item XPUSHi
+
+Push an integer onto the stack, extending the stack if necessary. Handles
+'set' magic. See C<PUSHi>.
+
+ void XPUSHi(IV iv)
+
+=item XPUSHn
+
+Push a double onto the stack, extending the stack if necessary. Handles
+'set' magic. See C<PUSHn>.
+
+ void XPUSHn(NV nv)
+
+=item XPUSHp
+
+Push a string onto the stack, extending the stack if necessary. The C<len>
+indicates the length of the string. Handles 'set' magic. See
+C<PUSHp>.
+
+ void XPUSHp(char* str, STRLEN len)
+
+=item XPUSHs
+
+Push an SV onto the stack, extending the stack if necessary. Does not
+handle 'set' magic. See C<PUSHs>.
+
+ void XPUSHs(SV* sv)
+
+=item XPUSHu
+
+Push an unsigned integer onto the stack, extending the stack if necessary.
+See C<PUSHu>.
+
+ void XPUSHu(UV uv)
+
+=item XS
+
+Macro to declare an XSUB and its C parameter list. This is handled by
+C<xsubpp>.
+
+=item XSRETURN
+
+Return from XSUB, indicating number of items on the stack. This is usually
+handled by C<xsubpp>.
+
+ void XSRETURN(int nitems)
+
+=item XSRETURN_EMPTY
+
+Return an empty list from an XSUB immediately.
+
+ XSRETURN_EMPTY;
+
+=item XSRETURN_IV
+
+Return an integer from an XSUB immediately. Uses C<XST_mIV>.
+
+ void XSRETURN_IV(IV iv)
+
+=item XSRETURN_NO
+
+Return C<&PL_sv_no> from an XSUB immediately. Uses C<XST_mNO>.
+
+ XSRETURN_NO;
+
+=item XSRETURN_NV
+
+Return an double from an XSUB immediately. Uses C<XST_mNV>.
+
+ void XSRETURN_NV(NV nv)
+
+=item XSRETURN_PV
+
+Return a copy of a string from an XSUB immediately. Uses C<XST_mPV>.
+
+ void XSRETURN_PV(char* str)
+
+=item XSRETURN_UNDEF
+
+Return C<&PL_sv_undef> from an XSUB immediately. Uses C<XST_mUNDEF>.
+
+ XSRETURN_UNDEF;
+
+=item XSRETURN_YES
+
+Return C<&PL_sv_yes> from an XSUB immediately. Uses C<XST_mYES>.
+
+ XSRETURN_YES;
+
+=item XST_mIV
+
+Place an integer into the specified position C<pos> on the stack. The
+value is stored in a new mortal SV.
+
+ void XST_mIV(int pos, IV iv)
+
+=item XST_mNO
+
+Place C<&PL_sv_no> into the specified position C<pos> on the
+stack.
+
+ void XST_mNO(int pos)
+
+=item XST_mNV
+
+Place a double into the specified position C<pos> on the stack. The value
+is stored in a new mortal SV.
+
+ void XST_mNV(int pos, NV nv)
+
+=item XST_mPV
+
+Place a copy of a string into the specified position C<pos> on the stack.
+The value is stored in a new mortal SV.
+
+ void XST_mPV(int pos, char* str)
+
+=item XST_mUNDEF
+
+Place C<&PL_sv_undef> into the specified position C<pos> on the
+stack.
+
+ void XST_mUNDEF(int pos)
+
+=item XST_mYES
+
+Place C<&PL_sv_yes> into the specified position C<pos> on the
+stack.
+
+ void XST_mYES(int pos)
+
+=item XS_VERSION
+
+The version identifier for an XS module. This is usually
+handled automatically by C<ExtUtils::MakeMaker>. See C<XS_VERSION_BOOTCHECK>.
+
+=item XS_VERSION_BOOTCHECK
+
+Macro to verify that a PM module's $VERSION variable matches the XS
+module's C<XS_VERSION> variable. This is usually handled automatically by
+C<xsubpp>. See L<perlxs/"The VERSIONCHECK: Keyword">.
+
+ XS_VERSION_BOOTCHECK;
+
+=item Zero
+
+The XSUB-writer's interface to the C C<memzero> function. The C<dest> is the
+destination, C<nitems> is the number of items, and C<type> is the type.
+
+ void Zero(void* dest, int nitems, type)
+
+=back
+
+=head1 AUTHORS
+
+Until May 1997, this document was maintained by Jeff Okamoto
+<okamoto@corp.hp.com>. It is now maintained as part of Perl itself.
+
+With lots of help and suggestions from Dean Roehrich, Malcolm Beattie,
+Andreas Koenig, Paul Hudson, Ilya Zakharevich, Paul Marquess, Neil
+Bowers, Matthew Green, Tim Bunce, Spider Boardman, Ulrich Pfeifer,
+Stephen McCamant, and Gurusamy Sarathy.
+
+API Listing originally by Dean Roehrich <roehrich@cray.com>.
+
+Updated to be autogenerated from comments in the source by Benjamin Stuhl.
+
+=head1 SEE ALSO
+
+perlguts(1), perlxs(1), perlxstut(1), perlintern(1)
+
diff --git a/pod/perldelta.pod b/pod/perldelta.pod
index f61ee697c1..1339b04b46 100644
--- a/pod/perldelta.pod
+++ b/pod/perldelta.pod
@@ -1523,6 +1523,10 @@ change#4232
=over 4
+=item perlapi.pod
+
+The official list of public Perl API functions.
+
=item perlcompile.pod
An introduction to using the Perl Compiler suite.
@@ -1535,6 +1539,11 @@ An introduction to writing Perl source filters.
Some guidelines for hacking the Perl source code.
+=item perlintern.pod
+
+A list of internal functions in the Perl source code.
+(List is currently empty.)
+
=item perlopentut.pod
A tutorial on using open() effectively.
diff --git a/pod/perlguts.pod b/pod/perlguts.pod
index a8d820ef2e..eec6edca8d 100644
--- a/pod/perlguts.pod
+++ b/pod/perlguts.pod
@@ -1,12 +1,13 @@
=head1 NAME
-perlguts - Perl's Internal Functions
+perlguts - Introduction to the Perl API
=head1 DESCRIPTION
-This document attempts to describe some of the internal functions of the
-Perl executable. It is far from complete and probably contains many errors.
-Please refer any questions or comments to the author below.
+This document attempts to describe how to use the Perl API, as well as containing
+some info on the basic workings of the Perl core. It is far from complete
+and probably contains many errors. Please refer any questions or
+comments to the author below.
=head1 Variables
@@ -22,11 +23,13 @@ Each typedef has specific routines that manipulate the various data types.
=head2 What is an "IV"?
-Perl uses a special typedef IV which is a simple integer type that is
+Perl uses a special typedef IV which is a simple signed integer type that is
guaranteed to be large enough to hold a pointer (as well as an integer).
+Additionally, there is the UV, which is simply an unsigned IV.
Perl also uses two special typedefs, I32 and I16, which will always be at
-least 32-bits and 16-bits long, respectively.
+least 32-bits and 16-bits long, respectively. (Again, there are U32 and U16,
+as well.)
=head2 Working with SVs
@@ -87,11 +90,12 @@ in an SV to a C function or system call.
To access the actual value that an SV points to, you can use the macros:
SvIV(SV*)
+ SvUV(SV*)
SvNV(SV*)
SvPV(SV*, STRLEN len)
SvPV_nolen(SV*)
-which will automatically coerce the actual scalar type into an IV, double,
+which will automatically coerce the actual scalar type into an IV, UV, double,
or string.
In the C<SvPV> macro, the length of the string returned is placed into the
@@ -817,6 +821,8 @@ to an C<mg_type> of '\0') contains:
Thus, when an SV is determined to be magical and of type '\0', if a get
operation is being performed, the routine C<magic_get> is called. All
the various routines for the various magical types begin with C<magic_>.
+NOTE: the magic routines are not considered part of the Perl API, and may
+not be exported by the Perl library.
The current kinds of Magic Virtual Tables are:
@@ -1218,12 +1224,12 @@ For more information, consult L<perlxs> and L<perlxstut>.
There are four routines that can be used to call a Perl subroutine from
within a C program. These four are:
- I32 perl_call_sv(SV*, I32);
- I32 perl_call_pv(const char*, I32);
- I32 perl_call_method(const char*, I32);
- I32 perl_call_argv(const char*, I32, register char**);
+ I32 call_sv(SV*, I32);
+ I32 call_pv(const char*, I32);
+ I32 call_method(const char*, I32);
+ I32 call_argv(const char*, I32, register char**);
-The routine most often used is C<perl_call_sv>. The C<SV*> argument
+The routine most often used is C<call_sv>. The C<SV*> argument
contains either the name of the Perl subroutine to be called, or a
reference to the subroutine. The second argument consists of flags
that control the context in which the subroutine is called, whether
@@ -1233,7 +1239,11 @@ trapped, and how to treat return values.
All four routines return the number of arguments that the subroutine returned
on the Perl stack.
-When using any of these routines (except C<perl_call_argv>), the programmer
+These routines used to be called C<perl_call_sv> etc., before Perl v5.6.0,
+but those names are now deprecated; macros of the same name are provided for
+compatibility.
+
+When using any of these routines (except C<call_argv>), the programmer
must manipulate the Perl stack. These include the following macros and
functions:
@@ -1512,7 +1522,7 @@ additional complications for conditionals). These optimizations are
done in the subroutine peep(). Optimizations performed at this stage
are subject to the same restrictions as in the pass 2.
-=head1 The Perl Internal API
+=head1 How multiple interpreters and concurrency are supported
WARNING: This information is subject to radical changes prior to
the Perl 5.6 release. Use with caution.
@@ -1545,13 +1555,20 @@ the Perl source (as it does in so many other situations) makes heavy
use of macros and subroutine naming conventions.
First problem: deciding which functions will be public API functions and
-which will be private. Those functions whose names begin C<Perl_> are
-public, and those whose names begin C<S_> are private (think "S" for
-"secret" or "static").
-
-Some functions have no prefix (e.g., restore_rsfp in toke.c). These
-are not parts of the object or pseudo-structure because you need to
-pass pointers to them to other subroutines.
+which will be private. All functions whose names begin C<S_> are private
+(think "S" for "secret" or "static"). All other functions begin with
+"Perl_", but just because a function begins with "Perl_" does not mean it is
+part of the API. The easiest way to be B<sure> a function is part of the API
+is to find its entry in L<perlapi>. If it exists in L<perlapi>, it's part
+of the API. If it doesn't, and you think it should be (i.e., you need it fo
+r your extension), send mail via L<perlbug> explaining why you think it
+should be.
+
+(L<perlapi> itself is generated by embed.pl, a Perl script that generates
+significant portions of the Perl source code. It has a list of almost
+all the functions defined by the Perl interpreter along with their calling
+characteristics and some flags. Functions that are part of the public API
+are marked with an 'A' in its flags.)
Second problem: there must be a syntax so that the same subroutine
declarations and calls can pass a structure as their first argument,
@@ -1766,2107 +1783,11 @@ The Perl engine/interpreter and the host are orthogonal entities.
There could be one or more interpreters in a process, and one or
more "hosts", with free association between them.
-=head1 API LISTING
-
-This is a listing of functions, macros, flags, and variables that may be
-used by extension writers. The interfaces of any functions that are not
-listed here are subject to change without notice. For this reason,
-blindly using functions listed in proto.h is to be avoided when writing
-extensions.
-
-Note that all Perl API global variables must be referenced with the C<PL_>
-prefix. Some macros are provided for compatibility with the older,
-unadorned names, but this support may be disabled in a future release.
-
-The sort order of the listing is case insensitive, with any
-occurrences of '_' ignored for the purpose of sorting.
-
-=over 8
-
-=item av_clear
-
-Clears an array, making it empty. Does not free the memory used by the
-array itself.
-
- void av_clear (AV* ar)
-
-=item av_extend
-
-Pre-extend an array. The C<key> is the index to which the array should be
-extended.
-
- void av_extend (AV* ar, I32 key)
-
-=item av_fetch
-
-Returns the SV at the specified index in the array. The C<key> is the
-index. If C<lval> is set then the fetch will be part of a store. Check
-that the return value is non-null before dereferencing it to a C<SV*>.
-
-See L<Understanding the Magic of Tied Hashes and Arrays> for more
-information on how to use this function on tied arrays.
-
- SV** av_fetch (AV* ar, I32 key, I32 lval)
-
-=item AvFILL
-
-Same as C<av_len()>. Deprecated, use C<av_len()> instead.
-
-=item av_len
-
-Returns the highest index in the array. Returns -1 if the array is empty.
-
- I32 av_len (AV* ar)
-
-=item av_make
-
-Creates a new AV and populates it with a list of SVs. The SVs are copied
-into the array, so they may be freed after the call to av_make. The new AV
-will have a reference count of 1.
-
- AV* av_make (I32 size, SV** svp)
-
-=item av_pop
-
-Pops an SV off the end of the array. Returns C<&PL_sv_undef> if the array is
-empty.
-
- SV* av_pop (AV* ar)
-
-=item av_push
-
-Pushes an SV onto the end of the array. The array will grow automatically
-to accommodate the addition.
-
- void av_push (AV* ar, SV* val)
-
-=item av_shift
-
-Shifts an SV off the beginning of the array.
-
- SV* av_shift (AV* ar)
-
-=item av_store
-
-Stores an SV in an array. The array index is specified as C<key>. The
-return value will be NULL if the operation failed or if the value did not
-need to be actually stored within the array (as in the case of tied arrays).
-Otherwise it can be dereferenced to get the original C<SV*>. Note that the
-caller is responsible for suitably incrementing the reference count of C<val>
-before the call, and decrementing it if the function returned NULL.
-
-See L<Understanding the Magic of Tied Hashes and Arrays> for more
-information on how to use this function on tied arrays.
-
- SV** av_store (AV* ar, I32 key, SV* val)
-
-=item av_undef
-
-Undefines the array. Frees the memory used by the array itself.
-
- void av_undef (AV* ar)
-
-=item av_unshift
-
-Unshift the given number of C<undef> values onto the beginning of the
-array. The array will grow automatically to accommodate the addition.
-You must then use C<av_store> to assign values to these new elements.
-
- void av_unshift (AV* ar, I32 num)
-
-=item CLASS
-
-Variable which is setup by C<xsubpp> to indicate the class name for a C++ XS
-constructor. This is always a C<char*>. See C<THIS> and
-L<perlxs/"Using XS With C++">.
-
-=item Copy
-
-The XSUB-writer's interface to the C C<memcpy> function. The C<s> is the
-source, C<d> is the destination, C<n> is the number of items, and C<t> is
-the type. May fail on overlapping copies. See also C<Move>.
-
- void Copy( s, d, n, t )
-
-=item croak
-
-This is the XSUB-writer's interface to Perl's C<die> function. Use this
-function the same way you use the C C<printf> function. See C<warn>.
-
-=item CvSTASH
-
-Returns the stash of the CV.
-
- HV* CvSTASH( SV* sv )
-
-=item PL_DBsingle
-
-When Perl is run in debugging mode, with the B<-d> switch, this SV is a
-boolean which indicates whether subs are being single-stepped.
-Single-stepping is automatically turned on after every step. This is the C
-variable which corresponds to Perl's $DB::single variable. See C<PL_DBsub>.
-
-=item PL_DBsub
-
-When Perl is run in debugging mode, with the B<-d> switch, this GV contains
-the SV which holds the name of the sub being debugged. This is the C
-variable which corresponds to Perl's $DB::sub variable. See C<PL_DBsingle>.
-The sub name can be found by
-
- SvPV( GvSV( PL_DBsub ), len )
-
-=item PL_DBtrace
-
-Trace variable used when Perl is run in debugging mode, with the B<-d>
-switch. This is the C variable which corresponds to Perl's $DB::trace
-variable. See C<PL_DBsingle>.
-
-=item dMARK
-
-Declare a stack marker variable, C<mark>, for the XSUB. See C<MARK> and
-C<dORIGMARK>.
-
-=item dORIGMARK
-
-Saves the original stack mark for the XSUB. See C<ORIGMARK>.
-
-=item PL_dowarn
-
-The C variable which corresponds to Perl's $^W warning variable.
-
-=item dSP
-
-Declares a local copy of perl's stack pointer for the XSUB, available via
-the C<SP> macro. See C<SP>.
-
-=item dXSARGS
-
-Sets up stack and mark pointers for an XSUB, calling dSP and dMARK. This is
-usually handled automatically by C<xsubpp>. Declares the C<items> variable
-to indicate the number of items on the stack.
-
-=item dXSI32
-
-Sets up the C<ix> variable for an XSUB which has aliases. This is usually
-handled automatically by C<xsubpp>.
-
-=item do_binmode
-
-Switches filehandle to binmode. C<iotype> is what C<IoTYPE(io)> would
-contain.
-
- do_binmode(fp, iotype, TRUE);
-
-=item ENTER
-
-Opening bracket on a callback. See C<LEAVE> and L<perlcall>.
-
- ENTER;
-
-=item EXTEND
-
-Used to extend the argument stack for an XSUB's return values.
-
- EXTEND( sp, int x )
-
-=item fbm_compile
-
-Analyses the string in order to make fast searches on it using fbm_instr() --
-the Boyer-Moore algorithm.
-
- void fbm_compile(SV* sv, U32 flags)
-
-=item fbm_instr
-
-Returns the location of the SV in the string delimited by C<str> and
-C<strend>. It returns C<Nullch> if the string can't be found. The
-C<sv> does not have to be fbm_compiled, but the search will not be as
-fast then.
-
- char* fbm_instr(char *str, char *strend, SV *sv, U32 flags)
-
-=item FREETMPS
-
-Closing bracket for temporaries on a callback. See C<SAVETMPS> and
-L<perlcall>.
-
- FREETMPS;
-
-=item G_ARRAY
-
-Used to indicate array context. See C<GIMME_V>, C<GIMME> and L<perlcall>.
-
-=item G_DISCARD
-
-Indicates that arguments returned from a callback should be discarded. See
-L<perlcall>.
-
-=item G_EVAL
-
-Used to force a Perl C<eval> wrapper around a callback. See L<perlcall>.
-
-=item GIMME
-
-A backward-compatible version of C<GIMME_V> which can only return
-C<G_SCALAR> or C<G_ARRAY>; in a void context, it returns C<G_SCALAR>.
-
-=item GIMME_V
-
-The XSUB-writer's equivalent to Perl's C<wantarray>. Returns
-C<G_VOID>, C<G_SCALAR> or C<G_ARRAY> for void, scalar or array
-context, respectively.
-
-=item G_NOARGS
-
-Indicates that no arguments are being sent to a callback. See L<perlcall>.
-
-=item G_SCALAR
-
-Used to indicate scalar context. See C<GIMME_V>, C<GIMME>, and L<perlcall>.
-
-=item gv_fetchmeth
-
-Returns the glob with the given C<name> and a defined subroutine or
-C<NULL>. The glob lives in the given C<stash>, or in the stashes
-accessible via @ISA and @UNIVERSAL.
-
-The argument C<level> should be either 0 or -1. If C<level==0>, as a
-side-effect creates a glob with the given C<name> in the given
-C<stash> which in the case of success contains an alias for the
-subroutine, and sets up caching info for this glob. Similarly for all
-the searched stashes.
-
-This function grants C<"SUPER"> token as a postfix of the stash name.
-
-The GV returned from C<gv_fetchmeth> may be a method cache entry,
-which is not visible to Perl code. So when calling C<perl_call_sv>,
-you should not use the GV directly; instead, you should use the
-method's CV, which can be obtained from the GV with the C<GvCV> macro.
-
- GV* gv_fetchmeth (HV* stash, const char* name, STRLEN len, I32 level)
-
-=item gv_fetchmethod
-
-=item gv_fetchmethod_autoload
-
-Returns the glob which contains the subroutine to call to invoke the
-method on the C<stash>. In fact in the presence of autoloading this may
-be the glob for "AUTOLOAD". In this case the corresponding variable
-$AUTOLOAD is already setup.
-
-The third parameter of C<gv_fetchmethod_autoload> determines whether AUTOLOAD
-lookup is performed if the given method is not present: non-zero means
-yes, look for AUTOLOAD; zero means no, don't look for AUTOLOAD. Calling
-C<gv_fetchmethod> is equivalent to calling C<gv_fetchmethod_autoload> with a
-non-zero C<autoload> parameter.
-
-These functions grant C<"SUPER"> token as a prefix of the method name.
-
-Note that if you want to keep the returned glob for a long time, you
-need to check for it being "AUTOLOAD", since at the later time the call
-may load a different subroutine due to $AUTOLOAD changing its value.
-Use the glob created via a side effect to do this.
-
-These functions have the same side-effects and as C<gv_fetchmeth> with
-C<level==0>. C<name> should be writable if contains C<':'> or C<'\''>.
-The warning against passing the GV returned by C<gv_fetchmeth> to
-C<perl_call_sv> apply equally to these functions.
-
- GV* gv_fetchmethod (HV* stash, const char* name)
- GV* gv_fetchmethod_autoload (HV* stash, const char* name, I32 autoload)
-
-=item G_VOID
-
-Used to indicate void context. See C<GIMME_V> and L<perlcall>.
-
-=item gv_stashpv
-
-Returns a pointer to the stash for a specified package. If C<create> is set
-then the package will be created if it does not already exist. If C<create>
-is not set and the package does not exist then NULL is returned.
-
- HV* gv_stashpv (const char* name, I32 create)
-
-=item gv_stashsv
-
-Returns a pointer to the stash for a specified package. See C<gv_stashpv>.
-
- HV* gv_stashsv (SV* sv, I32 create)
-
-=item GvSV
-
-Return the SV from the GV.
-
-=item HEf_SVKEY
-
-This flag, used in the length slot of hash entries and magic
-structures, specifies the structure contains a C<SV*> pointer where a
-C<char*> pointer is to be expected. (For information only--not to be used).
-
-=item HeHASH
-
-Returns the computed hash stored in the hash entry.
-
- U32 HeHASH(HE* he)
-
-=item HeKEY
-
-Returns the actual pointer stored in the key slot of the hash entry.
-The pointer may be either C<char*> or C<SV*>, depending on the value of
-C<HeKLEN()>. Can be assigned to. The C<HePV()> or C<HeSVKEY()> macros
-are usually preferable for finding the value of a key.
-
- char* HeKEY(HE* he)
-
-=item HeKLEN
-
-If this is negative, and amounts to C<HEf_SVKEY>, it indicates the entry
-holds an C<SV*> key. Otherwise, holds the actual length of the key.
-Can be assigned to. The C<HePV()> macro is usually preferable for finding
-key lengths.
-
- int HeKLEN(HE* he)
-
-=item HePV
-
-Returns the key slot of the hash entry as a C<char*> value, doing any
-necessary dereferencing of possibly C<SV*> keys. The length of
-the string is placed in C<len> (this is a macro, so do I<not> use
-C<&len>). If you do not care about what the length of the key is,
-you may use the global variable C<PL_na>, though this is rather less
-efficient than using a local variable. Remember though, that hash
-keys in perl are free to contain embedded nulls, so using C<strlen()>
-or similar is not a good way to find the length of hash keys.
-This is very similar to the C<SvPV()> macro described elsewhere in
-this document.
-
- char* HePV(HE* he, STRLEN len)
-
-=item HeSVKEY
-
-Returns the key as an C<SV*>, or C<Nullsv> if the hash entry
-does not contain an C<SV*> key.
-
- HeSVKEY(HE* he)
-
-=item HeSVKEY_force
-
-Returns the key as an C<SV*>. Will create and return a temporary
-mortal C<SV*> if the hash entry contains only a C<char*> key.
-
- HeSVKEY_force(HE* he)
-
-=item HeSVKEY_set
-
-Sets the key to a given C<SV*>, taking care to set the appropriate flags
-to indicate the presence of an C<SV*> key, and returns the same C<SV*>.
-
- HeSVKEY_set(HE* he, SV* sv)
-
-=item HeVAL
-
-Returns the value slot (type C<SV*>) stored in the hash entry.
-
- HeVAL(HE* he)
-
-=item hv_clear
-
-Clears a hash, making it empty.
-
- void hv_clear (HV* tb)
-
-=item hv_delete
-
-Deletes a key/value pair in the hash. The value SV is removed from the hash
-and returned to the caller. The C<klen> is the length of the key. The
-C<flags> value will normally be zero; if set to G_DISCARD then NULL will be
-returned.
-
- SV* hv_delete (HV* tb, const char* key, U32 klen, I32 flags)
-
-=item hv_delete_ent
-
-Deletes a key/value pair in the hash. The value SV is removed from the hash
-and returned to the caller. The C<flags> value will normally be zero; if set
-to G_DISCARD then NULL will be returned. C<hash> can be a valid precomputed
-hash value, or 0 to ask for it to be computed.
-
- SV* hv_delete_ent (HV* tb, SV* key, I32 flags, U32 hash)
-
-=item hv_exists
-
-Returns a boolean indicating whether the specified hash key exists. The
-C<klen> is the length of the key.
-
- bool hv_exists (HV* tb, const char* key, U32 klen)
-
-=item hv_exists_ent
-
-Returns a boolean indicating whether the specified hash key exists. C<hash>
-can be a valid precomputed hash value, or 0 to ask for it to be computed.
-
- bool hv_exists_ent (HV* tb, SV* key, U32 hash)
-
-=item hv_fetch
-
-Returns the SV which corresponds to the specified key in the hash. The
-C<klen> is the length of the key. If C<lval> is set then the fetch will be
-part of a store. Check that the return value is non-null before
-dereferencing it to a C<SV*>.
-
-See L<Understanding the Magic of Tied Hashes and Arrays> for more
-information on how to use this function on tied hashes.
-
- SV** hv_fetch (HV* tb, const char* key, U32 klen, I32 lval)
-
-=item hv_fetch_ent
-
-Returns the hash entry which corresponds to the specified key in the hash.
-C<hash> must be a valid precomputed hash number for the given C<key>, or
-0 if you want the function to compute it. IF C<lval> is set then the
-fetch will be part of a store. Make sure the return value is non-null
-before accessing it. The return value when C<tb> is a tied hash
-is a pointer to a static location, so be sure to make a copy of the
-structure if you need to store it somewhere.
-
-See L<Understanding the Magic of Tied Hashes and Arrays> for more
-information on how to use this function on tied hashes.
-
- HE* hv_fetch_ent (HV* tb, SV* key, I32 lval, U32 hash)
-
-=item hv_iterinit
-
-Prepares a starting point to traverse a hash table.
-
- I32 hv_iterinit (HV* tb)
-
-Returns the number of keys in the hash (i.e. the same as C<HvKEYS(tb)>).
-The return value is currently only meaningful for hashes without tie
-magic.
-
-NOTE: Before version 5.004_65, C<hv_iterinit> used to return the number
-of hash buckets that happen to be in use. If you still need that
-esoteric value, you can get it through the macro C<HvFILL(tb)>.
-
-=item hv_iterkey
-
-Returns the key from the current position of the hash iterator. See
-C<hv_iterinit>.
-
- char* hv_iterkey (HE* entry, I32* retlen)
-
-=item hv_iterkeysv
-
-Returns the key as an C<SV*> from the current position of the hash
-iterator. The return value will always be a mortal copy of the
-key. Also see C<hv_iterinit>.
-
- SV* hv_iterkeysv (HE* entry)
-
-=item hv_iternext
-
-Returns entries from a hash iterator. See C<hv_iterinit>.
-
- HE* hv_iternext (HV* tb)
-
-=item hv_iternextsv
-
-Performs an C<hv_iternext>, C<hv_iterkey>, and C<hv_iterval> in one
-operation.
-
- SV* hv_iternextsv (HV* hv, char** key, I32* retlen)
-
-=item hv_iterval
-
-Returns the value from the current position of the hash iterator. See
-C<hv_iterkey>.
-
- SV* hv_iterval (HV* tb, HE* entry)
-
-=item hv_magic
-
-Adds magic to a hash. See C<sv_magic>.
-
- void hv_magic (HV* hv, GV* gv, int how)
-
-=item HvNAME
-
-Returns the package name of a stash. See C<SvSTASH>, C<CvSTASH>.
-
- char* HvNAME (HV* stash)
-
-=item hv_store
-
-Stores an SV in a hash. The hash key is specified as C<key> and C<klen> is
-the length of the key. The C<hash> parameter is the precomputed hash
-value; if it is zero then Perl will compute it. The return value will be
-NULL if the operation failed or if the value did not need to be actually
-stored within the hash (as in the case of tied hashes). Otherwise it can
-be dereferenced to get the original C<SV*>. Note that the caller is
-responsible for suitably incrementing the reference count of C<val>
-before the call, and decrementing it if the function returned NULL.
-
-See L<Understanding the Magic of Tied Hashes and Arrays> for more
-information on how to use this function on tied hashes.
-
- SV** hv_store (HV* tb, const char* key, U32 klen, SV* val, U32 hash)
-
-=item hv_store_ent
-
-Stores C<val> in a hash. The hash key is specified as C<key>. The C<hash>
-parameter is the precomputed hash value; if it is zero then Perl will
-compute it. The return value is the new hash entry so created. It will be
-NULL if the operation failed or if the value did not need to be actually
-stored within the hash (as in the case of tied hashes). Otherwise the
-contents of the return value can be accessed using the C<He???> macros
-described here. Note that the caller is responsible for suitably
-incrementing the reference count of C<val> before the call, and decrementing
-it if the function returned NULL.
-
-See L<Understanding the Magic of Tied Hashes and Arrays> for more
-information on how to use this function on tied hashes.
-
- HE* hv_store_ent (HV* tb, SV* key, SV* val, U32 hash)
-
-=item hv_undef
-
-Undefines the hash.
-
- void hv_undef (HV* tb)
-
-=item isALNUM
-
-Returns a boolean indicating whether the C C<char> is an ascii alphanumeric
-character or digit.
-
- int isALNUM (char c)
-
-=item isALPHA
-
-Returns a boolean indicating whether the C C<char> is an ascii alphabetic
-character.
-
- int isALPHA (char c)
-
-=item isDIGIT
-
-Returns a boolean indicating whether the C C<char> is an ascii digit.
-
- int isDIGIT (char c)
-
-=item isLOWER
-
-Returns a boolean indicating whether the C C<char> is a lowercase character.
-
- int isLOWER (char c)
-
-=item isSPACE
-
-Returns a boolean indicating whether the C C<char> is whitespace.
-
- int isSPACE (char c)
-
-=item isUPPER
-
-Returns a boolean indicating whether the C C<char> is an uppercase character.
-
- int isUPPER (char c)
-
-=item items
-
-Variable which is setup by C<xsubpp> to indicate the number of items on the
-stack. See L<perlxs/"Variable-length Parameter Lists">.
-
-=item ix
-
-Variable which is setup by C<xsubpp> to indicate which of an XSUB's aliases
-was used to invoke it. See L<perlxs/"The ALIAS: Keyword">.
-
-=item LEAVE
-
-Closing bracket on a callback. See C<ENTER> and L<perlcall>.
-
- LEAVE;
-
-=item looks_like_number
-
-Test if an the content of an SV looks like a number (or is a number).
-
- int looks_like_number(SV*)
-
-
-=item MARK
-
-Stack marker variable for the XSUB. See C<dMARK>.
-
-=item mg_clear
-
-Clear something magical that the SV represents. See C<sv_magic>.
-
- int mg_clear (SV* sv)
-
-=item mg_copy
-
-Copies the magic from one SV to another. See C<sv_magic>.
-
- int mg_copy (SV *, SV *, const char *, STRLEN)
-
-=item mg_find
-
-Finds the magic pointer for type matching the SV. See C<sv_magic>.
-
- MAGIC* mg_find (SV* sv, int type)
-
-=item mg_free
-
-Free any magic storage used by the SV. See C<sv_magic>.
-
- int mg_free (SV* sv)
-
-=item mg_get
-
-Do magic after a value is retrieved from the SV. See C<sv_magic>.
-
- int mg_get (SV* sv)
-
-=item mg_len
-
-Report on the SV's length. See C<sv_magic>.
-
- U32 mg_len (SV* sv)
-
-=item mg_magical
-
-Turns on the magical status of an SV. See C<sv_magic>.
-
- void mg_magical (SV* sv)
-
-=item mg_set
-
-Do magic after a value is assigned to the SV. See C<sv_magic>.
-
- int mg_set (SV* sv)
-
-=item modglobal
-
-C<modglobal> is a general purpose, interpreter global HV for use by
-extensions that need to keep information on a per-interpreter basis.
-In a pinch, it can also be used as a symbol table for extensions
-to share data among each other. It is a good idea to use keys
-prefixed by the package name of the extension that owns the data.
-
-=item Move
-
-The XSUB-writer's interface to the C C<memmove> function. The C<s> is the
-source, C<d> is the destination, C<n> is the number of items, and C<t> is
-the type. Can do overlapping moves. See also C<Copy>.
-
- void Move( s, d, n, t )
-
-=item PL_na
-
-A convenience variable which is typically used with C<SvPV> when one doesn't
-care about the length of the string. It is usually more efficient to
-either declare a local variable and use that instead or to use the C<SvPV_nolen>
-macro.
-
-=item New
-
-The XSUB-writer's interface to the C C<malloc> function.
-
- void* New( x, void *ptr, int size, type )
-
-=item newAV
-
-Creates a new AV. The reference count is set to 1.
-
- AV* newAV (void)
-
-=item Newc
-
-The XSUB-writer's interface to the C C<malloc> function, with cast.
-
- void* Newc( x, void *ptr, int size, type, cast )
-
-=item newCONSTSUB
-
-Creates a constant sub equivalent to Perl C<sub FOO () { 123 }>
-which is eligible for inlining at compile-time.
-
- void newCONSTSUB(HV* stash, char* name, SV* sv)
-
-=item newHV
-
-Creates a new HV. The reference count is set to 1.
-
- HV* newHV (void)
-
-=item newRV_inc
-
-Creates an RV wrapper for an SV. The reference count for the original SV is
-incremented.
-
- SV* newRV_inc (SV* ref)
-
-For historical reasons, "newRV" is a synonym for "newRV_inc".
-
-=item newRV_noinc
-
-Creates an RV wrapper for an SV. The reference count for the original
-SV is B<not> incremented.
-
- SV* newRV_noinc (SV* ref)
-
-=item NEWSV
-
-Creates a new SV. A non-zero C<len> parameter indicates the number of
-bytes of preallocated string space the SV should have. An extra byte
-for a tailing NUL is also reserved. (SvPOK is not set for the SV even
-if string space is allocated.) The reference count for the new SV is
-set to 1. C<id> is an integer id between 0 and 1299 (used to identify
-leaks).
-
- SV* NEWSV (int id, STRLEN len)
-
-=item newSViv
-
-Creates a new SV and copies an integer into it. The reference count for the
-SV is set to 1.
-
- SV* newSViv (IV i)
-
-=item newSVnv
-
-Creates a new SV and copies a double into it. The reference count for the
-SV is set to 1.
-
- SV* newSVnv (NV i)
-
-=item newSVpv
-
-Creates a new SV and copies a string into it. The reference count for the
-SV is set to 1. If C<len> is zero, Perl will compute the length using
-strlen(). For efficiency, consider using C<newSVpvn> instead.
-
- SV* newSVpv (const char* s, STRLEN len)
-
-=item newSVpvf
-
-Creates a new SV an initialize it with the string formatted like
-C<sprintf>.
-
- SV* newSVpvf(const char* pat, ...)
-
-=item newSVpvn
-
-Creates a new SV and copies a string into it. The reference count for the
-SV is set to 1. Note that if C<len> is zero, Perl will create a zero length
-string. You are responsible for ensuring that the source string is at least
-C<len> bytes long.
-
- SV* newSVpvn (const char* s, STRLEN len)
-
-=item newSVrv
-
-Creates a new SV for the RV, C<rv>, to point to. If C<rv> is not an RV then
-it will be upgraded to one. If C<classname> is non-null then the new SV will
-be blessed in the specified package. The new SV is returned and its
-reference count is 1.
-
- SV* newSVrv (SV* rv, const char* classname)
-
-=item newSVsv
-
-Creates a new SV which is an exact duplicate of the original SV.
-
- SV* newSVsv (SV* old)
-
-=item newXS
-
-Used by C<xsubpp> to hook up XSUBs as Perl subs.
-
-=item newXSproto
-
-Used by C<xsubpp> to hook up XSUBs as Perl subs. Adds Perl prototypes to
-the subs.
-
-=item Newz
-
-The XSUB-writer's interface to the C C<malloc> function. The allocated
-memory is zeroed with C<memzero>.
-
- void* Newz( x, void *ptr, int size, type )
-
-=item Nullav
-
-Null AV pointer.
-
-=item Nullch
-
-Null character pointer.
-
-=item Nullcv
-
-Null CV pointer.
-
-=item Nullhv
-
-Null HV pointer.
-
-=item Nullsv
-
-Null SV pointer.
-
-=item ORIGMARK
-
-The original stack mark for the XSUB. See C<dORIGMARK>.
-
-=item perl_alloc
-
-Allocates a new Perl interpreter. See L<perlembed>.
-
-=item perl_call_argv
-
-Performs a callback to the specified Perl sub. See L<perlcall>.
-
- I32 perl_call_argv (const char* subname, I32 flags, char** argv)
-
-=item perl_call_method
-
-Performs a callback to the specified Perl method. The blessed object must
-be on the stack. See L<perlcall>.
-
- I32 perl_call_method (const char* methname, I32 flags)
-
-=item perl_call_pv
-
-Performs a callback to the specified Perl sub. See L<perlcall>.
-
- I32 perl_call_pv (const char* subname, I32 flags)
-
-=item perl_call_sv
-
-Performs a callback to the Perl sub whose name is in the SV. See
-L<perlcall>.
-
- I32 perl_call_sv (SV* sv, I32 flags)
-
-=item perl_construct
-
-Initializes a new Perl interpreter. See L<perlembed>.
-
-=item perl_destruct
-
-Shuts down a Perl interpreter. See L<perlembed>.
-
-=item perl_eval_sv
-
-Tells Perl to C<eval> the string in the SV.
-
- I32 perl_eval_sv (SV* sv, I32 flags)
-
-=item perl_eval_pv
-
-Tells Perl to C<eval> the given string and return an SV* result.
-
- SV* perl_eval_pv (const char* p, I32 croak_on_error)
-
-=item perl_free
-
-Releases a Perl interpreter. See L<perlembed>.
-
-=item perl_get_av
-
-Returns the AV of the specified Perl array. If C<create> is set and the
-Perl variable does not exist then it will be created. If C<create> is not
-set and the variable does not exist then NULL is returned.
-
- AV* perl_get_av (const char* name, I32 create)
-
-=item perl_get_cv
-
-Returns the CV of the specified Perl subroutine. If C<create> is set and
-the Perl subroutine does not exist then it will be declared (which has
-the same effect as saying C<sub name;>). If C<create> is not
-set and the subroutine does not exist then NULL is returned.
-
- CV* perl_get_cv (const char* name, I32 create)
-
-=item perl_get_hv
-
-Returns the HV of the specified Perl hash. If C<create> is set and the Perl
-variable does not exist then it will be created. If C<create> is not
-set and the variable does not exist then NULL is returned.
-
- HV* perl_get_hv (const char* name, I32 create)
-
-=item perl_get_sv
-
-Returns the SV of the specified Perl scalar. If C<create> is set and the
-Perl variable does not exist then it will be created. If C<create> is not
-set and the variable does not exist then NULL is returned.
-
- SV* perl_get_sv (const char* name, I32 create)
-
-=item perl_parse
-
-Tells a Perl interpreter to parse a Perl script. See L<perlembed>.
-
-=item perl_require_pv
-
-Tells Perl to C<require> a module.
-
- void perl_require_pv (const char* pv)
-
-=item perl_run
-
-Tells a Perl interpreter to run. See L<perlembed>.
-
-=item POPi
-
-Pops an integer off the stack.
-
- int POPi()
-
-=item POPl
-
-Pops a long off the stack.
-
- long POPl()
-
-=item POPp
-
-Pops a string off the stack.
-
- char* POPp()
-
-=item POPn
-
-Pops a double off the stack.
-
- double POPn()
-
-=item POPs
-
-Pops an SV off the stack.
-
- SV* POPs()
-
-=item PUSHMARK
-
-Opening bracket for arguments on a callback. See C<PUTBACK> and L<perlcall>.
-
- PUSHMARK(p)
-
-=item PUSHi
-
-Push an integer onto the stack. The stack must have room for this element.
-Handles 'set' magic. See C<XPUSHi>.
-
- void PUSHi(int d)
-
-=item PUSHn
-
-Push a double onto the stack. The stack must have room for this element.
-Handles 'set' magic. See C<XPUSHn>.
-
- void PUSHn(double d)
-
-=item PUSHp
-
-Push a string onto the stack. The stack must have room for this element.
-The C<len> indicates the length of the string. Handles 'set' magic. See
-C<XPUSHp>.
-
- void PUSHp(char *c, int len )
-
-=item PUSHs
-
-Push an SV onto the stack. The stack must have room for this element. Does
-not handle 'set' magic. See C<XPUSHs>.
-
- void PUSHs(sv)
-
-=item PUSHu
-
-Push an unsigned integer onto the stack. The stack must have room for
-this element. See C<XPUSHu>.
-
- void PUSHu(unsigned int d)
-
-
-=item PUTBACK
-
-Closing bracket for XSUB arguments. This is usually handled by C<xsubpp>.
-See C<PUSHMARK> and L<perlcall> for other uses.
-
- PUTBACK;
-
-=item Renew
-
-The XSUB-writer's interface to the C C<realloc> function.
-
- void* Renew( void *ptr, int size, type )
-
-=item Renewc
-
-The XSUB-writer's interface to the C C<realloc> function, with cast.
-
- void* Renewc( void *ptr, int size, type, cast )
-
-=item RETVAL
-
-Variable which is setup by C<xsubpp> to hold the return value for an XSUB.
-This is always the proper type for the XSUB.
-See L<perlxs/"The RETVAL Variable">.
-
-=item safefree
-
-The XSUB-writer's interface to the C C<free> function.
-
-=item safemalloc
-
-The XSUB-writer's interface to the C C<malloc> function.
-
-=item saferealloc
-
-The XSUB-writer's interface to the C C<realloc> function.
-
-=item savepv
-
-Copy a string to a safe spot. This does not use an SV.
-
- char* savepv (const char* sv)
-
-=item savepvn
-
-Copy a string to a safe spot. The C<len> indicates number of bytes to
-copy. This does not use an SV.
-
- char* savepvn (const char* sv, I32 len)
-
-=item SAVETMPS
-
-Opening bracket for temporaries on a callback. See C<FREETMPS> and
-L<perlcall>.
-
- SAVETMPS;
-
-=item SP
-
-Stack pointer. This is usually handled by C<xsubpp>. See C<dSP> and
-C<SPAGAIN>.
-
-=item SPAGAIN
-
-Refetch the stack pointer. Used after a callback. See L<perlcall>.
-
- SPAGAIN;
-
-=item ST
-
-Used to access elements on the XSUB's stack.
-
- SV* ST(int x)
-
-=item strEQ
-
-Test two strings to see if they are equal. Returns true or false.
-
- int strEQ( char *s1, char *s2 )
-
-=item strGE
-
-Test two strings to see if the first, C<s1>, is greater than or equal to the
-second, C<s2>. Returns true or false.
-
- int strGE( char *s1, char *s2 )
-
-=item strGT
-
-Test two strings to see if the first, C<s1>, is greater than the second,
-C<s2>. Returns true or false.
-
- int strGT( char *s1, char *s2 )
-
-=item strLE
-
-Test two strings to see if the first, C<s1>, is less than or equal to the
-second, C<s2>. Returns true or false.
-
- int strLE( char *s1, char *s2 )
-
-=item strLT
-
-Test two strings to see if the first, C<s1>, is less than the second,
-C<s2>. Returns true or false.
-
- int strLT( char *s1, char *s2 )
-
-=item strNE
-
-Test two strings to see if they are different. Returns true or false.
-
- int strNE( char *s1, char *s2 )
-
-=item strnEQ
-
-Test two strings to see if they are equal. The C<len> parameter indicates
-the number of bytes to compare. Returns true or false.
-(A wrapper for C<strncmp>).
-
- int strnEQ( const char *s1, const char *s2, size_t len )
-
-=item strnNE
-
-Test two strings to see if they are different. The C<len> parameter
-indicates the number of bytes to compare. Returns true or false.
-(A wrapper for C<strncmp>).
-
- int strnNE( const char *s1, const char *s2, size_t len )
-
-=item sv_2mortal
-
-Marks an SV as mortal. The SV will be destroyed when the current context
-ends.
-
- SV* sv_2mortal (SV* sv)
-
-=item sv_bless
-
-Blesses an SV into a specified package. The SV must be an RV. The package
-must be designated by its stash (see C<gv_stashpv()>). The reference count
-of the SV is unaffected.
-
- SV* sv_bless (SV* sv, HV* stash)
-
-=item sv_catpv
-
-Concatenates the string onto the end of the string which is in the SV.
-Handles 'get' magic, but not 'set' magic. See C<sv_catpv_mg>.
-
- void sv_catpv (SV* sv, const char* ptr)
-
-=item sv_catpv_mg
-
-Like C<sv_catpv>, but also handles 'set' magic.
-
- void sv_catpvn (SV* sv, const char* ptr)
-
-=item sv_catpvn
-
-Concatenates the string onto the end of the string which is in the SV. The
-C<len> indicates number of bytes to copy. Handles 'get' magic, but not
-'set' magic. See C<sv_catpvn_mg>.
-
- void sv_catpvn (SV* sv, const char* ptr, STRLEN len)
-
-=item sv_catpvn_mg
-
-Like C<sv_catpvn>, but also handles 'set' magic.
-
- void sv_catpvn_mg (SV* sv, const char* ptr, STRLEN len)
-
-=item sv_catpvf
-
-Processes its arguments like C<sprintf> and appends the formatted output
-to an SV. Handles 'get' magic, but not 'set' magic. C<SvSETMAGIC()> must
-typically be called after calling this function to handle 'set' magic.
-
- void sv_catpvf (SV* sv, const char* pat, ...)
-
-=item sv_catpvf_mg
-
-Like C<sv_catpvf>, but also handles 'set' magic.
-
- void sv_catpvf_mg (SV* sv, const char* pat, ...)
-
-=item sv_catsv
-
-Concatenates the string from SV C<ssv> onto the end of the string in SV
-C<dsv>. Handles 'get' magic, but not 'set' magic. See C<sv_catsv_mg>.
-
- void sv_catsv (SV* dsv, SV* ssv)
-
-=item sv_catsv_mg
-
-Like C<sv_catsv>, but also handles 'set' magic.
-
- void sv_catsv_mg (SV* dsv, SV* ssv)
-
-=item sv_chop
-
-Efficient removal of characters from the beginning of the string
-buffer. SvPOK(sv) must be true and the C<ptr> must be a pointer to
-somewhere inside the string buffer. The C<ptr> becomes the first
-character of the adjusted string.
-
- void sv_chop(SV* sv, const char *ptr)
-
-
-=item sv_cmp
-
-Compares the strings in two SVs. Returns -1, 0, or 1 indicating whether the
-string in C<sv1> is less than, equal to, or greater than the string in
-C<sv2>.
-
- I32 sv_cmp (SV* sv1, SV* sv2)
-
-=item SvCUR
-
-Returns the length of the string which is in the SV. See C<SvLEN>.
-
- int SvCUR (SV* sv)
-
-=item SvCUR_set
-
-Set the length of the string which is in the SV. See C<SvCUR>.
-
- void SvCUR_set (SV* sv, int val)
-
-=item sv_dec
-
-Auto-decrement of the value in the SV.
-
- void sv_dec (SV* sv)
-
-=item sv_derived_from
-
-Returns a boolean indicating whether the SV is derived from the specified
-class. This is the function that implements C<UNIVERSAL::isa>. It works
-for class names as well as for objects.
-
- bool sv_derived_from (SV* sv, const char* name);
-
-=item SvEND
-
-Returns a pointer to the last character in the string which is in the SV.
-See C<SvCUR>. Access the character as
-
- char* SvEND(sv)
-
-=item sv_eq
-
-Returns a boolean indicating whether the strings in the two SVs are
-identical.
-
- I32 sv_eq (SV* sv1, SV* sv2)
-
-=item SvGETMAGIC
-
-Invokes C<mg_get> on an SV if it has 'get' magic. This macro evaluates
-its argument more than once.
-
- void SvGETMAGIC(SV *sv)
-
-=item SvGROW
-
-Expands the character buffer in the SV so that it has room for the
-indicated number of bytes (remember to reserve space for an extra
-trailing NUL character). Calls C<sv_grow> to perform the expansion if
-necessary. Returns a pointer to the character buffer.
-
- char* SvGROW(SV* sv, STRLEN len)
-
-=item sv_grow
-
-Expands the character buffer in the SV. This will use C<sv_unref> and will
-upgrade the SV to C<SVt_PV>. Returns a pointer to the character buffer.
-Use C<SvGROW>.
-
-=item sv_inc
-
-Auto-increment of the value in the SV.
-
- void sv_inc (SV* sv)
-
-=item sv_insert
-
-Inserts a string at the specified offset/length within the SV.
-Similar to the Perl substr() function.
-
- void sv_insert(SV *sv, STRLEN offset, STRLEN len,
- char *str, STRLEN strlen)
-
-=item SvIOK
-
-Returns a boolean indicating whether the SV contains an integer.
-
- int SvIOK (SV* SV)
-
-=item SvIOK_off
-
-Unsets the IV status of an SV.
-
- void SvIOK_off (SV* sv)
-
-=item SvIOK_on
-
-Tells an SV that it is an integer.
-
- void SvIOK_on (SV* sv)
-
-=item SvIOK_only
-
-Tells an SV that it is an integer and disables all other OK bits.
-
- void SvIOK_only (SV* sv)
-
-=item SvIOKp
-
-Returns a boolean indicating whether the SV contains an integer. Checks the
-B<private> setting. Use C<SvIOK>.
-
- int SvIOKp (SV* SV)
-
-=item sv_isa
-
-Returns a boolean indicating whether the SV is blessed into the specified
-class. This does not check for subtypes; use C<sv_derived_from> to verify
-an inheritance relationship.
-
- int sv_isa (SV* sv, char* name)
-
-=item sv_isobject
-
-Returns a boolean indicating whether the SV is an RV pointing to a blessed
-object. If the SV is not an RV, or if the object is not blessed, then this
-will return false.
-
- int sv_isobject (SV* sv)
-
-=item SvIV
-
-Coerces the given SV to an integer and returns it.
-
- int SvIV (SV* sv)
-
-=item SvIVX
-
-Returns the integer which is stored in the SV, assuming SvIOK is true.
-
- int SvIVX (SV* sv)
-
-=item SvLEN
-
-Returns the size of the string buffer in the SV. See C<SvCUR>.
-
- int SvLEN (SV* sv)
-
-=item sv_len
-
-Returns the length of the string in the SV. Use C<SvCUR>.
-
- STRLEN sv_len (SV* sv)
-
-=item sv_magic
-
-Adds magic to an SV.
-
- void sv_magic (SV* sv, SV* obj, int how, const char* name, I32 namlen)
-
-=item sv_mortalcopy
-
-Creates a new SV which is a copy of the original SV. The new SV is marked
-as mortal.
-
- SV* sv_mortalcopy (SV* oldsv)
-
-=item sv_newmortal
-
-Creates a new SV which is mortal. The reference count of the SV is set to 1.
-
- SV* sv_newmortal (void)
-
-=item SvNIOK
-
-Returns a boolean indicating whether the SV contains a number, integer or
-double.
-
- int SvNIOK (SV* SV)
-
-=item SvNIOK_off
-
-Unsets the NV/IV status of an SV.
-
- void SvNIOK_off (SV* sv)
-
-=item SvNIOKp
-
-Returns a boolean indicating whether the SV contains a number, integer or
-double. Checks the B<private> setting. Use C<SvNIOK>.
-
- int SvNIOKp (SV* SV)
-
-=item PL_sv_no
-
-This is the C<false> SV. See C<PL_sv_yes>. Always refer to this as C<&PL_sv_no>.
-
-=item SvNOK
-
-Returns a boolean indicating whether the SV contains a double.
-
- int SvNOK (SV* SV)
-
-=item SvNOK_off
-
-Unsets the NV status of an SV.
-
- void SvNOK_off (SV* sv)
-
-=item SvNOK_on
-
-Tells an SV that it is a double.
-
- void SvNOK_on (SV* sv)
-
-=item SvNOK_only
-
-Tells an SV that it is a double and disables all other OK bits.
-
- void SvNOK_only (SV* sv)
-
-=item SvNOKp
-
-Returns a boolean indicating whether the SV contains a double. Checks the
-B<private> setting. Use C<SvNOK>.
-
- int SvNOKp (SV* SV)
-
-=item SvNV
-
-Coerce the given SV to a double and return it.
-
- double SvNV (SV* sv)
-
-=item SvNVX
-
-Returns the double which is stored in the SV, assuming SvNOK is true.
-
- double SvNVX (SV* sv)
-
-=item SvOK
-
-Returns a boolean indicating whether the value is an SV.
-
- int SvOK (SV* sv)
-
-=item SvOOK
-
-Returns a boolean indicating whether the SvIVX is a valid offset value
-for the SvPVX. This hack is used internally to speed up removal of
-characters from the beginning of a SvPV. When SvOOK is true, then the
-start of the allocated string buffer is really (SvPVX - SvIVX).
-
- int SvOOK(SV* sv)
-
-=item SvPOK
-
-Returns a boolean indicating whether the SV contains a character string.
-
- int SvPOK (SV* SV)
-
-=item SvPOK_off
-
-Unsets the PV status of an SV.
-
- void SvPOK_off (SV* sv)
-
-=item SvPOK_on
-
-Tells an SV that it is a string.
-
- void SvPOK_on (SV* sv)
-
-=item SvPOK_only
-
-Tells an SV that it is a string and disables all other OK bits.
-
- void SvPOK_only (SV* sv)
-
-=item SvPOKp
-
-Returns a boolean indicating whether the SV contains a character string.
-Checks the B<private> setting. Use C<SvPOK>.
-
- int SvPOKp (SV* SV)
-
-=item SvPV
-
-Returns a pointer to the string in the SV, or a stringified form of the SV
-if the SV does not contain a string. Handles 'get' magic.
-
- char* SvPV (SV* sv, STRLEN len)
-
-=item SvPV_force
-
-Like <SvPV> but will force the SV into becoming a string (SvPOK). You
-want force if you are going to update the SvPVX directly.
-
- char* SvPV_force(SV* sv, STRLEN len)
-
-=item SvPV_nolen
-
-Returns a pointer to the string in the SV, or a stringified form of the SV
-if the SV does not contain a string. Handles 'get' magic.
-
- char* SvPV_nolen (SV* sv)
-
-=item SvPVX
-
-Returns a pointer to the string in the SV. The SV must contain a string.
-
- char* SvPVX (SV* sv)
-
-=item SvREFCNT
-
-Returns the value of the object's reference count.
-
- int SvREFCNT (SV* sv)
-
-=item SvREFCNT_dec
-
-Decrements the reference count of the given SV.
-
- void SvREFCNT_dec (SV* sv)
-
-=item SvREFCNT_inc
-
-Increments the reference count of the given SV.
-
- void SvREFCNT_inc (SV* sv)
-
-=item SvROK
-
-Tests if the SV is an RV.
-
- int SvROK (SV* sv)
-
-=item SvROK_off
-
-Unsets the RV status of an SV.
-
- void SvROK_off (SV* sv)
-
-=item SvROK_on
-
-Tells an SV that it is an RV.
-
- void SvROK_on (SV* sv)
-
-=item SvRV
-
-Dereferences an RV to return the SV.
-
- SV* SvRV (SV* sv)
-
-=item SvSETMAGIC
-
-Invokes C<mg_set> on an SV if it has 'set' magic. This macro evaluates
-its argument more than once.
-
- void SvSETMAGIC( SV *sv )
-
-=item sv_setiv
-
-Copies an integer into the given SV. Does not handle 'set' magic.
-See C<sv_setiv_mg>.
-
- void sv_setiv (SV* sv, IV num)
-
-=item sv_setiv_mg
-
-Like C<sv_setiv>, but also handles 'set' magic.
-
- void sv_setiv_mg (SV* sv, IV num)
-
-=item sv_setnv
-
-Copies a double into the given SV. Does not handle 'set' magic.
-See C<sv_setnv_mg>.
-
- void sv_setnv (SV* sv, double num)
-
-=item sv_setnv_mg
-
-Like C<sv_setnv>, but also handles 'set' magic.
-
- void sv_setnv_mg (SV* sv, double num)
-
-=item sv_setpv
-
-Copies a string into an SV. The string must be null-terminated.
-Does not handle 'set' magic. See C<sv_setpv_mg>.
-
- void sv_setpv (SV* sv, const char* ptr)
-
-=item sv_setpv_mg
-
-Like C<sv_setpv>, but also handles 'set' magic.
-
- void sv_setpv_mg (SV* sv, const char* ptr)
-
-=item sv_setpviv
-
-Copies an integer into the given SV, also updating its string value.
-Does not handle 'set' magic. See C<sv_setpviv_mg>.
-
- void sv_setpviv (SV* sv, IV num)
-
-=item sv_setpviv_mg
-
-Like C<sv_setpviv>, but also handles 'set' magic.
-
- void sv_setpviv_mg (SV* sv, IV num)
-
-=item sv_setpvn
-
-Copies a string into an SV. The C<len> parameter indicates the number of
-bytes to be copied. Does not handle 'set' magic. See C<sv_setpvn_mg>.
-
- void sv_setpvn (SV* sv, const char* ptr, STRLEN len)
-
-=item sv_setpvn_mg
-
-Like C<sv_setpvn>, but also handles 'set' magic.
-
- void sv_setpvn_mg (SV* sv, const char* ptr, STRLEN len)
-
-=item sv_setpvf
-
-Processes its arguments like C<sprintf> and sets an SV to the formatted
-output. Does not handle 'set' magic. See C<sv_setpvf_mg>.
-
- void sv_setpvf (SV* sv, const char* pat, ...)
-
-=item sv_setpvf_mg
-
-Like C<sv_setpvf>, but also handles 'set' magic.
-
- void sv_setpvf_mg (SV* sv, const char* pat, ...)
-
-=item sv_setref_iv
-
-Copies an integer into a new SV, optionally blessing the SV. The C<rv>
-argument will be upgraded to an RV. That RV will be modified to point to
-the new SV. The C<classname> argument indicates the package for the
-blessing. Set C<classname> to C<Nullch> to avoid the blessing. The new SV
-will be returned and will have a reference count of 1.
-
- SV* sv_setref_iv (SV *rv, char *classname, IV iv)
-
-=item sv_setref_nv
-
-Copies a double into a new SV, optionally blessing the SV. The C<rv>
-argument will be upgraded to an RV. That RV will be modified to point to
-the new SV. The C<classname> argument indicates the package for the
-blessing. Set C<classname> to C<Nullch> to avoid the blessing. The new SV
-will be returned and will have a reference count of 1.
-
- SV* sv_setref_nv (SV *rv, char *classname, double nv)
-
-=item sv_setref_pv
-
-Copies a pointer into a new SV, optionally blessing the SV. The C<rv>
-argument will be upgraded to an RV. That RV will be modified to point to
-the new SV. If the C<pv> argument is NULL then C<PL_sv_undef> will be placed
-into the SV. The C<classname> argument indicates the package for the
-blessing. Set C<classname> to C<Nullch> to avoid the blessing. The new SV
-will be returned and will have a reference count of 1.
-
- SV* sv_setref_pv (SV *rv, char *classname, void* pv)
-
-Do not use with integral Perl types such as HV, AV, SV, CV, because those
-objects will become corrupted by the pointer copy process.
-
-Note that C<sv_setref_pvn> copies the string while this copies the pointer.
-
-=item sv_setref_pvn
-
-Copies a string into a new SV, optionally blessing the SV. The length of the
-string must be specified with C<n>. The C<rv> argument will be upgraded to
-an RV. That RV will be modified to point to the new SV. The C<classname>
-argument indicates the package for the blessing. Set C<classname> to
-C<Nullch> to avoid the blessing. The new SV will be returned and will have
-a reference count of 1.
-
- SV* sv_setref_pvn (SV *rv, char *classname, char* pv, I32 n)
-
-Note that C<sv_setref_pv> copies the pointer while this copies the string.
-
-=item SvSetSV
-
-Calls C<sv_setsv> if dsv is not the same as ssv. May evaluate arguments
-more than once.
-
- void SvSetSV (SV* dsv, SV* ssv)
-
-=item SvSetSV_nosteal
-
-Calls a non-destructive version of C<sv_setsv> if dsv is not the same as ssv.
-May evaluate arguments more than once.
-
- void SvSetSV_nosteal (SV* dsv, SV* ssv)
-
-=item sv_setsv
-
-Copies the contents of the source SV C<ssv> into the destination SV C<dsv>.
-The source SV may be destroyed if it is mortal. Does not handle 'set' magic.
-See the macro forms C<SvSetSV>, C<SvSetSV_nosteal> and C<sv_setsv_mg>.
-
- void sv_setsv (SV* dsv, SV* ssv)
-
-=item sv_setsv_mg
-
-Like C<sv_setsv>, but also handles 'set' magic.
-
- void sv_setsv_mg (SV* dsv, SV* ssv)
-
-=item sv_setuv
-
-Copies an unsigned integer into the given SV. Does not handle 'set' magic.
-See C<sv_setuv_mg>.
-
- void sv_setuv (SV* sv, UV num)
-
-=item sv_setuv_mg
-
-Like C<sv_setuv>, but also handles 'set' magic.
-
- void sv_setuv_mg (SV* sv, UV num)
-
-=item SvSTASH
-
-Returns the stash of the SV.
-
- HV* SvSTASH (SV* sv)
-
-=item SvTAINT
-
-Taints an SV if tainting is enabled
-
- void SvTAINT (SV* sv)
-
-=item SvTAINTED
-
-Checks to see if an SV is tainted. Returns TRUE if it is, FALSE if not.
-
- int SvTAINTED (SV* sv)
-
-=item SvTAINTED_off
-
-Untaints an SV. Be I<very> careful with this routine, as it short-circuits
-some of Perl's fundamental security features. XS module authors should
-not use this function unless they fully understand all the implications
-of unconditionally untainting the value. Untainting should be done in
-the standard perl fashion, via a carefully crafted regexp, rather than
-directly untainting variables.
-
- void SvTAINTED_off (SV* sv)
-
-=item SvTAINTED_on
-
-Marks an SV as tainted.
-
- void SvTAINTED_on (SV* sv)
-
-=item SVt_IV
-
-Integer type flag for scalars. See C<svtype>.
-
-=item SVt_PV
-
-Pointer type flag for scalars. See C<svtype>.
-
-=item SVt_PVAV
-
-Type flag for arrays. See C<svtype>.
-
-=item SVt_PVCV
-
-Type flag for code refs. See C<svtype>.
-
-=item SVt_PVHV
-
-Type flag for hashes. See C<svtype>.
-
-=item SVt_PVMG
-
-Type flag for blessed scalars. See C<svtype>.
-
-=item SVt_NV
-
-Double type flag for scalars. See C<svtype>.
-
-=item SvTRUE
-
-Returns a boolean indicating whether Perl would evaluate the SV as true or
-false, defined or undefined. Does not handle 'get' magic.
-
- int SvTRUE (SV* sv)
-
-=item SvTYPE
-
-Returns the type of the SV. See C<svtype>.
-
- svtype SvTYPE (SV* sv)
-
-=item svtype
-
-An enum of flags for Perl types. These are found in the file B<sv.h> in the
-C<svtype> enum. Test these flags with the C<SvTYPE> macro.
-
-=item PL_sv_undef
-
-This is the C<undef> SV. Always refer to this as C<&PL_sv_undef>.
-
-=item sv_unref
-
-Unsets the RV status of the SV, and decrements the reference count of
-whatever was being referenced by the RV. This can almost be thought of
-as a reversal of C<newSVrv>. See C<SvROK_off>.
-
- void sv_unref (SV* sv)
-
-=item SvUPGRADE
-
-Used to upgrade an SV to a more complex form. Uses C<sv_upgrade> to perform
-the upgrade if necessary. See C<svtype>.
-
- bool SvUPGRADE (SV* sv, svtype mt)
-
-=item sv_upgrade
-
-Upgrade an SV to a more complex form. Use C<SvUPGRADE>. See C<svtype>.
-
-=item sv_usepvn
-
-Tells an SV to use C<ptr> to find its string value. Normally the string is
-stored inside the SV but sv_usepvn allows the SV to use an outside string.
-The C<ptr> should point to memory that was allocated by C<malloc>. The
-string length, C<len>, must be supplied. This function will realloc the
-memory pointed to by C<ptr>, so that pointer should not be freed or used by
-the programmer after giving it to sv_usepvn. Does not handle 'set' magic.
-See C<sv_usepvn_mg>.
-
- void sv_usepvn (SV* sv, char* ptr, STRLEN len)
-
-=item sv_usepvn_mg
-
-Like C<sv_usepvn>, but also handles 'set' magic.
-
- void sv_usepvn_mg (SV* sv, char* ptr, STRLEN len)
-
-=item sv_vcatpvfn
-
-Processes its arguments like C<vsprintf> and appends the formatted output
-to an SV. Uses an array of SVs if the C style variable argument list is
-missing (NULL). When running with taint checks enabled, indicates via
-C<maybe_tainted> if results are untrustworthy (often due to the use of
-locales).
-
- void sv_catpvfn (SV* sv, const char* pat, STRLEN patlen,
- va_list *args, SV **svargs, I32 svmax,
- bool *maybe_tainted);
-
-=item sv_vsetpvfn
-
-Works like C<vcatpvfn> but copies the text into the SV instead of
-appending it.
-
- void sv_setpvfn (SV* sv, const char* pat, STRLEN patlen,
- va_list *args, SV **svargs, I32 svmax,
- bool *maybe_tainted);
-
-=item SvUV
-
-Coerces the given SV to an unsigned integer and returns it.
-
- UV SvUV(SV* sv)
-
-=item SvUVX
-
-Returns the unsigned integer which is stored in the SV, assuming SvIOK is true.
-
- UV SvUVX(SV* sv)
-
-=item PL_sv_yes
-
-This is the C<true> SV. See C<PL_sv_no>. Always refer to this as C<&PL_sv_yes>.
-
-=item THIS
-
-Variable which is setup by C<xsubpp> to designate the object in a C++ XSUB.
-This is always the proper type for the C++ object. See C<CLASS> and
-L<perlxs/"Using XS With C++">.
-
-=item toLOWER
-
-Converts the specified character to lowercase.
-
- int toLOWER (char c)
-
-=item toUPPER
-
-Converts the specified character to uppercase.
-
- int toUPPER (char c)
-
-=item warn
-
-This is the XSUB-writer's interface to Perl's C<warn> function. Use this
-function the same way you use the C C<printf> function. See C<croak()>.
-
-=item XPUSHi
-
-Push an integer onto the stack, extending the stack if necessary. Handles
-'set' magic. See C<PUSHi>.
-
- XPUSHi(int d)
-
-=item XPUSHn
-
-Push a double onto the stack, extending the stack if necessary. Handles 'set'
-magic. See C<PUSHn>.
-
- XPUSHn(double d)
-
-=item XPUSHp
-
-Push a string onto the stack, extending the stack if necessary. The C<len>
-indicates the length of the string. Handles 'set' magic. See C<PUSHp>.
-
- XPUSHp(char *c, int len)
-
-=item XPUSHs
-
-Push an SV onto the stack, extending the stack if necessary. Does not
-handle 'set' magic. See C<PUSHs>.
-
- XPUSHs(sv)
-
-=item XPUSHu
-
-Push an unsigned integer onto the stack, extending the stack if
-necessary. See C<PUSHu>.
-
-=item XS
-
-Macro to declare an XSUB and its C parameter list. This is handled by
-C<xsubpp>.
-
-=item XSRETURN
-
-Return from XSUB, indicating number of items on the stack. This is usually
-handled by C<xsubpp>.
-
- XSRETURN(int x)
-
-=item XSRETURN_EMPTY
-
-Return an empty list from an XSUB immediately.
-
- XSRETURN_EMPTY;
-
-=item XSRETURN_IV
-
-Return an integer from an XSUB immediately. Uses C<XST_mIV>.
-
- XSRETURN_IV(IV v)
-
-=item XSRETURN_NO
-
-Return C<&PL_sv_no> from an XSUB immediately. Uses C<XST_mNO>.
-
- XSRETURN_NO;
-
-=item XSRETURN_NV
-
-Return an double from an XSUB immediately. Uses C<XST_mNV>.
-
- XSRETURN_NV(NV v)
-
-=item XSRETURN_PV
-
-Return a copy of a string from an XSUB immediately. Uses C<XST_mPV>.
-
- XSRETURN_PV(char *v)
-
-=item XSRETURN_UNDEF
-
-Return C<&PL_sv_undef> from an XSUB immediately. Uses C<XST_mUNDEF>.
-
- XSRETURN_UNDEF;
-
-=item XSRETURN_YES
-
-Return C<&PL_sv_yes> from an XSUB immediately. Uses C<XST_mYES>.
-
- XSRETURN_YES;
-
-=item XST_mIV
-
-Place an integer into the specified position C<i> on the stack. The value is
-stored in a new mortal SV.
-
- XST_mIV( int i, IV v )
-
-=item XST_mNV
-
-Place a double into the specified position C<i> on the stack. The value is
-stored in a new mortal SV.
-
- XST_mNV( int i, NV v )
-
-=item XST_mNO
-
-Place C<&PL_sv_no> into the specified position C<i> on the stack.
-
- XST_mNO( int i )
-
-=item XST_mPV
-
-Place a copy of a string into the specified position C<i> on the stack. The
-value is stored in a new mortal SV.
-
- XST_mPV( int i, char *v )
-
-=item XST_mUNDEF
-
-Place C<&PL_sv_undef> into the specified position C<i> on the stack.
-
- XST_mUNDEF( int i )
-
-=item XST_mYES
-
-Place C<&PL_sv_yes> into the specified position C<i> on the stack.
-
- XST_mYES( int i )
-
-=item XS_VERSION
-
-The version identifier for an XS module. This is usually handled
-automatically by C<ExtUtils::MakeMaker>. See C<XS_VERSION_BOOTCHECK>.
-
-=item XS_VERSION_BOOTCHECK
-
-Macro to verify that a PM module's $VERSION variable matches the XS module's
-C<XS_VERSION> variable. This is usually handled automatically by
-C<xsubpp>. See L<perlxs/"The VERSIONCHECK: Keyword">.
-
-=item Zero
-
-The XSUB-writer's interface to the C C<memzero> function. The C<d> is the
-destination, C<n> is the number of items, and C<t> is the type.
-
- void Zero( d, n, t )
-
-=back
-
=head1 AUTHORS
Until May 1997, this document was maintained by Jeff Okamoto
-<okamoto@corp.hp.com>. It is now maintained as part of Perl itself.
+<okamoto@corp.hp.com>. It is now maintained as part of Perl itself
+by the Perl 5 Porters <perl5-porters@perl.org>.
With lots of help and suggestions from Dean Roehrich, Malcolm Beattie,
Andreas Koenig, Paul Hudson, Ilya Zakharevich, Paul Marquess, Neil
@@ -3874,3 +1795,10 @@ Bowers, Matthew Green, Tim Bunce, Spider Boardman, Ulrich Pfeifer,
Stephen McCamant, and Gurusamy Sarathy.
API Listing originally by Dean Roehrich <roehrich@cray.com>.
+
+Modifications to autogenerate the API listing (L<perlapi>) by Benjamin
+Stuhl.
+
+=head1 SEE ALSO
+
+perlapi(1), perlintern(1), perlxs(1), perlembed(1)
diff --git a/pod/perlintern.pod b/pod/perlintern.pod
new file mode 100644
index 0000000000..58eeac6e95
--- /dev/null
+++ b/pod/perlintern.pod
@@ -0,0 +1,26 @@
+=head1 NAME
+
+perlintern - autogenerated documentation of purely B<internal>
+ Perl functions
+
+=head1 DESCRIPTION
+
+This file is the autogenerated documentation of functions in the
+Perl intrepreter that are documented using Perl's internal documentation
+format but are not marked as part of the Perl API. In other words,
+B<they are not for use in extensions>!
+
+=over 8
+
+=back
+
+=head1 AUTHORS
+
+The autodocumentation system was orignally added to the Perl core by
+Benjamin Stuhl. Documentation is by whoever was kind enough to
+document their functions.
+
+=head1 SEE ALSO
+
+perlguts(1), perlapi(1)
+
diff --git a/pod/perltoc.pod b/pod/perltoc.pod
index 8f56d7a9eb..96ec7f0e75 100644
--- a/pod/perltoc.pod
+++ b/pod/perltoc.pod
@@ -1390,8 +1390,8 @@ Time::Local, Win32, DBM Filters
=item Documentation Changes
-perlcompile.pod, perlfilter.pod, perlhack.pod, perlopentut.pod,
-perlreftut.pod, perltootc.pod
+perlapi.pod, perlcompile.pod, perlfilter.pod, perlhack.pod, perlintern.pod,
+perlopentut.pod, perlreftut.pod, perltootc.pod
=item New or Changed Diagnostics
@@ -2064,8 +2064,9 @@ files, directories and network sockets
=item CAVEATS AND LIMITATIONS
-BEGIN blocks, Open filehandles, Global state maintained by XSUBs,
-Interpreter embedded in larger application, Thread-safety of extensions
+BEGIN blocks, Open filehandles, Forking pipe open() not yet implemented,
+Global state maintained by XSUBs, Interpreter embedded in larger
+application, Thread-safety of extensions
=back
@@ -3409,7 +3410,7 @@ B<PerlIO_get_base(f)>, B<PerlIO_get_bufsiz(f)>
=back
-=head2 perlguts - Perl's Internal Functions
+=head2 perlguts - Introduction to the Perl API
=over
@@ -3507,7 +3508,7 @@ C<void save_hptr(HV **hptr)>
=back
-=item The Perl Internal API
+=item How multiple interpreters and concurrency are supported
=over
@@ -3519,55 +3520,10 @@ C<void save_hptr(HV **hptr)>
=back
-=item API LISTING
-
-av_clear, av_extend, av_fetch, AvFILL, av_len, av_make, av_pop, av_push,
-av_shift, av_store, av_undef, av_unshift, CLASS, Copy, croak, CvSTASH,
-PL_DBsingle, PL_DBsub, PL_DBtrace, dMARK, dORIGMARK, PL_dowarn, dSP,
-dXSARGS, dXSI32, do_binmode, ENTER, EXTEND, fbm_compile, fbm_instr,
-FREETMPS, G_ARRAY, G_DISCARD, G_EVAL, GIMME, GIMME_V, G_NOARGS, G_SCALAR,
-gv_fetchmeth, gv_fetchmethod, gv_fetchmethod_autoload, G_VOID, gv_stashpv,
-gv_stashsv, GvSV, HEf_SVKEY, HeHASH, HeKEY, HeKLEN, HePV, HeSVKEY,
-HeSVKEY_force, HeSVKEY_set, HeVAL, hv_clear, hv_delete, hv_delete_ent,
-hv_exists, hv_exists_ent, hv_fetch, hv_fetch_ent, hv_iterinit, hv_iterkey,
-hv_iterkeysv, hv_iternext, hv_iternextsv, hv_iterval, hv_magic, HvNAME,
-hv_store, hv_store_ent, hv_undef, isALNUM, isALPHA, isDIGIT, isLOWER,
-isSPACE, isUPPER, items, ix, LEAVE, looks_like_number, MARK, mg_clear,
-mg_copy, mg_find, mg_free, mg_get, mg_len, mg_magical, mg_set, modglobal,
-Move, PL_na, New, newAV, Newc, newCONSTSUB, newHV, newRV_inc, newRV_noinc,
-NEWSV, newSViv, newSVnv, newSVpv, newSVpvf, newSVpvn, newSVrv, newSVsv,
-newXS, newXSproto, Newz, Nullav, Nullch, Nullcv, Nullhv, Nullsv, ORIGMARK,
-perl_alloc, perl_call_argv, perl_call_method, perl_call_pv, perl_call_sv,
-perl_construct, perl_destruct, perl_eval_sv, perl_eval_pv, perl_free,
-perl_get_av, perl_get_cv, perl_get_hv, perl_get_sv, perl_parse,
-perl_require_pv, perl_run, POPi, POPl, POPp, POPn, POPs, PUSHMARK, PUSHi,
-PUSHn, PUSHp, PUSHs, PUSHu, PUTBACK, Renew, Renewc, RETVAL, safefree,
-safemalloc, saferealloc, savepv, savepvn, SAVETMPS, SP, SPAGAIN, ST, strEQ,
-strGE, strGT, strLE, strLT, strNE, strnEQ, strnNE, sv_2mortal, sv_bless,
-sv_catpv, sv_catpv_mg, sv_catpvn, sv_catpvn_mg, sv_catpvf, sv_catpvf_mg,
-sv_catsv, sv_catsv_mg, sv_chop, sv_cmp, SvCUR, SvCUR_set, sv_dec,
-sv_derived_from, SvEND, sv_eq, SvGETMAGIC, SvGROW, sv_grow, sv_inc,
-sv_insert, SvIOK, SvIOK_off, SvIOK_on, SvIOK_only, SvIOKp, sv_isa,
-sv_isobject, SvIV, SvIVX, SvLEN, sv_len, sv_magic, sv_mortalcopy,
-sv_newmortal, SvNIOK, SvNIOK_off, SvNIOKp, PL_sv_no, SvNOK, SvNOK_off,
-SvNOK_on, SvNOK_only, SvNOKp, SvNV, SvNVX, SvOK, SvOOK, SvPOK, SvPOK_off,
-SvPOK_on, SvPOK_only, SvPOKp, SvPV, SvPV_force, SvPV_nolen, SvPVX,
-SvREFCNT, SvREFCNT_dec, SvREFCNT_inc, SvROK, SvROK_off, SvROK_on, SvRV,
-SvSETMAGIC, sv_setiv, sv_setiv_mg, sv_setnv, sv_setnv_mg, sv_setpv,
-sv_setpv_mg, sv_setpviv, sv_setpviv_mg, sv_setpvn, sv_setpvn_mg, sv_setpvf,
-sv_setpvf_mg, sv_setref_iv, sv_setref_nv, sv_setref_pv, sv_setref_pvn,
-SvSetSV, SvSetSV_nosteal, sv_setsv, sv_setsv_mg, sv_setuv, sv_setuv_mg,
-SvSTASH, SvTAINT, SvTAINTED, SvTAINTED_off, SvTAINTED_on, SVt_IV, SVt_PV,
-SVt_PVAV, SVt_PVCV, SVt_PVHV, SVt_PVMG, SVt_NV, SvTRUE, SvTYPE, svtype,
-PL_sv_undef, sv_unref, SvUPGRADE, sv_upgrade, sv_usepvn, sv_usepvn_mg,
-sv_vcatpvfn, sv_vsetpvfn, SvUV, SvUVX, PL_sv_yes, THIS, toLOWER, toUPPER,
-warn, XPUSHi, XPUSHn, XPUSHp, XPUSHs, XPUSHu, XS, XSRETURN, XSRETURN_EMPTY,
-XSRETURN_IV, XSRETURN_NO, XSRETURN_NV, XSRETURN_PV, XSRETURN_UNDEF,
-XSRETURN_YES, XST_mIV, XST_mNV, XST_mNO, XST_mPV, XST_mUNDEF, XST_mYES,
-XS_VERSION, XS_VERSION_BOOTCHECK, Zero
-
=item AUTHORS
+=item SEE ALSO
+
=back
=head2 perlcall - Perl calling conventions from C
@@ -3694,13 +3650,77 @@ B::Stash, B::Terse, B::Xref
=back
+=item KNOWN PROBLEMS
+
+=item AUTHOR
+
=back
+=head2 perlapi - autogenerated documentation for the perl public API
+
=over
-=item KNOWN PROBLEMS
+=item DESCRIPTION
-=item AUTHOR
+AvFILL, av_clear, av_extend, av_fetch, av_len, av_make, av_pop, av_push,
+av_shift, av_store, av_undef, av_unshift, call_argv, call_method, call_pv,
+call_sv, CLASS, Copy, croak, CvSTASH, dMARK, dORIGMARK, dSP, dXSARGS,
+dXSI32, ENTER, eval_pv, eval_sv, EXTEND, fbm_compile, fbm_instr, FREETMPS,
+get_av, get_cv, get_hv, get_sv, GIMME, GIMME_V, GvSV, gv_fetchmeth,
+gv_fetchmethod, gv_fetchmethod_autoload, gv_stashpv, gv_stashsv, G_ARRAY,
+G_DISCARD, G_EVAL, G_NOARGS, G_SCALAR, G_VOID, HEf_SVKEY, HeHASH, HeKEY,
+HeKLEN, HePV, HeSVKEY, HeSVKEY_force, HeSVKEY_set, HeVAL, HvNAME, hv_clear,
+hv_delete, hv_delete_ent, hv_exists, hv_exists_ent, hv_fetch, hv_fetch_ent,
+hv_iterinit, hv_iterkey, hv_iterkeysv, hv_iternext, hv_iternextsv,
+hv_iterval, hv_magic, hv_store, hv_store_ent, hv_undef, isALNUM, isALPHA,
+isDIGIT, isLOWER, isSPACE, isUPPER, items, ix, LEAVE, looks_like_number,
+MARK, mg_clear, mg_copy, mg_find, mg_free, mg_get, mg_length, mg_magical,
+mg_set, Move, New, newAV, Newc, newCONSTSUB, newHV, newRV_inc, newRV_noinc,
+NEWSV, newSViv, newSVnv, newSVpv, newSVpvf, newSVpvn, newSVrv, newSVsv,
+newXS, newXSproto, Newz, Nullav, Nullch, Nullcv, Nullhv, Nullsv, ORIGMARK,
+perl_alloc, perl_construct, perl_destruct, perl_free, perl_parse, perl_run,
+PL_DBsingle, PL_DBsub, PL_DBtrace, PL_dowarn, PL_modglobal, PL_na,
+PL_sv_no, PL_sv_undef, PL_sv_yes, POPi, POPl, POPn, POPp, POPs, PUSHi,
+PUSHMARK, PUSHn, PUSHp, PUSHs, PUSHu, PUTBACK, Renew, Renewc, require_pv,
+RETVAL, Safefree, savepv, savepvn, SAVETMPS, SP, SPAGAIN, ST, strEQ, strGE,
+strGT, strLE, strLT, strNE, strnEQ, strnNE, StructCopy, SvCUR, SvCUR_set,
+SvEND, SvGETMAGIC, SvGROW, SvIOK, SvIOKp, SvIOK_off, SvIOK_on, SvIOK_only,
+SvIV, SvIVX, SvLEN, SvNIOK, SvNIOKp, SvNIOK_off, SvNOK, SvNOKp, SvNOK_off,
+SvNOK_on, SvNOK_only, SvNV, SvNVX, SvOK, SvOOK, SvPOK, SvPOKp, SvPOK_off,
+SvPOK_on, SvPOK_only, SvPV, SvPVX, SvPV_force, SvPV_nolen, SvREFCNT,
+SvREFCNT_dec, SvREFCNT_inc, SvROK, SvROK_off, SvROK_on, SvRV, SvSETMAGIC,
+SvSetSV, SvSetSV_nosteal, SvSTASH, SvTAINT, SvTAINTED, SvTAINTED_off,
+SvTAINTED_on, SvTRUE, SvTYPE, svtype, SVt_IV, SVt_NV, SVt_PV, SVt_PVAV,
+SVt_PVCV, SVt_PVHV, SVt_PVMG, SvUPGRADE, SvUV, SvUVX, sv_2mortal, sv_bless,
+sv_catpv, sv_catpvf, sv_catpvf_mg, sv_catpvn, sv_catpvn_mg, sv_catpv_mg,
+sv_catsv, sv_catsv_mg, sv_chop, sv_cmp, sv_dec, sv_derived_from, sv_eq,
+sv_grow, sv_inc, sv_insert, sv_isa, sv_isobject, sv_len, sv_magic,
+sv_mortalcopy, sv_newmortal, sv_setiv, sv_setiv_mg, sv_setnv, sv_setnv_mg,
+sv_setpv, sv_setpvf, sv_setpvf_mg, sv_setpviv, sv_setpviv_mg, sv_setpvn,
+sv_setpvn_mg, sv_setpv_mg, sv_setref_iv, sv_setref_nv, sv_setref_pv,
+sv_setref_pvn, sv_setsv, sv_setsv_mg, sv_setuv, sv_setuv_mg, sv_unref,
+sv_upgrade, sv_usepvn, sv_usepvn_mg, sv_vcatpvfn, sv_vsetpvfn, THIS,
+toLOWER, toUPPER, warn, XPUSHi, XPUSHn, XPUSHp, XPUSHs, XPUSHu, XS,
+XSRETURN, XSRETURN_EMPTY, XSRETURN_IV, XSRETURN_NO, XSRETURN_NV,
+XSRETURN_PV, XSRETURN_UNDEF, XSRETURN_YES, XST_mIV, XST_mNO, XST_mNV,
+XST_mPV, XST_mUNDEF, XST_mYES, XS_VERSION, XS_VERSION_BOOTCHECK, Zero
+
+=item AUTHORS
+
+=item SEE ALSO
+
+=back
+
+=head2 perlintern - autogenerated documentation of purely B<internal>
+ Perl functions
+
+=over
+
+=item DESCRIPTION
+
+=item AUTHORS
+
+=item SEE ALSO
=back
@@ -7764,6 +7784,28 @@ hostpath(), peerpath()
=back
+=head2 IPC::Msg - SysV Msg IPC object class
+
+=over
+
+=item SYNOPSIS
+
+=item DESCRIPTION
+
+=item METHODS
+
+new ( KEY , FLAGS ), id, rcv ( BUF, LEN [, TYPE [, FLAGS ]] ), remove, set
+( STAT ), set ( NAME => VALUE [, NAME => VALUE ...] ), snd ( TYPE, MSG [,
+FLAGS ] ), stat
+
+=item SEE ALSO
+
+=item AUTHOR
+
+=item COPYRIGHT
+
+=back
+
=head2 IPC::Open2, open2 - open a process for both reading and writing
=over
@@ -7791,6 +7833,29 @@ handling
=back
+=head2 IPC::Semaphore - SysV Semaphore IPC object class
+
+=over
+
+=item SYNOPSIS
+
+=item DESCRIPTION
+
+=item METHODS
+
+new ( KEY , NSEMS , FLAGS ), getall, getncnt ( SEM ), getpid ( SEM ),
+getval ( SEM ), getzcnt ( SEM ), id, op ( OPLIST ), remove, set ( STAT ),
+set ( NAME => VALUE [, NAME => VALUE ...] ), setall ( VALUES ), setval ( N
+, VALUE ), stat
+
+=item SEE ALSO
+
+=item AUTHOR
+
+=item COPYRIGHT
+
+=back
+
=head2 IPC::SysV - SysV IPC constants
=over
diff --git a/pod/roffitall b/pod/roffitall
index 7ddffe76c5..9f9e3e9e49 100644
--- a/pod/roffitall
+++ b/pod/roffitall
@@ -71,6 +71,8 @@ toroff=`
$mandir/perlcall.1 \
$mandir/perlcompile.1 \
$mandir/perltodo.1 \
+ $mandir/perlapi.1 \
+ $mandir/perlintern.1 \
$mandir/perlhack.1 \
$mandir/perlhist.1 \
$mandir/perldelta.1 \
diff --git a/pp.h b/pp.h
index ec701f3054..49155c30a8 100644
--- a/pp.h
+++ b/pp.h
@@ -17,6 +17,38 @@
#define PP(s) OP * Perl_##s(pTHX)
+/*
+=for apidoc AmU||SP
+Stack pointer. This is usually handled by C<xsubpp>. See C<dSP> and
+C<SPAGAIN>.
+
+=for apidoc AmU||MARK
+Stack marker variable for the XSUB. See C<dMARK>.
+
+=for apidoc Ams||PUSHMARK
+Opening bracket for arguments on a callback. See C<PUTBACK> and
+L<perlcall>.
+
+=for apidoc Ams||dSP
+Declares a local copy of perl's stack pointer for the XSUB, available via
+the C<SP> macro. See C<SP>.
+
+=for apidoc Ams||dMARK
+Declare a stack marker variable, C<mark>, for the XSUB. See C<MARK> and
+C<dORIGMARK>.
+
+=for apidoc Ams||dORIGMARK
+Saves the original stack mark for the XSUB. See C<ORIGMARK>.
+
+=for apidoc AmU||ORIGMARK
+The original stack mark for the XSUB. See C<dORIGMARK>.
+
+=for apidoc Ams||SPAGAIN
+Refetch the stack pointer. Used after a callback. See L<perlcall>.
+
+=cut
+*/
+
#define SP sp
#define MARK mark
#define TARG targ
@@ -52,6 +84,29 @@
#define NORMAL PL_op->op_next
#define DIE return Perl_die
+/*
+=for apidoc Ams||PUTBACK
+Closing bracket for XSUB arguments. This is usually handled by C<xsubpp>.
+See C<PUSHMARK> and L<perlcall> for other uses.
+
+=for apidoc Amn|SV*|POPs
+Pops an SV off the stack.
+
+=for apidoc Amn|char*|POPp
+Pops a string off the stack.
+
+=for apidoc Amn|NV|POPn
+Pops a double off the stack.
+
+=for apidoc Amn|IV|POPi
+Pops an integer off the stack.
+
+=for apidoc Amn|long|POPl
+Pops a long off the stack.
+
+=cut
+*/
+
#define PUTBACK PL_stack_sp = sp
#define RETURN return PUTBACK, NORMAL
#define RETURNOP(o) return PUTBACK, o
@@ -84,6 +139,58 @@
#endif
/* Go to some pains in the rare event that we must extend the stack. */
+
+/*
+=for apidoc Am|void|EXTEND|SP|int nitems
+Used to extend the argument stack for an XSUB's return values. Once
+used, guarrantees that there is room for at least C<nitems> to be pushed
+onto the stack.
+
+=for apidoc Am|void|PUSHs|SV* sv
+Push an SV onto the stack. The stack must have room for this element.
+Does not handle 'set' magic. See C<XPUSHs>.
+
+=for apidoc Am|void|PUSHp|char* str|STRLEN len
+Push a string onto the stack. The stack must have room for this element.
+The C<len> indicates the length of the string. Handles 'set' magic. See
+C<XPUSHp>.
+
+=for apidoc Am|void|PUSHn|NV nv
+Push a double onto the stack. The stack must have room for this element.
+Handles 'set' magic. See C<XPUSHn>.
+
+=for apidoc Am|void|PUSHi|IV iv
+Push an integer onto the stack. The stack must have room for this element.
+Handles 'set' magic. See C<XPUSHi>.
+
+=for apidoc Am|void|PUSHu|UV uv
+Push an unsigned integer onto the stack. The stack must have room for this
+element. See C<XPUSHu>.
+
+=for apidoc Am|void|XPUSHs|SV* sv
+Push an SV onto the stack, extending the stack if necessary. Does not
+handle 'set' magic. See C<PUSHs>.
+
+=for apidoc Am|void|XPUSHp|char* str|STRLEN len
+Push a string onto the stack, extending the stack if necessary. The C<len>
+indicates the length of the string. Handles 'set' magic. See
+C<PUSHp>.
+
+=for apidoc Am|void|XPUSHn|NV nv
+Push a double onto the stack, extending the stack if necessary. Handles
+'set' magic. See C<PUSHn>.
+
+=for apidoc Am|void|XPUSHi|IV iv
+Push an integer onto the stack, extending the stack if necessary. Handles
+'set' magic. See C<PUSHi>.
+
+=for apidoc Am|void|XPUSHu|UV uv
+Push an unsigned integer onto the stack, extending the stack if necessary.
+See C<PUSHu>.
+
+=cut
+*/
+
#define EXTEND(p,n) STMT_START { if (PL_stack_max - p < (n)) { \
sp = stack_grow(sp,p, (int) (n)); \
} } STMT_END
diff --git a/scope.h b/scope.h
index 69446309f2..f90e7c5f71 100644
--- a/scope.h
+++ b/scope.h
@@ -46,6 +46,24 @@
#define SSPOPDPTR (PL_savestack[--PL_savestack_ix].any_dptr)
#define SSPOPDXPTR (PL_savestack[--PL_savestack_ix].any_dxptr)
+/*
+=for apidoc Ams||SAVETMPS
+Opening bracket for temporaries on a callback. See C<FREETMPS> and
+L<perlcall>.
+
+=for apidoc Ams||FREETMPS
+Closing bracket for temporaries on a callback. See C<SAVETMPS> and
+L<perlcall>.
+
+=for apidoc Ams||ENTER
+Opening bracket on a callback. See C<LEAVE> and L<perlcall>.
+
+=for apidoc Ams||LEAVE
+Closing bracket on a callback. See C<ENTER> and L<perlcall>.
+
+=cut
+*/
+
#define SAVETMPS save_int((int*)&PL_tmps_floor), PL_tmps_floor = PL_tmps_ix
#define FREETMPS if (PL_tmps_ix > PL_tmps_floor) free_tmps()
diff --git a/sv.c b/sv.c
index 7d837d2e45..834dac3bd1 100644
--- a/sv.c
+++ b/sv.c
@@ -921,6 +921,15 @@ S_my_safemalloc(MEM_SIZE size)
#define new_XPVIO() (void*)my_safemalloc(sizeof(XPVIO))
#define del_XPVIO(p) my_safefree((char*)p)
+/*
+=for apidoc sv_upgrade
+
+Upgrade an SV to a more complex form. Use C<SvUPGRADE>. See
+C<svtype>.
+
+=cut
+*/
+
bool
Perl_sv_upgrade(pTHX_ register SV *sv, U32 mt)
{
@@ -1210,6 +1219,16 @@ Perl_sv_backoff(pTHX_ register SV *sv)
return 0;
}
+/*
+=for apidoc sv_grow
+
+Expands the character buffer in the SV. This will use C<sv_unref> and will
+upgrade the SV to C<SVt_PV>. Returns a pointer to the character buffer.
+Use C<SvGROW>.
+
+=cut
+*/
+
char *
Perl_sv_grow(pTHX_ register SV *sv, register STRLEN newlen)
{
@@ -1259,6 +1278,15 @@ Perl_sv_grow(pTHX_ register SV *sv, register STRLEN newlen)
return s;
}
+/*
+=for apidoc sv_setiv
+
+Copies an integer into the given SV. Does not handle 'set' magic. See
+C<sv_setiv_mg>.
+
+=cut
+*/
+
void
Perl_sv_setiv(pTHX_ register SV *sv, IV i)
{
@@ -1292,6 +1320,14 @@ Perl_sv_setiv(pTHX_ register SV *sv, IV i)
SvTAINT(sv);
}
+/*
+=for apidoc sv_setiv_mg
+
+Like C<sv_setiv>, but also handles 'set' magic.
+
+=cut
+*/
+
void
Perl_sv_setiv_mg(pTHX_ register SV *sv, IV i)
{
@@ -1299,6 +1335,15 @@ Perl_sv_setiv_mg(pTHX_ register SV *sv, IV i)
SvSETMAGIC(sv);
}
+/*
+=for apidoc sv_setuv
+
+Copies an unsigned integer into the given SV. Does not handle 'set' magic.
+See C<sv_setuv_mg>.
+
+=cut
+*/
+
void
Perl_sv_setuv(pTHX_ register SV *sv, UV u)
{
@@ -1307,6 +1352,14 @@ Perl_sv_setuv(pTHX_ register SV *sv, UV u)
SvUVX(sv) = u;
}
+/*
+=for apidoc sv_setuv_mg
+
+Like C<sv_setuv>, but also handles 'set' magic.
+
+=cut
+*/
+
void
Perl_sv_setuv_mg(pTHX_ register SV *sv, UV u)
{
@@ -1314,6 +1367,15 @@ Perl_sv_setuv_mg(pTHX_ register SV *sv, UV u)
SvSETMAGIC(sv);
}
+/*
+=for apidoc sv_setnv
+
+Copies a double into the given SV. Does not handle 'set' magic. See
+C<sv_setnv_mg>.
+
+=cut
+*/
+
void
Perl_sv_setnv(pTHX_ register SV *sv, NV num)
{
@@ -1346,6 +1408,14 @@ Perl_sv_setnv(pTHX_ register SV *sv, NV num)
SvTAINT(sv);
}
+/*
+=for apidoc sv_setnv_mg
+
+Like C<sv_setnv>, but also handles 'set' magic.
+
+=cut
+*/
+
void
Perl_sv_setnv_mg(pTHX_ register SV *sv, NV num)
{
@@ -1872,6 +1942,15 @@ S_asUV(pTHX_ SV *sv)
* with a possible addition of IS_NUMBER_NEG.
*/
+/*
+=for apidoc looks_like_number
+
+Test if an the content of an SV looks like a number (or is a
+number).
+
+=cut
+*/
+
I32
Perl_looks_like_number(pTHX_ SV *sv)
{
@@ -2325,6 +2404,17 @@ Perl_sv_2bool(pTHX_ register SV *sv)
* as temporary.
*/
+/*
+=for apidoc sv_setsv
+
+Copies the contents of the source SV C<ssv> into the destination SV C<dsv>.
+The source SV may be destroyed if it is mortal. Does not handle 'set'
+magic. See the macro forms C<SvSetSV>, C<SvSetSV_nosteal> and
+C<sv_setsv_mg>.
+
+=cut
+*/
+
void
Perl_sv_setsv(pTHX_ SV *dstr, register SV *sstr)
{
@@ -2721,6 +2811,14 @@ Perl_sv_setsv(pTHX_ SV *dstr, register SV *sstr)
SvTAINT(dstr);
}
+/*
+=for apidoc sv_setsv_mg
+
+Like C<sv_setsv>, but also handles 'set' magic.
+
+=cut
+*/
+
void
Perl_sv_setsv_mg(pTHX_ SV *dstr, register SV *sstr)
{
@@ -2728,6 +2826,15 @@ Perl_sv_setsv_mg(pTHX_ SV *dstr, register SV *sstr)
SvSETMAGIC(dstr);
}
+/*
+=for apidoc sv_setpvn
+
+Copies a string into an SV. The C<len> parameter indicates the number of
+bytes to be copied. Does not handle 'set' magic. See C<sv_setpvn_mg>.
+
+=cut
+*/
+
void
Perl_sv_setpvn(pTHX_ register SV *sv, register const char *ptr, register STRLEN len)
{
@@ -2750,6 +2857,14 @@ Perl_sv_setpvn(pTHX_ register SV *sv, register const char *ptr, register STRLEN
SvTAINT(sv);
}
+/*
+=for apidoc sv_setpvn_mg
+
+Like C<sv_setpvn>, but also handles 'set' magic.
+
+=cut
+*/
+
void
Perl_sv_setpvn_mg(pTHX_ register SV *sv, register const char *ptr, register STRLEN len)
{
@@ -2757,6 +2872,15 @@ Perl_sv_setpvn_mg(pTHX_ register SV *sv, register const char *ptr, register STRL
SvSETMAGIC(sv);
}
+/*
+=for apidoc sv_setpv
+
+Copies a string into an SV. The string must be null-terminated. Does not
+handle 'set' magic. See C<sv_setpv_mg>.
+
+=cut
+*/
+
void
Perl_sv_setpv(pTHX_ register SV *sv, register const char *ptr)
{
@@ -2777,6 +2901,14 @@ Perl_sv_setpv(pTHX_ register SV *sv, register const char *ptr)
SvTAINT(sv);
}
+/*
+=for apidoc sv_setpv_mg
+
+Like C<sv_setpv>, but also handles 'set' magic.
+
+=cut
+*/
+
void
Perl_sv_setpv_mg(pTHX_ register SV *sv, register const char *ptr)
{
@@ -2784,6 +2916,20 @@ Perl_sv_setpv_mg(pTHX_ register SV *sv, register const char *ptr)
SvSETMAGIC(sv);
}
+/*
+=for apidoc sv_usepvn
+
+Tells an SV to use C<ptr> to find its string value. Normally the string is
+stored inside the SV but sv_usepvn allows the SV to use an outside string.
+The C<ptr> should point to memory that was allocated by C<malloc>. The
+string length, C<len>, must be supplied. This function will realloc the
+memory pointed to by C<ptr>, so that pointer should not be freed or used by
+the programmer after giving it to sv_usepvn. Does not handle 'set' magic.
+See C<sv_usepvn_mg>.
+
+=cut
+*/
+
void
Perl_sv_usepvn(pTHX_ register SV *sv, register char *ptr, register STRLEN len)
{
@@ -2805,6 +2951,14 @@ Perl_sv_usepvn(pTHX_ register SV *sv, register char *ptr, register STRLEN len)
SvTAINT(sv);
}
+/*
+=for apidoc sv_usepvn_mg
+
+Like C<sv_usepvn>, but also handles 'set' magic.
+
+=cut
+*/
+
void
Perl_sv_usepvn_mg(pTHX_ register SV *sv, register char *ptr, register STRLEN len)
{
@@ -2826,6 +2980,17 @@ Perl_sv_force_normal(pTHX_ register SV *sv)
sv_unglob(sv);
}
+/*
+=for apidoc sv_chop
+
+Efficient removal of characters from the beginning of the string buffer.
+SvPOK(sv) must be true and the C<ptr> must be a pointer to somewhere inside
+the string buffer. The C<ptr> becomes the first character of the adjusted
+string.
+
+=cut
+*/
+
void
Perl_sv_chop(pTHX_ register SV *sv, register char *ptr) /* like set but assuming ptr is in sv */
@@ -2858,6 +3023,16 @@ Perl_sv_chop(pTHX_ register SV *sv, register char *ptr) /* like set but assuming
SvIVX(sv) += delta;
}
+/*
+=for apidoc sv_catpvn
+
+Concatenates the string onto the end of the string which is in the SV. The
+C<len> indicates number of bytes to copy. Handles 'get' magic, but not
+'set' magic. See C<sv_catpvn_mg>.
+
+=cut
+*/
+
void
Perl_sv_catpvn(pTHX_ register SV *sv, register const char *ptr, register STRLEN len)
{
@@ -2875,6 +3050,14 @@ Perl_sv_catpvn(pTHX_ register SV *sv, register const char *ptr, register STRLEN
SvTAINT(sv);
}
+/*
+=for apidoc sv_catpvn_mg
+
+Like C<sv_catpvn>, but also handles 'set' magic.
+
+=cut
+*/
+
void
Perl_sv_catpvn_mg(pTHX_ register SV *sv, register const char *ptr, register STRLEN len)
{
@@ -2882,6 +3065,15 @@ Perl_sv_catpvn_mg(pTHX_ register SV *sv, register const char *ptr, register STRL
SvSETMAGIC(sv);
}
+/*
+=for apidoc sv_catsv
+
+Concatenates the string from SV C<ssv> onto the end of the string in SV
+C<dsv>. Handles 'get' magic, but not 'set' magic. See C<sv_catsv_mg>.
+
+=cut
+*/
+
void
Perl_sv_catsv(pTHX_ SV *dstr, register SV *sstr)
{
@@ -2893,6 +3085,14 @@ Perl_sv_catsv(pTHX_ SV *dstr, register SV *sstr)
sv_catpvn(dstr,s,len);
}
+/*
+=for apidoc sv_catsv_mg
+
+Like C<sv_catsv>, but also handles 'set' magic.
+
+=cut
+*/
+
void
Perl_sv_catsv_mg(pTHX_ SV *dstr, register SV *sstr)
{
@@ -2900,6 +3100,15 @@ Perl_sv_catsv_mg(pTHX_ SV *dstr, register SV *sstr)
SvSETMAGIC(dstr);
}
+/*
+=for apidoc sv_catpv
+
+Concatenates the string onto the end of the string which is in the SV.
+Handles 'get' magic, but not 'set' magic. See C<sv_catpv_mg>.
+
+=cut
+*/
+
void
Perl_sv_catpv(pTHX_ register SV *sv, register const char *ptr)
{
@@ -2920,6 +3129,14 @@ Perl_sv_catpv(pTHX_ register SV *sv, register const char *ptr)
SvTAINT(sv);
}
+/*
+=for apidoc sv_catpv_mg
+
+Like C<sv_catpv>, but also handles 'set' magic.
+
+=cut
+*/
+
void
Perl_sv_catpv_mg(pTHX_ register SV *sv, register const char *ptr)
{
@@ -2942,6 +3159,14 @@ Perl_newSV(pTHX_ STRLEN len)
/* name is assumed to contain an SV* if (name && namelen == HEf_SVKEY) */
+/*
+=for apidoc sv_magic
+
+Adds magic to an SV.
+
+=cut
+*/
+
void
Perl_sv_magic(pTHX_ register SV *sv, SV *obj, int how, const char *name, I32 namlen)
{
@@ -3190,6 +3415,15 @@ S_sv_del_backref(pTHX_ SV *sv)
}
}
+/*
+=for apidoc sv_insert
+
+Inserts a string at the specified offset/length within the SV. Similar to
+the Perl substr() function.
+
+=cut
+*/
+
void
Perl_sv_insert(pTHX_ SV *bigstr, STRLEN offset, STRLEN len, char *little, STRLEN littlelen)
{
@@ -3540,6 +3774,14 @@ Perl_sv_free(pTHX_ SV *sv)
del_SV(sv);
}
+/*
+=for apidoc sv_len
+
+Returns the length of the string in the SV. See also C<SvCUR>.
+
+=cut
+*/
+
STRLEN
Perl_sv_len(pTHX_ register SV *sv)
{
@@ -3641,6 +3883,15 @@ Perl_sv_pos_b2u(pTHX_ register SV *sv, I32* offsetp)
return;
}
+/*
+=for apidoc sv_eq
+
+Returns a boolean indicating whether the strings in the two SVs are
+identical.
+
+=cut
+*/
+
I32
Perl_sv_eq(pTHX_ register SV *str1, register SV *str2)
{
@@ -3667,6 +3918,16 @@ Perl_sv_eq(pTHX_ register SV *str1, register SV *str2)
return memEQ(pv1, pv2, cur1);
}
+/*
+=for apidoc sv_cmp
+
+Compares the strings in two SVs. Returns -1, 0, or 1 indicating whether the
+string in C<sv1> is less than, equal to, or greater than the string in
+C<sv2>.
+
+=cut
+*/
+
I32
Perl_sv_cmp(pTHX_ register SV *str1, register SV *str2)
{
@@ -4063,6 +4324,14 @@ screamer2:
}
+/*
+=for apidoc sv_inc
+
+Auto-increment of the value in the SV.
+
+=cut
+*/
+
void
Perl_sv_inc(pTHX_ register SV *sv)
{
@@ -4164,6 +4433,14 @@ Perl_sv_inc(pTHX_ register SV *sv)
*d = d[1];
}
+/*
+=for apidoc sv_dec
+
+Auto-decrement of the value in the SV.
+
+=cut
+*/
+
void
Perl_sv_dec(pTHX_ register SV *sv)
{
@@ -4224,6 +4501,15 @@ Perl_sv_dec(pTHX_ register SV *sv)
sv_setnv(sv,Atof(SvPVX(sv)) - 1.0); /* punt */
}
+/*
+=for apidoc sv_mortalcopy
+
+Creates a new SV which is a copy of the original SV. The new SV is marked
+as mortal.
+
+=cut
+*/
+
/* Make a string that will exist for the duration of the expression
* evaluation. Actually, it may have to last longer than that, but
* hopefully we won't free it until it has been assigned to a
@@ -4243,6 +4529,14 @@ Perl_sv_mortalcopy(pTHX_ SV *oldstr)
return sv;
}
+/*
+=for apidoc sv_newmortal
+
+Creates a new SV which is mortal. The reference count of the SV is set to 1.
+
+=cut
+*/
+
SV *
Perl_sv_newmortal(pTHX)
{
@@ -4256,6 +4550,15 @@ Perl_sv_newmortal(pTHX)
return sv;
}
+/*
+=for apidoc sv_2mortal
+
+Marks an SV as mortal. The SV will be destroyed when the current context
+ends.
+
+=cut
+*/
+
/* same thing without the copying */
SV *
@@ -4272,6 +4575,16 @@ Perl_sv_2mortal(pTHX_ register SV *sv)
return sv;
}
+/*
+=for apidoc newSVpv
+
+Creates a new SV and copies a string into it. The reference count for the
+SV is set to 1. If C<len> is zero, Perl will compute the length using
+strlen(). For efficiency, consider using C<newSVpvn> instead.
+
+=cut
+*/
+
SV *
Perl_newSVpv(pTHX_ const char *s, STRLEN len)
{
@@ -4284,6 +4597,17 @@ Perl_newSVpv(pTHX_ const char *s, STRLEN len)
return sv;
}
+/*
+=for apidoc newSVpvn
+
+Creates a new SV and copies a string into it. The reference count for the
+SV is set to 1. Note that if C<len> is zero, Perl will create a zero length
+string. You are responsible for ensuring that the source string is at least
+C<len> bytes long.
+
+=cut
+*/
+
SV *
Perl_newSVpvn(pTHX_ const char *s, STRLEN len)
{
@@ -4308,6 +4632,15 @@ Perl_newSVpvf_nocontext(const char* pat, ...)
}
#endif
+/*
+=for apidoc newSVpvf
+
+Creates a new SV an initialize it with the string formatted like
+C<sprintf>.
+
+=cut
+*/
+
SV *
Perl_newSVpvf(pTHX_ const char* pat, ...)
{
@@ -4328,6 +4661,15 @@ Perl_vnewSVpvf(pTHX_ const char* pat, va_list* args)
return sv;
}
+/*
+=for apidoc newSVnv
+
+Creates a new SV and copies a floating point value into it.
+The reference count for the SV is set to 1.
+
+=cut
+*/
+
SV *
Perl_newSVnv(pTHX_ NV n)
{
@@ -4338,6 +4680,15 @@ Perl_newSVnv(pTHX_ NV n)
return sv;
}
+/*
+=for apidoc newSViv
+
+Creates a new SV and copies an integer into it. The reference count for the
+SV is set to 1.
+
+=cut
+*/
+
SV *
Perl_newSViv(pTHX_ IV i)
{
@@ -4348,6 +4699,15 @@ Perl_newSViv(pTHX_ IV i)
return sv;
}
+/*
+=for apidoc newRV_noinc
+
+Creates an RV wrapper for an SV. The reference count for the original
+SV is B<not> incremented.
+
+=cut
+*/
+
SV *
Perl_newRV_noinc(pTHX_ SV *tmpRef)
{
@@ -4362,12 +4722,21 @@ Perl_newRV_noinc(pTHX_ SV *tmpRef)
return sv;
}
+/* newRV_inc is #defined to newRV in sv.h */
SV *
Perl_newRV(pTHX_ SV *tmpRef)
{
return newRV_noinc(SvREFCNT_inc(tmpRef));
}
+/*
+=for apidoc newSVsv
+
+Creates a new SV which is an exact duplicate of the original SV.
+
+=cut
+*/
+
/* make an exact duplicate of old */
SV *
@@ -4758,6 +5127,16 @@ Perl_sv_reftype(pTHX_ SV *sv, int ob)
}
}
+/*
+=for apidoc sv_isobject
+
+Returns a boolean indicating whether the SV is an RV pointing to a blessed
+object. If the SV is not an RV, or if the object is not blessed, then this
+will return false.
+
+=cut
+*/
+
int
Perl_sv_isobject(pTHX_ SV *sv)
{
@@ -4773,6 +5152,16 @@ Perl_sv_isobject(pTHX_ SV *sv)
return 1;
}
+/*
+=for apidoc sv_isa
+
+Returns a boolean indicating whether the SV is blessed into the specified
+class. This does not check for subtypes; use C<sv_derived_from> to verify
+an inheritance relationship.
+
+=cut
+*/
+
int
Perl_sv_isa(pTHX_ SV *sv, const char *name)
{
@@ -4789,6 +5178,17 @@ Perl_sv_isa(pTHX_ SV *sv, const char *name)
return strEQ(HvNAME(SvSTASH(sv)), name);
}
+/*
+=for apidoc newSVrv
+
+Creates a new SV for the RV, C<rv>, to point to. If C<rv> is not an RV then
+it will be upgraded to one. If C<classname> is non-null then the new SV will
+be blessed in the specified package. The new SV is returned and its
+reference count is 1.
+
+=cut
+*/
+
SV*
Perl_newSVrv(pTHX_ SV *rv, const char *classname)
{
@@ -4814,6 +5214,24 @@ Perl_newSVrv(pTHX_ SV *rv, const char *classname)
return sv;
}
+/*
+=for apidoc sv_setref_pv
+
+Copies a pointer into a new SV, optionally blessing the SV. The C<rv>
+argument will be upgraded to an RV. That RV will be modified to point to
+the new SV. If the C<pv> argument is NULL then C<PL_sv_undef> will be placed
+into the SV. The C<classname> argument indicates the package for the
+blessing. Set C<classname> to C<Nullch> to avoid the blessing. The new SV
+will be returned and will have a reference count of 1.
+
+Do not use with other Perl types such as HV, AV, SV, CV, because those
+objects will become corrupted by the pointer copy process.
+
+Note that C<sv_setref_pvn> copies the string while this copies the pointer.
+
+=cut
+*/
+
SV*
Perl_sv_setref_pv(pTHX_ SV *rv, const char *classname, void *pv)
{
@@ -4826,6 +5244,18 @@ Perl_sv_setref_pv(pTHX_ SV *rv, const char *classname, void *pv)
return rv;
}
+/*
+=for apidoc sv_setref_iv
+
+Copies an integer into a new SV, optionally blessing the SV. The C<rv>
+argument will be upgraded to an RV. That RV will be modified to point to
+the new SV. The C<classname> argument indicates the package for the
+blessing. Set C<classname> to C<Nullch> to avoid the blessing. The new SV
+will be returned and will have a reference count of 1.
+
+=cut
+*/
+
SV*
Perl_sv_setref_iv(pTHX_ SV *rv, const char *classname, IV iv)
{
@@ -4833,6 +5263,18 @@ Perl_sv_setref_iv(pTHX_ SV *rv, const char *classname, IV iv)
return rv;
}
+/*
+=for apidoc sv_setref_nv
+
+Copies a double into a new SV, optionally blessing the SV. The C<rv>
+argument will be upgraded to an RV. That RV will be modified to point to
+the new SV. The C<classname> argument indicates the package for the
+blessing. Set C<classname> to C<Nullch> to avoid the blessing. The new SV
+will be returned and will have a reference count of 1.
+
+=cut
+*/
+
SV*
Perl_sv_setref_nv(pTHX_ SV *rv, const char *classname, NV nv)
{
@@ -4840,6 +5282,21 @@ Perl_sv_setref_nv(pTHX_ SV *rv, const char *classname, NV nv)
return rv;
}
+/*
+=for apidoc sv_setref_pvn
+
+Copies a string into a new SV, optionally blessing the SV. The length of the
+string must be specified with C<n>. The C<rv> argument will be upgraded to
+an RV. That RV will be modified to point to the new SV. The C<classname>
+argument indicates the package for the blessing. Set C<classname> to
+C<Nullch> to avoid the blessing. The new SV will be returned and will have
+a reference count of 1.
+
+Note that C<sv_setref_pv> copies the pointer while this copies the string.
+
+=cut
+*/
+
SV*
Perl_sv_setref_pvn(pTHX_ SV *rv, const char *classname, char *pv, STRLEN n)
{
@@ -4847,6 +5304,16 @@ Perl_sv_setref_pvn(pTHX_ SV *rv, const char *classname, char *pv, STRLEN n)
return rv;
}
+/*
+=for apidoc sv_bless
+
+Blesses an SV into a specified package. The SV must be an RV. The package
+must be designated by its stash (see C<gv_stashpv()>). The reference count
+of the SV is unaffected.
+
+=cut
+*/
+
SV*
Perl_sv_bless(pTHX_ SV *sv, HV *stash)
{
@@ -4896,6 +5363,16 @@ S_sv_unglob(pTHX_ SV *sv)
SvFLAGS(sv) |= SVt_PVMG;
}
+/*
+=for apidoc sv_unref
+
+Unsets the RV status of the SV, and decrements the reference count of
+whatever was being referenced by the RV. This can almost be thought of
+as a reversal of C<newSVrv>. See C<SvROK_off>.
+
+=cut
+*/
+
void
Perl_sv_unref(pTHX_ SV *sv)
{
@@ -4942,6 +5419,15 @@ Perl_sv_tainted(pTHX_ SV *sv)
return FALSE;
}
+/*
+=for apidoc sv_setpviv
+
+Copies an integer into the given SV, also updating its string value.
+Does not handle 'set' magic. See C<sv_setpviv_mg>.
+
+=cut
+*/
+
void
Perl_sv_setpviv(pTHX_ SV *sv, IV iv)
{
@@ -4953,6 +5439,14 @@ Perl_sv_setpviv(pTHX_ SV *sv, IV iv)
}
+/*
+=for apidoc sv_setpviv_mg
+
+Like C<sv_setpviv>, but also handles 'set' magic.
+
+=cut
+*/
+
void
Perl_sv_setpviv_mg(pTHX_ SV *sv, IV iv)
{
@@ -4987,6 +5481,15 @@ Perl_sv_setpvf_mg_nocontext(SV *sv, const char* pat, ...)
}
#endif
+/*
+=for apidoc sv_setpvf
+
+Processes its arguments like C<sprintf> and sets an SV to the formatted
+output. Does not handle 'set' magic. See C<sv_setpvf_mg>.
+
+=cut
+*/
+
void
Perl_sv_setpvf(pTHX_ SV *sv, const char* pat, ...)
{
@@ -5002,6 +5505,14 @@ Perl_sv_vsetpvf(pTHX_ SV *sv, const char* pat, va_list* args)
sv_vsetpvfn(sv, pat, strlen(pat), args, Null(SV**), 0, Null(bool*));
}
+/*
+=for apidoc sv_setpvf_mg
+
+Like C<sv_setpvf>, but also handles 'set' magic.
+
+=cut
+*/
+
void
Perl_sv_setpvf_mg(pTHX_ SV *sv, const char* pat, ...)
{
@@ -5040,6 +5551,16 @@ Perl_sv_catpvf_mg_nocontext(SV *sv, const char* pat, ...)
}
#endif
+/*
+=for apidoc sv_catpvf
+
+Processes its arguments like C<sprintf> and appends the formatted output
+to an SV. Handles 'get' magic, but not 'set' magic. C<SvSETMAGIC()> must
+typically be called after calling this function to handle 'set' magic.
+
+=cut
+*/
+
void
Perl_sv_catpvf(pTHX_ SV *sv, const char* pat, ...)
{
@@ -5055,6 +5576,14 @@ Perl_sv_vcatpvf(pTHX_ SV *sv, const char* pat, va_list* args)
sv_vcatpvfn(sv, pat, strlen(pat), args, Null(SV**), 0, Null(bool*));
}
+/*
+=for apidoc sv_catpvf_mg
+
+Like C<sv_catpvf>, but also handles 'set' magic.
+
+=cut
+*/
+
void
Perl_sv_catpvf_mg(pTHX_ SV *sv, const char* pat, ...)
{
@@ -5071,6 +5600,15 @@ Perl_sv_vcatpvf_mg(pTHX_ SV *sv, const char* pat, va_list* args)
SvSETMAGIC(sv);
}
+/*
+=for apidoc sv_vsetpvfn
+
+Works like C<vcatpvfn> but copies the text into the SV instead of
+appending it.
+
+=cut
+*/
+
void
Perl_sv_vsetpvfn(pTHX_ SV *sv, const char *pat, STRLEN patlen, va_list *args, SV **svargs, I32 svmax, bool *maybe_tainted)
{
@@ -5078,6 +5616,18 @@ Perl_sv_vsetpvfn(pTHX_ SV *sv, const char *pat, STRLEN patlen, va_list *args, SV
sv_vcatpvfn(sv, pat, patlen, args, svargs, svmax, maybe_tainted);
}
+/*
+=for apidoc sv_vcatpvfn
+
+Processes its arguments like C<vsprintf> and appends the formatted output
+to an SV. Uses an array of SVs if the C style variable argument list is
+missing (NULL). When running with taint checks enabled, indicates via
+C<maybe_tainted> if results are untrustworthy (often due to the use of
+locales).
+
+=cut
+*/
+
void
Perl_sv_vcatpvfn(pTHX_ SV *sv, const char *pat, STRLEN patlen, va_list *args, SV **svargs, I32 svmax, bool *maybe_tainted)
{
diff --git a/sv.h b/sv.h
index eea984a570..91fd17bceb 100644
--- a/sv.h
+++ b/sv.h
@@ -11,6 +11,35 @@
#undef sv_flags /* Convex has this in <signal.h> for sigvec() */
#endif
+/*
+=for apidoc AmU||svtype
+An enum of flags for Perl types. These are found in the file B<sv.h>
+in the C<svtype> enum. Test these flags with the C<SvTYPE> macro.
+
+=for apidoc AmU||SVt_PV
+Pointer type flag for scalars. See C<svtype>.
+
+=for apidoc AmU||SVt_IV
+Integer type flag for scalars. See C<svtype>.
+
+=for apidoc AmU||SVt_NV
+Double type flag for scalars. See C<svtype>.
+
+=for apidoc AmU||SVt_PVMG
+Type flag for blessed scalars. See C<svtype>.
+
+=for apidoc AmU||SVt_PVAV
+Type flag for arrays. See C<svtype>.
+
+=for apidoc AmU||SVt_PVHV
+Type flag for hashes. See C<svtype>.
+
+=for apidoc AmU||SVt_PVCV
+Type flag for code refs. See C<svtype>.
+
+=cut
+*/
+
typedef enum {
SVt_NULL, /* 0 */
SVt_IV, /* 1 */
@@ -68,6 +97,26 @@ struct io {
U32 sv_flags; /* what we are */
};
+/*
+=for apidoc Am|U32|SvREFCNT|SV* sv
+Returns the value of the object's reference count.
+
+=for apidoc Am|SV*|SvREFCNT_inc|SV* sv
+Increments the reference count of the given SV.
+
+=for apidoc Am|void|SvREFCNT_dec|SV* sv
+Decrements the reference count of the given SV.
+
+=for apidoc Am|svtype|SvTYPE|SV* sv
+Returns the type of the SV. See C<svtype>.
+
+=for apidoc Am|void|SvUPGRADE|SV* sv|svtype type
+Used to upgrade an SV to a more complex form. Uses C<sv_upgrade> to
+perform the upgrade if necessary. See C<svtype>.
+
+=cut
+*/
+
#define SvANY(sv) (sv)->sv_any
#define SvFLAGS(sv) (sv)->sv_flags
#define SvREFCNT(sv) (sv)->sv_refcnt
@@ -330,6 +379,123 @@ struct xpvio {
/* The following macros define implementation-independent predicates on SVs. */
+/*
+=for apidoc Am|bool|SvNIOK|SV* sv
+Returns a boolean indicating whether the SV contains a number, integer or
+double.
+
+=for apidoc Am|bool|SvNIOKp|SV* sv
+Returns a boolean indicating whether the SV contains a number, integer or
+double. Checks the B<private> setting. Use C<SvNIOK>.
+
+=for apidoc Am|void|SvNIOK_off|SV* sv
+Unsets the NV/IV status of an SV.
+
+=for apidoc Am|bool|SvOK|SV* sv
+Returns a boolean indicating whether the value is an SV.
+
+=for apidoc Am|bool|SvIOKp|SV* sv
+Returns a boolean indicating whether the SV contains an integer. Checks
+the B<private> setting. Use C<SvIOK>.
+
+=for apidoc Am|bool|SvNOKp|SV* sv
+Returns a boolean indicating whether the SV contains a double. Checks the
+B<private> setting. Use C<SvNOK>.
+
+=for apidoc Am|bool|SvPOKp|SV* sv
+Returns a boolean indicating whether the SV contains a character string.
+Checks the B<private> setting. Use C<SvPOK>.
+
+=for apidoc Am|bool|SvIOK|SV* sv
+Returns a boolean indicating whether the SV contains an integer.
+
+=for apidoc Am|void|SvIOK_on|SV* sv
+Tells an SV that it is an integer.
+
+=for apidoc Am|void|SvIOK_off|SV* sv
+Unsets the IV status of an SV.
+
+=for apidoc Am|void|SvIOK_only|SV* sv
+Tells an SV that it is an integer and disables all other OK bits.
+
+=for apidoc Am|bool|SvNOK|SV* sv
+Returns a boolean indicating whether the SV contains a double.
+
+=for apidoc Am|void|SvNOK_on|SV* sv
+Tells an SV that it is a double.
+
+=for apidoc Am|void|SvNOK_off|SV* sv
+Unsets the NV status of an SV.
+
+=for apidoc Am|void|SvNOK_only|SV* sv
+Tells an SV that it is a double and disables all other OK bits.
+
+=for apidoc Am|bool|SvPOK|SV* sv
+Returns a boolean indicating whether the SV contains a character
+string.
+
+=for apidoc Am|void|SvPOK_on|SV* sv
+Tells an SV that it is a string.
+
+=for apidoc Am|void|SvPOK_off|SV* sv
+Unsets the PV status of an SV.
+
+=for apidoc Am|void|SvPOK_only|SV* sv
+Tells an SV that it is a string and disables all other OK bits.
+
+=for apidoc Am|bool|SvOOK|SV* sv
+Returns a boolean indicating whether the SvIVX is a valid offset value for
+the SvPVX. This hack is used internally to speed up removal of characters
+from the beginning of a SvPV. When SvOOK is true, then the start of the
+allocated string buffer is really (SvPVX - SvIVX).
+
+=for apidoc Am|bool|SvROK|SV* sv
+Tests if the SV is an RV.
+
+=for apidoc Am|void|SvROK_on|SV* sv
+Tells an SV that it is an RV.
+
+=for apidoc Am|void|SvROK_off|SV* sv
+Unsets the RV status of an SV.
+
+=for apidoc Am|SV*|SvRV|SV* sv
+Dereferences an RV to return the SV.
+
+=for apidoc Am|IV|SvIVX|SV* sv
+Returns the integer which is stored in the SV, assuming SvIOK is
+true.
+
+=for apidoc Am|UV|SvUVX|SV* sv
+Returns the unsigned integer which is stored in the SV, assuming SvIOK is
+true.
+
+=for apidoc Am|NV|SvNVX|SV* sv
+Returns the double which is stored in the SV, assuming SvNOK is
+true.
+
+=for apidoc Am|char*|SvPVX|SV* sv
+Returns a pointer to the string in the SV. The SV must contain a
+string.
+
+=for apidoc Am|STRLEN|SvCUR|SV* sv
+Returns the length of the string which is in the SV. See C<SvLEN>.
+
+=for apidoc Am|STRLEN|SvLEN|SV* sv
+Returns the size of the string buffer in the SV. See C<SvCUR>.
+
+=for apidoc Am|char*|SvEND|SV* sv
+Returns a pointer to the last character in the string which is in the SV.
+See C<SvCUR>. Access the character as *(SvEND(sv)).
+
+=for apidoc Am|HV*|SvSTASH|SV* sv
+Returns the stash of the SV.
+
+=for apidoc Am|void|SvCUR_set|SV* sv|STRLEN len
+Set the length of the string which is in the SV. See C<SvCUR>.
+
+=cut
+*/
+
#define SvNIOK(sv) (SvFLAGS(sv) & (SVf_IOK|SVf_NOK))
#define SvNIOKp(sv) (SvFLAGS(sv) & (SVp_IOK|SVp_NOK))
#define SvNIOK_off(sv) (SvFLAGS(sv) &= ~(SVf_IOK|SVf_NOK| \
@@ -537,6 +703,28 @@ struct xpvio {
#define IoTYPE(sv) ((XPVIO*) SvANY(sv))->xio_type
#define IoFLAGS(sv) ((XPVIO*) SvANY(sv))->xio_flags
+/*
+=for apidoc Am|bool|SvTAINTED|SV* sv
+Checks to see if an SV is tainted. Returns TRUE if it is, FALSE if
+not.
+
+=for apidoc Am|void|SvTAINTED_on|SV* sv
+Marks an SV as tainted.
+
+=for apidoc Am|void|SvTAINTED_off|SV* sv
+Untaints an SV. Be I<very> careful with this routine, as it short-circuits
+some of Perl's fundamental security features. XS module authors should not
+use this function unless they fully understand all the implications of
+unconditionally untainting the value. Untainting should be done in the
+standard perl fashion, via a carefully crafted regexp, rather than directly
+untainting variables.
+
+=for apidoc Am|void|SvTAINT|SV* sv
+Taints an SV if tainting is enabled
+
+=cut
+*/
+
#define SvTAINTED(sv) (SvMAGICAL(sv) && sv_tainted(sv))
#define SvTAINTED_on(sv) STMT_START{ if(PL_tainting){sv_taint(sv);} }STMT_END
#define SvTAINTED_off(sv) STMT_START{ if(PL_tainting){sv_untaint(sv);} }STMT_END
@@ -550,6 +738,35 @@ struct xpvio {
} \
} STMT_END
+/*
+=for apidoc Am|char*|SvPV_force|SV* sv|STRLEN len
+Like <SvPV> but will force the SV into becoming a string (SvPOK). You want
+force if you are going to update the SvPVX directly.
+
+=for apidoc Am|char*|SvPV|SV* sv|STRLEN len
+Returns a pointer to the string in the SV, or a stringified form of the SV
+if the SV does not contain a string. Handles 'get' magic.
+
+=for apidoc Am|char*|SvPV_nolen|SV* sv
+Returns a pointer to the string in the SV, or a stringified form of the SV
+if the SV does not contain a string. Handles 'get' magic.
+
+=for apidoc Am|IV|SvIV|SV* sv
+Coerces the given SV to an integer and returns it.
+
+=for apidoc Am|NV|SvNV|SV* sv
+Coerce the given SV to a double and return it.
+
+=for apidoc Am|UV|SvUV|SV* sv
+Coerces the given SV to an unsigned integer and returns it.
+
+=for apidoc Am|bool|SvTRUE|SV* sv
+Returns a boolean indicating whether Perl would evaluate the SV as true or
+false, defined or undefined. Does not handle 'get' magic.
+
+=cut
+*/
+
#define SvPV_force(sv, lp) sv_pvn_force(sv, &lp)
#define SvPV(sv, lp) sv_pvn(sv, &lp)
#define SvPV_nolen(sv) sv_pv(sv)
@@ -726,10 +943,45 @@ struct xpvio {
#endif /* !__GNU__ */
#endif /* !CRIPPLED_CC */
+/*
+=for apidoc Am|SV*|newRV_inc|SV* sv
+
+Creates an RV wrapper for an SV. The reference count for the original SV is
+incremented.
+
+=cut
+*/
+
#define newRV_inc(sv) newRV(sv)
/* the following macros update any magic values this sv is associated with */
+/*
+=for apidoc Am|void|SvGETMAGIC|SV* sv
+Invokes C<mg_get> on an SV if it has 'get' magic. This macro evaluates its
+argument more than once.
+
+=for apidoc Am|void|SvSETMAGIC|SV* sv
+Invokes C<mg_set> on an SV if it has 'set' magic. This macro evaluates its
+argument more than once.
+
+=for apidoc Am|void|SvSetSV|SV* dsb|SV* ssv
+Calls C<sv_setsv> if dsv is not the same as ssv. May evaluate arguments
+more than once.
+
+=for apidoc Am|void|SvSetSV_nosteal|SV* dsv|SV* ssv
+Calls a non-destructive version of C<sv_setsv> if dsv is not the same as
+ssv. May evaluate arguments more than once.
+
+=for apidoc Am|void|SvGROW|SV* sv|STRLEN len
+Expands the character buffer in the SV so that it has room for the
+indicated number of bytes (remember to reserve space for an extra trailing
+NUL character). Calls C<sv_grow> to perform the expansion if necessary.
+Returns a pointer to the character buffer.
+
+=cut
+*/
+
#define SvGETMAGIC(x) STMT_START { if (SvGMAGICAL(x)) mg_get(x); } STMT_END
#define SvSETMAGIC(x) STMT_START { if (SvSMAGICAL(x)) mg_set(x); } STMT_END
diff --git a/thrdvar.h b/thrdvar.h
index d228ee2394..814842c5da 100644
--- a/thrdvar.h
+++ b/thrdvar.h
@@ -56,6 +56,18 @@ PERLVAR(Tretstack_max, I32)
PERLVAR(TSv, SV *) /* used to hold temporary values */
PERLVAR(TXpv, XPV *) /* used to hold temporary values */
+
+/*
+=for apidoc Amn|STRLEN|PL_na
+
+A convenience variable which is typically used with C<SvPV> when one
+doesn't care about the length of the string. It is usually more efficient
+to either declare a local variable and use that instead or to use the
+C<SvPV_nolen> macro.
+
+=cut
+*/
+
PERLVAR(Tna, STRLEN) /* for use in SvPV when length is
Not Applicable */
diff --git a/universal.c b/universal.c
index aa5487ff0e..1e5a1a0efe 100644
--- a/universal.c
+++ b/universal.c
@@ -73,6 +73,16 @@ S_isa_lookup(pTHX_ HV *stash, const char *name, int len, int level)
return boolSV(strEQ(name, "UNIVERSAL"));
}
+/*
+=for apidoc sv_derived_from
+
+Returns a boolean indicating whether the SV is derived from the specified
+class. This is the function that implements C<UNIVERSAL::isa>. It works
+for class names as well as for objects.
+
+=cut
+*/
+
bool
Perl_sv_derived_from(pTHX_ SV *sv, const char *name)
{
diff --git a/util.c b/util.c
index 09fa02748b..13b00102e3 100644
--- a/util.c
+++ b/util.c
@@ -912,6 +912,15 @@ Perl_mem_collxfrm(pTHX_ const char *s, STRLEN len, STRLEN *xlen)
If FBMcf_TAIL, the table is created as if the string has a trailing \n. */
+/*
+=for apidoc fbm_compile
+
+Analyses the string in order to make fast searches on it using fbm_instr()
+-- the Boyer-Moore algorithm.
+
+=cut
+*/
+
void
Perl_fbm_compile(pTHX_ SV *sv, U32 flags)
{
@@ -972,6 +981,17 @@ Perl_fbm_compile(pTHX_ SV *sv, U32 flags)
/* If SvTAIL is actually due to \Z or \z, this gives false positives
if multiline */
+/*
+=for apidoc fbm_instr
+
+Returns the location of the SV in the string delimited by C<str> and
+C<strend>. It returns C<Nullch> if the string can't be found. The C<sv>
+does not have to be fbm_compiled, but the search will not be as fast
+then.
+
+=cut
+*/
+
char *
Perl_fbm_instr(pTHX_ unsigned char *big, register unsigned char *bigend, SV *littlestr, U32 flags)
{
@@ -1304,6 +1324,14 @@ Perl_ibcmp_locale(pTHX_ const char *s1, const char *s2, register I32 len)
/* copy a string to a safe spot */
+/*
+=for apidoc savepv
+
+Copy a string to a safe spot. This does not use an SV.
+
+=cut
+*/
+
char *
Perl_savepv(pTHX_ const char *sv)
{
@@ -1316,6 +1344,15 @@ Perl_savepv(pTHX_ const char *sv)
/* same thing but with a known length */
+/*
+=for apidoc savepvn
+
+Copy a string to a safe spot. The C<len> indicates number of bytes to
+copy. This does not use an SV.
+
+=cut
+*/
+
char *
Perl_savepvn(pTHX_ const char *sv, register I32 len)
{
@@ -1620,6 +1657,16 @@ Perl_croak_nocontext(const char *pat, ...)
}
#endif /* PERL_IMPLICIT_CONTEXT */
+/*
+=for apidoc croak
+
+This is the XSUB-writer's interface to Perl's C<die> function. Use this
+function the same way you use the C C<printf> function. See
+C<warn>.
+
+=cut
+*/
+
void
Perl_croak(pTHX_ const char *pat, ...)
{
@@ -1699,6 +1746,16 @@ Perl_warn_nocontext(const char *pat, ...)
}
#endif /* PERL_IMPLICIT_CONTEXT */
+/*
+=for apidoc warn
+
+This is the XSUB-writer's interface to Perl's C<warn> function. Use this
+function the same way you use the C C<printf> function. See
+C<croak>.
+
+=cut
+*/
+
void
Perl_warn(pTHX_ const char *pat, ...)
{