: BEGIN {die "You meant to run embed.pl"} # Stop early if fed to perl.
:
+: This file is processed by embed.pl and autodoc.pl
+:
: Lines are of the form:
: flags|return_type|function_name|arg1|arg2|...|argN
:
: 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
-: D function is deprecated
-: s static function, should have an S_ prefix in
-: source file; for macros (m), suffix the usage
-: example with a semicolon
-: 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
-: X explicitly exported
-: M may change
-: E visible to extensions included in the Perl core
-: b binary backward compatibility; function is a macro
-: but has also Perl_ implementation (which is exported)
-: U suppress usage example in autogenerated documentation
-: a allocates memory a la malloc/calloc. Is also "R".
-: R Return value must not be ignored.
-: P pure function: no effects except the return value;
-: return value depends only on parms and/or globals
+:
+: A Member of public API:
+:
+: add entry to global.sym (unless x or m);
+: any doc entry goes in perlapi.pod rather than perlintern.api
+: makes '#define foo Perl_foo' scope not just for PERL_CORE/PERL_EXT
+:
+: a Allocates memory a la malloc/calloc. Also implies "R":
+:
+: proto.h: add __attribute__malloc__
+:
+: b Binary backward compatibility; function is a macro
+: but has also Perl_ implementation (which is exported):
+:
+: add entry to global.sym;
+: don't define PERL_ARGS_ASSERT_FOO
+:
+: D Function is deprecated:
+:
+: proto.h: add __attribute__deprecated__
+:
+: d Function has documentation with its source:
+:
+: enables 'no docs for foo" warning in autodoc.pl
+:
+: E Visible to extensions included in the Perl core:
+:
+: in embed.h, change "#ifdef PERL_CORE"
+: into "#if defined(PERL_CORE) || defined(PERL_EXT)"
+:
+: Should always be combined with "X" to be usable from dynamically
+: loaded extensions.
+:
+: f Function takes printf style format string, varargs:
+:
+: proto.h: add __attribute__format__ (or ...null_ok__)
+:
+: M May change:
+:
+: (currently no effect)
+:
+: m Implemented as a macro:
+:
+: suppress proto.h entry
+: suppress global.sym entry
+: suppress embed.h entry
+:
+: n Has no implicit interpreter/thread context argument:
+:
+: suppress the pTHX part of "foo(pTHX...)" in proto.h;
+: In the PERL_IMPLICIT_SYS branch of embed.h, generates
+: "#define foo Perl_foo", rather than
+: "#define foo(a,b,c) Perl_foo(aTHX_ a,b,c)
+:
+: o Has no Perl_foo compatibility macro:
+:
+: embed.h: suppress "#define foo Perl_foo"
+:
+: P Pure function: no effects except the return value;
+: return value depends only on params and/or globals:
+:
+: proto.h: add __attribute__pure__
+:
+: p Function in source code has a Perl_ prefix:
+:
+: proto.h: function is declared as Perl_foo rather than foo
+: embed.h: "#define foo Perl_foo" entries added
+:
+: R Return value must not be ignored (also implied by 'a' flag):
+:
+: proto.h: add __attribute__warn_unused_result__
+:
+: r Function never returns:
+:
+: proto.h: add __attribute__noreturn__
+:
+: s Static function: function in source code has a S_ prefix:
+:
+: proto.h: function is declared as S_foo rather than foo,
+: STATIC is added to declaration;
+: embed.h: "#define foo S_foo" entries added
+:
+: U Suppress usage example in autogenerated documentation
+:
+: (currently no effect)
+:
+: X Explicitly exported:
+:
+: add entry to global.sym, unless x or m
+:
+: x Not exported
+:
+: suppress entry in global.sym
+:
: (see also L<perlguts/Internal Functions> for those flags.)
:
: Pointer parameters that must not be passed NULLs should be prefixed with NN.
AnpR |void* |get_context
Anp |void |set_context |NN void *t
+EXpRnP |I32 |regcurly |NN const char *s
END_EXTERN_C
s |OP* |vdie |NULLOK const char* pat|NULLOK va_list* args
#endif
: Used in util.c
-p |OP* |die_where |NULLOK SV* msv
+pr |void |die_where |NULLOK SV* msv
Ap |void |dounwind |I32 cxix
: FIXME
pmb |bool |do_aexec |NULLOK SV* really|NN SV** mark|NN SV** sp
Apdmb |GV* |gv_fetchmethod |NN HV* stash|NN const char* name
Apd |GV* |gv_fetchmethod_autoload|NN HV* stash|NN const char* name \
|I32 autoload
-ApdM |GV* |gv_fetchmethod_flags|NN HV* stash|NN const char* name \
+ApM |GV* |gv_fetchmethod_flags|NN HV* stash|NN const char* name \
|U32 flags
Ap |GV* |gv_fetchpv |NN const char *nambeg|I32 add|const svtype sv_type
Ap |void |gv_fullname |NN SV* sv|NN const GV* gv
pMox |GP * |newGP |NN GV *const gv
Ap |void |gv_init |NN GV* gv|NULLOK HV* stash|NN const char* name|STRLEN len|int multi
Ap |void |gv_name_set |NN GV* gv|NN const char *name|U32 len|U32 flags
+XMpd |void |gv_try_downgrade|NN GV* gv
Apd |HV* |gv_stashpv |NN const char* name|I32 flags
Apd |HV* |gv_stashpvn |NN const char* name|U32 namelen|I32 flags
Apd |HV* |gv_stashsv |NN SV* sv|I32 flags
|I32 klen|NULLOK SV *val|U32 hash
Abmd |HE* |hv_store_ent |NULLOK HV *hv|NULLOK SV *key|NULLOK SV *val\
|U32 hash
-AbmdM |SV** |hv_store_flags |NULLOK HV *hv|NULLOK const char *key \
+AbmM |SV** |hv_store_flags |NULLOK HV *hv|NULLOK const char *key \
|I32 klen|NULLOK SV *val|U32 hash|int flags
Apd |void |hv_undef |NULLOK HV *hv
AnpP |I32 |ibcmp |NN const char* a|NN const char* b|I32 len
ApR |bool |is_utf8_punct |NN const U8 *p
ApR |bool |is_utf8_xdigit |NN const U8 *p
ApR |bool |is_utf8_mark |NN const U8 *p
+EXpR |bool |is_utf8_X_begin |NN const U8 *p
+EXpR |bool |is_utf8_X_extend |NN const U8 *p
+EXpR |bool |is_utf8_X_prepend |NN const U8 *p
+EXpR |bool |is_utf8_X_non_hangul |NN const U8 *p
+EXpR |bool |is_utf8_X_L |NN const U8 *p
+EXpR |bool |is_utf8_X_LV |NN const U8 *p
+EXpR |bool |is_utf8_X_LVT |NN const U8 *p
+EXpR |bool |is_utf8_X_LV_LVT_V |NN const U8 *p
+EXpR |bool |is_utf8_X_T |NN const U8 *p
+EXpR |bool |is_utf8_X_V |NN const U8 *p
: Used in perly.y
p |OP* |jmaybe |NN OP *o
: Used in pp.c
pP |I32 |keyword |NN const char *name|I32 len|bool all_keywords
#if defined(PERL_IN_OP_C) || defined(PERL_DECL_PROT)
s |OP* |opt_scalarhv |NN OP* rep_op
+s |OP* |is_inplace_av |NN OP* o|NULLOK OP* oright
#endif
Ap |void |leave_scope |I32 base
: Used in pp_ctl.c, and by Data::Alias
EXp |void |lex_end
: Used in various files
p |void |lex_start |NULLOK SV* line|NULLOK PerlIO *rsfp|bool new_filter
+: Public lexer API
+AMpd |bool |lex_bufutf8
+AMpd |char* |lex_grow_linestr|STRLEN len
+AMpd |void |lex_stuff_pvn |NN char* pv|STRLEN len|U32 flags
+AMpd |void |lex_stuff_sv |NN SV* sv|U32 flags
+AMpd |void |lex_unstuff |NN char* ptr
+AMpd |void |lex_read_to |NN char* ptr
+AMpd |void |lex_discard_to |NN char* ptr
+AMpd |bool |lex_next_chunk |U32 flags
+AMpd |I32 |lex_peek_unichar|U32 flags
+AMpd |I32 |lex_read_unichar|U32 flags
+AMpd |void |lex_read_space |U32 flags
+: Used in various files
Ap |void |op_null |NN OP* o
: FIXME. Used by Data::Alias
EXp |void |op_clear |NN OP* o
Ap |char* |scan_vstring |NN const char *s|NN const char *const e \
|NN SV *sv
Apd |const char* |scan_version |NN const char *s|NN SV *rv|bool qv
+Apd |const char* |prescan_version |NN const char *s\
+ |bool strict|NULLOK const char** errstr|NULLOK bool *sqv\
+ |NULLOK int *ssaw_decimal|NULLOK int *swidth|NULLOK bool *salpha
Apd |SV* |new_version |NN SV *ver
Apd |SV* |upg_version |NN SV *ver|bool qv
Apd |bool |vverify |NN SV *vs
: Used in op.c
pd |PADOFFSET|pad_alloc |I32 optype|U32 tmptype
: Used in toke.c and perly.y
-p |PADOFFSET|allocmy |NN const char *const name
+p |PADOFFSET|allocmy |NN const char *const name|const STRLEN len\
+ |const U32 flags
: Used in op.c and toke.c
-pdR |PADOFFSET|pad_findmy |NN const char* name
+AMpdR |PADOFFSET|pad_findmy |NN const char* name|STRLEN len|U32 flags
Ap |PADOFFSET|find_rundefsvoffset |
: Used in perly.y
pR |OP* |oopsAV |NN OP* o
pR |OP* |oopsHV |NN OP* o
: Defined in pad.c, used only in op.c
pd |void |pad_leavemy
+#ifdef DEBUGGING
Apd |SV* |pad_sv |PADOFFSET po
+#endif
: Defined in pad.c, used only in op.c
pd |void |pad_free |PADOFFSET po
#if defined(PERL_IN_PAD_C) || defined(PERL_DECL_PROT)
Apd |SV* |sv_newref |NULLOK SV *const sv
Ap |char* |sv_peek |NULLOK SV* sv
Apd |void |sv_pos_u2b |NULLOK SV *const sv|NN I32 *const offsetp|NULLOK I32 *const lenp
+Apd |STRLEN |sv_pos_u2b_flags|NN SV *const sv|STRLEN uoffset \
+ |NULLOK STRLEN *const lenp|U32 flags
Apd |void |sv_pos_b2u |NULLOK SV *const sv|NN I32 *const offsetp
Amdb |char* |sv_pvn_force |NN SV* sv|NULLOK STRLEN* lp
Apd |char* |sv_pvutf8n_force|NN SV *const sv|NULLOK STRLEN *const lp
: #if defined(PERL_IN_HV_C) || defined(PERL_IN_SV_C) || defined(PERL_DECL_PROT)
: Used in hv.c
-paRxo |void* |get_arena |const size_t svtype|const U32 misc
+paRxoM |void* |get_arena |const size_t arenasize |const svtype bodytype
: #endif
#if defined(PERL_IN_HV_C) || defined(PERL_DECL_PROT)
Es |STRLEN |reguni |NN const struct RExC_state_t *pRExC_state \
|UV uv|NN char *s
Es |regnode*|regclass |NN struct RExC_state_t *pRExC_state|U32 depth
-ERsn |I32 |regcurly |NN const char *s
Es |regnode*|reg_node |NN struct RExC_state_t *pRExC_state|U8 op
Es |UV |reg_recode |const char value|NN SV **encp
Es |regnode*|regpiece |NN struct RExC_state_t *pRExC_state \
s |void |check_uni
s |void |force_next |I32 type
s |char* |force_version |NN char *s|int guessing
+s |char* |force_strict_version |NN char *s
s |char* |force_word |NN char *start|int token|int check_keyword \
|int allow_pack|int allow_tick
s |SV* |tokeq |NN SV *sv
|const I32 flags
Apd |void |sv_catsv_flags |NN SV *const dsv|NULLOK SV *const ssv|const I32 flags
Apmd |STRLEN |sv_utf8_upgrade_flags|NN SV *const sv|const I32 flags
-Apd |STRLEN |sv_utf8_upgrade_flags_grow|NN SV *const sv|const I32 flags|STRLEN extra
+Ap |STRLEN |sv_utf8_upgrade_flags_grow|NN SV *const sv|const I32 flags|STRLEN extra
Apd |char* |sv_pvn_force_flags|NN SV *const sv|NULLOK STRLEN *const lp|const I32 flags
Apd |void |sv_copypv |NN SV *const dsv|NN SV *const ssv
Ap |char* |my_atof2 |NN const char *s|NN NV* value
: Only used in op.c
pd |void |pad_undef |NN CV* cv
: Only used in op.c
-pd |PADOFFSET|pad_add_name |NN const char *name\
- |NULLOK HV* typestash|NULLOK HV* ourstash|bool clone|bool state
+Mpd |PADOFFSET|pad_add_name |NN const char *name|const STRLEN len\
+ |const U32 flags|NULLOK HV *typestash\
+ |NULLOK HV *ourstash
: Only used in op.c
pd |PADOFFSET|pad_add_anon |NN SV* sv|OPCODE op_type
-: Only used in op.c
-pd |void |pad_check_dup |NN const char* name|bool is_our|NN const HV* ourstash
+#if defined(PERL_IN_PAD_C) || defined(PERL_DECL_PROT)
+sd |void |pad_check_dup |NN SV *name|const U32 flags \
+ |NULLOK const HV *ourstash
+#endif
#ifdef DEBUGGING
: Only used PAD_SETSV() in op.c
pd |void |pad_setsv |PADOFFSET po|NN SV* sv
sd |PADOFFSET|pad_findlex |NN const char *name|NN const CV* cv|U32 seq|int warn \
|NULLOK SV** out_capture|NN SV** out_name_sv \
|NN int *out_flags
+s |PADOFFSET|pad_add_name_sv|NN SV *namesv|const U32 flags \
+ |NULLOK HV *typestash|NULLOK HV *ourstash
# if defined(DEBUGGING)
sd |void |cv_dump |NN const CV *cv|NN const char *title
# endif
pR |int |get_debug_opts |NN const char **s|bool givehelp
#endif
Ap |void |save_set_svflags|NN SV *sv|U32 mask|U32 val
+#ifdef DEBUGGING
Apod |void |hv_assert |NN HV *hv
+#endif
ApdR |SV* |hv_scalar |NN HV *hv
ApoR |I32* |hv_riter_p |NN HV *hv