/* provide binary compatible (but inconsistent) names */
#if defined(PERL_BINCOMPAT_5005)
+# define Perl_call_atexit perl_atexit
+# define Perl_eval_sv perl_eval_sv
+# define Perl_eval_pv perl_eval_pv
# define Perl_call_argv perl_call_argv
# define Perl_call_method perl_call_method
# define Perl_call_pv perl_call_pv
# define deb Perl_deb_nocontext
# define die Perl_die_nocontext
# define form Perl_form_nocontext
+# define load_module Perl_load_module_nocontext
# define mess Perl_mess_nocontext
# define newSVpvf Perl_newSVpvf_nocontext
# define sv_catpvf Perl_sv_catpvf_nocontext
# define Perl_die_nocontext Perl_die
# define Perl_deb_nocontext Perl_deb
# define Perl_form_nocontext Perl_form
+# define Perl_load_module_nocontext Perl_load_module
# define Perl_mess_nocontext Perl_mess
# define Perl_newSVpvf_nocontext Perl_newSVpvf
# define Perl_sv_catpvf_nocontext Perl_sv_catpvf
#endif /* PERL_GLOBAL_STRUCT */
-#ifdef PERL_POLLUTE /* disabled by default in 5.006 */
+#ifdef PERL_POLLUTE /* disabled by default in 5.6.0 */
END
#endif /* __perlapi_h__ */
EOT
+close CAPIH;
print CAPI <<'EOT';
/* !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
{ return &(PL_##v); }
#define PERLVARA(v,n,t) PL_##v##_t* Perl_##v##_ptr(pTHXo) \
{ return &(PL_##v); }
+#undef PERLVARIC
+#define PERLVARIC(v,t,i) const t* Perl_##v##_ptr(pTHXo) \
+ { return (const t *)&(PL_##v); }
#include "perlvars.h"
#undef PERLVAR
Perl_warner Perl_vwarner
Perl_die Perl_vdie
Perl_form Perl_vform
+ Perl_load_module Perl_vload_module
Perl_mess Perl_vmess
Perl_deb Perl_vdeb
Perl_newSVpvf Perl_vnewSVpvf
my %gutsdocs;
my %docfuncs;
-sub autodoc ($) { # parse a file and extract documentation info
- my($fh) = @_;
- my($in, $doc);
-
+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 $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, @args];
+ $apidocs{$name} = [$flags, $docs, $ret, $file, @args];
}
else {
- $gutsdocs{$name} = [$flags, $docs, $ret, @args];
+ $gutsdocs{$name} = [$flags, $docs, $ret, $file, @args];
}
}
else {
- $docfuncs{$name} = [$flags, $docs, $ret, @args];
+ $docfuncs{$name} = [$flags, $docs, $ret, $file, @args];
}
- if ($doc =~ /^=for/) {
- $in = $doc;
- redo FUNC;
+ 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, @args) = @$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 "(" . 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);
+ autodoc(\*F,$file);
close F or die "Error closing $file: $!\n";
}
if ($flags =~ /A/) {
my $docref = delete $docfuncs{$func};
warn "no docs for $func\n" unless $docref and @$docref;
- $apidocs{$func} = [$docref->[0] . 'A', $docref->[1], $retval, @args];
+ $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, @args];
+ $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";
}
=head1 DESCRIPTION
This file is the autogenerated documentation of functions in the
-Perl intrepreter that are documented using Perl's internal documentation
+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<they are not for use in extensions>!
=head1 AUTHORS
-The autodocumentation system was orignally added to the Perl core by
+The autodocumentation system was originally added to the Perl core by
Benjamin Stuhl. Documentation is by whoever was kind enough to
document their functions.
: o has no compatibility macro (#define foo Perl_foo)
: j not a member of CPerlObj
: x not exported
+: M may change
:
: Individual flags may be separated by whitespace.
:
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
+Ap |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_iterval |AV *ar|HE* entry
Ap |HV* |avhv_keys |AV *ar
Apd |void |av_clear |AV* ar
-Ap |SV* |av_delete |AV* ar|I32 key|I32 flags
-Ap |bool |av_exists |AV* ar|I32 key
+Apd |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
-Ap |AV* |av_fake |I32 size|SV** svp
+p |AV* |av_fake |I32 size|SV** svp
Apd |SV** |av_fetch |AV* ar|I32 key|I32 lval
-Ap |void |av_fill |AV* ar|I32 fill
+Apd |void |av_fill |AV* ar|I32 fill
Apd |I32 |av_len |AV* ar
Apd |AV* |av_make |I32 size|SV** svp
Apd |SV* |av_pop |AV* ar
Apd |void |av_push |AV* ar|SV* val
-Ap |void |av_reify |AV* ar
+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
Afnp |OP* |die_nocontext |const char* pat|...
Afnp |void |deb_nocontext |const char* pat|...
Afnp |char* |form_nocontext |const char* pat|...
+Afnp |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|...
#endif
p |void |cv_ckproto |CV* cv|GV* gv|char* p
p |CV* |cv_clone |CV* proto
-p |SV* |cv_const_sv |CV* cv
+Ap |SV* |cv_const_sv |CV* cv
p |SV* |op_const_sv |OP* o|CV* cv
-p |void |cv_undef |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 |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 flag
+Ap |int |do_binmode |PerlIO *fp|int iotype|int mode
p |void |do_chop |SV* asv|SV* sv
-p |bool |do_close |GV* gv|bool not_implicit
+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 |I32 |do_semop |SV** mark|SV** sp
p |I32 |do_shmio |I32 optype|SV** mark|SV** sp
#endif
-p |void |do_join |SV* sv|SV* del|SV** mark|SV** sp
+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 |void |free_tmps
p |OP* |gen_constant_list|OP* o
#if !defined(HAS_GETENV_LEN)
-p |char* |getenv_len |char* key|unsigned long *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 |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
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 |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 |bool |is_uni_alnum |U32 c
Ap |bool |is_uni_alnumc |U32 c
Ap |bool |is_uni_idfirst |U32 c
Ap |U32 |to_uni_upper_lc|U32 c
Ap |U32 |to_uni_title_lc|U32 c
Ap |U32 |to_uni_lower_lc|U32 c
+Ap |int |is_utf8_char |U8 *p
+Ap |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
p |OP* |linklist |OP* o
p |OP* |list |OP* o
p |OP* |listkids |OP* o
+Afp |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
p |int |magic_clearenv |SV* sv|MAGIC* mg
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
Apd |int |mg_set |SV* sv
Ap |I32 |mg_size |SV* sv
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
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
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
-p |Sighandler_t|rsignal |int i|Sighandler_t t
+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
p |Sighandler_t|rsignal_state|int i
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 |char* |sv_pvn |SV *sv|STRLEN *len
Ap |char* |sv_pvutf8n |SV *sv|STRLEN *len
Ap |char* |sv_pvbyten |SV *sv|STRLEN *len
-Ap |I32 |sv_true |SV *sv
+Apd |I32 |sv_true |SV *sv
p |void |sv_add_arena |char* ptr|U32 size|U32 flags
Ap |int |sv_backoff |SV* sv
Apd |SV* |sv_bless |SV* sv|HV* stash
Apd |void |sv_chop |SV* sv|char* ptr
p |void |sv_clean_all
p |void |sv_clean_objs
-Ap |void |sv_clear |SV* sv
+Apd |void |sv_clear |SV* sv
Apd |I32 |sv_cmp |SV* sv1|SV* sv2
-Ap |I32 |sv_cmp_locale |SV* sv1|SV* sv2
+Apd |I32 |sv_cmp_locale |SV* sv1|SV* sv2
#if defined(USE_LOCALE_COLLATE)
Ap |char* |sv_collxfrm |SV* sv|STRLEN* nxp
#endif
Ap |void |sv_dump |SV* sv
Apd |bool |sv_derived_from|SV* sv|const char* name
Apd |I32 |sv_eq |SV* sv1|SV* sv2
-Ap |void |sv_free |SV* sv
+Apd |void |sv_free |SV* sv
p |void |sv_free_arenas
-Ap |char* |sv_gets |SV* sv|PerlIO* fp|I32 append
+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 \
Apd |int |sv_isa |SV* sv|const char* name
Apd |int |sv_isobject |SV* sv
Apd |STRLEN |sv_len |SV* sv
-Ap |STRLEN |sv_len_utf8 |SV* sv
+Apd |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
Ap |char* |sv_peek |SV* sv
Ap |void |sv_pos_u2b |SV* sv|I32* offsetp|I32* lenp
Ap |void |sv_pos_b2u |SV* sv|I32* offsetp
-Ap |char* |sv_pvn_force |SV* sv|STRLEN* lp
-Ap |char* |sv_pvutf8n_force|SV* sv|STRLEN* lp
+Apd |char* |sv_pvn_force |SV* sv|STRLEN* lp
+Apd |char* |sv_pvutf8n_force|SV* sv|STRLEN* lp
Ap |char* |sv_pvbyten_force|SV* sv|STRLEN* lp
-Ap |char* |sv_reftype |SV* sv|int ob
-Ap |void |sv_replace |SV* sv|SV* nsv
+Apd |char* |sv_reftype |SV* sv|int ob
+Apd |void |sv_replace |SV* sv|SV* nsv
Ap |void |sv_report_used
Ap |void |sv_reset |char* s|HV* stash
Afpd |void |sv_setpvf |SV* sv|const char* pat|...
Apd |void |sv_setsv |SV* dsv|SV* ssv
Ap |void |sv_taint |SV* sv
Ap |bool |sv_tainted |SV* sv
-Ap |int |sv_unmagic |SV* sv|int type
+Apd |int |sv_unmagic |SV* sv|int type
Apd |void |sv_unref |SV* sv
Ap |void |sv_untaint |SV* sv
Apd |bool |sv_upgrade |SV* sv|U32 mt
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 |U16* p|U8 *d|I32 bytelen
-Ap |U8* |utf16_to_utf8_reversed|U16* p|U8 *d|I32 bytelen
+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
Ap |I32 |utf8_distance |U8 *a|U8 *b
Ap |U8* |utf8_hop |U8 *s|I32 off
+ApM |U8* |utf8_to_bytes |U8 *s|STRLEN len
+ApM |U8* |bytes_to_utf8 |U8 *s|STRLEN *len
Ap |UV |utf8_to_uv |U8 *s|I32* retlen
Ap |U8* |uv_to_utf8 |U8 *d|UV uv
p |void |vivify_defelem |SV* sv
p |void |vivify_ref |SV* sv|U32 to_what
p |I32 |wait4pid |Pid_t pid|int* statusp|int flags
-p |void |report_closed_fh|GV *gv|IO *io|const char *func|const char *obj
+p |void |report_evil_fh |GV *gv|IO *io|I32 op
p |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
-p |I32 |whichsig |char* sig
+Ap |I32 |whichsig |char* sig
p |int |yyerror |char* s
#if defined(USE_PURE_BISON)
p |int |yylex |YYSTYPE *lvalp|int *lcharp
#endif
Ap |int |runops_standard
Ap |int |runops_debug
+#if defined(USE_THREADS)
+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
Ap |char* |sv_pv |SV *sv
Ap |char* |sv_pvutf8 |SV *sv
Ap |char* |sv_pvbyte |SV *sv
-Ap |void |sv_utf8_upgrade|SV *sv
-Ap |bool |sv_utf8_downgrade|SV *sv|bool fail_ok
-Ap |void |sv_utf8_encode |SV *sv
+Apd |void |sv_utf8_upgrade|SV *sv
+ApdM |bool |sv_utf8_downgrade|SV *sv|bool fail_ok
+ApdM |void |sv_utf8_encode |SV *sv
Ap |bool |sv_utf8_decode |SV *sv
Ap |void |sv_force_normal|SV *sv
Ap |void |tmps_grow |I32 n
-Ap |SV* |sv_rvweaken |SV *sv
+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 |ptr_table_store|PTR_TBL_t *tbl|void *oldsv|void *newsv
Ap |void |ptr_table_split|PTR_TBL_t *tbl
#endif
+#if defined(HAVE_INTERP_INTERN)
+Ap |void |sys_intern_clear
+Ap |void |sys_intern_init
+#endif
#if defined(PERL_OBJECT)
protected:
#endif
#if defined(PERL_IN_DOOP_C) || defined(PERL_DECL_PROT)
-s |I32 |do_trans_CC_simple |SV *sv
-s |I32 |do_trans_CC_count |SV *sv
-s |I32 |do_trans_CC_complex |SV *sv
-s |I32 |do_trans_UU_simple |SV *sv
-s |I32 |do_trans_UU_count |SV *sv
-s |I32 |do_trans_UU_complex |SV *sv
-s |I32 |do_trans_UC_simple |SV *sv
-s |I32 |do_trans_CU_simple |SV *sv
-s |I32 |do_trans_UC_trivial |SV *sv
-s |I32 |do_trans_CU_trivial |SV *sv
+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)
#if defined(PERL_IN_PERL_C) || defined(PERL_DECL_PROT)
s |void |find_beginning
s |void |forbid_setid |char *
-s |void |incpush |char *|int
+s |void |incpush |char *|int|int
s |void |init_interp
s |void |init_ids
s |void |init_lexer
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 |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
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