From: Jarkko Hietaniemi Date: Wed, 2 Jan 2002 23:40:08 +0000 (+0000) Subject: Simon's new perlapi scheme, I hope I got all the pieces. X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=commitdiff_plain;h=94bdecf9800c3bee967274854f7adf2933ffd42b;p=p5sagit%2Fp5-mst-13.2.git Simon's new perlapi scheme, I hope I got all the pieces. p4raw-id: //depot/perl@14029 --- diff --git a/MANIFEST b/MANIFEST index a091af9..7420fc5 100644 --- a/MANIFEST +++ b/MANIFEST @@ -1,6 +1,7 @@ apollo/netinet/in.h Apollo DomainOS port: C header file frontend Artistic The "Artistic License" AUTHORS Contact info for contributors +autodoc.pl Creates pod/perlintern.pod and pod/perlapi.pod av.c Array value code av.h Array value header beos/beos.c BeOS port @@ -44,6 +45,7 @@ dump.c Debugging output emacs/cperl-mode.el An alternate perl-mode emacs/e2ctags.pl etags to ctags converter emacs/ptags Creates smart TAGS file +embed.fnc Database used by embed.pl embed.h Maps symbols to safer names embed.pl Produces {embed,embedvar,proto}.h, global.sym embedvar.h C namespace management diff --git a/Makefile.SH b/Makefile.SH index 0ee560b..d617fc1 100644 --- a/Makefile.SH +++ b/Makefile.SH @@ -819,6 +819,7 @@ regen_headers: FORCE -perl bytecode.pl -perl regcomp.pl -perl warnings.pl + -perl autodoc.pl regen_pods: FORCE -cd pod; $(LDLIBPTH) make regen_pods diff --git a/autodoc.pl b/autodoc.pl new file mode 100644 index 0000000..8b6f3b4 --- /dev/null +++ b/autodoc.pl @@ -0,0 +1,274 @@ +#!/usr/bin/perl -w + +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__. +# This is used to generate prototype headers under various configurations, +# export symbols lists for different platforms, and macros to provide an +# implicit interpreter context argument. +# + +open IN, "embed.fnc" or die $!; + +# walk table providing an array of components in each line to +# subroutine, printing the result +sub walk_table (&@) { + my $function = shift; + my $filename = shift || '-'; + my $leader = shift; + my $trailer = shift; + my $F; + local *F; + if (ref $filename) { # filehandle + $F = $filename; + } + else { + open F, ">$filename" or die "Can't open $filename: $!"; + $F = \*F; + } + print $F $leader if $leader; + seek IN, 0, 0; # so we may restart + while () { + chomp; + next if /^:/; + while (s|\\$||) { + $_ .= ; + chomp; + } + my @args; + if (/^\s*(#|$)/) { + @args = $_; + } + else { + @args = split /\s*\|\s*/, $_; + } + print $F $function->(@args); + } + print $F $trailer if $trailer; + close $F unless ref $filename; +} + +my %apidocs; +my %gutsdocs; +my %docfuncs; + +my $curheader = "Unknown section"; + +sub autodoc ($$) { # parse a file and extract documentation info + my($fh,$file) = @_; + my($in, $doc, $line); +FUNC: + while (defined($in = <$fh>)) { + if ($in=~ /^=head1 (.*)/) { + $curheader = $1; + next FUNC; + } + $line++; + 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>)) { + if ($doc =~ /^=head1 (.*)/) { + $curheader = $1; + next DOC; + } + $line++; + last DOC if $doc =~ /^=\w+/; + if ($doc =~ m:^\*/$:) { + warn "=cut missing? $file:$line:$doc";; + last DOC; + } + $docs .= $doc; + } + $docs = "\n$docs" if $docs and $docs !~ /^\n/; + if ($flags =~ /m/) { + if ($flags =~ /A/) { + $apidocs{$curheader}{$name} = [$flags, $docs, $ret, $file, @args]; + } + else { + $gutsdocs{$curheader}{$name} = [$flags, $docs, $ret, $file, @args]; + } + } + else { + $docfuncs{$name} = [$flags, $docs, $ret, $file, $curheader, @args]; + } + if (defined $doc) { + if ($doc =~ /^=for/) { + $in = $doc; + redo FUNC; + } + } else { + warn "$file:$line:$in"; + } + } + } +} + +sub docout ($$$) { # output the docs for one function + my($fh, $name, $docref) = @_; + my($flags, $docs, $ret, $file, @args) = @$docref; + + $docs .= "NOTE: this function is experimental and may change or be +removed without notice.\n\n" if $flags =~ /x/; + $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"; + } + print $fh "=for hackers\nFound in file $file\n\n"; +} + +my $file; +for $file (glob('*.c'), glob('*.h')) { + open F, "< $file" or die "Cannot open $file for docs: $!\n"; + $curheader = "Functions in file $file\n"; + autodoc(\*F,$file); + 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; + $docref->[0].="x" if $flags =~ /M/; + $apidocs{$docref->[4]}{$func} = + [$docref->[0] . 'A', $docref->[1], $retval, $docref->[3], @args]; + } else { + my $docref = delete $docfuncs{$func}; + $gutsdocs{$docref->[4]}{$func} = + [$docref->[0], $docref->[1], $retval, $docref->[3], @args]; + } + } + return ""; +} \*DOC; + +for (sort keys %docfuncs) { + # Have you used a full for apidoc or just a func name? + # Have you used Ap instead of Am in the for apidoc? + 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 +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. + +_EOB_ + +my $key; +for $key (sort { uc($a) cmp uc($b); } keys %apidocs) { # case insensitive sort + my $section = $apidocs{$key}; + print DOC "\n=head1 $key\n\n=over 8\n\n"; + for my $key (sort { uc($a) cmp uc($b); } keys %$section) { + docout(\*DOC, $key, $section->{$key}); + } + print DOC "\n=back\n"; +} + +print DOC <<'_EOE_'; + +=head1 AUTHORS + +Until May 1997, this document was maintained by Jeff Okamoto +. 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 . + +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 + Perl functions + +=head1 DESCRIPTION + +This file is the autogenerated documentation of functions in the +Perl interpreter that are documented using Perl's internal documentation +format but are not marked as part of the Perl API. In other words, +B! + +END + +for $key (sort { uc($a) cmp uc($b); } keys %gutsdocs) { + my $section = $gutsdocs{$key}; + print GUTS "\n=head1 $key\n\n=over 8\n\n"; + for my $key (sort { uc($a) cmp uc($b); } keys %$section) { + docout(\*GUTS, $key, $section->{$key}); + } + print GUTS "\n=back\n"; +} + +print GUTS <<'END'; + +=head1 AUTHORS + +The autodocumentation system was originally 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; + diff --git a/embed.fnc b/embed.fnc new file mode 100644 index 0000000..9c89232 --- /dev/null +++ b/embed.fnc @@ -0,0 +1,1340 @@ +: Lines are of the form: +: flags|return_type|function_name|arg1|arg2|...|argN +: +: A line may be continued on another by ending it with a backslash. +: Leading and trailing whitespace will be ignored in each component. +: +: flags are single letters with following meanings: +: A member of public API +: m Implemented as a macro - no export, no proto, no #define +: d function has documentation with its source +: s static function, should have an S_ prefix in source +: file +: n has no implicit interpreter/thread context argument +: p function has a Perl_ prefix +: f function takes printf style format string, varargs +: r function never returns +: o has no compatibility macro (#define foo Perl_foo) +: x not exported +: M may change +: +: Individual flags may be separated by whitespace. +: +: New global functions should be added at the end for binary compatibility +: in some configurations. + +START_EXTERN_C + +#if defined(PERL_IMPLICIT_SYS) +Ano |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 +#endif +Anod |PerlInterpreter* |perl_alloc +Anod |void |perl_construct |PerlInterpreter* interp +Anod |int |perl_destruct |PerlInterpreter* interp +Anod |void |perl_free |PerlInterpreter* interp +Anod |int |perl_run |PerlInterpreter* interp +Anod |int |perl_parse |PerlInterpreter* interp|XSINIT_t xsinit \ + |int argc|char** argv|char** env +#if defined(USE_ITHREADS) +Anod |PerlInterpreter*|perl_clone|PerlInterpreter* interp, UV flags +# if defined(PERL_IMPLICIT_SYS) +Ano |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 \ + |struct IPerlDir* d|struct IPerlSock* s \ + |struct IPerlProc* p +# endif +#endif + +Anop |Malloc_t|malloc |MEM_SIZE nbytes +Anop |Malloc_t|calloc |MEM_SIZE elements|MEM_SIZE size +Anop |Malloc_t|realloc |Malloc_t where|MEM_SIZE nbytes +Anop |Free_t |mfree |Malloc_t where +#if defined(MYMALLOC) +np |MEM_SIZE|malloced_size |void *p +#endif + +Anp |void* |get_context +Anp |void |set_context |void *thx + +END_EXTERN_C + +/* functions with flag 'n' should come before here */ +START_EXTERN_C +# include "pp_proto.h" +Ap |SV* |amagic_call |SV* left|SV* right|int method|int dir +Ap |bool |Gv_AMupdate |HV* stash +Ap |CV* |gv_handler |HV* stash|I32 id +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 +ApM |void |apply_attrs_string|char *stashpv|CV *cv|char *attrstr|STRLEN len +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 |SV** |avhv_store_ent |AV *ar|SV* keysv|SV* val|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 +Apd |SV* |av_delete |AV* ar|I32 key|I32 flags +Apd |bool |av_exists |AV* ar|I32 key +Apd |void |av_extend |AV* ar|I32 key +p |AV* |av_fake |I32 size|SV** svp +Apd |SV** |av_fetch |AV* ar|I32 key|I32 lval +Apd |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 +p |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 +Ap |I32 |block_gimme +p |int |block_start |int full +p |void |boot_core_UNIVERSAL +p |void |boot_core_PerlIO +Ap |void |call_list |I32 oldscope|AV* av_list +p |bool |cando |Mode_t mode|Uid_t effective|Stat_t* statbufp +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) +Ap |I32 |my_chsize |int fd|Off_t length +#endif +#if defined(USE_5005THREADS) +Ap |MAGIC* |condpair_magic |SV *sv +#endif +p |OP* |convert |I32 optype|I32 flags|OP* o +Afprd |void |croak |const char* pat|... +Apr |void |vcroak |const char* pat|va_list* args +#if defined(PERL_IMPLICIT_CONTEXT) +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|... +Anp |void |load_module_nocontext|U32 flags|SV* name|SV* ver|... +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|... +Afnp |int |printf_nocontext|const char* fmt|... +#endif +p |void |cv_ckproto |CV* cv|GV* gv|char* p +p |CV* |cv_clone |CV* proto +Apd |SV* |cv_const_sv |CV* cv +p |SV* |op_const_sv |OP* o|CV* cv +Ap |void |cv_undef |CV* cv +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 +Ap |PPADDR_t*|get_ppaddr +p |I32 |cxinc +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 +Afp |OP* |die |const char* pat|... +p |OP* |vdie |const char* pat|va_list* args +p |OP* |die_where |char* message|STRLEN msglen +Ap |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 +Ap |int |do_binmode |PerlIO *fp|int iotype|int mode +p |void |do_chop |SV* asv|SV* sv +Ap |bool |do_close |GV* gv|bool not_implicit +p |bool |do_eof |GV* gv +p |bool |do_exec |char* cmd +#if !defined(WIN32) +p |bool |do_exec3 |char* cmd|int fd|int flag +#endif +p |void |do_execfree +#if defined(HAS_MSG) || defined(HAS_SEM) || defined(HAS_SHM) +p |I32 |do_ipcctl |I32 optype|SV** mark|SV** sp +p |I32 |do_ipcget |I32 optype|SV** mark|SV** sp +p |I32 |do_msgrcv |SV** mark|SV** sp +p |I32 |do_msgsnd |SV** mark|SV** sp +p |I32 |do_semop |SV** mark|SV** sp +p |I32 |do_shmio |I32 optype|SV** mark|SV** sp +#endif +Ap |void |do_join |SV* sv|SV* del|SV** mark|SV** sp +p |OP* |do_kv +Ap |bool |do_open |GV* gv|char* name|I32 len|int as_raw \ + |int rawmode|int rawperm|PerlIO* supplied_fp +Ap |bool |do_open9 |GV *gv|char *name|I32 len|int as_raw \ + |int rawmode|int rawperm|PerlIO *supplied_fp \ + |SV *svs|I32 num +Ap |bool |do_openn |GV *gv|char *name|I32 len|int as_raw \ + |int rawmode|int rawperm|PerlIO *supplied_fp \ + |SV **svp|I32 num +p |void |do_pipe |SV* sv|GV* rgv|GV* wgv +p |bool |do_print |SV* sv|PerlIO* fp +p |OP* |do_readline +p |I32 |do_chomp |SV* sv +p |bool |do_seek |GV* gv|Off_t pos|int whence +Ap |void |do_sprintf |SV* sv|I32 len|SV** sarg +p |Off_t |do_sysseek |GV* gv|Off_t pos|int whence +p |Off_t |do_tell |GV* gv +p |I32 |do_trans |SV* sv +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 +Ap |I32 |dowantarray +Ap |void |dump_all +Ap |void |dump_eval +#if defined(DUMP_FDS) +Ap |void |dump_fds |char* s +#endif +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 +#if defined(USE_5005THREADS) +p |PADOFFSET|find_threadsv|const char *name +#endif +p |OP* |force_list |OP* arg +p |OP* |fold_constants |OP* arg +Afpd |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 |const char* key|unsigned long *len +#endif +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 +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 |void |gv_efullname4 |SV* sv|GV* gv|const char* prefix|bool keepmain +Ap |GV* |gv_fetchfile |const char* name +Apd |GV* |gv_fetchmeth |HV* stash|const char* name|STRLEN len \ + |I32 level +Apd |GV* |gv_fetchmethod |HV* stash|const char* name +Apd |GV* |gv_fetchmethod_autoload|HV* stash|const char* name \ + |I32 autoload +Ap |GV* |gv_fetchpv |const char* name|I32 add|I32 sv_type +Ap |void |gv_fullname |SV* sv|GV* gv +Ap |void |gv_fullname3 |SV* sv|GV* gv|const char* prefix +Ap |void |gv_fullname4 |SV* sv|GV* gv|const char* prefix|bool keepmain +Ap |void |gv_init |GV* gv|HV* stash|const char* name \ + |STRLEN len|int multi +Apd |HV* |gv_stashpv |const char* name|I32 create +Ap |HV* |gv_stashpvn |const char* name|U32 namelen|I32 create +Apd |HV* |gv_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|I32 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|I32 klen +Apd |bool |hv_exists_ent |HV* tb|SV* key|U32 hash +Apd |SV** |hv_fetch |HV* tb|const char* key|I32 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|I32 klen|SV* val \ + |U32 hash +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 +Apd |I32 |ibcmp_utf8 |const char* a|char **pe1|UV l1|bool u1|const char* b|char **pe2|UV l2|bool u2 +p |bool |ingroup |Gid_t testgid|Uid_t effective +p |void |init_argv_symbols|int|char ** +p |void |init_debugger +Ap |void |init_stacks +Ap |void |init_tm |struct tm *ptm +p |U32 |intro_my +Ap |char* |instr |const char* big|const char* little +p |bool |io_close |IO* io|bool not_implicit +p |OP* |invert |OP* cmd +dp |bool |is_gv_magical |char *name|STRLEN len|U32 flags +Ap |I32 |is_lvalue_sub +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_uni_alnum |UV c +Ap |bool |is_uni_alnumc |UV c +Ap |bool |is_uni_idfirst |UV c +Ap |bool |is_uni_alpha |UV c +Ap |bool |is_uni_ascii |UV c +Ap |bool |is_uni_space |UV c +Ap |bool |is_uni_cntrl |UV c +Ap |bool |is_uni_graph |UV c +Ap |bool |is_uni_digit |UV c +Ap |bool |is_uni_upper |UV c +Ap |bool |is_uni_lower |UV c +Ap |bool |is_uni_print |UV c +Ap |bool |is_uni_punct |UV c +Ap |bool |is_uni_xdigit |UV c +Ap |UV |to_uni_upper |UV c|U8 *p|STRLEN *lenp +Ap |UV |to_uni_title |UV c|U8 *p|STRLEN *lenp +Ap |UV |to_uni_lower |UV c|U8 *p|STRLEN *lenp +Ap |UV |to_uni_fold |UV c|U8 *p|STRLEN *lenp +Ap |bool |is_uni_alnum_lc|UV c +Ap |bool |is_uni_alnumc_lc|UV c +Ap |bool |is_uni_idfirst_lc|UV c +Ap |bool |is_uni_alpha_lc|UV c +Ap |bool |is_uni_ascii_lc|UV c +Ap |bool |is_uni_space_lc|UV c +Ap |bool |is_uni_cntrl_lc|UV c +Ap |bool |is_uni_graph_lc|UV c +Ap |bool |is_uni_digit_lc|UV c +Ap |bool |is_uni_upper_lc|UV c +Ap |bool |is_uni_lower_lc|UV c +Ap |bool |is_uni_print_lc|UV c +Ap |bool |is_uni_punct_lc|UV c +Ap |bool |is_uni_xdigit_lc|UV c +Apd |STRLEN |is_utf8_char |U8 *p +Apd |bool |is_utf8_string |U8 *s|STRLEN len +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 +Ap |void |leave_scope |I32 base +p |void |lex_end +p |void |lex_start |SV* line +Ap |void |op_null |OP* o +p |void |op_clear |OP* o +p |OP* |linklist |OP* o +p |OP* |list |OP* o +p |OP* |listkids |OP* o +Apd |void |load_module|U32 flags|SV* name|SV* ver|... +Ap |void |vload_module|U32 flags|SV* name|SV* ver|va_list* args +p |OP* |localize |OP* arg|I32 lexical +Apd |I32 |looks_like_number|SV* sv +Apd |UV |grok_bin |char* start|STRLEN* len|I32* flags|NV *result +Apd |UV |grok_hex |char* start|STRLEN* len|I32* flags|NV *result +Apd |int |grok_number |const char *pv|STRLEN len|UV *valuep +Apd |bool |grok_numeric_radix|const char **sp|const char *send +Apd |UV |grok_oct |char* start|STRLEN* len|I32* flags|NV *result +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 +p |int |magic_clearsig |SV* sv|MAGIC* mg +p |int |magic_existspack|SV* sv|MAGIC* mg +p |int |magic_freeregexp|SV* sv|MAGIC* mg +p |int |magic_freeovrld|SV* sv|MAGIC* mg +p |int |magic_get |SV* sv|MAGIC* mg +p |int |magic_getarylen|SV* sv|MAGIC* mg +p |int |magic_getdefelem|SV* sv|MAGIC* mg +p |int |magic_getglob |SV* sv|MAGIC* mg +p |int |magic_getnkeys |SV* sv|MAGIC* mg +p |int |magic_getpack |SV* sv|MAGIC* mg +p |int |magic_getpos |SV* sv|MAGIC* mg +p |int |magic_getsig |SV* sv|MAGIC* mg +p |int |magic_getsubstr|SV* sv|MAGIC* mg +p |int |magic_gettaint |SV* sv|MAGIC* mg +p |int |magic_getuvar |SV* sv|MAGIC* mg +p |int |magic_getvec |SV* sv|MAGIC* mg +p |U32 |magic_len |SV* sv|MAGIC* mg +#if defined(USE_5005THREADS) +p |int |magic_mutexfree|SV* sv|MAGIC* mg +#endif +p |int |magic_nextpack |SV* sv|MAGIC* mg|SV* key +p |U32 |magic_regdata_cnt|SV* sv|MAGIC* mg +p |int |magic_regdatum_get|SV* sv|MAGIC* mg +p |int |magic_regdatum_set|SV* sv|MAGIC* mg +p |int |magic_set |SV* sv|MAGIC* mg +p |int |magic_setamagic|SV* sv|MAGIC* mg +p |int |magic_setarylen|SV* sv|MAGIC* mg +p |int |magic_setbm |SV* sv|MAGIC* mg +p |int |magic_setdbline|SV* sv|MAGIC* mg +#if defined(USE_LOCALE_COLLATE) +p |int |magic_setcollxfrm|SV* sv|MAGIC* mg +#endif +p |int |magic_setdefelem|SV* sv|MAGIC* mg +p |int |magic_setenv |SV* sv|MAGIC* mg +p |int |magic_setfm |SV* sv|MAGIC* mg +p |int |magic_setisa |SV* sv|MAGIC* mg +p |int |magic_setglob |SV* sv|MAGIC* mg +p |int |magic_setmglob |SV* sv|MAGIC* mg +p |int |magic_setnkeys |SV* sv|MAGIC* mg +p |int |magic_setpack |SV* sv|MAGIC* mg +p |int |magic_setpos |SV* sv|MAGIC* mg +p |int |magic_setsig |SV* sv|MAGIC* mg +p |int |magic_setsubstr|SV* sv|MAGIC* mg +p |int |magic_settaint |SV* sv|MAGIC* mg +p |int |magic_setuvar |SV* sv|MAGIC* mg +p |int |magic_setvec |SV* sv|MAGIC* mg +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 +Ap |void |markstack_grow +#if defined(USE_LOCALE_COLLATE) +p |char* |mem_collxfrm |const char* s|STRLEN len|STRLEN* xlen +#endif +Afp |SV* |mess |const char* pat|... +Ap |SV* |vmess |const char* pat|va_list* args +p |void |qerror |SV* err +Apd |void |sortsv |SV ** array|size_t num_elts|SVCOMPARE_t cmp +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 +Ap |void |mini_mktime |struct tm *pm +p |OP* |mod |OP* o|I32 type +p |int |mode_from_discipline|SV* discp +Ap |char* |moreswitches |char* s +p |OP* |my |OP* o +Ap |NV |my_atof |const char *s +#if (!defined(HAS_MEMCPY) && !defined(HAS_BCOPY)) || (!defined(HAS_MEMMOVE) && !defined(HAS_SAFE_MEMCPY) && !defined(HAS_SAFE_BCOPY)) +Anp |char* |my_bcopy |const char* from|char* to|I32 len +#endif +#if !defined(HAS_BZERO) && !defined(HAS_MEMSET) +Anp |char* |my_bzero |char* loc|I32 len +#endif +Apr |void |my_exit |U32 status +Apr |void |my_failure_exit +Ap |I32 |my_fflush_all +Anp |Pid_t |my_fork +Anp |void |atfork_lock +Anp |void |atfork_unlock +Ap |I32 |my_lstat +#if !defined(HAS_MEMCMP) || !defined(HAS_SANE_MEMCMP) +Anp |I32 |my_memcmp |const char* s1|const char* s2|I32 len +#endif +#if !defined(HAS_MEMSET) +Anp |void* |my_memset |char* loc|I32 ch|I32 len +#endif +Ap |I32 |my_pclose |PerlIO* ptr +Ap |PerlIO*|my_popen |char* cmd|char* mode +Ap |PerlIO*|my_popen_list |char* mode|int n|SV ** args +Ap |void |my_setenv |char* nam|char* val +Ap |I32 |my_stat +Ap |char * |my_strftime |char *fmt|int sec|int min|int hour|int mday|int mon|int year|int wday|int yday|int isdst +#if defined(MYSWAP) +Ap |short |my_swap |short s +Ap |long |my_htonl |long l +Ap |long |my_ntohl |long l +#endif +p |void |my_unexec +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 |CV* |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 +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 +Apd |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* |newSVuv |UV u +Apd |SV* |newSVnv |NV n +Apd |SV* |newSVpv |const char* s|STRLEN len +Apd |SV* |newSVpvn |const char* s|STRLEN len +Apd |SV* |newSVpvn_share |const char* s|I32 len|U32 hash +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 + +Ap |PERL_SI*|new_stackinfo|I32 stitems|I32 cxitems +Apd |char* |new_vstring |char *vstr|SV *sv +p |PerlIO*|nextargv |GV* gv +Ap |char* |ninstr |const char* big|const char* bigend \ + |const char* little|const char* lend +p |OP* |oopsCV |OP* o +Ap |void |op_free |OP* arg +p |void |package |OP* o +p |PADOFFSET|pad_alloc |I32 optype|U32 tmptype +p |PADOFFSET|pad_allocmy |char* name +p |PADOFFSET|pad_findmy |char* name +p |OP* |oopsAV |OP* o +p |OP* |oopsHV |OP* o +p |void |pad_leavemy |I32 fill +Ap |SV* |pad_sv |PADOFFSET po +p |void |pad_free |PADOFFSET po +p |void |pad_reset +p |void |pad_swipe |PADOFFSET po +p |void |peep |OP* o +dopM |PerlIO*|start_glob |SV* pattern|IO *io +#if defined(USE_5005THREADS) +Ap |struct perl_thread* |new_struct_thread|struct perl_thread *t +#endif +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 +p |void |despatch_signals +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 +Ap |int |init_i18nl10n |int printwarn +Ap |int |init_i18nl14n |int printwarn +Ap |void |new_collate |char* newcoll +Ap |void |new_ctype |char* newctype +Ap |void |new_numeric |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 +Ap |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 +Ap |void |pop_scope +p |OP* |prepend_elem |I32 optype|OP* head|OP* tail +p |void |push_return |OP* o +Ap |void |push_scope +p |OP* |ref |OP* o|I32 type +p |OP* |refkids |OP* o|I32 type +Ap |void |regdump |regexp* r +Ap |SV* |regclass_swash |struct regnode *n|bool doinit|SV **initsvp +Ap |I32 |pregexec |regexp* prog|char* stringarg \ + |char* strend|char* strbeg|I32 minend \ + |SV* screamer|U32 nosave +Ap |void |pregfree |struct regexp* r +Ap |regexp*|pregcomp |char* exp|char* xend|PMOP* pm +Ap |char* |re_intuit_start|regexp* prog|SV* sv|char* strpos \ + |char* strend|U32 flags \ + |struct re_scream_pos_data_s *data +Ap |SV* |re_intuit_string|regexp* prog +Ap |I32 |regexec_flags |regexp* prog|char* stringarg \ + |char* strend|char* strbeg|I32 minend \ + |SV* screamer|void* data|U32 flags +Ap |regnode*|regnext |regnode* p +p |void |regprop |SV* sv|regnode* o +Ap |void |repeatcpy |char* to|const char* from|I32 len|I32 count +Ap |char* |rninstr |const char* big|const char* bigend \ + |const char* little|const char* lend +Ap |Sighandler_t|rsignal |int i|Sighandler_t t +p |int |rsignal_restore|int i|Sigsave_t* t +p |int |rsignal_save |int i|Sighandler_t t1|Sigsave_t* t2 +Ap |Sighandler_t|rsignal_state|int i +p |void |rxres_free |void** rsp +p |void |rxres_restore |void** rsp|REGEXP* prx +p |void |rxres_save |void** rsp|REGEXP* prx +#if !defined(HAS_RENAME) +p |I32 |same_dirent |char* a|char* b +#endif +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 +Ap |void |save_freepv |char* pv +Ap |void |save_generic_svref|SV** sptr +Ap |void |save_generic_pvref|char** str +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_mortalizesv|SV* sv +Ap |void |save_nogv |GV* gv +p |void |save_op +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_padsv |PADOFFSET off +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 +p |OP* |scalarseq |OP* o +p |OP* |scalarvoid |OP* o +Apd |NV |scan_bin |char* start|STRLEN len|STRLEN* retlen +Apd |NV |scan_hex |char* start|STRLEN len|STRLEN* retlen +Ap |char* |scan_num |char* s|YYSTYPE *lvalp +Apd |NV |scan_oct |char* start|STRLEN len|STRLEN* retlen +p |OP* |scope |OP* o +Ap |char* |screaminstr |SV* bigsv|SV* littlesv|I32 start_shift \ + |I32 end_shift|I32 *state|I32 last +#if !defined(VMS) +p |I32 |setenv_getix |char* nam +#endif +p |void |setdefout |GV* gv +p |HEK* |share_hek |const char* sv|I32 len|U32 hash +np |Signal_t |sighandler |int sig +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 +Apd |bool |sv_2bool |SV* sv +Apd |CV* |sv_2cv |SV* sv|HV** st|GV** gvp|I32 lref +Apd |IO* |sv_2io |SV* sv +Apd |IV |sv_2iv |SV* sv +Apd |SV* |sv_2mortal |SV* sv +Apd |NV |sv_2nv |SV* sv +Am |char* |sv_2pv |SV* sv|STRLEN* lp +Apd |char* |sv_2pvutf8 |SV* sv|STRLEN* lp +Apd |char* |sv_2pvbyte |SV* sv|STRLEN* lp +Ap |char* |sv_pvn_nomg |SV* sv|STRLEN* lp +Apd |UV |sv_2uv |SV* sv +Apd |IV |sv_iv |SV* sv +Apd |UV |sv_uv |SV* sv +Apd |NV |sv_nv |SV* sv +Apd |char* |sv_pvn |SV *sv|STRLEN *len +Apd |char* |sv_pvutf8n |SV *sv|STRLEN *len +Apd |char* |sv_pvbyten |SV *sv|STRLEN *len +Apd |I32 |sv_true |SV *sv +pd |void |sv_add_arena |char* ptr|U32 size|U32 flags +Apd |int |sv_backoff |SV* sv +Apd |SV* |sv_bless |SV* sv|HV* stash +Afpd |void |sv_catpvf |SV* sv|const char* pat|... +Ap |void |sv_vcatpvf |SV* sv|const char* pat|va_list* args +Apd |void |sv_catpv |SV* sv|const char* ptr +Amd |void |sv_catpvn |SV* sv|const char* ptr|STRLEN len +Amd |void |sv_catsv |SV* dsv|SV* ssv +Apd |void |sv_chop |SV* sv|char* ptr +pd |I32 |sv_clean_all +pd |void |sv_clean_objs +Apd |void |sv_clear |SV* sv +Apd |I32 |sv_cmp |SV* sv1|SV* sv2 +Apd |I32 |sv_cmp_locale |SV* sv1|SV* sv2 +#if defined(USE_LOCALE_COLLATE) +Apd |char* |sv_collxfrm |SV* sv|STRLEN* nxp +#endif +Ap |OP* |sv_compile_2op |SV* sv|OP** startp|char* code|AV** avp +Apd |int |getcwd_sv |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 +Apd |void |sv_free |SV* sv +pd |void |sv_free_arenas +Apd |char* |sv_gets |SV* sv|PerlIO* fp|I32 append +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 +Apd |int |sv_isa |SV* sv|const char* name +Apd |int |sv_isobject |SV* sv +Apd |STRLEN |sv_len |SV* sv +Apd |STRLEN |sv_len_utf8 |SV* sv +Apd |void |sv_magic |SV* sv|SV* obj|int how|const char* name \ + |I32 namlen +Apd |SV* |sv_mortalcopy |SV* oldsv +Apd |SV* |sv_newmortal +Apd |SV* |sv_newref |SV* sv +Ap |char* |sv_peek |SV* sv +Apd |void |sv_pos_u2b |SV* sv|I32* offsetp|I32* lenp +Apd |void |sv_pos_b2u |SV* sv|I32* offsetp +Amd |char* |sv_pvn_force |SV* sv|STRLEN* lp +Apd |char* |sv_pvutf8n_force|SV* sv|STRLEN* lp +Apd |char* |sv_pvbyten_force|SV* sv|STRLEN* lp +Apd |char* |sv_recode_to_utf8 |SV* sv|SV *encoding +Apd |char* |sv_reftype |SV* sv|int ob +Apd |void |sv_replace |SV* sv|SV* nsv +Apd |void |sv_report_used +Apd |void |sv_reset |char* s|HV* stash +Afpd |void |sv_setpvf |SV* sv|const char* pat|... +Ap |void |sv_vsetpvf |SV* sv|const char* pat|va_list* args +Apd |void |sv_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_uv |SV* rv|const char* classname|UV uv +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 +Apd |void |sv_setpv |SV* sv|const char* ptr +Apd |void |sv_setpvn |SV* sv|const char* ptr|STRLEN len +Amd |void |sv_setsv |SV* dsv|SV* ssv +Apd |void |sv_taint |SV* sv +Apd |bool |sv_tainted |SV* sv +Apd |int |sv_unmagic |SV* sv|int type +Apd |void |sv_unref |SV* sv +Apd |void |sv_unref_flags |SV* sv|U32 flags +Apd |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 +Apd |void |sv_vsetpvfn |SV* sv|const char* pat|STRLEN patlen \ + |va_list* args|SV** svargs|I32 svmax \ + |bool *maybe_tainted +Ap |NV |str_to_version |SV *sv +Ap |SV* |swash_init |char* pkg|char* name|SV* listsv \ + |I32 minbits|I32 none +Ap |UV |swash_fetch |SV *sv|U8 *ptr|bool do_utf8 +Ap |void |taint_env +Ap |void |taint_proper |const char* f|const char* s +Apd |UV |to_utf8_case |U8 *p|U8* ustrp|STRLEN *lenp \ + |SV **swash|char *normal|char *special +Apd |UV |to_utf8_lower |U8 *p|U8* ustrp|STRLEN *lenp +Apd |UV |to_utf8_upper |U8 *p|U8* ustrp|STRLEN *lenp +Apd |UV |to_utf8_title |U8 *p|U8* ustrp|STRLEN *lenp +Apd |UV |to_utf8_fold |U8 *p|U8* ustrp|STRLEN *lenp +#if defined(UNLINK_ALL_VERSIONS) +Ap |I32 |unlnk |char* f +#endif +#if defined(USE_5005THREADS) +Ap |void |unlock_condpair|void* svv +#endif +Ap |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 +Ap |U8* |utf16_to_utf8 |U8* p|U8 *d|I32 bytelen|I32 *newlen +Ap |U8* |utf16_to_utf8_reversed|U8* p|U8 *d|I32 bytelen|I32 *newlen +Adp |STRLEN |utf8_length |U8* s|U8 *e +Apd |IV |utf8_distance |U8 *a|U8 *b +Apd |U8* |utf8_hop |U8 *s|I32 off +ApMd |U8* |utf8_to_bytes |U8 *s|STRLEN *len +ApMd |U8* |bytes_from_utf8|U8 *s|STRLEN *len|bool *is_utf8 +ApMd |U8* |bytes_to_utf8 |U8 *s|STRLEN *len +Apd |UV |utf8_to_uvchr |U8 *s|STRLEN* retlen +Apd |UV |utf8_to_uvuni |U8 *s|STRLEN* retlen +Adp |UV |utf8n_to_uvchr |U8 *s|STRLEN curlen|STRLEN* retlen|U32 flags +Adp |UV |utf8n_to_uvuni |U8 *s|STRLEN curlen|STRLEN* retlen|U32 flags +Apd |U8* |uvchr_to_utf8 |U8 *d|UV uv +Ap |U8* |uvuni_to_utf8 |U8 *d|UV uv +Ap |U8* |uvchr_to_utf8_flags |U8 *d|UV uv|UV flags +Apd |U8* |uvuni_to_utf8_flags |U8 *d|UV uv|UV flags +Apd |char* |pv_uni_display |SV *dsv|U8 *spv|STRLEN len \ + |STRLEN pvlim|UV flags +Apd |char* |sv_uni_display |SV *dsv|SV *ssv|STRLEN pvlim|UV flags +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_evil_fh |GV *gv|IO *io|I32 op +pd |void |report_uninit +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 +Ap |I32 |whichsig |char* sig +p |int |yyerror |char* s +#ifdef USE_PURE_BISON +p |int |yylex_r |YYSTYPE *lvalp|int *lcharp +#endif +p |int |yylex +p |int |yyparse +p |int |yywarn |char* s +#if defined(MYMALLOC) +Ap |void |dump_mstats |char* s +Ap |int |get_mstats |perl_mstats_t *buf|int buflen|int level +#endif +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) +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) +Ap |struct perl_vars *|GetVars +#endif +Ap |int |runops_standard +Ap |int |runops_debug +#if defined(USE_5005THREADS) +Ap |SV* |sv_lock |SV *sv +#endif +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 *dsv|char *pv|STRLEN cur|STRLEN len \ + |STRLEN pvlim +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 +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 +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 +Ap |void |magic_dump |MAGIC *mg +#if defined(PERL_FLEXIBLE_EXCEPTIONS) +Ap |void* |default_protect|volatile JMPENV *je|int *excpt \ + |protect_body_t body|... +Ap |void* |vdefault_protect|volatile JMPENV *je|int *excpt \ + |protect_body_t body|va_list *args +#endif +Ap |void |reginitcolors +Apd |char* |sv_2pv_nolen |SV* sv +Apd |char* |sv_2pvutf8_nolen|SV* sv +Apd |char* |sv_2pvbyte_nolen|SV* sv +Apd |char* |sv_pv |SV *sv +Apd |char* |sv_pvutf8 |SV *sv +Apd |char* |sv_pvbyte |SV *sv +Amd |STRLEN |sv_utf8_upgrade|SV *sv +ApdM |bool |sv_utf8_downgrade|SV *sv|bool fail_ok +Apd |void |sv_utf8_encode |SV *sv +ApdM |bool |sv_utf8_decode |SV *sv +Apd |void |sv_force_normal|SV *sv +Apd |void |sv_force_normal_flags|SV *sv|U32 flags +Ap |void |tmps_grow |I32 n +Apd |SV* |sv_rvweaken |SV *sv +p |int |magic_killbackrefs|SV *sv|MAGIC *mg +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) +Ap |PERL_CONTEXT*|cx_dup |PERL_CONTEXT* cx|I32 ix|I32 max|CLONE_PARAMS* param +Ap |PERL_SI*|si_dup |PERL_SI* si|CLONE_PARAMS* param +Ap |ANY* |ss_dup |PerlInterpreter* proto_perl|CLONE_PARAMS* param +Ap |void* |any_dup |void* v|PerlInterpreter* proto_perl +Ap |HE* |he_dup |HE* e|bool shared|CLONE_PARAMS* param +Ap |REGEXP*|re_dup |REGEXP* r|CLONE_PARAMS* param +Ap |PerlIO*|fp_dup |PerlIO* fp|char type|CLONE_PARAMS* param +Ap |DIR* |dirp_dup |DIR* dp +Ap |GP* |gp_dup |GP* gp|CLONE_PARAMS* param +Ap |MAGIC* |mg_dup |MAGIC* mg|CLONE_PARAMS* param +Ap |SV* |sv_dup |SV* sstr|CLONE_PARAMS* param +#if defined(HAVE_INTERP_INTERN) +Ap |void |sys_intern_dup |struct interp_intern* src \ + |struct interp_intern* dst +#endif +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 +Ap |void |ptr_table_clear|PTR_TBL_t *tbl +Ap |void |ptr_table_free|PTR_TBL_t *tbl +#endif +#if defined(HAVE_INTERP_INTERN) +Ap |void |sys_intern_clear +Ap |void |sys_intern_init +#endif + +Ap |char * |custom_op_name|OP* op +Ap |char * |custom_op_desc|OP* op + + +END_EXTERN_C + +#if defined(PERL_IN_AV_C) || defined(PERL_DECL_PROT) +s |I32 |avhv_index_sv |SV* sv +s |I32 |avhv_index |AV* av|SV* sv|U32 hash +#endif + +#if defined(PERL_IN_DOOP_C) || defined(PERL_DECL_PROT) +s |I32 |do_trans_simple |SV *sv +s |I32 |do_trans_count |SV *sv +s |I32 |do_trans_complex |SV *sv +s |I32 |do_trans_simple_utf8 |SV *sv +s |I32 |do_trans_count_utf8 |SV *sv +s |I32 |do_trans_complex_utf8 |SV *sv +#endif + +#if defined(PERL_IN_GV_C) || defined(PERL_DECL_PROT) +s |void |gv_init_sv |GV *gv|I32 sv_type +s |void |require_errno |GV *gv +#endif + +#if defined(PERL_IN_HV_C) || defined(PERL_DECL_PROT) +s |void |hsplit |HV *hv +s |void |hfreeentries |HV *hv +s |void |more_he +s |HE* |new_he +s |void |del_he |HE *p +s |HEK* |save_hek |const char *str|I32 len|U32 hash +s |void |hv_magic_check |HV *hv|bool *needs_copy|bool *needs_store +#endif + +#if defined(PERL_IN_MG_C) || defined(PERL_DECL_PROT) +s |void |save_magic |I32 mgs_ix|SV *sv +s |int |magic_methpack |SV *sv|MAGIC *mg|char *meth +s |int |magic_methcall |SV *sv|MAGIC *mg|char *meth|I32 f \ + |int n|SV *val +#endif + +#if defined(PERL_IN_OP_C) || defined(PERL_DECL_PROT) +s |I32 |list_assignment|OP *o +s |void |bad_type |I32 n|char *t|char *name|OP *kid +s |void |cop_free |COP *cop +s |OP* |modkids |OP *o|I32 type +s |void |no_bareword_allowed|OP *o +s |OP* |no_fh_allowed |OP *o +s |OP* |scalarboolean |OP *o +s |OP* |too_few_arguments|OP *o|char* name +s |OP* |too_many_arguments|OP *o|char* name +s |PADOFFSET|pad_addlex |SV* name +s |PADOFFSET|pad_findlex |char* name|PADOFFSET newoff|U32 seq \ + |CV* startcv|I32 cx_ix|I32 saweval|U32 flags +s |OP* |newDEFSVOP +s |OP* |new_logop |I32 type|I32 flags|OP **firstp|OP **otherp +s |void |simplify_sort |OP *o +s |bool |is_handle_constructor |OP *o|I32 argnum +s |char* |gv_ename |GV *gv +# if defined(DEBUG_CLOSURES) +s |void |cv_dump |CV *cv +# endif +s |CV* |cv_clone2 |CV *proto|CV *outside +s |bool |scalar_mod_type|OP *o|I32 type +s |OP * |my_kid |OP *o|OP *attrs|OP **imopsp +s |OP * |dup_attrlist |OP *o +s |void |apply_attrs |HV *stash|SV *target|OP *attrs|bool for_my +s |void |apply_attrs_my |HV *stash|OP *target|OP *attrs|OP **imopsp +# if defined(PL_OP_SLAB_ALLOC) +s |void* |Slab_Alloc |int m|size_t sz +# endif +#endif + +#if defined(PERL_IN_PERL_C) || defined(PERL_DECL_PROT) +s |void |find_beginning +s |void |forbid_setid |char * +s |void |incpush |char *|int|int +s |void |init_interp +s |void |init_ids +s |void |init_lexer +s |void |init_main_stash +s |void |init_perllib +s |void |init_postdump_symbols|int|char **|char ** +s |void |init_predump_symbols +rs |void |my_exit_jump +s |void |nuke_stacks +s |void |open_script |char *|bool|SV *|int *fd +s |void |usage |char * +s |void |validate_suid |char *|char*|int +# if defined(IAMSUID) +s |int |fd_on_nosuid_fs|int fd +# endif +s |void* |parse_body |char **env|XSINIT_t xsinit +s |void* |run_body |I32 oldscope +s |void |call_body |OP *myop|int is_eval +s |void* |call_list_body |CV *cv +#if defined(PERL_FLEXIBLE_EXCEPTIONS) +s |void* |vparse_body |va_list args +s |void* |vrun_body |va_list args +s |void* |vcall_body |va_list args +s |void* |vcall_list_body|va_list args +#endif +# if defined(USE_5005THREADS) +s |struct perl_thread * |init_main_thread +# endif +#endif + +#if defined(PERL_IN_PP_C) || defined(PERL_DECL_PROT) +s |SV* |refto |SV* sv +s |U32 |seed +#endif + +#if defined(PERL_IN_PP_PACK_C) || defined(PERL_DECL_PROT) +s |void |doencodes |SV* sv|char* s|I32 len +s |SV* |mul128 |SV *sv|U8 m +s |SV* |is_an_int |char *s|STRLEN l +s |int |div128 |SV *pnum|bool *done +#endif + +#if defined(PERL_IN_PP_CTL_C) || defined(PERL_DECL_PROT) +s |OP* |docatch |OP *o +s |void* |docatch_body +#if defined(PERL_FLEXIBLE_EXCEPTIONS) +s |void* |vdocatch_body |va_list args +#endif +s |OP* |dofindlabel |OP *o|char *label|OP **opstack|OP **oplimit +s |void |doparseform |SV *sv +s |I32 |dopoptoeval |I32 startingblock +s |I32 |dopoptolabel |char *label +s |I32 |dopoptoloop |I32 startingblock +s |I32 |dopoptosub |I32 startingblock +s |I32 |dopoptosub_at |PERL_CONTEXT* cxstk|I32 startingblock +s |void |save_lines |AV *array|SV *sv +s |OP* |doeval |int gimme|OP** startop +s |PerlIO *|doopen_pmc |const char *name|const char *mode +#endif + +#if defined(PERL_IN_PP_HOT_C) || defined(PERL_DECL_PROT) +s |int |do_maybe_phash |AV *ary|SV **lelem|SV **firstlelem \ + |SV **relem|SV **lastrelem +s |void |do_oddball |HV *hash|SV **relem|SV **firstrelem +s |CV* |get_db_sub |SV **svp|CV *cv +s |SV* |method_common |SV* meth|U32* hashp +#endif + +#if defined(PERL_IN_PP_SYS_C) || defined(PERL_DECL_PROT) +s |OP* |doform |CV *cv|GV *gv|OP *retop +s |int |emulate_eaccess|const char* path|Mode_t mode +# if !defined(HAS_MKDIR) || !defined(HAS_RMDIR) +s |int |dooneliner |char *cmd|char *filename +# endif +#endif + +#if defined(PERL_IN_REGCOMP_C) || defined(PERL_DECL_PROT) +s |regnode*|reg |struct RExC_state_t*|I32|I32 * +s |regnode*|reganode |struct RExC_state_t*|U8|U32 +s |regnode*|regatom |struct RExC_state_t*|I32 * +s |regnode*|regbranch |struct RExC_state_t*|I32 *|I32 +s |void |reguni |struct RExC_state_t*|UV|char *|STRLEN* +s |regnode*|regclass |struct RExC_state_t* +s |I32 |regcurly |char * +s |regnode*|reg_node |struct RExC_state_t*|U8 +s |regnode*|regpiece |struct RExC_state_t*|I32 * +s |void |reginsert |struct RExC_state_t*|U8|regnode * +s |void |regoptail |struct RExC_state_t*|regnode *|regnode * +s |void |regtail |struct RExC_state_t*|regnode *|regnode * +s |char*|regwhite |char *|char * +s |char*|nextchar |struct RExC_state_t* +# ifdef DEBUGGING +s |regnode*|dumpuntil |regnode *start|regnode *node \ + |regnode *last|SV* sv|I32 l +s |void |put_byte |SV* sv|int c +# endif +s |void |scan_commit |struct RExC_state_t*|struct scan_data_t *data +s |void |cl_anything |struct RExC_state_t*|struct regnode_charclass_class *cl +s |int |cl_is_anything |struct regnode_charclass_class *cl +s |void |cl_init |struct RExC_state_t*|struct regnode_charclass_class *cl +s |void |cl_init_zero |struct RExC_state_t*|struct regnode_charclass_class *cl +s |void |cl_and |struct regnode_charclass_class *cl \ + |struct regnode_charclass_class *and_with +s |void |cl_or |struct RExC_state_t*|struct regnode_charclass_class *cl \ + |struct regnode_charclass_class *or_with +s |I32 |study_chunk |struct RExC_state_t*|regnode **scanp|I32 *deltap \ + |regnode *last|struct scan_data_t *data \ + |U32 flags +s |I32 |add_data |struct RExC_state_t*|I32 n|char *s +rs |void|re_croak2 |const char* pat1|const char* pat2|... +s |I32 |regpposixcc |struct RExC_state_t*|I32 value +s |void |checkposixcc |struct RExC_state_t* +#endif + +#if defined(PERL_IN_REGEXEC_C) || defined(PERL_DECL_PROT) +s |I32 |regmatch |regnode *prog +s |I32 |regrepeat |regnode *p|I32 max +s |I32 |regrepeat_hard |regnode *p|I32 max|I32 *lp +s |I32 |regtry |regexp *prog|char *startpos +s |bool |reginclass |regnode *n|U8 *p|bool do_utf8sv_is_utf8 +s |CHECKPOINT|regcppush |I32 parenfloor +s |char*|regcppop +s |char*|regcp_set_to |I32 ss +s |void |cache_re |regexp *prog +s |U8* |reghop |U8 *pos|I32 off +s |U8* |reghop3 |U8 *pos|I32 off|U8 *lim +s |U8* |reghopmaybe |U8 *pos|I32 off +s |U8* |reghopmaybe3 |U8 *pos|I32 off|U8 *lim +s |char* |find_byclass |regexp * prog|regnode *c|char *s|char *strend|char *startpos|I32 norun +#endif + +#if defined(PERL_IN_DUMP_C) || defined(PERL_DECL_PROT) +s |CV* |deb_curcv |I32 ix +s |void |debprof |OP *o +#endif + +#if defined(PERL_IN_SCOPE_C) || defined(PERL_DECL_PROT) +s |SV* |save_scalar_at |SV **sptr +#endif + +#if defined(USE_ITHREADS) +Adp |void |sharedsv_init +Adp |shared_sv* |sharedsv_new +Adp |shared_sv* |sharedsv_find |SV* sv +Adp |void |sharedsv_lock |shared_sv* ssv +Adp |void |sharedsv_unlock |shared_sv* ssv +p |void |sharedsv_unlock_scope |shared_sv* ssv +Adp |void |sharedsv_thrcnt_inc |shared_sv* ssv +Adp |void |sharedsv_thrcnt_dec |shared_sv* ssv +#endif + +#if defined(PERL_IN_SV_C) || defined(PERL_DECL_PROT) +s |IV |asIV |SV* sv +s |UV |asUV |SV* sv +s |SV* |more_sv +s |void |more_xiv +s |void |more_xnv +s |void |more_xpv +s |void |more_xpviv +s |void |more_xpvnv +s |void |more_xpvcv +s |void |more_xpvav +s |void |more_xpvhv +s |void |more_xpvmg +s |void |more_xpvlv +s |void |more_xpvbm +s |void |more_xrv +s |XPVIV* |new_xiv +s |XPVNV* |new_xnv +s |XPV* |new_xpv +s |XPVIV* |new_xpviv +s |XPVNV* |new_xpvnv +s |XPVCV* |new_xpvcv +s |XPVAV* |new_xpvav +s |XPVHV* |new_xpvhv +s |XPVMG* |new_xpvmg +s |XPVLV* |new_xpvlv +s |XPVBM* |new_xpvbm +s |XRV* |new_xrv +s |void |del_xiv |XPVIV* p +s |void |del_xnv |XPVNV* p +s |void |del_xpv |XPV* p +s |void |del_xpviv |XPVIV* p +s |void |del_xpvnv |XPVNV* p +s |void |del_xpvcv |XPVCV* p +s |void |del_xpvav |XPVAV* p +s |void |del_xpvhv |XPVHV* p +s |void |del_xpvmg |XPVMG* p +s |void |del_xpvlv |XPVLV* p +s |void |del_xpvbm |XPVBM* p +s |void |del_xrv |XRV* p +s |void |sv_unglob |SV* sv +s |void |not_a_number |SV *sv +s |I32 |visit |SVFUNC_t f +s |void |sv_add_backref |SV *tsv|SV *sv +s |void |sv_del_backref |SV *sv +# ifdef DEBUGGING +s |void |del_sv |SV *p +# endif +# if !defined(NV_PRESERVES_UV) +s |int |sv_2iuv_non_preserve |SV *sv|I32 numtype +# endif +s |I32 |expect_number |char** pattern +# +# if defined(USE_ITHREADS) +s |SV* |gv_share |SV *sv +# endif +#endif + +#if defined(PERL_IN_TOKE_C) || defined(PERL_DECL_PROT) +s |void |check_uni +s |void |force_next |I32 type +s |char* |force_version |char *start|int guessing +s |char* |force_word |char *start|int token|int check_keyword \ + |int allow_pack|int allow_tick +s |SV* |tokeq |SV *sv +s |int |pending_ident +s |char* |scan_const |char *start +s |char* |scan_formline |char *s +s |char* |scan_heredoc |char *s +s |char* |scan_ident |char *s|char *send|char *dest \ + |STRLEN destlen|I32 ck_uni +s |char* |scan_inputsymbol|char *start +s |char* |scan_pat |char *start|I32 type +s |char* |scan_str |char *start|int keep_quoted|int keep_delims +s |char* |scan_subst |char *start +s |char* |scan_trans |char *start +s |char* |scan_word |char *s|char *dest|STRLEN destlen \ + |int allow_package|STRLEN *slp +s |char* |skipspace |char *s +s |char* |swallow_bom |U8 *s +s |void |checkcomma |char *s|char *name|char *what +s |void |force_ident |char *s|int kind +s |void |incline |char *s +s |int |intuit_method |char *s|GV *gv +s |int |intuit_more |char *s +s |I32 |lop |I32 f|int x|char *s +s |void |missingterm |char *s +s |void |no_op |char *what|char *s +s |void |set_csh +s |I32 |sublex_done +s |I32 |sublex_push +s |I32 |sublex_start +s |char * |filter_gets |SV *sv|PerlIO *fp|STRLEN append +s |HV * |find_in_my_stash|char *pkgname|I32 len +s |SV* |new_constant |char *s|STRLEN len|const char *key|SV *sv \ + |SV *pv|const char *type +# if defined(DEBUGGING) +s |void |tokereport |char *thing|char *s|I32 rv +# endif +s |int |ao |int toketype +s |void |depcom +s |char* |incl_perldb +#if 0 +s |I32 |utf16_textfilter|int idx|SV *sv|int maxlen +s |I32 |utf16rev_textfilter|int idx|SV *sv|int maxlen +#endif +# if defined(CRIPPLED_CC) +s |int |uni |I32 f|char *s +# endif +# if defined(PERL_CR_FILTER) +s |I32 |cr_textfilter |int idx|SV *sv|int maxlen +# endif +#endif + +#if defined(PERL_IN_UNIVERSAL_C) || defined(PERL_DECL_PROT) +s |SV*|isa_lookup |HV *stash|const char *name|int len|int level +#endif + +#if defined(PERL_IN_LOCALE_C) || defined(PERL_DECL_PROT) +s |char* |stdize_locale |char* locs +#endif + +#if defined(PERL_IN_UTIL_C) || defined(PERL_DECL_PROT) +s |COP* |closest_cop |COP *cop|OP *o +s |SV* |mess_alloc +# if defined(LEAKTEST) +s |void |xstat |int +# endif +#endif + +START_EXTERN_C + +Apd |void |sv_setsv_flags |SV* dsv|SV* ssv|I32 flags +Apd |void |sv_catpvn_flags|SV* sv|const char* ptr|STRLEN len|I32 flags +Apd |void |sv_catsv_flags |SV* dsv|SV* ssv|I32 flags +Apd |STRLEN |sv_utf8_upgrade_flags|SV *sv|I32 flags +Apd |char* |sv_pvn_force_flags|SV* sv|STRLEN* lp|I32 flags +Apd |char* |sv_2pv_flags |SV* sv|STRLEN* lp|I32 flags +Ap |char* |my_atof2 |const char *s|NV* value +#if !defined(HAS_SOCKETPAIR) && defined(HAS_SOCKET) +Apn |int |my_socketpair |int family|int type|int protocol|int fd[2] +#endif + + +#if defined(USE_PERLIO) && !defined(USE_SFIO) +Ap |int |PerlIO_close |PerlIO * +Ap |int |PerlIO_fill |PerlIO * +Ap |int |PerlIO_fileno |PerlIO * +Ap |int |PerlIO_eof |PerlIO * +Ap |int |PerlIO_error |PerlIO * +Ap |int |PerlIO_flush |PerlIO * +Ap |void |PerlIO_clearerr |PerlIO * +Ap |void |PerlIO_set_cnt |PerlIO *|int +Ap |void |PerlIO_set_ptrcnt |PerlIO *|STDCHAR *|int +Ap |void |PerlIO_setlinebuf |PerlIO * +Ap |SSize_t|PerlIO_read |PerlIO *|void *|Size_t +Ap |SSize_t|PerlIO_write |PerlIO *|const void *|Size_t +Ap |SSize_t|PerlIO_unread |PerlIO *|const void *|Size_t +Ap |Off_t |PerlIO_tell |PerlIO * +Ap |int |PerlIO_seek |PerlIO *|Off_t|int + +Ap |STDCHAR *|PerlIO_get_base |PerlIO * +Ap |STDCHAR *|PerlIO_get_ptr |PerlIO * +Ap |int |PerlIO_get_bufsiz |PerlIO * +Ap |int |PerlIO_get_cnt |PerlIO * + +Ap |PerlIO *|PerlIO_stdin +Ap |PerlIO *|PerlIO_stdout +Ap |PerlIO *|PerlIO_stderr +#endif /* PERLIO_LAYERS */ + +END_EXTERN_C + diff --git a/embed.pl b/embed.pl index 3a72d20..6536c83 100755 --- a/embed.pl +++ b/embed.pl @@ -10,7 +10,7 @@ require 5.003; # keep this compatible, an old perl is all we may have before # implicit interpreter context argument. # -my $END = tell DATA; +open IN, "embed.fnc" or die $!; # walk table providing an array of components in each line to # subroutine, printing the result @@ -30,12 +30,12 @@ sub walk_table (&@) { $F = \*F; } print $F $leader if $leader; - seek DATA, $END, 0; # so we may restart - while () { + seek IN, 0, 0; # so we may restart + while () { chomp; next if /^:/; while (s|\\$||) { - $_ .= ; + $_ .= ; chomp; } my @args; @@ -832,1558 +832,3 @@ my %vfuncs = qw( Perl_dump_indent Perl_dump_vindent Perl_default_protect Perl_vdefault_protect ); - -# autogenerate documentation from comments in source files - -my %apidocs; -my %gutsdocs; -my %docfuncs; - -sub autodoc ($$) { # parse a file and extract documentation info - my($fh,$file) = @_; - my($in, $doc, $line); -FUNC: - while (defined($in = <$fh>)) { - $line++; - 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>)) { - $line++; - last DOC if $doc =~ /^=\w+/; - if ($doc =~ m:^\*/$:) { - warn "=cut missing? $file:$line:$doc";; - last DOC; - } - $docs .= $doc; - } - $docs = "\n$docs" if $docs and $docs !~ /^\n/; - if ($flags =~ /m/) { - if ($flags =~ /A/) { - $apidocs{$name} = [$flags, $docs, $ret, $file, @args]; - } - else { - $gutsdocs{$name} = [$flags, $docs, $ret, $file, @args]; - } - } - else { - $docfuncs{$name} = [$flags, $docs, $ret, $file, @args]; - } - if (defined $doc) { - if ($doc =~ /^=for/) { - $in = $doc; - redo FUNC; - } - } else { - warn "$file:$line:$in (=cut missing?)"; - } - } - } -} - -sub docout ($$$) { # output the docs for one function - my($fh, $name, $docref) = @_; - my($flags, $docs, $ret, $file, @args) = @$docref; - - $docs .= "NOTE: this function is experimental and may change or be -removed without notice.\n\n" if $flags =~ /x/; - $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"; - } - print $fh "=for hackers\nFound in file $file\n\n"; -} - -my $file; -for $file (glob('*.c'), glob('*.h')) { - open F, "< $file" or die "Cannot open $file for docs: $!\n"; - autodoc(\*F,$file); - 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; - $docref->[0].="x" if $flags =~ /M/; - $apidocs{$func} = [$docref->[0] . 'A', $docref->[1], $retval, - $docref->[3], @args]; - } else { - my $docref = delete $docfuncs{$func}; - $gutsdocs{$func} = [$docref->[0], $docref->[1], $retval, - $docref->[3], @args]; - } - } - return ""; -} \*DOC; - -for (sort keys %docfuncs) { - # Have you used a full for apidoc or just a func name? - # Have you used Ap instead of Am in the for apidoc? - 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 -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 -. 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 . - -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); - -unlink "pod/perlintern.pod"; - -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 - Perl functions - -=head1 DESCRIPTION - -This file is the autogenerated documentation of functions in the -Perl interpreter that are documented using Perl's internal documentation -format but are not marked as part of the Perl API. In other words, -B! - -=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 originally 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: -: flags|return_type|function_name|arg1|arg2|...|argN -: -: A line may be continued on another by ending it with a backslash. -: Leading and trailing whitespace will be ignored in each component. -: -: flags are single letters with following meanings: -: A member of public API -: m Implemented as a macro - no export, no proto, no #define -: d function has documentation with its source -: s static function, should have an S_ prefix in source -: file -: n has no implicit interpreter/thread context argument -: p function has a Perl_ prefix -: f function takes printf style format string, varargs -: r function never returns -: o has no compatibility macro (#define foo Perl_foo) -: x not exported -: M may change -: -: Individual flags may be separated by whitespace. -: -: New global functions should be added at the end for binary compatibility -: in some configurations. - -START_EXTERN_C - -#if defined(PERL_IMPLICIT_SYS) -Ano |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 -#endif -Anod |PerlInterpreter* |perl_alloc -Anod |void |perl_construct |PerlInterpreter* interp -Anod |int |perl_destruct |PerlInterpreter* interp -Anod |void |perl_free |PerlInterpreter* interp -Anod |int |perl_run |PerlInterpreter* interp -Anod |int |perl_parse |PerlInterpreter* interp|XSINIT_t xsinit \ - |int argc|char** argv|char** env -#if defined(USE_ITHREADS) -Anod |PerlInterpreter*|perl_clone|PerlInterpreter* interp, UV flags -# if defined(PERL_IMPLICIT_SYS) -Ano |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 \ - |struct IPerlDir* d|struct IPerlSock* s \ - |struct IPerlProc* p -# endif -#endif - -Anop |Malloc_t|malloc |MEM_SIZE nbytes -Anop |Malloc_t|calloc |MEM_SIZE elements|MEM_SIZE size -Anop |Malloc_t|realloc |Malloc_t where|MEM_SIZE nbytes -Anop |Free_t |mfree |Malloc_t where -#if defined(MYMALLOC) -np |MEM_SIZE|malloced_size |void *p -#endif - -Anp |void* |get_context -Anp |void |set_context |void *thx - -END_EXTERN_C - -/* functions with flag 'n' should come before here */ -START_EXTERN_C -# include "pp_proto.h" -Ap |SV* |amagic_call |SV* left|SV* right|int method|int dir -Ap |bool |Gv_AMupdate |HV* stash -Ap |CV* |gv_handler |HV* stash|I32 id -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 -ApM |void |apply_attrs_string|char *stashpv|CV *cv|char *attrstr|STRLEN len -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 |SV** |avhv_store_ent |AV *ar|SV* keysv|SV* val|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 -Apd |SV* |av_delete |AV* ar|I32 key|I32 flags -Apd |bool |av_exists |AV* ar|I32 key -Apd |void |av_extend |AV* ar|I32 key -p |AV* |av_fake |I32 size|SV** svp -Apd |SV** |av_fetch |AV* ar|I32 key|I32 lval -Apd |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 -p |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 -Ap |I32 |block_gimme -p |int |block_start |int full -p |void |boot_core_UNIVERSAL -p |void |boot_core_PerlIO -Ap |void |call_list |I32 oldscope|AV* av_list -p |bool |cando |Mode_t mode|Uid_t effective|Stat_t* statbufp -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) -Ap |I32 |my_chsize |int fd|Off_t length -#endif -#if defined(USE_5005THREADS) -Ap |MAGIC* |condpair_magic |SV *sv -#endif -p |OP* |convert |I32 optype|I32 flags|OP* o -Afprd |void |croak |const char* pat|... -Apr |void |vcroak |const char* pat|va_list* args -#if defined(PERL_IMPLICIT_CONTEXT) -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|... -Anp |void |load_module_nocontext|U32 flags|SV* name|SV* ver|... -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|... -Afnp |int |printf_nocontext|const char* fmt|... -#endif -p |void |cv_ckproto |CV* cv|GV* gv|char* p -p |CV* |cv_clone |CV* proto -Apd |SV* |cv_const_sv |CV* cv -p |SV* |op_const_sv |OP* o|CV* cv -Ap |void |cv_undef |CV* cv -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 -Ap |PPADDR_t*|get_ppaddr -p |I32 |cxinc -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 -Afp |OP* |die |const char* pat|... -p |OP* |vdie |const char* pat|va_list* args -p |OP* |die_where |char* message|STRLEN msglen -Ap |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 -Ap |int |do_binmode |PerlIO *fp|int iotype|int mode -p |void |do_chop |SV* asv|SV* sv -Ap |bool |do_close |GV* gv|bool not_implicit -p |bool |do_eof |GV* gv -p |bool |do_exec |char* cmd -#if !defined(WIN32) -p |bool |do_exec3 |char* cmd|int fd|int flag -#endif -p |void |do_execfree -#if defined(HAS_MSG) || defined(HAS_SEM) || defined(HAS_SHM) -p |I32 |do_ipcctl |I32 optype|SV** mark|SV** sp -p |I32 |do_ipcget |I32 optype|SV** mark|SV** sp -p |I32 |do_msgrcv |SV** mark|SV** sp -p |I32 |do_msgsnd |SV** mark|SV** sp -p |I32 |do_semop |SV** mark|SV** sp -p |I32 |do_shmio |I32 optype|SV** mark|SV** sp -#endif -Ap |void |do_join |SV* sv|SV* del|SV** mark|SV** sp -p |OP* |do_kv -Ap |bool |do_open |GV* gv|char* name|I32 len|int as_raw \ - |int rawmode|int rawperm|PerlIO* supplied_fp -Ap |bool |do_open9 |GV *gv|char *name|I32 len|int as_raw \ - |int rawmode|int rawperm|PerlIO *supplied_fp \ - |SV *svs|I32 num -Ap |bool |do_openn |GV *gv|char *name|I32 len|int as_raw \ - |int rawmode|int rawperm|PerlIO *supplied_fp \ - |SV **svp|I32 num -p |void |do_pipe |SV* sv|GV* rgv|GV* wgv -p |bool |do_print |SV* sv|PerlIO* fp -p |OP* |do_readline -p |I32 |do_chomp |SV* sv -p |bool |do_seek |GV* gv|Off_t pos|int whence -Ap |void |do_sprintf |SV* sv|I32 len|SV** sarg -p |Off_t |do_sysseek |GV* gv|Off_t pos|int whence -p |Off_t |do_tell |GV* gv -p |I32 |do_trans |SV* sv -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 -Ap |I32 |dowantarray -Ap |void |dump_all -Ap |void |dump_eval -#if defined(DUMP_FDS) -Ap |void |dump_fds |char* s -#endif -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 -#if defined(USE_5005THREADS) -p |PADOFFSET|find_threadsv|const char *name -#endif -p |OP* |force_list |OP* arg -p |OP* |fold_constants |OP* arg -Afpd |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 |const char* key|unsigned long *len -#endif -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 -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 |void |gv_efullname4 |SV* sv|GV* gv|const char* prefix|bool keepmain -Ap |GV* |gv_fetchfile |const char* name -Apd |GV* |gv_fetchmeth |HV* stash|const char* name|STRLEN len \ - |I32 level -Apd |GV* |gv_fetchmethod |HV* stash|const char* name -Apd |GV* |gv_fetchmethod_autoload|HV* stash|const char* name \ - |I32 autoload -Ap |GV* |gv_fetchpv |const char* name|I32 add|I32 sv_type -Ap |void |gv_fullname |SV* sv|GV* gv -Ap |void |gv_fullname3 |SV* sv|GV* gv|const char* prefix -Ap |void |gv_fullname4 |SV* sv|GV* gv|const char* prefix|bool keepmain -Ap |void |gv_init |GV* gv|HV* stash|const char* name \ - |STRLEN len|int multi -Apd |HV* |gv_stashpv |const char* name|I32 create -Ap |HV* |gv_stashpvn |const char* name|U32 namelen|I32 create -Apd |HV* |gv_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|I32 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|I32 klen -Apd |bool |hv_exists_ent |HV* tb|SV* key|U32 hash -Apd |SV** |hv_fetch |HV* tb|const char* key|I32 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|I32 klen|SV* val \ - |U32 hash -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 -Apd |I32 |ibcmp_utf8 |const char* a|char **pe1|UV l1|bool u1|const char* b|char **pe2|UV l2|bool u2 -p |bool |ingroup |Gid_t testgid|Uid_t effective -p |void |init_argv_symbols|int|char ** -p |void |init_debugger -Ap |void |init_stacks -Ap |void |init_tm |struct tm *ptm -p |U32 |intro_my -Ap |char* |instr |const char* big|const char* little -p |bool |io_close |IO* io|bool not_implicit -p |OP* |invert |OP* cmd -dp |bool |is_gv_magical |char *name|STRLEN len|U32 flags -Ap |I32 |is_lvalue_sub -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_uni_alnum |UV c -Ap |bool |is_uni_alnumc |UV c -Ap |bool |is_uni_idfirst |UV c -Ap |bool |is_uni_alpha |UV c -Ap |bool |is_uni_ascii |UV c -Ap |bool |is_uni_space |UV c -Ap |bool |is_uni_cntrl |UV c -Ap |bool |is_uni_graph |UV c -Ap |bool |is_uni_digit |UV c -Ap |bool |is_uni_upper |UV c -Ap |bool |is_uni_lower |UV c -Ap |bool |is_uni_print |UV c -Ap |bool |is_uni_punct |UV c -Ap |bool |is_uni_xdigit |UV c -Ap |UV |to_uni_upper |UV c|U8 *p|STRLEN *lenp -Ap |UV |to_uni_title |UV c|U8 *p|STRLEN *lenp -Ap |UV |to_uni_lower |UV c|U8 *p|STRLEN *lenp -Ap |UV |to_uni_fold |UV c|U8 *p|STRLEN *lenp -Ap |bool |is_uni_alnum_lc|UV c -Ap |bool |is_uni_alnumc_lc|UV c -Ap |bool |is_uni_idfirst_lc|UV c -Ap |bool |is_uni_alpha_lc|UV c -Ap |bool |is_uni_ascii_lc|UV c -Ap |bool |is_uni_space_lc|UV c -Ap |bool |is_uni_cntrl_lc|UV c -Ap |bool |is_uni_graph_lc|UV c -Ap |bool |is_uni_digit_lc|UV c -Ap |bool |is_uni_upper_lc|UV c -Ap |bool |is_uni_lower_lc|UV c -Ap |bool |is_uni_print_lc|UV c -Ap |bool |is_uni_punct_lc|UV c -Ap |bool |is_uni_xdigit_lc|UV c -Apd |STRLEN |is_utf8_char |U8 *p -Apd |bool |is_utf8_string |U8 *s|STRLEN len -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 -Ap |void |leave_scope |I32 base -p |void |lex_end -p |void |lex_start |SV* line -Ap |void |op_null |OP* o -p |void |op_clear |OP* o -p |OP* |linklist |OP* o -p |OP* |list |OP* o -p |OP* |listkids |OP* o -Apd |void |load_module|U32 flags|SV* name|SV* ver|... -Ap |void |vload_module|U32 flags|SV* name|SV* ver|va_list* args -p |OP* |localize |OP* arg|I32 lexical -Apd |I32 |looks_like_number|SV* sv -Apd |UV |grok_bin |char* start|STRLEN* len|I32* flags|NV *result -Apd |UV |grok_hex |char* start|STRLEN* len|I32* flags|NV *result -Apd |int |grok_number |const char *pv|STRLEN len|UV *valuep -Apd |bool |grok_numeric_radix|const char **sp|const char *send -Apd |UV |grok_oct |char* start|STRLEN* len|I32* flags|NV *result -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 -p |int |magic_clearsig |SV* sv|MAGIC* mg -p |int |magic_existspack|SV* sv|MAGIC* mg -p |int |magic_freeregexp|SV* sv|MAGIC* mg -p |int |magic_freeovrld|SV* sv|MAGIC* mg -p |int |magic_get |SV* sv|MAGIC* mg -p |int |magic_getarylen|SV* sv|MAGIC* mg -p |int |magic_getdefelem|SV* sv|MAGIC* mg -p |int |magic_getglob |SV* sv|MAGIC* mg -p |int |magic_getnkeys |SV* sv|MAGIC* mg -p |int |magic_getpack |SV* sv|MAGIC* mg -p |int |magic_getpos |SV* sv|MAGIC* mg -p |int |magic_getsig |SV* sv|MAGIC* mg -p |int |magic_getsubstr|SV* sv|MAGIC* mg -p |int |magic_gettaint |SV* sv|MAGIC* mg -p |int |magic_getuvar |SV* sv|MAGIC* mg -p |int |magic_getvec |SV* sv|MAGIC* mg -p |U32 |magic_len |SV* sv|MAGIC* mg -#if defined(USE_5005THREADS) -p |int |magic_mutexfree|SV* sv|MAGIC* mg -#endif -p |int |magic_nextpack |SV* sv|MAGIC* mg|SV* key -p |U32 |magic_regdata_cnt|SV* sv|MAGIC* mg -p |int |magic_regdatum_get|SV* sv|MAGIC* mg -p |int |magic_regdatum_set|SV* sv|MAGIC* mg -p |int |magic_set |SV* sv|MAGIC* mg -p |int |magic_setamagic|SV* sv|MAGIC* mg -p |int |magic_setarylen|SV* sv|MAGIC* mg -p |int |magic_setbm |SV* sv|MAGIC* mg -p |int |magic_setdbline|SV* sv|MAGIC* mg -#if defined(USE_LOCALE_COLLATE) -p |int |magic_setcollxfrm|SV* sv|MAGIC* mg -#endif -p |int |magic_setdefelem|SV* sv|MAGIC* mg -p |int |magic_setenv |SV* sv|MAGIC* mg -p |int |magic_setfm |SV* sv|MAGIC* mg -p |int |magic_setisa |SV* sv|MAGIC* mg -p |int |magic_setglob |SV* sv|MAGIC* mg -p |int |magic_setmglob |SV* sv|MAGIC* mg -p |int |magic_setnkeys |SV* sv|MAGIC* mg -p |int |magic_setpack |SV* sv|MAGIC* mg -p |int |magic_setpos |SV* sv|MAGIC* mg -p |int |magic_setsig |SV* sv|MAGIC* mg -p |int |magic_setsubstr|SV* sv|MAGIC* mg -p |int |magic_settaint |SV* sv|MAGIC* mg -p |int |magic_setuvar |SV* sv|MAGIC* mg -p |int |magic_setvec |SV* sv|MAGIC* mg -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 -Ap |void |markstack_grow -#if defined(USE_LOCALE_COLLATE) -p |char* |mem_collxfrm |const char* s|STRLEN len|STRLEN* xlen -#endif -Afp |SV* |mess |const char* pat|... -Ap |SV* |vmess |const char* pat|va_list* args -p |void |qerror |SV* err -Apd |void |sortsv |SV ** array|size_t num_elts|SVCOMPARE_t cmp -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 -Ap |void |mini_mktime |struct tm *pm -p |OP* |mod |OP* o|I32 type -p |int |mode_from_discipline|SV* discp -Ap |char* |moreswitches |char* s -p |OP* |my |OP* o -Ap |NV |my_atof |const char *s -#if (!defined(HAS_MEMCPY) && !defined(HAS_BCOPY)) || (!defined(HAS_MEMMOVE) && !defined(HAS_SAFE_MEMCPY) && !defined(HAS_SAFE_BCOPY)) -Anp |char* |my_bcopy |const char* from|char* to|I32 len -#endif -#if !defined(HAS_BZERO) && !defined(HAS_MEMSET) -Anp |char* |my_bzero |char* loc|I32 len -#endif -Apr |void |my_exit |U32 status -Apr |void |my_failure_exit -Ap |I32 |my_fflush_all -Anp |Pid_t |my_fork -Anp |void |atfork_lock -Anp |void |atfork_unlock -Ap |I32 |my_lstat -#if !defined(HAS_MEMCMP) || !defined(HAS_SANE_MEMCMP) -Anp |I32 |my_memcmp |const char* s1|const char* s2|I32 len -#endif -#if !defined(HAS_MEMSET) -Anp |void* |my_memset |char* loc|I32 ch|I32 len -#endif -Ap |I32 |my_pclose |PerlIO* ptr -Ap |PerlIO*|my_popen |char* cmd|char* mode -Ap |PerlIO*|my_popen_list |char* mode|int n|SV ** args -Ap |void |my_setenv |char* nam|char* val -Ap |I32 |my_stat -Ap |char * |my_strftime |char *fmt|int sec|int min|int hour|int mday|int mon|int year|int wday|int yday|int isdst -#if defined(MYSWAP) -Ap |short |my_swap |short s -Ap |long |my_htonl |long l -Ap |long |my_ntohl |long l -#endif -p |void |my_unexec -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 |CV* |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 -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 -Apd |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* |newSVuv |UV u -Apd |SV* |newSVnv |NV n -Apd |SV* |newSVpv |const char* s|STRLEN len -Apd |SV* |newSVpvn |const char* s|STRLEN len -Apd |SV* |newSVpvn_share |const char* s|I32 len|U32 hash -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 - -Ap |PERL_SI*|new_stackinfo|I32 stitems|I32 cxitems -Apd |char* |new_vstring |char *vstr|SV *sv -p |PerlIO*|nextargv |GV* gv -Ap |char* |ninstr |const char* big|const char* bigend \ - |const char* little|const char* lend -p |OP* |oopsCV |OP* o -Ap |void |op_free |OP* arg -p |void |package |OP* o -p |PADOFFSET|pad_alloc |I32 optype|U32 tmptype -p |PADOFFSET|pad_allocmy |char* name -p |PADOFFSET|pad_findmy |char* name -p |OP* |oopsAV |OP* o -p |OP* |oopsHV |OP* o -p |void |pad_leavemy |I32 fill -Ap |SV* |pad_sv |PADOFFSET po -p |void |pad_free |PADOFFSET po -p |void |pad_reset -p |void |pad_swipe |PADOFFSET po -p |void |peep |OP* o -dopM |PerlIO*|start_glob |SV* pattern|IO *io -#if defined(USE_5005THREADS) -Ap |struct perl_thread* |new_struct_thread|struct perl_thread *t -#endif -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 -p |void |despatch_signals -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 -Ap |int |init_i18nl10n |int printwarn -Ap |int |init_i18nl14n |int printwarn -Ap |void |new_collate |char* newcoll -Ap |void |new_ctype |char* newctype -Ap |void |new_numeric |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 -Ap |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 -Ap |void |pop_scope -p |OP* |prepend_elem |I32 optype|OP* head|OP* tail -p |void |push_return |OP* o -Ap |void |push_scope -p |OP* |ref |OP* o|I32 type -p |OP* |refkids |OP* o|I32 type -Ap |void |regdump |regexp* r -Ap |SV* |regclass_swash |struct regnode *n|bool doinit|SV **initsvp -Ap |I32 |pregexec |regexp* prog|char* stringarg \ - |char* strend|char* strbeg|I32 minend \ - |SV* screamer|U32 nosave -Ap |void |pregfree |struct regexp* r -Ap |regexp*|pregcomp |char* exp|char* xend|PMOP* pm -Ap |char* |re_intuit_start|regexp* prog|SV* sv|char* strpos \ - |char* strend|U32 flags \ - |struct re_scream_pos_data_s *data -Ap |SV* |re_intuit_string|regexp* prog -Ap |I32 |regexec_flags |regexp* prog|char* stringarg \ - |char* strend|char* strbeg|I32 minend \ - |SV* screamer|void* data|U32 flags -Ap |regnode*|regnext |regnode* p -p |void |regprop |SV* sv|regnode* o -Ap |void |repeatcpy |char* to|const char* from|I32 len|I32 count -Ap |char* |rninstr |const char* big|const char* bigend \ - |const char* little|const char* lend -Ap |Sighandler_t|rsignal |int i|Sighandler_t t -p |int |rsignal_restore|int i|Sigsave_t* t -p |int |rsignal_save |int i|Sighandler_t t1|Sigsave_t* t2 -Ap |Sighandler_t|rsignal_state|int i -p |void |rxres_free |void** rsp -p |void |rxres_restore |void** rsp|REGEXP* prx -p |void |rxres_save |void** rsp|REGEXP* prx -#if !defined(HAS_RENAME) -p |I32 |same_dirent |char* a|char* b -#endif -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 -Ap |void |save_freepv |char* pv -Ap |void |save_generic_svref|SV** sptr -Ap |void |save_generic_pvref|char** str -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_mortalizesv|SV* sv -Ap |void |save_nogv |GV* gv -p |void |save_op -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_padsv |PADOFFSET off -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 -p |OP* |scalarseq |OP* o -p |OP* |scalarvoid |OP* o -Apd |NV |scan_bin |char* start|STRLEN len|STRLEN* retlen -Apd |NV |scan_hex |char* start|STRLEN len|STRLEN* retlen -Ap |char* |scan_num |char* s|YYSTYPE *lvalp -Apd |NV |scan_oct |char* start|STRLEN len|STRLEN* retlen -p |OP* |scope |OP* o -Ap |char* |screaminstr |SV* bigsv|SV* littlesv|I32 start_shift \ - |I32 end_shift|I32 *state|I32 last -#if !defined(VMS) -p |I32 |setenv_getix |char* nam -#endif -p |void |setdefout |GV* gv -p |HEK* |share_hek |const char* sv|I32 len|U32 hash -np |Signal_t |sighandler |int sig -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 -Apd |bool |sv_2bool |SV* sv -Apd |CV* |sv_2cv |SV* sv|HV** st|GV** gvp|I32 lref -Apd |IO* |sv_2io |SV* sv -Apd |IV |sv_2iv |SV* sv -Apd |SV* |sv_2mortal |SV* sv -Apd |NV |sv_2nv |SV* sv -Am |char* |sv_2pv |SV* sv|STRLEN* lp -Apd |char* |sv_2pvutf8 |SV* sv|STRLEN* lp -Apd |char* |sv_2pvbyte |SV* sv|STRLEN* lp -Ap |char* |sv_pvn_nomg |SV* sv|STRLEN* lp -Apd |UV |sv_2uv |SV* sv -Apd |IV |sv_iv |SV* sv -Apd |UV |sv_uv |SV* sv -Apd |NV |sv_nv |SV* sv -Apd |char* |sv_pvn |SV *sv|STRLEN *len -Apd |char* |sv_pvutf8n |SV *sv|STRLEN *len -Apd |char* |sv_pvbyten |SV *sv|STRLEN *len -Apd |I32 |sv_true |SV *sv -pd |void |sv_add_arena |char* ptr|U32 size|U32 flags -Apd |int |sv_backoff |SV* sv -Apd |SV* |sv_bless |SV* sv|HV* stash -Afpd |void |sv_catpvf |SV* sv|const char* pat|... -Ap |void |sv_vcatpvf |SV* sv|const char* pat|va_list* args -Apd |void |sv_catpv |SV* sv|const char* ptr -Amd |void |sv_catpvn |SV* sv|const char* ptr|STRLEN len -Amd |void |sv_catsv |SV* dsv|SV* ssv -Apd |void |sv_chop |SV* sv|char* ptr -pd |I32 |sv_clean_all -pd |void |sv_clean_objs -Apd |void |sv_clear |SV* sv -Apd |I32 |sv_cmp |SV* sv1|SV* sv2 -Apd |I32 |sv_cmp_locale |SV* sv1|SV* sv2 -#if defined(USE_LOCALE_COLLATE) -Apd |char* |sv_collxfrm |SV* sv|STRLEN* nxp -#endif -Ap |OP* |sv_compile_2op |SV* sv|OP** startp|char* code|AV** avp -Apd |int |getcwd_sv |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 -Apd |void |sv_free |SV* sv -pd |void |sv_free_arenas -Apd |char* |sv_gets |SV* sv|PerlIO* fp|I32 append -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 -Apd |int |sv_isa |SV* sv|const char* name -Apd |int |sv_isobject |SV* sv -Apd |STRLEN |sv_len |SV* sv -Apd |STRLEN |sv_len_utf8 |SV* sv -Apd |void |sv_magic |SV* sv|SV* obj|int how|const char* name \ - |I32 namlen -Apd |SV* |sv_mortalcopy |SV* oldsv -Apd |SV* |sv_newmortal -Apd |SV* |sv_newref |SV* sv -Ap |char* |sv_peek |SV* sv -Apd |void |sv_pos_u2b |SV* sv|I32* offsetp|I32* lenp -Apd |void |sv_pos_b2u |SV* sv|I32* offsetp -Amd |char* |sv_pvn_force |SV* sv|STRLEN* lp -Apd |char* |sv_pvutf8n_force|SV* sv|STRLEN* lp -Apd |char* |sv_pvbyten_force|SV* sv|STRLEN* lp -Apd |char* |sv_recode_to_utf8 |SV* sv|SV *encoding -Apd |char* |sv_reftype |SV* sv|int ob -Apd |void |sv_replace |SV* sv|SV* nsv -Apd |void |sv_report_used -Apd |void |sv_reset |char* s|HV* stash -Afpd |void |sv_setpvf |SV* sv|const char* pat|... -Ap |void |sv_vsetpvf |SV* sv|const char* pat|va_list* args -Apd |void |sv_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_uv |SV* rv|const char* classname|UV uv -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 -Apd |void |sv_setpv |SV* sv|const char* ptr -Apd |void |sv_setpvn |SV* sv|const char* ptr|STRLEN len -Amd |void |sv_setsv |SV* dsv|SV* ssv -Apd |void |sv_taint |SV* sv -Apd |bool |sv_tainted |SV* sv -Apd |int |sv_unmagic |SV* sv|int type -Apd |void |sv_unref |SV* sv -Apd |void |sv_unref_flags |SV* sv|U32 flags -Apd |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 -Apd |void |sv_vsetpvfn |SV* sv|const char* pat|STRLEN patlen \ - |va_list* args|SV** svargs|I32 svmax \ - |bool *maybe_tainted -Ap |NV |str_to_version |SV *sv -Ap |SV* |swash_init |char* pkg|char* name|SV* listsv \ - |I32 minbits|I32 none -Ap |UV |swash_fetch |SV *sv|U8 *ptr|bool do_utf8 -Ap |void |taint_env -Ap |void |taint_proper |const char* f|const char* s -Apd |UV |to_utf8_case |U8 *p|U8* ustrp|STRLEN *lenp \ - |SV **swash|char *normal|char *special -Apd |UV |to_utf8_lower |U8 *p|U8* ustrp|STRLEN *lenp -Apd |UV |to_utf8_upper |U8 *p|U8* ustrp|STRLEN *lenp -Apd |UV |to_utf8_title |U8 *p|U8* ustrp|STRLEN *lenp -Apd |UV |to_utf8_fold |U8 *p|U8* ustrp|STRLEN *lenp -#if defined(UNLINK_ALL_VERSIONS) -Ap |I32 |unlnk |char* f -#endif -#if defined(USE_5005THREADS) -Ap |void |unlock_condpair|void* svv -#endif -Ap |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 -Ap |U8* |utf16_to_utf8 |U8* p|U8 *d|I32 bytelen|I32 *newlen -Ap |U8* |utf16_to_utf8_reversed|U8* p|U8 *d|I32 bytelen|I32 *newlen -Adp |STRLEN |utf8_length |U8* s|U8 *e -Apd |IV |utf8_distance |U8 *a|U8 *b -Apd |U8* |utf8_hop |U8 *s|I32 off -ApMd |U8* |utf8_to_bytes |U8 *s|STRLEN *len -ApMd |U8* |bytes_from_utf8|U8 *s|STRLEN *len|bool *is_utf8 -ApMd |U8* |bytes_to_utf8 |U8 *s|STRLEN *len -Apd |UV |utf8_to_uvchr |U8 *s|STRLEN* retlen -Apd |UV |utf8_to_uvuni |U8 *s|STRLEN* retlen -Adp |UV |utf8n_to_uvchr |U8 *s|STRLEN curlen|STRLEN* retlen|U32 flags -Adp |UV |utf8n_to_uvuni |U8 *s|STRLEN curlen|STRLEN* retlen|U32 flags -Apd |U8* |uvchr_to_utf8 |U8 *d|UV uv -Ap |U8* |uvuni_to_utf8 |U8 *d|UV uv -Ap |U8* |uvchr_to_utf8_flags |U8 *d|UV uv|UV flags -Apd |U8* |uvuni_to_utf8_flags |U8 *d|UV uv|UV flags -Apd |char* |pv_uni_display |SV *dsv|U8 *spv|STRLEN len \ - |STRLEN pvlim|UV flags -Apd |char* |sv_uni_display |SV *dsv|SV *ssv|STRLEN pvlim|UV flags -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_evil_fh |GV *gv|IO *io|I32 op -pd |void |report_uninit -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 -Ap |I32 |whichsig |char* sig -p |int |yyerror |char* s -#ifdef USE_PURE_BISON -p |int |yylex_r |YYSTYPE *lvalp|int *lcharp -#endif -p |int |yylex -p |int |yyparse -p |int |yywarn |char* s -#if defined(MYMALLOC) -Ap |void |dump_mstats |char* s -Ap |int |get_mstats |perl_mstats_t *buf|int buflen|int level -#endif -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) -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) -Ap |struct perl_vars *|GetVars -#endif -Ap |int |runops_standard -Ap |int |runops_debug -#if defined(USE_5005THREADS) -Ap |SV* |sv_lock |SV *sv -#endif -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 *dsv|char *pv|STRLEN cur|STRLEN len \ - |STRLEN pvlim -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 -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 -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 -Ap |void |magic_dump |MAGIC *mg -#if defined(PERL_FLEXIBLE_EXCEPTIONS) -Ap |void* |default_protect|volatile JMPENV *je|int *excpt \ - |protect_body_t body|... -Ap |void* |vdefault_protect|volatile JMPENV *je|int *excpt \ - |protect_body_t body|va_list *args -#endif -Ap |void |reginitcolors -Apd |char* |sv_2pv_nolen |SV* sv -Apd |char* |sv_2pvutf8_nolen|SV* sv -Apd |char* |sv_2pvbyte_nolen|SV* sv -Apd |char* |sv_pv |SV *sv -Apd |char* |sv_pvutf8 |SV *sv -Apd |char* |sv_pvbyte |SV *sv -Amd |STRLEN |sv_utf8_upgrade|SV *sv -ApdM |bool |sv_utf8_downgrade|SV *sv|bool fail_ok -Apd |void |sv_utf8_encode |SV *sv -ApdM |bool |sv_utf8_decode |SV *sv -Apd |void |sv_force_normal|SV *sv -Apd |void |sv_force_normal_flags|SV *sv|U32 flags -Ap |void |tmps_grow |I32 n -Apd |SV* |sv_rvweaken |SV *sv -p |int |magic_killbackrefs|SV *sv|MAGIC *mg -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) -Ap |PERL_CONTEXT*|cx_dup |PERL_CONTEXT* cx|I32 ix|I32 max|CLONE_PARAMS* param -Ap |PERL_SI*|si_dup |PERL_SI* si|CLONE_PARAMS* param -Ap |ANY* |ss_dup |PerlInterpreter* proto_perl|CLONE_PARAMS* param -Ap |void* |any_dup |void* v|PerlInterpreter* proto_perl -Ap |HE* |he_dup |HE* e|bool shared|CLONE_PARAMS* param -Ap |REGEXP*|re_dup |REGEXP* r|CLONE_PARAMS* param -Ap |PerlIO*|fp_dup |PerlIO* fp|char type|CLONE_PARAMS* param -Ap |DIR* |dirp_dup |DIR* dp -Ap |GP* |gp_dup |GP* gp|CLONE_PARAMS* param -Ap |MAGIC* |mg_dup |MAGIC* mg|CLONE_PARAMS* param -Ap |SV* |sv_dup |SV* sstr|CLONE_PARAMS* param -#if defined(HAVE_INTERP_INTERN) -Ap |void |sys_intern_dup |struct interp_intern* src \ - |struct interp_intern* dst -#endif -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 -Ap |void |ptr_table_clear|PTR_TBL_t *tbl -Ap |void |ptr_table_free|PTR_TBL_t *tbl -#endif -#if defined(HAVE_INTERP_INTERN) -Ap |void |sys_intern_clear -Ap |void |sys_intern_init -#endif - -Ap |char * |custom_op_name|OP* op -Ap |char * |custom_op_desc|OP* op - - -END_EXTERN_C - -#if defined(PERL_IN_AV_C) || defined(PERL_DECL_PROT) -s |I32 |avhv_index_sv |SV* sv -s |I32 |avhv_index |AV* av|SV* sv|U32 hash -#endif - -#if defined(PERL_IN_DOOP_C) || defined(PERL_DECL_PROT) -s |I32 |do_trans_simple |SV *sv -s |I32 |do_trans_count |SV *sv -s |I32 |do_trans_complex |SV *sv -s |I32 |do_trans_simple_utf8 |SV *sv -s |I32 |do_trans_count_utf8 |SV *sv -s |I32 |do_trans_complex_utf8 |SV *sv -#endif - -#if defined(PERL_IN_GV_C) || defined(PERL_DECL_PROT) -s |void |gv_init_sv |GV *gv|I32 sv_type -s |void |require_errno |GV *gv -#endif - -#if defined(PERL_IN_HV_C) || defined(PERL_DECL_PROT) -s |void |hsplit |HV *hv -s |void |hfreeentries |HV *hv -s |void |more_he -s |HE* |new_he -s |void |del_he |HE *p -s |HEK* |save_hek |const char *str|I32 len|U32 hash -s |void |hv_magic_check |HV *hv|bool *needs_copy|bool *needs_store -#endif - -#if defined(PERL_IN_MG_C) || defined(PERL_DECL_PROT) -s |void |save_magic |I32 mgs_ix|SV *sv -s |int |magic_methpack |SV *sv|MAGIC *mg|char *meth -s |int |magic_methcall |SV *sv|MAGIC *mg|char *meth|I32 f \ - |int n|SV *val -#endif - -#if defined(PERL_IN_OP_C) || defined(PERL_DECL_PROT) -s |I32 |list_assignment|OP *o -s |void |bad_type |I32 n|char *t|char *name|OP *kid -s |void |cop_free |COP *cop -s |OP* |modkids |OP *o|I32 type -s |void |no_bareword_allowed|OP *o -s |OP* |no_fh_allowed |OP *o -s |OP* |scalarboolean |OP *o -s |OP* |too_few_arguments|OP *o|char* name -s |OP* |too_many_arguments|OP *o|char* name -s |PADOFFSET|pad_addlex |SV* name -s |PADOFFSET|pad_findlex |char* name|PADOFFSET newoff|U32 seq \ - |CV* startcv|I32 cx_ix|I32 saweval|U32 flags -s |OP* |newDEFSVOP -s |OP* |new_logop |I32 type|I32 flags|OP **firstp|OP **otherp -s |void |simplify_sort |OP *o -s |bool |is_handle_constructor |OP *o|I32 argnum -s |char* |gv_ename |GV *gv -# if defined(DEBUG_CLOSURES) -s |void |cv_dump |CV *cv -# endif -s |CV* |cv_clone2 |CV *proto|CV *outside -s |bool |scalar_mod_type|OP *o|I32 type -s |OP * |my_kid |OP *o|OP *attrs|OP **imopsp -s |OP * |dup_attrlist |OP *o -s |void |apply_attrs |HV *stash|SV *target|OP *attrs|bool for_my -s |void |apply_attrs_my |HV *stash|OP *target|OP *attrs|OP **imopsp -# if defined(PL_OP_SLAB_ALLOC) -s |void* |Slab_Alloc |int m|size_t sz -# endif -#endif - -#if defined(PERL_IN_PERL_C) || defined(PERL_DECL_PROT) -s |void |find_beginning -s |void |forbid_setid |char * -s |void |incpush |char *|int|int -s |void |init_interp -s |void |init_ids -s |void |init_lexer -s |void |init_main_stash -s |void |init_perllib -s |void |init_postdump_symbols|int|char **|char ** -s |void |init_predump_symbols -rs |void |my_exit_jump -s |void |nuke_stacks -s |void |open_script |char *|bool|SV *|int *fd -s |void |usage |char * -s |void |validate_suid |char *|char*|int -# if defined(IAMSUID) -s |int |fd_on_nosuid_fs|int fd -# endif -s |void* |parse_body |char **env|XSINIT_t xsinit -s |void* |run_body |I32 oldscope -s |void |call_body |OP *myop|int is_eval -s |void* |call_list_body |CV *cv -#if defined(PERL_FLEXIBLE_EXCEPTIONS) -s |void* |vparse_body |va_list args -s |void* |vrun_body |va_list args -s |void* |vcall_body |va_list args -s |void* |vcall_list_body|va_list args -#endif -# if defined(USE_5005THREADS) -s |struct perl_thread * |init_main_thread -# endif -#endif - -#if defined(PERL_IN_PP_C) || defined(PERL_DECL_PROT) -s |SV* |refto |SV* sv -s |U32 |seed -#endif - -#if defined(PERL_IN_PP_PACK_C) || defined(PERL_DECL_PROT) -s |void |doencodes |SV* sv|char* s|I32 len -s |SV* |mul128 |SV *sv|U8 m -s |SV* |is_an_int |char *s|STRLEN l -s |int |div128 |SV *pnum|bool *done -#endif - -#if defined(PERL_IN_PP_CTL_C) || defined(PERL_DECL_PROT) -s |OP* |docatch |OP *o -s |void* |docatch_body -#if defined(PERL_FLEXIBLE_EXCEPTIONS) -s |void* |vdocatch_body |va_list args -#endif -s |OP* |dofindlabel |OP *o|char *label|OP **opstack|OP **oplimit -s |void |doparseform |SV *sv -s |I32 |dopoptoeval |I32 startingblock -s |I32 |dopoptolabel |char *label -s |I32 |dopoptoloop |I32 startingblock -s |I32 |dopoptosub |I32 startingblock -s |I32 |dopoptosub_at |PERL_CONTEXT* cxstk|I32 startingblock -s |void |save_lines |AV *array|SV *sv -s |OP* |doeval |int gimme|OP** startop -s |PerlIO *|doopen_pmc |const char *name|const char *mode -#endif - -#if defined(PERL_IN_PP_HOT_C) || defined(PERL_DECL_PROT) -s |int |do_maybe_phash |AV *ary|SV **lelem|SV **firstlelem \ - |SV **relem|SV **lastrelem -s |void |do_oddball |HV *hash|SV **relem|SV **firstrelem -s |CV* |get_db_sub |SV **svp|CV *cv -s |SV* |method_common |SV* meth|U32* hashp -#endif - -#if defined(PERL_IN_PP_SYS_C) || defined(PERL_DECL_PROT) -s |OP* |doform |CV *cv|GV *gv|OP *retop -s |int |emulate_eaccess|const char* path|Mode_t mode -# if !defined(HAS_MKDIR) || !defined(HAS_RMDIR) -s |int |dooneliner |char *cmd|char *filename -# endif -#endif - -#if defined(PERL_IN_REGCOMP_C) || defined(PERL_DECL_PROT) -s |regnode*|reg |struct RExC_state_t*|I32|I32 * -s |regnode*|reganode |struct RExC_state_t*|U8|U32 -s |regnode*|regatom |struct RExC_state_t*|I32 * -s |regnode*|regbranch |struct RExC_state_t*|I32 *|I32 -s |void |reguni |struct RExC_state_t*|UV|char *|STRLEN* -s |regnode*|regclass |struct RExC_state_t* -s |I32 |regcurly |char * -s |regnode*|reg_node |struct RExC_state_t*|U8 -s |regnode*|regpiece |struct RExC_state_t*|I32 * -s |void |reginsert |struct RExC_state_t*|U8|regnode * -s |void |regoptail |struct RExC_state_t*|regnode *|regnode * -s |void |regtail |struct RExC_state_t*|regnode *|regnode * -s |char*|regwhite |char *|char * -s |char*|nextchar |struct RExC_state_t* -# ifdef DEBUGGING -s |regnode*|dumpuntil |regnode *start|regnode *node \ - |regnode *last|SV* sv|I32 l -s |void |put_byte |SV* sv|int c -# endif -s |void |scan_commit |struct RExC_state_t*|struct scan_data_t *data -s |void |cl_anything |struct RExC_state_t*|struct regnode_charclass_class *cl -s |int |cl_is_anything |struct regnode_charclass_class *cl -s |void |cl_init |struct RExC_state_t*|struct regnode_charclass_class *cl -s |void |cl_init_zero |struct RExC_state_t*|struct regnode_charclass_class *cl -s |void |cl_and |struct regnode_charclass_class *cl \ - |struct regnode_charclass_class *and_with -s |void |cl_or |struct RExC_state_t*|struct regnode_charclass_class *cl \ - |struct regnode_charclass_class *or_with -s |I32 |study_chunk |struct RExC_state_t*|regnode **scanp|I32 *deltap \ - |regnode *last|struct scan_data_t *data \ - |U32 flags -s |I32 |add_data |struct RExC_state_t*|I32 n|char *s -rs |void|re_croak2 |const char* pat1|const char* pat2|... -s |I32 |regpposixcc |struct RExC_state_t*|I32 value -s |void |checkposixcc |struct RExC_state_t* -#endif - -#if defined(PERL_IN_REGEXEC_C) || defined(PERL_DECL_PROT) -s |I32 |regmatch |regnode *prog -s |I32 |regrepeat |regnode *p|I32 max -s |I32 |regrepeat_hard |regnode *p|I32 max|I32 *lp -s |I32 |regtry |regexp *prog|char *startpos -s |bool |reginclass |regnode *n|U8 *p|bool do_utf8sv_is_utf8 -s |CHECKPOINT|regcppush |I32 parenfloor -s |char*|regcppop -s |char*|regcp_set_to |I32 ss -s |void |cache_re |regexp *prog -s |U8* |reghop |U8 *pos|I32 off -s |U8* |reghop3 |U8 *pos|I32 off|U8 *lim -s |U8* |reghopmaybe |U8 *pos|I32 off -s |U8* |reghopmaybe3 |U8 *pos|I32 off|U8 *lim -s |char* |find_byclass |regexp * prog|regnode *c|char *s|char *strend|char *startpos|I32 norun -#endif - -#if defined(PERL_IN_DUMP_C) || defined(PERL_DECL_PROT) -s |CV* |deb_curcv |I32 ix -s |void |debprof |OP *o -#endif - -#if defined(PERL_IN_SCOPE_C) || defined(PERL_DECL_PROT) -s |SV* |save_scalar_at |SV **sptr -#endif - -#if defined(USE_ITHREADS) -Adp |void |sharedsv_init -Adp |shared_sv* |sharedsv_new -Adp |shared_sv* |sharedsv_find |SV* sv -Adp |void |sharedsv_lock |shared_sv* ssv -Adp |void |sharedsv_unlock |shared_sv* ssv -p |void |sharedsv_unlock_scope |shared_sv* ssv -Adp |void |sharedsv_thrcnt_inc |shared_sv* ssv -Adp |void |sharedsv_thrcnt_dec |shared_sv* ssv -#endif - -#if defined(PERL_IN_SV_C) || defined(PERL_DECL_PROT) -s |IV |asIV |SV* sv -s |UV |asUV |SV* sv -s |SV* |more_sv -s |void |more_xiv -s |void |more_xnv -s |void |more_xpv -s |void |more_xpviv -s |void |more_xpvnv -s |void |more_xpvcv -s |void |more_xpvav -s |void |more_xpvhv -s |void |more_xpvmg -s |void |more_xpvlv -s |void |more_xpvbm -s |void |more_xrv -s |XPVIV* |new_xiv -s |XPVNV* |new_xnv -s |XPV* |new_xpv -s |XPVIV* |new_xpviv -s |XPVNV* |new_xpvnv -s |XPVCV* |new_xpvcv -s |XPVAV* |new_xpvav -s |XPVHV* |new_xpvhv -s |XPVMG* |new_xpvmg -s |XPVLV* |new_xpvlv -s |XPVBM* |new_xpvbm -s |XRV* |new_xrv -s |void |del_xiv |XPVIV* p -s |void |del_xnv |XPVNV* p -s |void |del_xpv |XPV* p -s |void |del_xpviv |XPVIV* p -s |void |del_xpvnv |XPVNV* p -s |void |del_xpvcv |XPVCV* p -s |void |del_xpvav |XPVAV* p -s |void |del_xpvhv |XPVHV* p -s |void |del_xpvmg |XPVMG* p -s |void |del_xpvlv |XPVLV* p -s |void |del_xpvbm |XPVBM* p -s |void |del_xrv |XRV* p -s |void |sv_unglob |SV* sv -s |void |not_a_number |SV *sv -s |I32 |visit |SVFUNC_t f -s |void |sv_add_backref |SV *tsv|SV *sv -s |void |sv_del_backref |SV *sv -# ifdef DEBUGGING -s |void |del_sv |SV *p -# endif -# if !defined(NV_PRESERVES_UV) -s |int |sv_2iuv_non_preserve |SV *sv|I32 numtype -# endif -s |I32 |expect_number |char** pattern -# -# if defined(USE_ITHREADS) -s |SV* |gv_share |SV *sv -# endif -#endif - -#if defined(PERL_IN_TOKE_C) || defined(PERL_DECL_PROT) -s |void |check_uni -s |void |force_next |I32 type -s |char* |force_version |char *start|int guessing -s |char* |force_word |char *start|int token|int check_keyword \ - |int allow_pack|int allow_tick -s |SV* |tokeq |SV *sv -s |int |pending_ident -s |char* |scan_const |char *start -s |char* |scan_formline |char *s -s |char* |scan_heredoc |char *s -s |char* |scan_ident |char *s|char *send|char *dest \ - |STRLEN destlen|I32 ck_uni -s |char* |scan_inputsymbol|char *start -s |char* |scan_pat |char *start|I32 type -s |char* |scan_str |char *start|int keep_quoted|int keep_delims -s |char* |scan_subst |char *start -s |char* |scan_trans |char *start -s |char* |scan_word |char *s|char *dest|STRLEN destlen \ - |int allow_package|STRLEN *slp -s |char* |skipspace |char *s -s |char* |swallow_bom |U8 *s -s |void |checkcomma |char *s|char *name|char *what -s |void |force_ident |char *s|int kind -s |void |incline |char *s -s |int |intuit_method |char *s|GV *gv -s |int |intuit_more |char *s -s |I32 |lop |I32 f|int x|char *s -s |void |missingterm |char *s -s |void |no_op |char *what|char *s -s |void |set_csh -s |I32 |sublex_done -s |I32 |sublex_push -s |I32 |sublex_start -s |char * |filter_gets |SV *sv|PerlIO *fp|STRLEN append -s |HV * |find_in_my_stash|char *pkgname|I32 len -s |SV* |new_constant |char *s|STRLEN len|const char *key|SV *sv \ - |SV *pv|const char *type -# if defined(DEBUGGING) -s |void |tokereport |char *thing|char *s|I32 rv -# endif -s |int |ao |int toketype -s |void |depcom -s |char* |incl_perldb -#if 0 -s |I32 |utf16_textfilter|int idx|SV *sv|int maxlen -s |I32 |utf16rev_textfilter|int idx|SV *sv|int maxlen -#endif -# if defined(CRIPPLED_CC) -s |int |uni |I32 f|char *s -# endif -# if defined(PERL_CR_FILTER) -s |I32 |cr_textfilter |int idx|SV *sv|int maxlen -# endif -#endif - -#if defined(PERL_IN_UNIVERSAL_C) || defined(PERL_DECL_PROT) -s |SV*|isa_lookup |HV *stash|const char *name|int len|int level -#endif - -#if defined(PERL_IN_LOCALE_C) || defined(PERL_DECL_PROT) -s |char* |stdize_locale |char* locs -#endif - -#if defined(PERL_IN_UTIL_C) || defined(PERL_DECL_PROT) -s |COP* |closest_cop |COP *cop|OP *o -s |SV* |mess_alloc -# if defined(LEAKTEST) -s |void |xstat |int -# endif -#endif - -START_EXTERN_C - -Apd |void |sv_setsv_flags |SV* dsv|SV* ssv|I32 flags -Apd |void |sv_catpvn_flags|SV* sv|const char* ptr|STRLEN len|I32 flags -Apd |void |sv_catsv_flags |SV* dsv|SV* ssv|I32 flags -Apd |STRLEN |sv_utf8_upgrade_flags|SV *sv|I32 flags -Apd |char* |sv_pvn_force_flags|SV* sv|STRLEN* lp|I32 flags -Apd |char* |sv_2pv_flags |SV* sv|STRLEN* lp|I32 flags -Ap |char* |my_atof2 |const char *s|NV* value -#if !defined(HAS_SOCKETPAIR) && defined(HAS_SOCKET) -Apn |int |my_socketpair |int family|int type|int protocol|int fd[2] -#endif - - -#if defined(USE_PERLIO) && !defined(USE_SFIO) -Ap |int |PerlIO_close |PerlIO * -Ap |int |PerlIO_fill |PerlIO * -Ap |int |PerlIO_fileno |PerlIO * -Ap |int |PerlIO_eof |PerlIO * -Ap |int |PerlIO_error |PerlIO * -Ap |int |PerlIO_flush |PerlIO * -Ap |void |PerlIO_clearerr |PerlIO * -Ap |void |PerlIO_set_cnt |PerlIO *|int -Ap |void |PerlIO_set_ptrcnt |PerlIO *|STDCHAR *|int -Ap |void |PerlIO_setlinebuf |PerlIO * -Ap |SSize_t|PerlIO_read |PerlIO *|void *|Size_t -Ap |SSize_t|PerlIO_write |PerlIO *|const void *|Size_t -Ap |SSize_t|PerlIO_unread |PerlIO *|const void *|Size_t -Ap |Off_t |PerlIO_tell |PerlIO * -Ap |int |PerlIO_seek |PerlIO *|Off_t|int - -Ap |STDCHAR *|PerlIO_get_base |PerlIO * -Ap |STDCHAR *|PerlIO_get_ptr |PerlIO * -Ap |int |PerlIO_get_bufsiz |PerlIO * -Ap |int |PerlIO_get_cnt |PerlIO * - -Ap |PerlIO *|PerlIO_stdin -Ap |PerlIO *|PerlIO_stdout -Ap |PerlIO *|PerlIO_stderr -#endif /* PERLIO_LAYERS */ - -END_EXTERN_C - diff --git a/pod/perlapi.pod b/pod/perlapi.pod index 915e40c..0b915dd 100644 --- a/pod/perlapi.pod +++ b/pod/perlapi.pod @@ -17,6 +17,85 @@ unadorned names, but this support may be disabled in a future release. The listing is alphabetical, case insensitive. + +=head1 "Gimme" Values + +=over 8 + +=item GIMME + +A backward-compatible version of C which can only return +C or C; in a void context, it returns C. +Deprecated. Use C instead. + + U32 GIMME + +=for hackers +Found in file op.h + +=item GIMME_V + +The XSUB-writer's equivalent to Perl's C. Returns C, +C or C for void, scalar or list context, +respectively. + + U32 GIMME_V + +=for hackers +Found in file op.h + +=item G_ARRAY + +Used to indicate list context. See C, C and +L. + +=for hackers +Found in file cop.h + +=item G_DISCARD + +Indicates that arguments returned from a callback should be discarded. See +L. + +=for hackers +Found in file cop.h + +=item G_EVAL + +Used to force a Perl C wrapper around a callback. See +L. + +=for hackers +Found in file cop.h + +=item G_NOARGS + +Indicates that no arguments are being sent to a callback. See +L. + +=for hackers +Found in file cop.h + +=item G_SCALAR + +Used to indicate scalar context. See C, C, and +L. + +=for hackers +Found in file cop.h + +=item G_VOID + +Used to indicate void context. See C and L. + +=for hackers +Found in file cop.h + + +=back + +=head1 Array Manipulation Functions + =over 8 =item AvFILL @@ -182,47 +261,53 @@ must then use C to assign values to these new elements. =for hackers Found in file av.c -=item ax +=item get_av -Variable which is setup by C to indicate the stack base offset, -used by the C, C and C macros. The C macro -must be called prior to setup the C variable. +Returns the AV of the specified Perl array. If C is set and the +Perl variable does not exist then it will be created. If C is not +set and the variable does not exist then NULL is returned. - I32 ax +NOTE: the perl_ form of this function is deprecated. + + AV* get_av(const char* name, I32 create) =for hackers -Found in file XSUB.h +Found in file perl.c -=item bytes_from_utf8 +=item newAV -Converts a string C of length C from UTF8 into byte encoding. -Unlike but like C, returns a pointer to -the newly-created string, and updates C to contain the new -length. Returns the original string if no conversion occurs, C -is unchanged. Do nothing if C points to 0. Sets C to -0 if C is converted or contains all 7bit characters. +Creates a new AV. The reference count is set to 1. -NOTE: this function is experimental and may change or be -removed without notice. + AV* newAV() + +=for hackers +Found in file av.c + +=item Nullav + +Null AV pointer. - U8* bytes_from_utf8(U8 *s, STRLEN *len, bool *is_utf8) =for hackers -Found in file utf8.c +Found in file av.h -=item bytes_to_utf8 +=item sortsv -Converts a string C of length C from ASCII into UTF8 encoding. -Returns a pointer to the newly-created string, and sets C to -reflect the new length. +Sort an array. Here is an example: -NOTE: this function is experimental and may change or be -removed without notice. + sortsv(AvARRAY(av), av_len(av)+1, Perl_sv_cmp_locale); - U8* bytes_to_utf8(U8 *s, STRLEN *len) + void sortsv(SV ** array, size_t num_elts, SVCOMPARE_t cmp) =for hackers -Found in file utf8.c +Found in file pp_sort.c + + +=back + +=head1 Callback Functions + +=over 8 =item call_argv @@ -270,408 +355,361 @@ NOTE: the perl_ form of this function is deprecated. =for hackers Found in file perl.c -=item CLASS +=item ENTER -Variable which is setup by C to indicate the -class name for a C++ XS constructor. This is always a C. See C. +Opening bracket on a callback. See C and L. - char* CLASS + ENTER; =for hackers -Found in file XSUB.h +Found in file scope.h -=item Copy +=item eval_pv -The XSUB-writer's interface to the C C function. The C is the -source, C is the destination, C is the number of items, and C is -the type. May fail on overlapping copies. See also C. +Tells Perl to C the given string and return an SV* result. - void Copy(void* src, void* dest, int nitems, type) +NOTE: the perl_ form of this function is deprecated. -=for hackers -Found in file handy.h + SV* eval_pv(const char* p, I32 croak_on_error) -=item croak +=for hackers +Found in file perl.c -This is the XSUB-writer's interface to Perl's C function. -Normally use this function the same way you use the C C -function. See C. +=item eval_sv -If you want to throw an exception object, assign the object to -C<$@> and then pass C to croak(): +Tells Perl to C the string in the SV. - errsv = get_sv("@", TRUE); - sv_setsv(errsv, exception_object); - croak(Nullch); +NOTE: the perl_ form of this function is deprecated. - void croak(const char* pat, ...) + I32 eval_sv(SV* sv, I32 flags) =for hackers -Found in file util.c +Found in file perl.c -=item CvSTASH +=item FREETMPS -Returns the stash of the CV. +Closing bracket for temporaries on a callback. See C and +L. - HV* CvSTASH(CV* cv) + FREETMPS; =for hackers -Found in file cv.h - -=item cv_const_sv +Found in file scope.h -If C is a constant sub eligible for inlining. returns the constant -value returned by the sub. Otherwise, returns NULL. +=item LEAVE -Constant subs can be created with C or as described in -L. +Closing bracket on a callback. See C and L. - SV* cv_const_sv(CV* cv) + LEAVE; =for hackers -Found in file op.c +Found in file scope.h -=item dAX +=item SAVETMPS -Sets up the C variable. -This is usually handled automatically by C by calling C. +Opening bracket for temporaries on a callback. See C and +L. - dAX; + SAVETMPS; =for hackers -Found in file XSUB.h +Found in file scope.h -=item dITEMS -Sets up the C variable. -This is usually handled automatically by C by calling C. +=back - dITEMS; +=head1 Character classes -=for hackers -Found in file XSUB.h +=over 8 -=item dMARK +=item isALNUM -Declare a stack marker variable, C, for the XSUB. See C and -C. +Returns a boolean indicating whether the C C is an ASCII alphanumeric +character (including underscore) or digit. - dMARK; + bool isALNUM(char ch) =for hackers -Found in file pp.h +Found in file handy.h -=item dORIGMARK +=item isALPHA -Saves the original stack mark for the XSUB. See C. +Returns a boolean indicating whether the C C is an ASCII alphabetic +character. - dORIGMARK; + bool isALPHA(char ch) =for hackers -Found in file pp.h +Found in file handy.h -=item dSP +=item isDIGIT -Declares a local copy of perl's stack pointer for the XSUB, available via -the C macro. See C. +Returns a boolean indicating whether the C C is an ASCII +digit. - dSP; + bool isDIGIT(char ch) =for hackers -Found in file pp.h +Found in file handy.h -=item dXSARGS +=item isLOWER -Sets up stack and mark pointers for an XSUB, calling dSP and dMARK. -Sets up the C and C variables by calling C and C. -This is usually handled automatically by C. +Returns a boolean indicating whether the C C is a lowercase +character. - dXSARGS; + bool isLOWER(char ch) =for hackers -Found in file XSUB.h +Found in file handy.h -=item dXSI32 +=item isSPACE -Sets up the C variable for an XSUB which has aliases. This is usually -handled automatically by C. +Returns a boolean indicating whether the C C is whitespace. - dXSI32; + bool isSPACE(char ch) =for hackers -Found in file XSUB.h +Found in file handy.h -=item ENTER +=item isUPPER -Opening bracket on a callback. See C and L. +Returns a boolean indicating whether the C C is an uppercase +character. - ENTER; + bool isUPPER(char ch) =for hackers -Found in file scope.h +Found in file handy.h -=item eval_pv +=item toLOWER -Tells Perl to C the given string and return an SV* result. +Converts the specified character to lowercase. -NOTE: the perl_ form of this function is deprecated. + char toLOWER(char ch) - SV* eval_pv(const char* p, I32 croak_on_error) +=for hackers +Found in file handy.h + +=item toUPPER + +Converts the specified character to uppercase. + + char toUPPER(char ch) =for hackers -Found in file perl.c +Found in file handy.h -=item eval_sv -Tells Perl to C the string in the SV. +=back -NOTE: the perl_ form of this function is deprecated. +=head1 Cloning an interpreter - I32 eval_sv(SV* sv, I32 flags) +=over 8 + +=item perl_clone + +Create and return a new interpreter by cloning the current one. + + PerlInterpreter* perl_clone(PerlInterpreter* interp, UV flags) =for hackers -Found in file perl.c +Found in file sv.c -=item EXTEND -Used to extend the argument stack for an XSUB's return values. Once -used, guarantees that there is room for at least C to be pushed -onto the stack. +=back - void EXTEND(SP, int nitems) +=head1 CV Manipulation Functions + +=over 8 + +=item CvSTASH + +Returns the stash of the CV. + + HV* CvSTASH(CV* cv) =for hackers -Found in file pp.h +Found in file cv.h -=item fbm_compile +=item get_cv -Analyses the string in order to make fast searches on it using fbm_instr() --- the Boyer-Moore algorithm. +Returns the CV of the specified Perl subroutine. If C is set and +the Perl subroutine does not exist then it will be declared (which has the +same effect as saying C). If C is not set and the +subroutine does not exist then NULL is returned. - void fbm_compile(SV* sv, U32 flags) +NOTE: the perl_ form of this function is deprecated. + + CV* get_cv(const char* name, I32 create) =for hackers -Found in file util.c +Found in file perl.c -=item fbm_instr +=item Nullcv -Returns the location of the SV in the string delimited by C and -C. It returns C if the string can't be found. The C -does not have to be fbm_compiled, but the search will not be as fast -then. +Null CV pointer. - char* fbm_instr(unsigned char* big, unsigned char* bigend, SV* littlesv, U32 flags) =for hackers -Found in file util.c +Found in file cv.h -=item form -Takes a sprintf-style format pattern and conventional -(non-SV) arguments and returns the formatted string. +=back - (char *) Perl_form(pTHX_ const char* pat, ...) +=head1 Embedding Functions -can be used any place a string (char *) is required: +=over 8 - char * s = Perl_form("%d.%d",major,minor); +=item load_module -Uses a single private buffer so if you want to format several strings you -must explicitly copy the earlier strings away (and free the copies when you -are done). +Loads the module whose name is pointed to by the string part of name. +Note that the actual module name, not its filename, should be given. +Eg, "Foo::Bar" instead of "Foo/Bar.pm". flags can be any of +PERL_LOADMOD_DENY, PERL_LOADMOD_NOIMPORT, or PERL_LOADMOD_IMPORT_OPS +(or 0 for no flags). ver, if specified, provides version semantics +similar to C. The optional trailing SV* +arguments can be used to specify arguments to the module's import() +method, similar to C. - char* form(const char* pat, ...) + void load_module(U32 flags, SV* name, SV* ver, ...) =for hackers -Found in file util.c +Found in file op.c -=item FREETMPS +=item perl_alloc -Closing bracket for temporaries on a callback. See C and -L. +Allocates a new Perl interpreter. See L. - FREETMPS; + PerlInterpreter* perl_alloc() =for hackers -Found in file scope.h +Found in file perl.c -=item getcwd_sv +=item perl_construct -Fill the sv with current working directory +Initializes a new Perl interpreter. See L. - int getcwd_sv(SV* sv) + void perl_construct(PerlInterpreter* interp) =for hackers -Found in file util.c - -=item get_av +Found in file perl.c -Returns the AV of the specified Perl array. If C is set and the -Perl variable does not exist then it will be created. If C is not -set and the variable does not exist then NULL is returned. +=item perl_destruct -NOTE: the perl_ form of this function is deprecated. +Shuts down a Perl interpreter. See L. - AV* get_av(const char* name, I32 create) + int perl_destruct(PerlInterpreter* interp) =for hackers Found in file perl.c -=item get_cv - -Returns the CV of the specified Perl subroutine. If C is set and -the Perl subroutine does not exist then it will be declared (which has the -same effect as saying C). If C is not set and the -subroutine does not exist then NULL is returned. +=item perl_free -NOTE: the perl_ form of this function is deprecated. +Releases a Perl interpreter. See L. - CV* get_cv(const char* name, I32 create) + void perl_free(PerlInterpreter* interp) =for hackers Found in file perl.c -=item get_hv +=item perl_parse -Returns the HV of the specified Perl hash. If C is set and the -Perl variable does not exist then it will be created. If C is not -set and the variable does not exist then NULL is returned. +Tells a Perl interpreter to parse a Perl script. See L. -NOTE: the perl_ form of this function is deprecated. + int perl_parse(PerlInterpreter* interp, XSINIT_t xsinit, int argc, char** argv, char** env) - HV* get_hv(const char* name, I32 create) +=for hackers +Found in file perl.c + +=item perl_run + +Tells a Perl interpreter to run. See L. + + int perl_run(PerlInterpreter* interp) =for hackers Found in file perl.c -=item get_sv +=item require_pv -Returns the SV of the specified Perl scalar. If C is set and the -Perl variable does not exist then it will be created. If C is not -set and the variable does not exist then NULL is returned. +Tells Perl to C the file named by the string argument. It is +analogous to the Perl code C. It's even +implemented that way; consider using Perl_load_module instead. NOTE: the perl_ form of this function is deprecated. - SV* get_sv(const char* name, I32 create) + void require_pv(const char* pv) =for hackers Found in file perl.c -=item GIMME -A backward-compatible version of C which can only return -C or C; in a void context, it returns C. -Deprecated. Use C instead. +=back - U32 GIMME +=head1 Global Variables -=for hackers -Found in file op.h +=over 8 -=item GIMME_V +=item PL_modglobal -The XSUB-writer's equivalent to Perl's C. Returns C, -C or C for void, scalar or list context, -respectively. +C 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. - U32 GIMME_V + HV* PL_modglobal =for hackers -Found in file op.h +Found in file intrpvar.h -=item grok_bin +=item PL_na -converts a string representing a binary number to numeric form. +A convenience variable which is typically used with C 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 macro. -On entry I and I<*len> give the string to scan, I<*flags> gives -conversion flags, and I should be NULL or a pointer to an NV. -The scan stops at the end of the string, or the first invalid character. -On return I<*len> is set to the length scanned string, and I<*flags> gives -output flags. + STRLEN PL_na -If the value is <= UV_MAX it is returned as a UV, the output flags are clear, -and nothing is written to I<*result>. If the value is > UV_MAX C -returns UV_MAX, sets C in the output flags, -and writes the value to I<*result> (or the value is discarded if I -is NULL). +=for hackers +Found in file thrdvar.h -The hex number may optionally be prefixed with "0b" or "b" unless -C is set in I<*flags> on entry. If -C is set in I<*flags> then the binary -number may use '_' characters to separate digits. +=item PL_sv_no - UV grok_bin(char* start, STRLEN* len, I32* flags, NV *result) +This is the C SV. See C. Always refer to this as +C<&PL_sv_no>. + + SV PL_sv_no =for hackers -Found in file numeric.c +Found in file intrpvar.h -=item grok_hex +=item PL_sv_undef -converts a string representing a hex number to numeric form. +This is the C SV. Always refer to this as C<&PL_sv_undef>. -On entry I and I<*len> give the string to scan, I<*flags> gives -conversion flags, and I should be NULL or a pointer to an NV. -The scan stops at the end of the string, or the first non-hex-digit character. -On return I<*len> is set to the length scanned string, and I<*flags> gives -output flags. + SV PL_sv_undef -If the value is <= UV_MAX it is returned as a UV, the output flags are clear, -and nothing is written to I<*result>. If the value is > UV_MAX C -returns UV_MAX, sets C in the output flags, -and writes the value to I<*result> (or the value is discarded if I -is NULL). +=for hackers +Found in file intrpvar.h -The hex number may optionally be prefixed with "0x" or "x" unless -C is set in I<*flags> on entry. If -C is set in I<*flags> then the hex -number may use '_' characters to separate digits. +=item PL_sv_yes - UV grok_hex(char* start, STRLEN* len, I32* flags, NV *result) +This is the C SV. See C. Always refer to this as +C<&PL_sv_yes>. + + SV PL_sv_yes =for hackers -Found in file numeric.c +Found in file intrpvar.h -=item grok_number - -Recognise (or not) a number. The type of the number is returned -(0 if unrecognised), otherwise it is a bit-ORed combination of -IS_NUMBER_IN_UV, IS_NUMBER_GREATER_THAN_UV_MAX, IS_NUMBER_NOT_INT, -IS_NUMBER_NEG, IS_NUMBER_INFINITY, IS_NUMBER_NAN (defined in perl.h). - -If the value of the number can fit an in UV, it is returned in the *valuep -IS_NUMBER_IN_UV will be set to indicate that *valuep is valid, IS_NUMBER_IN_UV -will never be set unless *valuep is valid, but *valuep may have been assigned -to during processing even though IS_NUMBER_IN_UV is not set on return. -If valuep is NULL, IS_NUMBER_IN_UV will be set for the same cases as when -valuep is non-NULL, but no actual assignment (or SEGV) will occur. - -IS_NUMBER_NOT_INT will be set with IS_NUMBER_IN_UV if trailing decimals were -seen (in which case *valuep gives the true value truncated to an integer), and -IS_NUMBER_NEG if the number is negative (in which case *valuep holds the -absolute value). IS_NUMBER_IN_UV is not set if e notation was used or the -number is larger than a UV. - - int grok_number(const char *pv, STRLEN len, UV *valuep) - -=for hackers -Found in file numeric.c - -=item grok_numeric_radix - -Scan and skip for a numeric decimal separator (radix). - - bool grok_numeric_radix(const char **sp, const char *send) - -=for hackers -Found in file numeric.c - -=item grok_oct +=back - UV grok_oct(char* start, STRLEN* len, I32* flags, NV *result) +=head1 GV Functions -=for hackers -Found in file numeric.c +=over 8 =item GvSV @@ -764,61 +802,55 @@ valid UTF-8 string. See C. =for hackers Found in file gv.c -=item G_ARRAY -Used to indicate list context. See C, C and -L. +=back -=for hackers -Found in file cop.h +=head1 Handy Values -=item G_DISCARD +=over 8 -Indicates that arguments returned from a callback should be discarded. See -L. +=item HEf_SVKEY -=for hackers -Found in file cop.h +This flag, used in the length slot of hash entries and magic structures, +specifies the structure contains an C pointer where a C pointer +is to be expected. (For information only--not to be used). -=item G_EVAL -Used to force a Perl C wrapper around a callback. See -L. +=for hackers +Found in file hv.h +=item Nullch + +Null character pointer. =for hackers -Found in file cop.h +Found in file handy.h -=item G_NOARGS +=item Nullsv -Indicates that no arguments are being sent to a callback. See -L. +Null SV pointer. =for hackers -Found in file cop.h +Found in file handy.h -=item G_SCALAR -Used to indicate scalar context. See C, C, and -L. +=back -=for hackers -Found in file cop.h +=head1 Hash Manipulation Functions -=item G_VOID +=over 8 -Used to indicate void context. See C and L. +=item get_hv -=for hackers -Found in file cop.h +Returns the HV of the specified Perl hash. If C is set and the +Perl variable does not exist then it will be created. If C is not +set and the variable does not exist then NULL is returned. -=item HEf_SVKEY +NOTE: the perl_ form of this function is deprecated. -This flag, used in the length slot of hash entries and magic structures, -specifies the structure contains an C pointer where a C pointer -is to be expected. (For information only--not to be used). + HV* get_hv(const char* name, I32 create) =for hackers -Found in file hv.h +Found in file perl.c =item HeHASH @@ -1128,655 +1160,724 @@ Undefines the hash. =for hackers Found in file hv.c -=item ibcmp_utf8 - -Return true if the strings s1 and s2 differ case-insensitively, false -if not (if they are equal case-insensitively). If u1 is true, the -string s1 is assumed to be in UTF-8-encoded Unicode. If u2 is true, -the string s2 is assumed to be in UTF-8-encoded Unicode. If u1 or u2 -are false, the respective string is assumed to be in native 8-bit -encoding. - -If the pe1 and pe2 are non-NULL, the scanning pointers will be copied -in there (they will point at the beginning of the I character). -If the pointers behind pe1 or pe2 are non-NULL, they are the end -pointers beyond which scanning will not continue under any -circustances. If the byte lengths l1 and l2 are non-zero, s1+l1 and -s2+l2 will be used as goal end pointers that will also stop the scan, -and which qualify towards defining a successful match: all the scans -that define an explicit length must reach their goal pointers for -a match to succeed). +=item newHV -For case-insensitiveness, the "casefolding" of Unicode is used -instead of upper/lowercasing both the characters, see -http://www.unicode.org/unicode/reports/tr21/ (Case Mappings). +Creates a new HV. The reference count is set to 1. - I32 ibcmp_utf8(const char* a, char **pe1, UV l1, bool u1, const char* b, char **pe2, UV l2, bool u2) + HV* newHV() =for hackers -Found in file utf8.c +Found in file hv.c -=item isALNUM +=item Nullhv -Returns a boolean indicating whether the C C is an ASCII alphanumeric -character (including underscore) or digit. +Null HV pointer. - bool isALNUM(char ch) =for hackers -Found in file handy.h +Found in file hv.h -=item isALPHA -Returns a boolean indicating whether the C C is an ASCII alphabetic -character. +=back - bool isALPHA(char ch) +=head1 Magical Functions -=for hackers -Found in file handy.h +=over 8 -=item isDIGIT +=item mg_clear -Returns a boolean indicating whether the C C is an ASCII -digit. +Clear something magical that the SV represents. See C. - bool isDIGIT(char ch) + int mg_clear(SV* sv) =for hackers -Found in file handy.h +Found in file mg.c -=item isLOWER +=item mg_copy -Returns a boolean indicating whether the C C is a lowercase -character. +Copies the magic from one SV to another. See C. - bool isLOWER(char ch) + int mg_copy(SV* sv, SV* nsv, const char* key, I32 klen) =for hackers -Found in file handy.h +Found in file mg.c -=item isSPACE +=item mg_find -Returns a boolean indicating whether the C C is whitespace. +Finds the magic pointer for type matching the SV. See C. - bool isSPACE(char ch) + MAGIC* mg_find(SV* sv, int type) =for hackers -Found in file handy.h +Found in file mg.c -=item isUPPER +=item mg_free -Returns a boolean indicating whether the C C is an uppercase -character. +Free any magic storage used by the SV. See C. - bool isUPPER(char ch) + int mg_free(SV* sv) =for hackers -Found in file handy.h +Found in file mg.c -=item is_utf8_char +=item mg_get -Tests if some arbitrary number of bytes begins in a valid UTF-8 -character. Note that an INVARIANT (i.e. ASCII) character is a valid UTF-8 character. -The actual number of bytes in the UTF-8 character will be returned if -it is valid, otherwise 0. +Do magic after a value is retrieved from the SV. See C. - STRLEN is_utf8_char(U8 *p) + int mg_get(SV* sv) =for hackers -Found in file utf8.c +Found in file mg.c -=item is_utf8_string +=item mg_length -Returns true if first C bytes of the given string form a valid UTF8 -string, false otherwise. Note that 'a valid UTF8 string' does not mean -'a string that contains UTF8' because a valid ASCII string is a valid -UTF8 string. +Report on the SV's length. See C. - bool is_utf8_string(U8 *s, STRLEN len) + U32 mg_length(SV* sv) =for hackers -Found in file utf8.c +Found in file mg.c -=item items +=item mg_magical -Variable which is setup by C to indicate the number of -items on the stack. See L. +Turns on the magical status of an SV. See C. - I32 items + void mg_magical(SV* sv) =for hackers -Found in file XSUB.h +Found in file mg.c -=item ix +=item mg_set -Variable which is setup by C to indicate which of an -XSUB's aliases was used to invoke it. See L. +Do magic after a value is assigned to the SV. See C. - I32 ix + int mg_set(SV* sv) =for hackers -Found in file XSUB.h +Found in file mg.c -=item LEAVE +=item SvGETMAGIC -Closing bracket on a callback. See C and L. +Invokes C on an SV if it has 'get' magic. This macro evaluates its +argument more than once. - LEAVE; + void SvGETMAGIC(SV* sv) =for hackers -Found in file scope.h +Found in file sv.h -=item load_module +=item SvSETMAGIC -Loads the module whose name is pointed to by the string part of name. -Note that the actual module name, not its filename, should be given. -Eg, "Foo::Bar" instead of "Foo/Bar.pm". flags can be any of -PERL_LOADMOD_DENY, PERL_LOADMOD_NOIMPORT, or PERL_LOADMOD_IMPORT_OPS -(or 0 for no flags). ver, if specified, provides version semantics -similar to C. The optional trailing SV* -arguments can be used to specify arguments to the module's import() -method, similar to C. +Invokes C on an SV if it has 'set' magic. This macro evaluates its +argument more than once. - void load_module(U32 flags, SV* name, SV* ver, ...) + void SvSETMAGIC(SV* sv) =for hackers -Found in file op.c +Found in file sv.h -=item looks_like_number +=item SvSetMagicSV -Test if the content of an SV looks like a number (or is a number). -C and C are treated as numbers (so will not issue a -non-numeric warning), even if your atof() doesn't grok them. +Like C, but does any set magic required afterwards. - I32 looks_like_number(SV* sv) + void SvSetMagicSV(SV* dsb, SV* ssv) =for hackers -Found in file sv.c +Found in file sv.h -=item MARK +=item SvSetSV -Stack marker variable for the XSUB. See C. +Calls C if dsv is not the same as ssv. May evaluate arguments +more than once. + + void SvSetSV(SV* dsb, SV* ssv) =for hackers -Found in file pp.h +Found in file sv.h -=item mg_clear +=item SvSetSV_nosteal -Clear something magical that the SV represents. See C. +Calls a non-destructive version of C if dsv is not the same as +ssv. May evaluate arguments more than once. - int mg_clear(SV* sv) + void SvSetSV_nosteal(SV* dsv, SV* ssv) =for hackers -Found in file mg.c +Found in file sv.h -=item mg_copy -Copies the magic from one SV to another. See C. +=back - int mg_copy(SV* sv, SV* nsv, const char* key, I32 klen) +=head1 Memory Management -=for hackers -Found in file mg.c +=over 8 -=item mg_find +=item Copy -Finds the magic pointer for type matching the SV. See C. +The XSUB-writer's interface to the C C function. The C is the +source, C is the destination, C is the number of items, and C is +the type. May fail on overlapping copies. See also C. - MAGIC* mg_find(SV* sv, int type) + void Copy(void* src, void* dest, int nitems, type) =for hackers -Found in file mg.c +Found in file handy.h -=item mg_free +=item Move -Free any magic storage used by the SV. See C. +The XSUB-writer's interface to the C C function. The C is the +source, C is the destination, C is the number of items, and C is +the type. Can do overlapping moves. See also C. - int mg_free(SV* sv) + void Move(void* src, void* dest, int nitems, type) =for hackers -Found in file mg.c +Found in file handy.h -=item mg_get +=item New -Do magic after a value is retrieved from the SV. See C. +The XSUB-writer's interface to the C C function. - int mg_get(SV* sv) + void New(int id, void* ptr, int nitems, type) =for hackers -Found in file mg.c +Found in file handy.h -=item mg_length +=item Newc -Report on the SV's length. See C. +The XSUB-writer's interface to the C C function, with +cast. - U32 mg_length(SV* sv) + void Newc(int id, void* ptr, int nitems, type, cast) =for hackers -Found in file mg.c - -=item mg_magical - -Turns on the magical status of an SV. See C. - - void mg_magical(SV* sv) +Found in file handy.h -=for hackers -Found in file mg.c +=item NEWSV -=item mg_set +Creates a new SV. A non-zero C 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 is an integer id between 0 and 1299 (used to identify leaks). -Do magic after a value is assigned to the SV. See C. - int mg_set(SV* sv) + SV* NEWSV(int id, STRLEN len) =for hackers -Found in file mg.c +Found in file handy.h -=item Move +=item Newz -The XSUB-writer's interface to the C C function. The C is the -source, C is the destination, C is the number of items, and C is -the type. Can do overlapping moves. See also C. +The XSUB-writer's interface to the C C function. The allocated +memory is zeroed with C. - void Move(void* src, void* dest, int nitems, type) + void Newz(int id, void* ptr, int nitems, type) =for hackers Found in file handy.h -=item New +=item Renew -The XSUB-writer's interface to the C C function. +The XSUB-writer's interface to the C C function. - void New(int id, void* ptr, int nitems, type) + void Renew(void* ptr, int nitems, type) =for hackers Found in file handy.h -=item newAV +=item Renewc -Creates a new AV. The reference count is set to 1. +The XSUB-writer's interface to the C C function, with +cast. - AV* newAV() + void Renewc(void* ptr, int nitems, type, cast) =for hackers -Found in file av.c +Found in file handy.h -=item Newc +=item Safefree -The XSUB-writer's interface to the C C function, with -cast. +The XSUB-writer's interface to the C C function. - void Newc(int id, void* ptr, int nitems, type, cast) + void Safefree(void* ptr) =for hackers Found in file handy.h -=item newCONSTSUB +=item savepv -Creates a constant sub equivalent to Perl C which is -eligible for inlining at compile-time. +Copy a string to a safe spot. This does not use an SV. - CV* newCONSTSUB(HV* stash, char* name, SV* sv) + char* savepv(const char* sv) =for hackers -Found in file op.c +Found in file util.c -=item newHV +=item savepvn -Creates a new HV. The reference count is set to 1. +Copy a string to a safe spot. The C indicates number of bytes to +copy. This does not use an SV. - HV* newHV() + char* savepvn(const char* sv, I32 len) =for hackers -Found in file hv.c +Found in file util.c -=item newRV_inc +=item StructCopy -Creates an RV wrapper for an SV. The reference count for the original SV is -incremented. +This is an architecture-independent macro to copy one structure to another. - SV* newRV_inc(SV* sv) + void StructCopy(type src, type dest, type) =for hackers -Found in file sv.h +Found in file handy.h -=item newRV_noinc +=item Zero -Creates an RV wrapper for an SV. The reference count for the original -SV is B incremented. +The XSUB-writer's interface to the C C function. The C is the +destination, C is the number of items, and C is the type. - SV* newRV_noinc(SV *sv) + void Zero(void* dest, int nitems, type) =for hackers -Found in file sv.c +Found in file handy.h -=item NEWSV -Creates a new SV. A non-zero C 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 is an integer id between 0 and 1299 (used to identify leaks). +=back - SV* NEWSV(int id, STRLEN len) +=head1 Miscellaneous Functions -=for hackers -Found in file handy.h +=over 8 -=item newSV +=item fbm_compile -Create a new null SV, or if len > 0, create a new empty SVt_PV type SV -with an initial PV allocation of len+1. Normally accessed via the C -macro. +Analyses the string in order to make fast searches on it using fbm_instr() +-- the Boyer-Moore algorithm. - SV* newSV(STRLEN len) + void fbm_compile(SV* sv, U32 flags) =for hackers -Found in file sv.c +Found in file util.c -=item newSViv +=item fbm_instr -Creates a new SV and copies an integer into it. The reference count for the -SV is set to 1. +Returns the location of the SV in the string delimited by C and +C. It returns C if the string can't be found. The C +does not have to be fbm_compiled, but the search will not be as fast +then. - SV* newSViv(IV i) + char* fbm_instr(unsigned char* big, unsigned char* bigend, SV* littlesv, U32 flags) =for hackers -Found in file sv.c +Found in file util.c -=item newSVnv +=item form -Creates a new SV and copies a floating point value into it. -The reference count for the SV is set to 1. +Takes a sprintf-style format pattern and conventional +(non-SV) arguments and returns the formatted string. - SV* newSVnv(NV n) + (char *) Perl_form(pTHX_ const char* pat, ...) -=for hackers -Found in file sv.c +can be used any place a string (char *) is required: -=item newSVpv + char * s = Perl_form("%d.%d",major,minor); -Creates a new SV and copies a string into it. The reference count for the -SV is set to 1. If C is zero, Perl will compute the length using -strlen(). For efficiency, consider using C instead. +Uses a single private buffer so if you want to format several strings you +must explicitly copy the earlier strings away (and free the copies when you +are done). - SV* newSVpv(const char* s, STRLEN len) + char* form(const char* pat, ...) =for hackers -Found in file sv.c +Found in file util.c -=item newSVpvf +=item getcwd_sv -Creates a new SV and initializes it with the string formatted like -C. +Fill the sv with current working directory - SV* newSVpvf(const char* pat, ...) + int getcwd_sv(SV* sv) =for hackers -Found in file sv.c +Found in file util.c -=item newSVpvn +=item strEQ -Creates a new SV and copies a string into it. The reference count for the -SV is set to 1. Note that if C is zero, Perl will create a zero length -string. You are responsible for ensuring that the source string is at least -C bytes long. +Test two strings to see if they are equal. Returns true or false. - SV* newSVpvn(const char* s, STRLEN len) + bool strEQ(char* s1, char* s2) =for hackers -Found in file sv.c +Found in file handy.h -=item newSVpvn_share +=item strGE -Creates a new SV with its SvPVX pointing to a shared string in the string -table. If the string does not already exist in the table, it is created -first. Turns on READONLY and FAKE. The string's hash is stored in the UV -slot of the SV; if the C parameter is non-zero, that value is used; -otherwise the hash is computed. The idea here is that as the string table -is used for shared hash keys these strings will have SvPVX == HeKEY and -hash lookup will avoid string compare. +Test two strings to see if the first, C, is greater than or equal to +the second, C. Returns true or false. - SV* newSVpvn_share(const char* s, I32 len, U32 hash) + bool strGE(char* s1, char* s2) =for hackers -Found in file sv.c +Found in file handy.h -=item newSVrv +=item strGT -Creates a new SV for the RV, C, to point to. If C is not an RV then -it will be upgraded to one. If C 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. +Test two strings to see if the first, C, is greater than the second, +C. Returns true or false. - SV* newSVrv(SV* rv, const char* classname) + bool strGT(char* s1, char* s2) =for hackers -Found in file sv.c +Found in file handy.h -=item newSVsv +=item strLE -Creates a new SV which is an exact duplicate of the original SV. -(Uses C). +Test two strings to see if the first, C, is less than or equal to the +second, C. Returns true or false. - SV* newSVsv(SV* old) + bool strLE(char* s1, char* s2) =for hackers -Found in file sv.c +Found in file handy.h -=item newSVuv +=item strLT -Creates a new SV and copies an unsigned integer into it. -The reference count for the SV is set to 1. +Test two strings to see if the first, C, is less than the second, +C. Returns true or false. - SV* newSVuv(UV u) + bool strLT(char* s1, char* s2) =for hackers -Found in file sv.c +Found in file handy.h -=item newXS +=item strNE -Used by C to hook up XSUBs as Perl subs. +Test two strings to see if they are different. Returns true or +false. + + bool strNE(char* s1, char* s2) =for hackers -Found in file op.c +Found in file handy.h -=item newXSproto +=item strnEQ -Used by C to hook up XSUBs as Perl subs. Adds Perl prototypes to -the subs. +Test two strings to see if they are equal. The C parameter indicates +the number of bytes to compare. Returns true or false. (A wrapper for +C). + + bool strnEQ(char* s1, char* s2, STRLEN len) =for hackers -Found in file XSUB.h +Found in file handy.h -=item Newz +=item strnNE -The XSUB-writer's interface to the C C function. The allocated -memory is zeroed with C. +Test two strings to see if they are different. The C parameter +indicates the number of bytes to compare. Returns true or false. (A +wrapper for C). - void Newz(int id, void* ptr, int nitems, type) + bool strnNE(char* s1, char* s2, STRLEN len) =for hackers Found in file handy.h -=item new_vstring -Returns a pointer to the next character after the parsed -vstring, as well as updating the passed in sv. +=back -Function must be called like +=head1 Numeric functions - sv = NEWSV(92,5); - s = new_vstring(s,sv); +=over 8 -The sv must already be large enough to store the vstring -passed in. +=item grok_bin - char* new_vstring(char *vstr, SV *sv) +converts a string representing a binary number to numeric form. + +On entry I and I<*len> give the string to scan, I<*flags> gives +conversion flags, and I should be NULL or a pointer to an NV. +The scan stops at the end of the string, or the first invalid character. +On return I<*len> is set to the length scanned string, and I<*flags> gives +output flags. + +If the value is <= UV_MAX it is returned as a UV, the output flags are clear, +and nothing is written to I<*result>. If the value is > UV_MAX C +returns UV_MAX, sets C in the output flags, +and writes the value to I<*result> (or the value is discarded if I +is NULL). + +The hex number may optionally be prefixed with "0b" or "b" unless +C is set in I<*flags> on entry. If +C is set in I<*flags> then the binary +number may use '_' characters to separate digits. + + UV grok_bin(char* start, STRLEN* len, I32* flags, NV *result) =for hackers -Found in file util.c +Found in file numeric.c -=item Nullav +=item grok_hex -Null AV pointer. +converts a string representing a hex number to numeric form. + +On entry I and I<*len> give the string to scan, I<*flags> gives +conversion flags, and I should be NULL or a pointer to an NV. +The scan stops at the end of the string, or the first non-hex-digit character. +On return I<*len> is set to the length scanned string, and I<*flags> gives +output flags. + +If the value is <= UV_MAX it is returned as a UV, the output flags are clear, +and nothing is written to I<*result>. If the value is > UV_MAX C +returns UV_MAX, sets C in the output flags, +and writes the value to I<*result> (or the value is discarded if I +is NULL). + +The hex number may optionally be prefixed with "0x" or "x" unless +C is set in I<*flags> on entry. If +C is set in I<*flags> then the hex +number may use '_' characters to separate digits. + + UV grok_hex(char* start, STRLEN* len, I32* flags, NV *result) =for hackers -Found in file av.h +Found in file numeric.c -=item Nullch +=item grok_number -Null character pointer. +Recognise (or not) a number. The type of the number is returned +(0 if unrecognised), otherwise it is a bit-ORed combination of +IS_NUMBER_IN_UV, IS_NUMBER_GREATER_THAN_UV_MAX, IS_NUMBER_NOT_INT, +IS_NUMBER_NEG, IS_NUMBER_INFINITY, IS_NUMBER_NAN (defined in perl.h). + +If the value of the number can fit an in UV, it is returned in the *valuep +IS_NUMBER_IN_UV will be set to indicate that *valuep is valid, IS_NUMBER_IN_UV +will never be set unless *valuep is valid, but *valuep may have been assigned +to during processing even though IS_NUMBER_IN_UV is not set on return. +If valuep is NULL, IS_NUMBER_IN_UV will be set for the same cases as when +valuep is non-NULL, but no actual assignment (or SEGV) will occur. + +IS_NUMBER_NOT_INT will be set with IS_NUMBER_IN_UV if trailing decimals were +seen (in which case *valuep gives the true value truncated to an integer), and +IS_NUMBER_NEG if the number is negative (in which case *valuep holds the +absolute value). IS_NUMBER_IN_UV is not set if e notation was used or the +number is larger than a UV. + + int grok_number(const char *pv, STRLEN len, UV *valuep) =for hackers -Found in file handy.h +Found in file numeric.c -=item Nullcv +=item grok_numeric_radix -Null CV pointer. +Scan and skip for a numeric decimal separator (radix). + + bool grok_numeric_radix(const char **sp, const char *send) =for hackers -Found in file cv.h +Found in file numeric.c -=item Nullhv +=item grok_oct -Null HV pointer. + + UV grok_oct(char* start, STRLEN* len, I32* flags, NV *result) =for hackers -Found in file hv.h +Found in file numeric.c -=item Nullsv +=item scan_bin -Null SV pointer. +For backwards compatibility. Use C instead. + + NV scan_bin(char* start, STRLEN len, STRLEN* retlen) =for hackers -Found in file handy.h +Found in file numeric.c -=item ORIGMARK +=item scan_hex -The original stack mark for the XSUB. See C. +For backwards compatibility. Use C instead. + + NV scan_hex(char* start, STRLEN len, STRLEN* retlen) =for hackers -Found in file pp.h +Found in file numeric.c -=item perl_alloc +=item scan_oct -Allocates a new Perl interpreter. See L. +For backwards compatibility. Use C instead. - PerlInterpreter* perl_alloc() + NV scan_oct(char* start, STRLEN len, STRLEN* retlen) =for hackers -Found in file perl.c +Found in file numeric.c -=item perl_clone -Create and return a new interpreter by cloning the current one. +=back - PerlInterpreter* perl_clone(PerlInterpreter* interp, UV flags) +=head1 Optree Manipulation Functions + +=over 8 + +=item cv_const_sv + +If C is a constant sub eligible for inlining. returns the constant +value returned by the sub. Otherwise, returns NULL. + +Constant subs can be created with C or as described in +L. + + SV* cv_const_sv(CV* cv) =for hackers -Found in file sv.c +Found in file op.c -=item perl_construct +=item newCONSTSUB -Initializes a new Perl interpreter. See L. +Creates a constant sub equivalent to Perl C which is +eligible for inlining at compile-time. - void perl_construct(PerlInterpreter* interp) + CV* newCONSTSUB(HV* stash, char* name, SV* sv) =for hackers -Found in file perl.c +Found in file op.c -=item perl_destruct +=item newXS -Shuts down a Perl interpreter. See L. +Used by C to hook up XSUBs as Perl subs. - int perl_destruct(PerlInterpreter* interp) +=for hackers +Found in file op.c + + +=back + +=head1 Shared SV Functions + +=over 8 + +=item sharedsv_find + +Tries to find if a given SV has a shared backend, either by +looking at magic, or by checking if it is tied again threads::shared. + + shared_sv* sharedsv_find(SV* sv) =for hackers -Found in file perl.c +Found in file sharedsv.c -=item perl_free +=item sharedsv_init -Releases a Perl interpreter. See L. +Saves a space for keeping SVs wider than an interpreter, +currently only stores a pointer to the first interpreter. - void perl_free(PerlInterpreter* interp) + void sharedsv_init() =for hackers -Found in file perl.c +Found in file sharedsv.c -=item perl_parse +=item sharedsv_lock -Tells a Perl interpreter to parse a Perl script. See L. +Recursive locks on a sharedsv. +Locks are dynamically scoped at the level of the first lock. + void sharedsv_lock(shared_sv* ssv) - int perl_parse(PerlInterpreter* interp, XSINIT_t xsinit, int argc, char** argv, char** env) +=for hackers +Found in file sharedsv.c + +=item sharedsv_new + +Allocates a new shared sv struct, you must yourself create the SV/AV/HV. + shared_sv* sharedsv_new() =for hackers -Found in file perl.c +Found in file sharedsv.c -=item perl_run +=item sharedsv_thrcnt_dec + +Decrements the threadcount of a shared sv. When a threads frontend is freed +this function should be called. + + void sharedsv_thrcnt_dec(shared_sv* ssv) + +=for hackers +Found in file sharedsv.c + +=item sharedsv_thrcnt_inc + +Increments the threadcount of a sharedsv. + void sharedsv_thrcnt_inc(shared_sv* ssv) + +=for hackers +Found in file sharedsv.c + +=item sharedsv_unlock + +Recursively unlocks a shared sv. + + void sharedsv_unlock(shared_sv* ssv) + +=for hackers +Found in file sharedsv.c + + +=back + +=head1 Stack Manipulation Macros + +=over 8 + +=item dMARK -Tells a Perl interpreter to run. See L. +Declare a stack marker variable, C, for the XSUB. See C and +C. - int perl_run(PerlInterpreter* interp) + dMARK; =for hackers -Found in file perl.c +Found in file pp.h -=item PL_modglobal +=item dORIGMARK -C 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. +Saves the original stack mark for the XSUB. See C. - HV* PL_modglobal + dORIGMARK; =for hackers -Found in file intrpvar.h +Found in file pp.h -=item PL_na +=item dSP -A convenience variable which is typically used with C 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 macro. +Declares a local copy of perl's stack pointer for the XSUB, available via +the C macro. See C. - STRLEN PL_na + dSP; =for hackers -Found in file thrdvar.h +Found in file pp.h -=item PL_sv_no +=item EXTEND -This is the C SV. See C. Always refer to this as -C<&PL_sv_no>. +Used to extend the argument stack for an XSUB's return values. Once +used, guarantees that there is room for at least C to be pushed +onto the stack. - SV PL_sv_no + void EXTEND(SP, int nitems) =for hackers -Found in file intrpvar.h - -=item PL_sv_undef +Found in file pp.h -This is the C SV. Always refer to this as C<&PL_sv_undef>. +=item MARK - SV PL_sv_undef +Stack marker variable for the XSUB. See C. =for hackers -Found in file intrpvar.h - -=item PL_sv_yes +Found in file pp.h -This is the C SV. See C. Always refer to this as -C<&PL_sv_yes>. +=item ORIGMARK - SV PL_sv_yes +The original stack mark for the XSUB. See C. =for hackers -Found in file intrpvar.h +Found in file pp.h =item POPi @@ -1915,317 +2016,441 @@ See C and L for other uses. =for hackers Found in file pp.h -=item pv_uni_display +=item SP -Build to the scalar dsv a displayable version of the string spv, -length len, the displayable version being at most pvlim bytes long -(if longer, the rest is truncated and "..." will be appended). -The flags argument is currently unused but available for future extensions. -The pointer to the PV of the dsv is returned. +Stack pointer. This is usually handled by C. See C and +C. - char* pv_uni_display(SV *dsv, U8 *spv, STRLEN len, STRLEN pvlim, UV flags) +=for hackers +Found in file pp.h + +=item SPAGAIN + +Refetch the stack pointer. Used after a callback. See L. + + SPAGAIN; =for hackers -Found in file utf8.c +Found in file pp.h -=item Renew +=item XPUSHi -The XSUB-writer's interface to the C C function. +Push an integer onto the stack, extending the stack if necessary. Handles +'set' magic. See C. - void Renew(void* ptr, int nitems, type) + void XPUSHi(IV iv) =for hackers -Found in file handy.h +Found in file pp.h -=item Renewc +=item XPUSHn -The XSUB-writer's interface to the C C function, with -cast. +Push a double onto the stack, extending the stack if necessary. Handles +'set' magic. See C. - void Renewc(void* ptr, int nitems, type, cast) + void XPUSHn(NV nv) =for hackers -Found in file handy.h +Found in file pp.h -=item require_pv +=item XPUSHp -Tells Perl to C the file named by the string argument. It is -analogous to the Perl code C. It's even -implemented that way; consider using Perl_load_module instead. +Push a string onto the stack, extending the stack if necessary. The C +indicates the length of the string. Handles 'set' magic. See +C. -NOTE: the perl_ form of this function is deprecated. + void XPUSHp(char* str, STRLEN len) - void require_pv(const char* pv) +=for hackers +Found in file pp.h + +=item XPUSHs + +Push an SV onto the stack, extending the stack if necessary. Does not +handle 'set' magic. See C. + + void XPUSHs(SV* sv) =for hackers -Found in file perl.c +Found in file pp.h -=item RETVAL +=item XPUSHu -Variable which is setup by C to hold the return value for an -XSUB. This is always the proper type for the XSUB. See -L. +Push an unsigned integer onto the stack, extending the stack if necessary. +See C. - (whatever) RETVAL + void XPUSHu(UV uv) + +=for hackers +Found in file pp.h + +=item XSRETURN + +Return from XSUB, indicating number of items on the stack. This is usually +handled by C. + + void XSRETURN(int nitems) =for hackers Found in file XSUB.h -=item Safefree +=item XSRETURN_IV -The XSUB-writer's interface to the C C function. +Return an integer from an XSUB immediately. Uses C. - void Safefree(void* ptr) + void XSRETURN_IV(IV iv) =for hackers -Found in file handy.h +Found in file XSUB.h -=item savepv +=item XSRETURN_NO -Copy a string to a safe spot. This does not use an SV. +Return C<&PL_sv_no> from an XSUB immediately. Uses C. - char* savepv(const char* sv) + XSRETURN_NO; =for hackers -Found in file util.c +Found in file XSUB.h -=item savepvn +=item XSRETURN_NV -Copy a string to a safe spot. The C indicates number of bytes to -copy. This does not use an SV. +Return a double from an XSUB immediately. Uses C. - char* savepvn(const char* sv, I32 len) + void XSRETURN_NV(NV nv) =for hackers -Found in file util.c +Found in file XSUB.h + +=item XSRETURN_PV + +Return a copy of a string from an XSUB immediately. Uses C. + + void XSRETURN_PV(char* str) + +=for hackers +Found in file XSUB.h + +=item XSRETURN_UNDEF + +Return C<&PL_sv_undef> from an XSUB immediately. Uses C. + + XSRETURN_UNDEF; + +=for hackers +Found in file XSUB.h + +=item XSRETURN_YES + +Return C<&PL_sv_yes> from an XSUB immediately. Uses C. + + XSRETURN_YES; + +=for hackers +Found in file XSUB.h + +=item XST_mIV + +Place an integer into the specified position C on the stack. The +value is stored in a new mortal SV. + + void XST_mIV(int pos, IV iv) + +=for hackers +Found in file XSUB.h + +=item XST_mNO + +Place C<&PL_sv_no> into the specified position C on the +stack. + + void XST_mNO(int pos) + +=for hackers +Found in file XSUB.h + +=item XST_mNV + +Place a double into the specified position C on the stack. The value +is stored in a new mortal SV. + + void XST_mNV(int pos, NV nv) + +=for hackers +Found in file XSUB.h + +=item XST_mPV + +Place a copy of a string into the specified position C on the stack. +The value is stored in a new mortal SV. + + void XST_mPV(int pos, char* str) + +=for hackers +Found in file XSUB.h + +=item XST_mUNDEF + +Place C<&PL_sv_undef> into the specified position C on the +stack. + + void XST_mUNDEF(int pos) + +=for hackers +Found in file XSUB.h + +=item XST_mYES + +Place C<&PL_sv_yes> into the specified position C on the +stack. + + void XST_mYES(int pos) + +=for hackers +Found in file XSUB.h + + +=back + +=head1 SV Flags -=item SAVETMPS +=over 8 -Opening bracket for temporaries on a callback. See C and -L. +=item svtype - SAVETMPS; +An enum of flags for Perl types. These are found in the file B +in the C enum. Test these flags with the C macro. =for hackers -Found in file scope.h - -=item scan_bin +Found in file sv.h -For backwards compatibility. Use C instead. +=item SVt_IV - NV scan_bin(char* start, STRLEN len, STRLEN* retlen) +Integer type flag for scalars. See C. =for hackers -Found in file numeric.c - -=item scan_hex +Found in file sv.h -For backwards compatibility. Use C instead. +=item SVt_NV - NV scan_hex(char* start, STRLEN len, STRLEN* retlen) +Double type flag for scalars. See C. =for hackers -Found in file numeric.c - -=item scan_oct +Found in file sv.h -For backwards compatibility. Use C instead. +=item SVt_PV - NV scan_oct(char* start, STRLEN len, STRLEN* retlen) +Pointer type flag for scalars. See C. =for hackers -Found in file numeric.c - -=item sharedsv_find +Found in file sv.h -Tries to find if a given SV has a shared backend, either by -looking at magic, or by checking if it is tied again threads::shared. +=item SVt_PVAV - shared_sv* sharedsv_find(SV* sv) +Type flag for arrays. See C. =for hackers -Found in file sharedsv.c - -=item sharedsv_init +Found in file sv.h -Saves a space for keeping SVs wider than an interpreter, -currently only stores a pointer to the first interpreter. +=item SVt_PVCV - void sharedsv_init() +Type flag for code refs. See C. =for hackers -Found in file sharedsv.c +Found in file sv.h -=item sharedsv_lock +=item SVt_PVHV -Recursive locks on a sharedsv. -Locks are dynamically scoped at the level of the first lock. - void sharedsv_lock(shared_sv* ssv) +Type flag for hashes. See C. =for hackers -Found in file sharedsv.c +Found in file sv.h -=item sharedsv_new +=item SVt_PVMG -Allocates a new shared sv struct, you must yourself create the SV/AV/HV. - shared_sv* sharedsv_new() +Type flag for blessed scalars. See C. =for hackers -Found in file sharedsv.c +Found in file sv.h -=item sharedsv_thrcnt_dec -Decrements the threadcount of a shared sv. When a threads frontend is freed -this function should be called. +=back - void sharedsv_thrcnt_dec(shared_sv* ssv) +=head1 SV Manipulation Functions -=for hackers -Found in file sharedsv.c +=over 8 -=item sharedsv_thrcnt_inc +=item get_sv -Increments the threadcount of a sharedsv. - void sharedsv_thrcnt_inc(shared_sv* ssv) +Returns the SV of the specified Perl scalar. If C is set and the +Perl variable does not exist then it will be created. If C 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) =for hackers -Found in file sharedsv.c +Found in file perl.c -=item sharedsv_unlock +=item looks_like_number -Recursively unlocks a shared sv. +Test if the content of an SV looks like a number (or is a number). +C and C are treated as numbers (so will not issue a +non-numeric warning), even if your atof() doesn't grok them. - void sharedsv_unlock(shared_sv* ssv) + I32 looks_like_number(SV* sv) =for hackers -Found in file sharedsv.c - -=item sortsv +Found in file sv.c -Sort an array. Here is an example: +=item newRV_inc - sortsv(AvARRAY(av), av_len(av)+1, Perl_sv_cmp_locale); +Creates an RV wrapper for an SV. The reference count for the original SV is +incremented. - void sortsv(SV ** array, size_t num_elts, SVCOMPARE_t cmp) + SV* newRV_inc(SV* sv) =for hackers -Found in file pp_sort.c +Found in file sv.h -=item SP +=item newRV_noinc -Stack pointer. This is usually handled by C. See C and -C. +Creates an RV wrapper for an SV. The reference count for the original +SV is B incremented. + + SV* newRV_noinc(SV *sv) =for hackers -Found in file pp.h +Found in file sv.c -=item SPAGAIN +=item newSV -Refetch the stack pointer. Used after a callback. See L. +Create a new null SV, or if len > 0, create a new empty SVt_PV type SV +with an initial PV allocation of len+1. Normally accessed via the C +macro. - SPAGAIN; + SV* newSV(STRLEN len) =for hackers -Found in file pp.h +Found in file sv.c -=item ST +=item newSViv -Used to access elements on the XSUB's stack. +Creates a new SV and copies an integer into it. The reference count for the +SV is set to 1. - SV* ST(int ix) + SV* newSViv(IV i) =for hackers -Found in file XSUB.h +Found in file sv.c -=item strEQ +=item newSVnv -Test two strings to see if they are equal. Returns true or false. +Creates a new SV and copies a floating point value into it. +The reference count for the SV is set to 1. - bool strEQ(char* s1, char* s2) + SV* newSVnv(NV n) =for hackers -Found in file handy.h +Found in file sv.c -=item strGE +=item newSVpv -Test two strings to see if the first, C, is greater than or equal to -the second, C. Returns true or false. +Creates a new SV and copies a string into it. The reference count for the +SV is set to 1. If C is zero, Perl will compute the length using +strlen(). For efficiency, consider using C instead. - bool strGE(char* s1, char* s2) + SV* newSVpv(const char* s, STRLEN len) =for hackers -Found in file handy.h +Found in file sv.c -=item strGT +=item newSVpvf -Test two strings to see if the first, C, is greater than the second, -C. Returns true or false. +Creates a new SV and initializes it with the string formatted like +C. - bool strGT(char* s1, char* s2) + SV* newSVpvf(const char* pat, ...) =for hackers -Found in file handy.h +Found in file sv.c -=item strLE +=item newSVpvn -Test two strings to see if the first, C, is less than or equal to the -second, C. Returns true or false. +Creates a new SV and copies a string into it. The reference count for the +SV is set to 1. Note that if C is zero, Perl will create a zero length +string. You are responsible for ensuring that the source string is at least +C bytes long. - bool strLE(char* s1, char* s2) + SV* newSVpvn(const char* s, STRLEN len) =for hackers -Found in file handy.h +Found in file sv.c -=item strLT +=item newSVpvn_share -Test two strings to see if the first, C, is less than the second, -C. Returns true or false. +Creates a new SV with its SvPVX pointing to a shared string in the string +table. If the string does not already exist in the table, it is created +first. Turns on READONLY and FAKE. The string's hash is stored in the UV +slot of the SV; if the C parameter is non-zero, that value is used; +otherwise the hash is computed. The idea here is that as the string table +is used for shared hash keys these strings will have SvPVX == HeKEY and +hash lookup will avoid string compare. - bool strLT(char* s1, char* s2) + SV* newSVpvn_share(const char* s, I32 len, U32 hash) =for hackers -Found in file handy.h +Found in file sv.c -=item strNE +=item newSVrv -Test two strings to see if they are different. Returns true or -false. +Creates a new SV for the RV, C, to point to. If C is not an RV then +it will be upgraded to one. If C 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. - bool strNE(char* s1, char* s2) + SV* newSVrv(SV* rv, const char* classname) =for hackers -Found in file handy.h +Found in file sv.c -=item strnEQ +=item newSVsv -Test two strings to see if they are equal. The C parameter indicates -the number of bytes to compare. Returns true or false. (A wrapper for -C). +Creates a new SV which is an exact duplicate of the original SV. +(Uses C). - bool strnEQ(char* s1, char* s2, STRLEN len) + SV* newSVsv(SV* old) =for hackers -Found in file handy.h +Found in file sv.c -=item strnNE +=item newSVuv -Test two strings to see if they are different. The C parameter -indicates the number of bytes to compare. Returns true or false. (A -wrapper for C). +Creates a new SV and copies an unsigned integer into it. +The reference count for the SV is set to 1. - bool strnNE(char* s1, char* s2, STRLEN len) + SV* newSVuv(UV u) =for hackers -Found in file handy.h +Found in file sv.c -=item StructCopy +=item new_vstring -This is an architecture-independent macro to copy one structure to another. +Returns a pointer to the next character after the parsed +vstring, as well as updating the passed in sv. - void StructCopy(type src, type dest, type) +Function must be called like + + sv = NEWSV(92,5); + s = new_vstring(s,sv); + +The sv must already be large enough to store the vstring +passed in. + + char* new_vstring(char *vstr, SV *sv) =for hackers -Found in file handy.h +Found in file util.c =item SvCUR @@ -2245,22 +2470,12 @@ Set the length of the string which is in the SV. See C. =for hackers Found in file sv.h -=item SvEND - -Returns a pointer to the last character in the string which is in the SV. -See C. Access the character as *(SvEND(sv)). - - char* SvEND(SV* sv) - -=for hackers -Found in file sv.h - -=item SvGETMAGIC +=item SvEND -Invokes C on an SV if it has 'get' magic. This macro evaluates its -argument more than once. +Returns a pointer to the last character in the string which is in the SV. +See C. Access the character as *(SvEND(sv)). - void SvGETMAGIC(SV* sv) + char* SvEND(SV* sv) =for hackers Found in file sv.h @@ -2360,22 +2575,22 @@ version which guarantees to evaluate sv only once. =for hackers Found in file sv.h -=item SvIVX +=item SvIVx -Returns the raw value in the SV's IV slot, without checks or conversions. -Only use when you are sure SvIOK is true. See also C. +Coerces the given SV to an integer and returns it. Guarantees to evaluate +sv only once. Use the more efficient C otherwise. - IV SvIVX(SV* sv) + IV SvIVx(SV* sv) =for hackers Found in file sv.h -=item SvIVx +=item SvIVX -Coerces the given SV to an integer and returns it. Guarantees to evaluate -sv only once. Use the more efficient C otherwise. +Returns the raw value in the SV's IV slot, without checks or conversions. +Only use when you are sure SvIOK is true. See also C. - IV SvIVx(SV* sv) + IV SvIVX(SV* sv) =for hackers Found in file sv.h @@ -2475,22 +2690,22 @@ which guarantees to evaluate sv only once. =for hackers Found in file sv.h -=item SvNVx +=item SvNVX -Coerces the given SV to a double and returns it. Guarantees to evaluate -sv only once. Use the more efficient C otherwise. +Returns the raw value in the SV's NV slot, without checks or conversions. +Only use when you are sure SvNOK is true. See also C. - NV SvNVx(SV* sv) + NV SvNVX(SV* sv) =for hackers Found in file sv.h -=item SvNVX +=item SvNVx -Returns the raw value in the SV's NV slot, without checks or conversions. -Only use when you are sure SvNOK is true. See also C. +Coerces the given SV to a double and returns it. Guarantees to evaluate +sv only once. Use the more efficient C otherwise. - NV SvNVX(SV* sv) + NV SvNVx(SV* sv) =for hackers Found in file sv.h @@ -2796,50 +3011,12 @@ Dereferences an RV to return the SV. =for hackers Found in file sv.h -=item SvSETMAGIC - -Invokes C on an SV if it has 'set' magic. This macro evaluates its -argument more than once. - - void SvSETMAGIC(SV* sv) - -=for hackers -Found in file sv.h - -=item SvSetMagicSV - -Like C, but does any set magic required afterwards. - - void SvSetMagicSV(SV* dsb, SV* ssv) - -=for hackers -Found in file sv.h - =item SvSetMagicSV_nosteal Like C, but does any set magic required afterwards. - void SvSetMagicSV_nosteal(SV* dsv, SV* ssv) - -=for hackers -Found in file sv.h - -=item SvSetSV - -Calls C if dsv is not the same as ssv. May evaluate arguments -more than once. - - void SvSetSV(SV* dsb, SV* ssv) - -=for hackers -Found in file sv.h - -=item SvSetSV_nosteal - -Calls a non-destructive version of C if dsv is not the same as -ssv. May evaluate arguments more than once. - void SvSetSV_nosteal(SV* dsv, SV* ssv) + void SvSetMagicSV_nosteal(SV* dsv, SV* ssv) =for hackers Found in file sv.h @@ -2905,14 +3082,6 @@ false, defined or undefined. Does not handle 'get' magic. =for hackers Found in file sv.h -=item svtype - -An enum of flags for Perl types. These are found in the file B -in the C enum. Test these flags with the C macro. - -=for hackers -Found in file sv.h - =item SvTYPE Returns the type of the SV. See C. @@ -2922,55 +3091,6 @@ Returns the type of the SV. See C. =for hackers Found in file sv.h -=item SVt_IV - -Integer type flag for scalars. See C. - -=for hackers -Found in file sv.h - -=item SVt_NV - -Double type flag for scalars. See C. - -=for hackers -Found in file sv.h - -=item SVt_PV - -Pointer type flag for scalars. See C. - -=for hackers -Found in file sv.h - -=item SVt_PVAV - -Type flag for arrays. See C. - -=for hackers -Found in file sv.h - -=item SVt_PVCV - -Type flag for code refs. See C. - -=for hackers -Found in file sv.h - -=item SVt_PVHV - -Type flag for hashes. See C. - -=for hackers -Found in file sv.h - -=item SVt_PVMG - -Type flag for blessed scalars. See C. - -=for hackers -Found in file sv.h - =item SvUOK Returns a boolean indicating whether the SV contains an unsigned integer. @@ -3740,24 +3860,6 @@ instead. =for hackers Found in file sv.c -=item sv_recode_to_utf8 - -The encoding is assumed to be an Encode object, on entry the PV -of the sv is assumed to be octets in that encoding, and the sv -will be converted into Unicode (and UTF-8). - -If the sv already is UTF-8 (or if it is not POK), or if the encoding -is not a reference, nothing is done to the sv. If the encoding is not -an C Encoding object, bad things will happen. -(See F and L). - -The PV of the sv is returned. - - char* sv_recode_to_utf8(SV* sv, SV *encoding) - -=for hackers -Found in file sv.c - =item sv_reftype Returns a string describing what the SV is a reference to. @@ -4096,19 +4198,6 @@ instead use an in-line version. =for hackers Found in file sv.c -=item sv_uni_display - -Build to the scalar dsv a displayable version of the scalar sv, -he displayable version being at most pvlim bytes long -(if longer, the rest is truncated and "..." will be appended). -The flags argument is currently unused but available for future extensions. -The pointer to the PV of the dsv is returned. - - char* sv_uni_display(SV *dsv, SV *ssv, STRLEN pvlim, UV flags) - -=for hackers -Found in file utf8.c - =item sv_unmagic Removes all magic of type C from an SV. @@ -4289,36 +4378,141 @@ Usually used via one of its frontends C and C. void sv_vsetpvfn(SV* sv, const char* pat, STRLEN patlen, va_list* args, SV** svargs, I32 svmax, bool *maybe_tainted) =for hackers -Found in file sv.c +Found in file sv.c + + +=back + +=head1 Unicode Support + +=over 8 + +=item bytes_from_utf8 + +Converts a string C of length C from UTF8 into byte encoding. +Unlike but like C, returns a pointer to +the newly-created string, and updates C to contain the new +length. Returns the original string if no conversion occurs, C +is unchanged. Do nothing if C points to 0. Sets C to +0 if C is converted or contains all 7bit characters. + +NOTE: this function is experimental and may change or be +removed without notice. + + U8* bytes_from_utf8(U8 *s, STRLEN *len, bool *is_utf8) + +=for hackers +Found in file utf8.c + +=item bytes_to_utf8 + +Converts a string C of length C from ASCII into UTF8 encoding. +Returns a pointer to the newly-created string, and sets C to +reflect the new length. + +NOTE: this function is experimental and may change or be +removed without notice. + + U8* bytes_to_utf8(U8 *s, STRLEN *len) + +=for hackers +Found in file utf8.c + +=item ibcmp_utf8 + +Return true if the strings s1 and s2 differ case-insensitively, false +if not (if they are equal case-insensitively). If u1 is true, the +string s1 is assumed to be in UTF-8-encoded Unicode. If u2 is true, +the string s2 is assumed to be in UTF-8-encoded Unicode. If u1 or u2 +are false, the respective string is assumed to be in native 8-bit +encoding. + +If the pe1 and pe2 are non-NULL, the scanning pointers will be copied +in there (they will point at the beginning of the I character). +If the pointers behind pe1 or pe2 are non-NULL, they are the end +pointers beyond which scanning will not continue under any +circustances. If the byte lengths l1 and l2 are non-zero, s1+l1 and +s2+l2 will be used as goal end pointers that will also stop the scan, +and which qualify towards defining a successful match: all the scans +that define an explicit length must reach their goal pointers for +a match to succeed). + +For case-insensitiveness, the "casefolding" of Unicode is used +instead of upper/lowercasing both the characters, see +http://www.unicode.org/unicode/reports/tr21/ (Case Mappings). + + I32 ibcmp_utf8(const char* a, char **pe1, UV l1, bool u1, const char* b, char **pe2, UV l2, bool u2) + +=for hackers +Found in file utf8.c + +=item is_utf8_char + +Tests if some arbitrary number of bytes begins in a valid UTF-8 +character. Note that an INVARIANT (i.e. ASCII) character is a valid UTF-8 character. +The actual number of bytes in the UTF-8 character will be returned if +it is valid, otherwise 0. + + STRLEN is_utf8_char(U8 *p) + +=for hackers +Found in file utf8.c + +=item is_utf8_string + +Returns true if first C bytes of the given string form a valid UTF8 +string, false otherwise. Note that 'a valid UTF8 string' does not mean +'a string that contains UTF8' because a valid ASCII string is a valid +UTF8 string. + + bool is_utf8_string(U8 *s, STRLEN len) + +=for hackers +Found in file utf8.c -=item THIS +=item pv_uni_display -Variable which is setup by C to designate the object in a C++ -XSUB. This is always the proper type for the C++ object. See C and -L. +Build to the scalar dsv a displayable version of the string spv, +length len, the displayable version being at most pvlim bytes long +(if longer, the rest is truncated and "..." will be appended). +The flags argument is currently unused but available for future extensions. +The pointer to the PV of the dsv is returned. - (whatever) THIS + char* pv_uni_display(SV *dsv, U8 *spv, STRLEN len, STRLEN pvlim, UV flags) =for hackers -Found in file XSUB.h +Found in file utf8.c -=item toLOWER +=item sv_recode_to_utf8 -Converts the specified character to lowercase. +The encoding is assumed to be an Encode object, on entry the PV +of the sv is assumed to be octets in that encoding, and the sv +will be converted into Unicode (and UTF-8). - char toLOWER(char ch) +If the sv already is UTF-8 (or if it is not POK), or if the encoding +is not a reference, nothing is done to the sv. If the encoding is not +an C Encoding object, bad things will happen. +(See F and L). + +The PV of the sv is returned. + + char* sv_recode_to_utf8(SV* sv, SV *encoding) =for hackers -Found in file handy.h +Found in file sv.c -=item toUPPER +=item sv_uni_display -Converts the specified character to uppercase. +Build to the scalar dsv a displayable version of the scalar sv, +he displayable version being at most pvlim bytes long +(if longer, the rest is truncated and "..." will be appended). +The flags argument is currently unused but available for future extensions. +The pointer to the PV of the dsv is returned. - char toUPPER(char ch) + char* sv_uni_display(SV *dsv, SV *ssv, STRLEN pvlim, UV flags) =for hackers -Found in file handy.h +Found in file utf8.c =item to_utf8_case @@ -4575,205 +4769,148 @@ is the recommended Unicode-aware way of saying =for hackers Found in file utf8.c -=item warn - -This is the XSUB-writer's interface to Perl's C function. Use this -function the same way you use the C C function. See -C. - - void warn(const char* pat, ...) - -=for hackers -Found in file util.c - -=item XPUSHi - -Push an integer onto the stack, extending the stack if necessary. Handles -'set' magic. See C. - - void XPUSHi(IV iv) - -=for hackers -Found in file pp.h - -=item XPUSHn - -Push a double onto the stack, extending the stack if necessary. Handles -'set' magic. See C. - - void XPUSHn(NV nv) - -=for hackers -Found in file pp.h - -=item XPUSHp - -Push a string onto the stack, extending the stack if necessary. The C -indicates the length of the string. Handles 'set' magic. See -C. - - void XPUSHp(char* str, STRLEN len) - -=for hackers -Found in file pp.h - -=item XPUSHs - -Push an SV onto the stack, extending the stack if necessary. Does not -handle 'set' magic. See C. - - void XPUSHs(SV* sv) - -=for hackers -Found in file pp.h -=item XPUSHu +=back -Push an unsigned integer onto the stack, extending the stack if necessary. -See C. +=head1 Variables created by C and C internal functions - void XPUSHu(UV uv) +=over 8 -=for hackers -Found in file pp.h +=item ax -=item XS +Variable which is setup by C to indicate the stack base offset, +used by the C, C and C macros. The C macro +must be called prior to setup the C variable. -Macro to declare an XSUB and its C parameter list. This is handled by -C. + I32 ax =for hackers Found in file XSUB.h -=item XSRETURN +=item CLASS -Return from XSUB, indicating number of items on the stack. This is usually -handled by C. +Variable which is setup by C to indicate the +class name for a C++ XS constructor. This is always a C. See C. - void XSRETURN(int nitems) + char* CLASS =for hackers Found in file XSUB.h -=item XSRETURN_EMPTY +=item dAX -Return an empty list from an XSUB immediately. +Sets up the C variable. +This is usually handled automatically by C by calling C. - XSRETURN_EMPTY; + dAX; =for hackers Found in file XSUB.h -=item XSRETURN_IV +=item dITEMS -Return an integer from an XSUB immediately. Uses C. +Sets up the C variable. +This is usually handled automatically by C by calling C. - void XSRETURN_IV(IV iv) + dITEMS; =for hackers Found in file XSUB.h -=item XSRETURN_NO +=item dXSARGS -Return C<&PL_sv_no> from an XSUB immediately. Uses C. +Sets up stack and mark pointers for an XSUB, calling dSP and dMARK. +Sets up the C and C variables by calling C and C. +This is usually handled automatically by C. - XSRETURN_NO; + dXSARGS; =for hackers Found in file XSUB.h -=item XSRETURN_NV +=item dXSI32 -Return a double from an XSUB immediately. Uses C. +Sets up the C variable for an XSUB which has aliases. This is usually +handled automatically by C. - void XSRETURN_NV(NV nv) + dXSI32; =for hackers Found in file XSUB.h -=item XSRETURN_PV +=item items -Return a copy of a string from an XSUB immediately. Uses C. +Variable which is setup by C to indicate the number of +items on the stack. See L. - void XSRETURN_PV(char* str) + I32 items =for hackers Found in file XSUB.h -=item XSRETURN_UNDEF +=item ix -Return C<&PL_sv_undef> from an XSUB immediately. Uses C. +Variable which is setup by C to indicate which of an +XSUB's aliases was used to invoke it. See L. - XSRETURN_UNDEF; + I32 ix =for hackers Found in file XSUB.h -=item XSRETURN_YES - -Return C<&PL_sv_yes> from an XSUB immediately. Uses C. +=item newXSproto - XSRETURN_YES; +Used by C to hook up XSUBs as Perl subs. Adds Perl prototypes to +the subs. =for hackers Found in file XSUB.h -=item XST_mIV +=item RETVAL -Place an integer into the specified position C on the stack. The -value is stored in a new mortal SV. +Variable which is setup by C to hold the return value for an +XSUB. This is always the proper type for the XSUB. See +L. - void XST_mIV(int pos, IV iv) + (whatever) RETVAL =for hackers Found in file XSUB.h -=item XST_mNO +=item ST -Place C<&PL_sv_no> into the specified position C on the -stack. +Used to access elements on the XSUB's stack. - void XST_mNO(int pos) + SV* ST(int ix) =for hackers Found in file XSUB.h -=item XST_mNV +=item THIS -Place a double into the specified position C on the stack. The value -is stored in a new mortal SV. +Variable which is setup by C to designate the object in a C++ +XSUB. This is always the proper type for the C++ object. See C and +L. - void XST_mNV(int pos, NV nv) + (whatever) THIS =for hackers Found in file XSUB.h -=item XST_mPV - -Place a copy of a string into the specified position C on the stack. -The value is stored in a new mortal SV. +=item XS - void XST_mPV(int pos, char* str) +Macro to declare an XSUB and its C parameter list. This is handled by +C. =for hackers Found in file XSUB.h -=item XST_mUNDEF - -Place C<&PL_sv_undef> into the specified position C on the -stack. - - void XST_mUNDEF(int pos) - -=for hackers -Found in file XSUB.h +=item XSRETURN_EMPTY -=item XST_mYES +Return an empty list from an XSUB immediately. -Place C<&PL_sv_yes> into the specified position C on the -stack. - void XST_mYES(int pos) + XSRETURN_EMPTY; =for hackers Found in file XSUB.h @@ -4797,15 +4934,42 @@ C. See L. =for hackers Found in file XSUB.h -=item Zero -The XSUB-writer's interface to the C C function. The C is the -destination, C is the number of items, and C is the type. +=back - void Zero(void* dest, int nitems, type) +=head1 Warning and Dieing + +=over 8 + +=item croak + +This is the XSUB-writer's interface to Perl's C function. +Normally use this function the same way you use the C C +function. See C. + +If you want to throw an exception object, assign the object to +C<$@> and then pass C to croak(): + + errsv = get_sv("@", TRUE); + sv_setsv(errsv, exception_object); + croak(Nullch); + + void croak(const char* pat, ...) =for hackers -Found in file handy.h +Found in file util.c + +=item warn + +This is the XSUB-writer's interface to Perl's C function. Use this +function the same way you use the C C function. See +C. + + void warn(const char* pat, ...) + +=for hackers +Found in file util.c + =back