: any doc entry goes in perlapi.pod rather than perlintern.pod. If no
: documentation is furnished for this function, and M is also
: specified, the function is not listed as part of the public API.
-: If M isn't specified and no documentation is furnished, the
+: If M isn't specified, and no documentation is furnished, the
: function is listed in perlapi as existing and being undocumented
: makes '#define foo Perl_foo' scope not just for PERL_CORE/PERL_EXT
:
: 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.
+: To be usable from dynamically loaded extensions, either:
+: 1) must be static to its containing file ("i" or "s" flag); or
+: 2) be combined with the "X" flag.
:
: f Function takes printf style format string, varargs (hence any entry that
: would otherwise go in embed.h is suppressed):
npR |MEM_SIZE|malloced_size |NN void *p
npR |MEM_SIZE|malloc_good_size |size_t nbytes
#endif
+#if defined(PERL_IN_MALLOC_C)
+sn |int |adjust_size_and_find_bucket |NN size_t *nbytes_p
+#endif
AnpR |void* |get_context
Anp |void |set_context |NN void *t
p |I32 |apply |I32 type|NN SV** mark|NN SV** sp
ApM |void |apply_attrs_string|NN const char *stashpv|NN CV *cv|NN const char *attrstr|STRLEN len
Apd |void |av_clear |NN AV *av
-Apd |SV* |av_delete |NN AV *av|I32 key|I32 flags
-ApdR |bool |av_exists |NN AV *av|I32 key
-Apd |void |av_extend |NN AV *av|I32 key
-p |void |av_extend_guts |NULLOK AV *av|I32 key|NN SSize_t *maxp \
+Apd |SV* |av_delete |NN AV *av|SSize_t key|I32 flags
+ApdR |bool |av_exists |NN AV *av|SSize_t key
+Apd |void |av_extend |NN AV *av|SSize_t key
+p |void |av_extend_guts |NULLOK AV *av|SSize_t key \
+ |NN SSize_t *maxp \
|NN SV ***allocp|NN SV ***arrayp
-ApdR |SV** |av_fetch |NN AV *av|I32 key|I32 lval
-Apd |void |av_fill |NN AV *av|I32 fill
-ApdR |I32 |av_len |NN AV *av
-ApdR |AV* |av_make |I32 size|NN SV **strp
+ApdR |SV** |av_fetch |NN AV *av|SSize_t key|I32 lval
+Apd |void |av_fill |NN AV *av|SSize_t fill
+ApdR |SSize_t|av_len |NN AV *av
+ApdR |AV* |av_make |SSize_t size|NN SV **strp
Apd |SV* |av_pop |NN AV *av
ApdoxM |void |av_create_and_push|NN AV **const avp|NN SV *const val
Apd |void |av_push |NN AV *av|NN SV *val
: Used in scope.c, and by Data::Alias
EXp |void |av_reify |NN AV *av
ApdR |SV* |av_shift |NN AV *av
-Apd |SV** |av_store |NN AV *av|I32 key|NULLOK SV *val
-AidR |I32 |av_top_index |NN AV *av
-AmpdR |I32 |av_tindex |NN AV *av
+Apd |SV** |av_store |NN AV *av|SSize_t key|NULLOK SV *val
+AidR |SSize_t|av_top_index |NN AV *av
+AmpdR |SSize_t|av_tindex |NN AV *av
Apd |void |av_undef |NN AV *av
ApdoxM |SV** |av_create_and_unshift_one|NN AV **const avp|NN SV *const val
-Apd |void |av_unshift |NN AV *av|I32 num
+Apd |void |av_unshift |NN AV *av|SSize_t num
Apo |SV** |av_arylen_p |NN AV *av
Apo |IV* |av_iter_p |NN AV *av
#if defined(PERL_IN_AV_C)
Anprd |void |croak_xs_usage |NN const CV *const cv \
|NN const char *const params
npr |void |croak_no_mem
-nroX |void |Perl_croak_memory_wrap
nprX |void |croak_popstack
#if defined(WIN32)
norx |void |win32_croak_not_implemented|NN const char * fname
: Used in pp.c and pp_sys.c
ApdR |SV* |gv_const_sv |NN GV* gv
ApdR |SV* |cv_const_sv |NULLOK const CV *const cv
+pR |SV* |cv_const_sv_or_av|NULLOK const CV *const cv
: Used in pad.c
-pR |SV* |op_const_sv |NULLOK const OP* o|NULLOK CV* cv
+pR |SV* |op_const_sv |NULLOK const OP* o
Apd |void |cv_undef |NN CV* cv
p |void |cv_forget_slab |NN CV *cv
Ap |void |cx_dump |NN PERL_CONTEXT* cx
Ap |I32 |debop |NN const OP* o
Ap |I32 |debstack
Ap |I32 |debstackptrs
+pR |SV * |defelem_target |NN SV *sv|NULLOK MAGIC *mg
Anp |char* |delimcpy |NN char* to|NN const char* toend|NN const char* from \
|NN const char* fromend|int delim|NN I32* retlen
: Used in op.c, perl.c
|U32 flags
ApR |GV* |gv_autoload_pvn |NULLOK HV* stash|NN const char* name \
|STRLEN len|U32 flags
-Ap |void |gv_check |NN const HV* stash
+Ap |void |gv_check |NN HV* stash
Ap |void |gv_efullname |NN SV* sv|NN const GV* gv
Apmb |void |gv_efullname3 |NN SV* sv|NN const GV* gv|NULLOK const char* prefix
Ap |void |gv_efullname4 |NN SV* sv|NN const GV* gv|NULLOK const char* prefix|bool keepmain
pd |void |mg_localize |NN SV* sv|NN SV* nsv|bool setmagic
ApdR |MAGIC* |mg_find |NULLOK const SV* sv|int type
ApdR |MAGIC* |mg_findext |NULLOK const SV* sv|int type|NULLOK const MGVTBL *vtbl
+: exported for re.pm
+EXpR |MAGIC* |mg_find_mglob |NN SV* sv
Apd |int |mg_free |NN SV* sv
Apd |void |mg_free_type |NN SV* sv|int how
Apd |int |mg_get |NN SV* sv
|NN const struct regnode *node|bool doinit \
|NULLOK SV **listsvp|NULLOK SV **altsvp
#ifdef PERL_IN_REGCOMP_C
-EMsR |SV* |_new_invlist_C_array|NN UV* list
+EMsR |SV* |_new_invlist_C_array|NN const UV* const list
: Not used currently: EXMs |bool |_invlistEQ |NN SV* const a|NN SV* const b|const bool complement_b
#endif
Ap |I32 |pregexec |NN REGEXP * const prog|NN char* stringarg \
- |NN char* strend|NN char* strbeg|I32 minend \
- |NN SV* screamer|U32 nosave
+ |NN char* strend|NN char* strbeg \
+ |SSize_t minend |NN SV* screamer|U32 nosave
Ap |void |pregfree |NULLOK REGEXP* r
Ap |void |pregfree2 |NN REGEXP *rx
: FIXME - is anything in re using this now?
|const bool rbrace_must_be_escaped
#endif
Ap |I32 |regexec_flags |NN REGEXP *const rx|NN char *stringarg \
- |NN char *strend|NN char *strbeg|I32 minend \
- |NN SV *sv|NULLOK void *data|U32 flags
+ |NN char *strend|NN char *strbeg \
+ |SSize_t minend|NN SV *sv \
+ |NULLOK void *data|U32 flags
ApR |regnode*|regnext |NULLOK regnode* p
-
EXp |SV*|reg_named_buff |NN REGEXP * const rx|NULLOK SV * const key \
|NULLOK SV * const value|const U32 flags
EXp |SV*|reg_named_buff_iter |NN REGEXP * const rx|NULLOK const SV * const lastkey \
Apda |char* |savesvpv |NN SV* sv
Ap |void |savestack_grow
Ap |void |savestack_grow_cnt |I32 need
-Amp |void |save_aelem |NN AV* av|I32 idx|NN SV **sptr
-Ap |void |save_aelem_flags|NN AV* av|I32 idx|NN SV **sptr|const U32 flags
+Amp |void |save_aelem |NN AV* av|SSize_t idx|NN SV **sptr
+Ap |void |save_aelem_flags|NN AV* av|SSize_t idx|NN SV **sptr \
+ |const U32 flags
Ap |I32 |save_alloc |I32 size|I32 pad
Ap |void |save_aptr |NN AV** aptr
Ap |AV* |save_ary |NN GV* gv
Ap |void |save_clearsv |NN SV** svp
Ap |void |save_delete |NN HV *hv|NN char *key|I32 klen
Ap |void |save_hdelete |NN HV *hv|NN SV *keysv
-Ap |void |save_adelete |NN AV *av|I32 key
+Ap |void |save_adelete |NN AV *av|SSize_t key
Ap |void |save_destructor|DESTRUCTORFUNC_NOCONTEXT_t f|NN void* p
Ap |void |save_destructor_x|DESTRUCTORFUNC_t f|NULLOK void* p
Apmb |void |save_freesv |NULLOK SV* sv
Ap |void |save_re_context
Ap |void |save_padsv_and_mortalize|PADOFFSET off
Ap |void |save_sptr |NN SV** sptr
+Xp |void |save_strlen |NN STRLEN* ptr
Ap |SV* |save_svref |NN SV** sptr
Ap |void |save_pushptr |NULLOK void *const ptr|const int type
Ap |void |save_pushi32ptr|const I32 i|NULLOK void *const ptr|const int type
np |Signal_t |sighandler |int sig
Anp |Signal_t |csighandler |int sig
#endif
-Ap |SV** |stack_grow |NN SV** sp|NN SV** p|int n
+Ap |SV** |stack_grow |NN SV** sp|NN SV** p|SSize_t n
Ap |I32 |start_subparse |I32 is_format|U32 flags
: Used in pp_ctl.c
p |void |sub_crush_depth|NN CV* cv
Apd |MAGIC *|sv_magicext |NN SV *const sv|NULLOK SV *const obj|const int how \
|NULLOK const MGVTBL *const vtbl|NULLOK const char *const name \
|const I32 namlen
+: exported for re.pm
+EXp |MAGIC *|sv_magicext_mglob|NN SV *sv
ApdbamR |SV* |sv_mortalcopy |NULLOK SV *const oldsv
XpaR |SV* |sv_mortalcopy_flags|NULLOK SV *const oldsv|U32 flags
ApdR |SV* |sv_newmortal
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
+Apd |STRLEN |sv_pos_b2u_flags|NN SV *const sv|STRLEN const offset \
+ |U32 flags
Amdb |char* |sv_pvn_force |NN SV* sv|NULLOK STRLEN* lp
Apd |char* |sv_pvutf8n_force|NN SV *const sv|NULLOK STRLEN *const lp
Apd |char* |sv_pvbyten_force|NN SV *const sv|NULLOK STRLEN *const lp
EiMR |UV* |_invlist_array_init |NN SV* const invlist|const bool will_have_0
EiMR |UV* |invlist_array |NN SV* const invlist
EsM |void |invlist_extend |NN SV* const invlist|const UV len
-EiMR |UV* |get_invlist_zero_addr |NN SV* invlist
EiMR |UV |invlist_max |NN SV* const invlist
-EiM |void |invlist_set_len|NN SV* const invlist|const UV len
+EiM |void |invlist_set_len|NN SV* const invlist|const UV len|const bool offset
EiMR |IV* |get_invlist_previous_index_addr|NN SV* invlist
EiMR |IV |invlist_previous_index|NN SV* const invlist
EiM |void |invlist_set_previous_index|NN SV* const invlist|const IV index
EiM |void |invlist_trim |NN SV* const invlist
EiMR |SV* |invlist_clone |NN SV* const invlist
EiMR |bool |invlist_is_iterating|NN SV* const invlist
-EiMR |UV* |get_invlist_iter_addr |NN SV* invlist
-EiMR |UV* |get_invlist_version_id_addr |NN SV* invlist
+EiMR |STRLEN*|get_invlist_iter_addr |NN SV* invlist
EiM |void |invlist_iterinit|NN SV* invlist
EsMR |bool |invlist_iternext|NN SV* invlist|NN UV* start|NN UV* end
EiM |void |invlist_iterfinish|NN SV* invlist
#endif
#if defined(PERL_IN_REGCOMP_C) || defined(PERL_IN_REGEXEC_C) || defined(PERL_IN_UTF8_C)
EXMpR |SV* |_invlist_contents|NN SV* const invlist
-EiMR |UV* |_get_invlist_len_addr |NN SV* invlist
+EiMR |bool* |get_invlist_offset_addr|NN SV* invlist
EiMR |UV |_invlist_len |NN SV* const invlist
EMiR |bool |_invlist_contains_cp|NN SV* const invlist|const UV cp
EXpMR |IV |_invlist_search |NN SV* const invlist|const UV cp
EXMpR |SV* |_get_swash_invlist|NN SV* const swash
EXMpR |HV* |_swash_inversion_hash |NN SV* const swash
-: Not used currently: EXMp |void |_invlist_dump |NN SV* const invlist|NN const char * const header
+#endif
+#if defined(PERL_IN_REGCOMP_C) || defined (PERL_IN_DUMP_C)
+EXMp |void |_invlist_dump |NN PerlIO *file|I32 level \
+ |NN const char* const indent \
+ |NN SV* const invlist
#endif
Ap |void |taint_env
Ap |void |taint_proper |NULLOK const char* f|NN const char *const s
Ap |I32 |whichsig_sv |NN SV* sigsv
Ap |I32 |whichsig_pv |NN const char* sig
Ap |I32 |whichsig_pvn |NN const char* sig|STRLEN len
+: used to check for NULs in pathnames and other names
+AiR |bool |is_safe_syscall|NN SV *pv|NN const char *what|NN const char *op_name
: Used in pp_ctl.c
p |void |write_to_stderr|NN SV* msv
: Used in op.c
Anpa |Malloc_t|safesyscalloc |MEM_SIZE elements|MEM_SIZE size
Anpa |Malloc_t|safesysrealloc|Malloc_t where|MEM_SIZE nbytes
Anp |Free_t |safesysfree |Malloc_t where
+Asrnx |void |croak_memory_wrap
#if defined(PERL_GLOBAL_STRUCT)
Ap |struct perl_vars *|GetVars
Ap |struct perl_vars*|init_global_struct
ApdM |bool |sv_utf8_decode |NN SV *const sv
Apdmb |void |sv_force_normal|NN SV *sv
Apd |void |sv_force_normal_flags|NN SV *const sv|const U32 flags
-Ap |void |tmps_grow |I32 n
+Ap |void |tmps_grow |SSize_t n
Apd |SV* |sv_rvweaken |NN SV *const sv
: This is indirectly referenced by globals.c. This is somewhat annoying.
p |int |magic_killbackrefs|NN SV *sv|NN MAGIC *mg
#endif
#if defined(PERL_IN_MG_C)
-s |void |save_magic |I32 mgs_ix|NN SV *sv
+s |void |save_magic_flags|I32 mgs_ix|NN SV *sv|U32 flags
-s |int |magic_methpack |NN SV *sv|NN const MAGIC *mg|NN SV *meth
s |SV* |magic_methcall1|NN SV *sv|NN const MAGIC *mg \
|NN SV *meth|U32 flags \
Es |char * |nextchar |NN struct RExC_state_t *pRExC_state
Es |bool |reg_skipcomment|NN struct RExC_state_t *pRExC_state
Es |void |scan_commit |NN const struct RExC_state_t *pRExC_state \
- |NN struct scan_data_t *data|NN I32 *minlenp \
- |int is_inf
+ |NN struct scan_data_t *data \
+ |NN SSize_t *minlenp|int is_inf
Esn |void |cl_anything |NN const struct RExC_state_t *pRExC_state \
|NN struct regnode_charclass_class *cl
EsRn |int |cl_is_anything |NN const struct regnode_charclass_class *cl
Esn |void |cl_or |NN const struct RExC_state_t *pRExC_state \
|NN struct regnode_charclass_class *cl \
|NN const struct regnode_charclass_class *or_with
-Es |I32 |study_chunk |NN struct RExC_state_t *pRExC_state \
- |NN regnode **scanp|NN I32 *minlenp \
- |NN I32 *deltap|NN regnode *last \
+Es |SSize_t|study_chunk |NN struct RExC_state_t *pRExC_state \
+ |NN regnode **scanp|NN SSize_t *minlenp \
+ |NN SSize_t *deltap|NN regnode *last \
|NULLOK struct scan_data_t *data \
|I32 stopparen|NULLOK U8* recursed \
|NULLOK struct regnode_charclass_class *and_withp \
|NULLOK const regnode *plast \
|NN SV* sv|I32 indent|U32 depth
Es |void |put_byte |NN SV* sv|int c
+Es |bool |put_latin1_charclass_innards|NN SV* sv|NN char* bitmap
Es |void |dump_trie |NN const struct _reg_trie_data *trie\
|NULLOK HV* widecharmap|NN AV *revcharmap\
|U32 depth
#if defined(PERL_IN_REGEXEC_C)
ERs |bool |isFOO_lc |const U8 classnum|const U8 character
ERs |bool |isFOO_utf8_lc |const U8 classnum|NN const U8* character
-ERs |I32 |regmatch |NN regmatch_info *reginfo|NN char *startpos|NN regnode *prog
+ERs |SSize_t|regmatch |NN regmatch_info *reginfo|NN char *startpos|NN regnode *prog
ERs |I32 |regrepeat |NN regexp *prog|NN char **startposp \
|NN const regnode *p \
|NN regmatch_info *const reginfo \
|U32 maxopenparen
Es |void |regcppop |NN regexp *rex\
|NN U32 *maxopenparen_p
-ERsn |U8* |reghop3 |NN U8 *s|I32 off|NN const U8 *lim
+ERsn |U8* |reghop3 |NN U8 *s|SSize_t off|NN const U8 *lim
ERsM |SV* |core_regclass_swash|NULLOK const regexp *prog \
|NN const struct regnode *node|bool doinit \
|NULLOK SV **listsvp
#ifdef XXX_dmq
-ERsn |U8* |reghop4 |NN U8 *s|I32 off|NN const U8 *llim \
+ERsn |U8* |reghop4 |NN U8 *s|SSize_t off|NN const U8 *llim \
|NN const U8 *rlim
#endif
-ERsn |U8* |reghopmaybe3 |NN U8 *s|I32 off|NN const U8 *lim
+ERsn |U8* |reghopmaybe3 |NN U8 *s|SSize_t off|NN const U8 *lim
ERs |char* |find_byclass |NN regexp * prog|NN const regnode *c \
|NN char *s|NN const char *strend \
|NULLOK regmatch_info *reginfo
#if defined(PERL_IN_SV_C)
nsR |char * |uiv_2buf |NN char *const buf|const IV iv|UV uv|const int is_uv|NN char **const peob
i |void |sv_unglob |NN SV *const sv|U32 flags
+s |const char *|sv_display |NN SV *const sv|NN char *tmpbuf|STRLEN tmpbuf_size
s |void |not_a_number |NN SV *const sv
+s |void |not_incrementable |NN SV *const sv
s |I32 |visit |NN SVFUNC_t f|const U32 flags|const U32 mask
# ifdef DEBUGGING
s |void |del_sv |NN SV *p
|int allow_package|NN STRLEN *slp
s |void |update_debugger_info|NULLOK SV *orig_sv \
|NULLOK const char *const buf|STRLEN len
-sR |char* |skipspace |NN char *s
+sR |char* |skipspace_flags|NN char *s|U32 flags
sR |char* |swallow_bom |NN U8 *s
#ifndef PERL_NO_UTF16_FILTER
s |I32 |utf16_textfilter|int idx|NN SV *sv|int maxlen
s |void |printbuf |NN const char *const fmt|NN const char *const s
# endif
#endif
+EXMp |bool |validate_proto |NN SV *name|NULLOK SV *proto|bool warn
#if defined(PERL_IN_UNIVERSAL_C)
-s |bool|isa_lookup |NN HV *stash|NN const char * const name \
+s |bool |isa_lookup |NN HV *stash|NN const char * const name \
|STRLEN len|U32 flags
#endif
-#if defined(PERL_IN_LOCALE_C)
-#if defined(USE_LOCALE_NUMERIC) || defined(USE_LOCALE_COLLATE)
+#if defined(PERL_IN_LOCALE_C) && defined(USE_LOCALE)
s |char* |stdize_locale |NN char* locs
-#endif
+s |bool |is_cur_LC_category_utf8|int category
#endif
#if defined(PERL_IN_UTIL_C)
s |const COP*|closest_cop |NN const COP *cop|NULLOK const OP *o
s |SV* |mess_alloc
-s |SV *|with_queued_errors|NN SV *ex
+s |SV * |with_queued_errors|NN SV *ex
s |bool |invoke_exception_hook|NULLOK SV *ex|bool warn
#if defined(PERL_MEM_LOG) && !defined(PERL_MEM_LOG_NOIMPL)
sn |void |mem_log_common |enum mem_log_type mlt|const UV n|const UV typesize \
sR |SV* |swatch_get |NN SV* swash|UV start|UV span
#endif
+AiMn |void |append_utf8_from_native_byte|const U8 byte|NN U8** dest
+
Apd |void |sv_setsv_flags |NN SV *dstr|NULLOK SV *sstr|const I32 flags
Apd |void |sv_catpvn_flags|NN SV *const dstr|NN const char *sstr|const STRLEN len \
|const I32 flags
poM |void |hv_kill_backrefs |NN HV *hv
#endif
Apd |void |hv_clear_placeholders |NN HV *hv
-ApoR |I32* |hv_placeholders_p |NN HV *hv
+XpoR |SSize_t*|hv_placeholders_p |NN HV *hv
ApoR |I32 |hv_placeholders_get |NN const HV *hv
Apo |void |hv_placeholders_set |NN HV *hv|I32 ph
Xop |bool |feature_is_enabled|NN const char *const name \
|STRLEN namelen
+: Some static inline functions need predeclaration because they are used
+: inside other static inline functions.
+#if defined(PERL_CORE) || defined (PERL_EXT)
+Ei |STRLEN |sv_or_pv_pos_u2b|NN SV *sv|NN const char *pv|STRLEN pos \
+ |NULLOK STRLEN *lenp
+#endif
+
: ex: set ts=8 sts=4 sw=4 noet: