X-Git-Url: https://perl5.git.perl.org/perl5.git/blobdiff_plain/86a87e17c5d1d82c2d23289eee5a7afc7bf11876..b31417cabb70d575ee6659761bbae472fd154c60:/embed.fnc diff --git a/embed.fnc b/embed.fnc index dd41bae..20a4120 100644 --- a/embed.fnc +++ b/embed.fnc @@ -65,6 +65,46 @@ : This has had to be done with things like MAX and MIN, but nearly everything : else has been created without regard to the namespace pollution problem. : +: Here's what else you need to know about using this file with regards to name +: space pollution: +: +: The A flag is used to make a function and its short name visible everywhere +: on all platforms. This should be used to make it part of Perl's +: API contract with XS developers. The documentation for these is +: usually placed in perlapi. If no documentation exists, that fact +: is also noted in perlapi. +: +: The C flag is used instead for functions and their short names that need to +: be accessible everywhere, typically because they are called from a +: publicly available macro or inline function, but they are not for +: public use by themselves. The documentation for these is placed +: in perlintern. If no documentation exists, that fact is also +: noted in perlintern. +: +: These really need the 'p' flag to avoid name space collisions. +: +: Some of these have been constructed so that the wrapper macro +: names begin with an underscore to lessen the chances of a name +: collision. However, this is contrary to the C standard, and those +: should be changed. +: +: The E flag is used instead for a function and its short name that is supposed +: to be used only in the core, and in extensions compiled with the +: PERL_EXT symbol defined. Again, on some platforms, the function +: will be visible everywhere, so one of the 'p' or 'S' flags is +: generally needed. Also note that an XS writer can always cheat +: and pretend to be an extension by #defining PERL_EXT. +: +: The X flag is similar to the C flag in that the function (whose entry better +: have the 'p' flag) is accessible everywhere on all platforms. +: However the short name macro that normally gets generated is +: suppressed outside the core. (Except it is also visible in +: PERL_EXT extensions if the E flag is also specified.) This flag +: is used for functions that are called from a public macro, the +: name of which isn't derived from the function name. You'll have +: to write the macro yourself, and from within it, refer to the +: function in its full 'Perl_' form with any necessary thread +: context parameter. : : Scattered around the perl source are lines of the form: : @@ -249,7 +289,9 @@ : proto.h: function is declared as PERL_STATIC_INLINE : : m Implemented as a macro; there is no function associated with this name, -: and hence no long Perl_ or S_ name. +: and hence no long Perl_ or S_ name. However, if the macro name itself +: begins with 'Perl_', autodoc.pl will show a thread context parameter +: unless the 'T' flag is specified. : : suppress proto.h entry (actually, not suppressed, but commented out) : suppress entry in the list of exported symbols available on all platforms @@ -619,7 +661,7 @@ Ap |bool |do_close |NULLOK GV* gv|bool not_implicit p |bool |do_eof |NN GV* gv #ifdef PERL_DEFAULT_DO_EXEC3_IMPLEMENTATION -pm |bool|do_exec |NN const char* cmd +pM |bool|do_exec |NN const char* cmd #else p |bool|do_exec |NN const char* cmd #endif @@ -743,6 +785,7 @@ p |void |dump_sub_perl |NN const GV* gv|bool justperl Apd |void |fbm_compile |NN SV* sv|U32 flags ApdR |char* |fbm_instr |NN unsigned char* big|NN unsigned char* bigend \ |NN SV* littlestr|U32 flags +pEXTR |const char *|cntrl_to_mnemonic|const U8 c p |CV * |find_lexical_cv|PADOFFSET off : Defined in util.c, used only in perl.c p |char* |find_script |NN const char *scriptname|bool dosearch \ @@ -838,9 +881,11 @@ Xxpd |void |gv_try_downgrade|NN GV* gv p |void |gv_setref |NN SV *const dstr|NN SV *const sstr Apd |HV* |gv_stashpv |NN const char* name|I32 flags Apd |HV* |gv_stashpvn |NN const char* name|U32 namelen|I32 flags +#if defined(PERL_IN_GV_C) || defined(PERL_IN_UNIVERSAL_C) +EpG |HV* |gv_stashsvpvn_cached |NULLOK SV *namesv|NULLOK const char* name|U32 namelen|I32 flags +#endif #if defined(PERL_IN_GV_C) i |HV* |gv_stashpvn_internal |NN const char* name|U32 namelen|I32 flags -iG |HV* |gv_stashsvpvn_cached |NULLOK SV *namesv|NULLOK const char* name|U32 namelen|I32 flags i |GV* |gv_fetchmeth_internal |NULLOK HV* stash|NULLOK SV* meth|NULLOK const char* name \ |STRLEN len|I32 level|U32 flags #endif @@ -942,28 +987,8 @@ ApR |I32 |is_lvalue_sub : Used in cop.h XopR |I32 |was_lvalue_sub CpRTP |STRLEN |is_utf8_char_helper|NN const U8 * const s|NN const U8 * e|const U32 flags -CbDpR |U32 |to_uni_upper_lc|U32 c -CbDpR |U32 |to_uni_title_lc|U32 c -CbDpR |U32 |to_uni_lower_lc|U32 c -CbDpR |bool |is_uni_alnum |UV c -CbDpR |bool |is_uni_alnumc |UV c -CbDpR |bool |is_uni_idfirst |UV c -CbDpR |bool |is_uni_alpha |UV c -CbDpPR |bool |is_uni_ascii |UV c -CbDpPR |bool |is_uni_blank |UV c -CbDpPR |bool |is_uni_space |UV c -CbDpPR |bool |is_uni_cntrl |UV c -CbDpR |bool |is_uni_graph |UV c -CbDpR |bool |is_uni_digit |UV c -CbDpR |bool |is_uni_upper |UV c -CbDpR |bool |is_uni_lower |UV c -CbDpR |bool |is_uni_print |UV c -CbDpR |bool |is_uni_punct |UV c -CbDpPR |bool |is_uni_xdigit |UV c Cp |UV |to_uni_upper |UV c|NN U8 *p|NN STRLEN *lenp Cp |UV |to_uni_title |UV c|NN U8 *p|NN STRLEN *lenp -CbDpR |bool |isIDFIRST_lazy |NN const char* p -CbDpR |bool |isALNUM_lazy |NN const char* p p |void |init_uniprops #ifdef PERL_IN_UTF8_C STR |U8 |to_lower_latin1|const U8 c|NULLOK U8 *p|NULLOK STRLEN *lenp \ @@ -981,25 +1006,10 @@ EXTp |UV |_to_fold_latin1|const U8 c|NN U8 *p|NN STRLEN *lenp|const unsig p |UV |_to_upper_title_latin1|const U8 c|NN U8 *p|NN STRLEN *lenp|const char S_or_s #endif Cp |UV |to_uni_lower |UV c|NN U8 *p|NN STRLEN *lenp -Cmp |UV |to_uni_fold |UV c|NN U8 *p|NN STRLEN *lenp +Cm |UV |to_uni_fold |UV c|NN U8 *p|NN STRLEN *lenp Cp |UV |_to_uni_fold_flags|UV c|NN U8 *p|NN STRLEN *lenp|U8 flags -CbDpR |bool |is_uni_alnum_lc|UV c -CbDpR |bool |is_uni_alnumc_lc|UV c -CbDpR |bool |is_uni_idfirst_lc|UV c CpR |bool |_is_uni_perl_idcont|UV c CpR |bool |_is_uni_perl_idstart|UV c -CbDpR |bool |is_uni_alpha_lc|UV c -CbDpPR |bool |is_uni_ascii_lc|UV c -CbDpPR |bool |is_uni_space_lc|UV c -CbDpPR |bool |is_uni_blank_lc|UV c -CbDpPR |bool |is_uni_cntrl_lc|UV c -CbDpR |bool |is_uni_graph_lc|UV c -CbDpR |bool |is_uni_digit_lc|UV c -CbDpR |bool |is_uni_upper_lc|UV c -CbDpR |bool |is_uni_lower_lc|UV c -CbDpR |bool |is_uni_print_lc|UV c -CbDpR |bool |is_uni_punct_lc|UV c -CbDpPR |bool |is_uni_xdigit_lc|UV c ATdmoR |bool |is_utf8_invariant_string|NN const U8* const s \ |STRLEN len ATidRp |bool |is_utf8_invariant_string_loc|NN const U8* const s \ @@ -1064,45 +1074,12 @@ AmTdP |bool |is_utf8_valid_partial_char \ |NN const U8 * const s|NN const U8 * const e ATidRp |bool |is_utf8_valid_partial_char_flags \ |NN const U8 * const s|NN const U8 * const e|const U32 flags -CpR |bool |_is_uni_FOO|const U8 classnum|const UV c -CpR |bool |_is_utf8_FOO|U8 classnum|NN const U8 * const p \ - |NN const char * const name \ - |NN const char * const alternative \ - |const bool use_utf8|const bool use_locale \ - |NN const char * const file|const unsigned line -CpR |bool |_is_utf8_FOO_with_len|const U8 classnum|NN const U8 *p \ - |NN const U8 * const e -CbDpR |bool |is_utf8_alnum |NN const U8 *p -CbDpR |bool |is_utf8_alnumc |NN const U8 *p -CbDpR |bool |is_utf8_idfirst|NN const U8 *p -CbDpR |bool |is_utf8_xidfirst|NN const U8 *p -CpR |bool |_is_utf8_idcont|NN const U8 *p -CpR |bool |_is_utf8_idstart|NN const U8 *p -CpR |bool |_is_utf8_xidcont|NN const U8 *p -CpR |bool |_is_utf8_xidstart|NN const U8 *p -CpR |bool |_is_utf8_perl_idcont_with_len|NN const U8 *p \ - |NN const U8 * const e -CpR |bool |_is_utf8_perl_idstart_with_len|NN const U8 *p \ +CpR |bool |_is_uni_FOO|const U8 classnum|const UV c +CpR |bool |_is_utf8_FOO|const U8 classnum|NN const U8 *p \ |NN const U8 * const e -CbDpR |bool |is_utf8_idcont |NN const U8 *p -CbDpR |bool |is_utf8_xidcont |NN const U8 *p -CbDpR |bool |is_utf8_alpha |NN const U8 *p -CbDpR |bool |is_utf8_ascii |NN const U8 *p -CbDpR |bool |is_utf8_blank |NN const U8 *p -CbDpR |bool |is_utf8_space |NN const U8 *p -CbDpR |bool |is_utf8_perl_space |NN const U8 *p -CbDpR |bool |is_utf8_perl_word |NN const U8 *p -CbDpR |bool |is_utf8_cntrl |NN const U8 *p -CbDpR |bool |is_utf8_digit |NN const U8 *p -CbDpR |bool |is_utf8_posix_digit |NN const U8 *p -CbDpR |bool |is_utf8_graph |NN const U8 *p -CbDpR |bool |is_utf8_upper |NN const U8 *p -CbDpR |bool |is_utf8_lower |NN const U8 *p -CbDpR |bool |is_utf8_print |NN const U8 *p -CbDpR |bool |is_utf8_punct |NN const U8 *p -CbDpR |bool |is_utf8_xdigit |NN const U8 *p -CpR |bool |_is_utf8_mark |NN const U8 *p -AbDxpR |bool |is_utf8_mark |NN const U8 *p +CpR |bool |_is_utf8_perl_idcont|NN const U8 *p|NN const U8 * const e +CpR |bool |_is_utf8_perl_idstart|NN const U8 *p|NN const U8 * const e + #if defined(PERL_CORE) || defined(PERL_EXT) EXdpR |bool |isSCRIPT_RUN |NN const U8 *s|NN const U8 *send \ |const bool utf8_target @@ -1159,35 +1136,60 @@ Ap |void |vload_module|U32 flags|NN SV* name|NULLOK SV* ver|NULLOK va_list* args : Used in perly.y p |OP* |localize |NN OP *o|I32 lex ApdR |I32 |looks_like_number|NN SV *const sv -Apd |UV |grok_bin |NN const char* start|NN STRLEN* len_p|NN I32* flags|NULLOK NV *result #if defined(PERL_IN_REGCOMP_C) || defined(PERL_IN_TOKE_C) || defined(PERL_IN_DQUOTE_C) -EpRX |bool |grok_bslash_x |NN char** s \ - |NN const char* const send \ - |NN UV* uv \ - |NN const char** error_msg \ - |const bool output_warning \ - |const bool strict \ - |const bool silence_non_portable \ +EpRX |bool |grok_bslash_x |NN char** s \ + |NN const char* const send \ + |NN UV* uv \ + |NN const char** message \ + |NULLOK U32 * packed_warn \ + |const bool strict \ + |const bool allow_UV_MAX \ |const bool utf8 -EpRX |char |grok_bslash_c |const char source|const bool output_warning -EpRX |bool |grok_bslash_o |NN char** s \ - |NN const char* const send \ - |NN UV* uv \ - |NN const char** error_msg \ - |const bool output_warning \ - |const bool strict \ - |const bool silence_non_portable \ +EpRX |bool |grok_bslash_c |const char source \ + |NN U8 * result \ + |NN const char** message \ + |NULLOK U32 * packed_warn +EpRX |bool |grok_bslash_o |NN char** s \ + |NN const char* const send \ + |NN UV* uv \ + |NN const char** message \ + |NULLOK U32 * packed_warn \ + |const bool strict \ + |const bool allow_UV_MAX \ |const bool utf8 -EiR |char*|form_short_octal_warning|NN const char * const s \ - |const STRLEN len -EiRT |I32 |regcurly |NN const char *s -#endif -Apd |UV |grok_hex |NN const char* start|NN STRLEN* len_p|NN I32* flags|NULLOK NV *result +EpRX |const char *|form_alien_digit_msg|const U8 which \ + |const STRLEN valids_len \ + |NN const char * const first_bad\ + |NN const char * const send \ + |const bool UTF \ + |const bool braced +#endif +#if defined(PERL_IN_REGCOMP_C) || defined(PERL_IN_TOKE_C) +EiRT |bool |regcurly |NN const char *s +#endif +#if defined(PERL_IN_REGCOMP_C) || defined(PERL_IN_TOKE_C) || defined(PERL_IN_DQUOTE_C) || defined(PERL_IN_UTF8_C) +EpRX |const char *|form_cp_too_large_msg|const U8 which \ + |NULLOK const char * string \ + |const Size_t len \ + |const UV cp +#endif +AMpd |UV |grok_hex |NN const char* start|NN STRLEN* len_p|NN I32* flags|NULLOK NV *result Apd |int |grok_infnan |NN const char** sp|NN const char *send Apd |int |grok_number |NN const char *pv|STRLEN len|NULLOK UV *valuep Apd |int |grok_number_flags|NN const char *pv|STRLEN len|NULLOK UV *valuep|U32 flags ApdR |bool |grok_numeric_radix|NN const char **sp|NN const char *send -Apd |UV |grok_oct |NN const char* start|NN STRLEN* len_p|NN I32* flags|NULLOK NV *result +ApMd |UV |grok_oct |NN const char* start|NN STRLEN* len_p|NN I32* flags|NULLOK NV *result +ApMd |UV |grok_bin |NN const char* start|NN STRLEN* len_p|NN I32* flags|NULLOK NV *result +Cp |UV |grok_bin_oct_hex|NN const char* start \ + |NN STRLEN* len_p \ + |NN I32* flags \ + |NULLOK NV *result \ + |const unsigned shift \ + |const U8 lookup_bit \ + |const char prefix +#ifdef PERL_IN_NUMERIC_C +S |void |output_non_portable|const U8 shift +#endif EXpdT |bool |grok_atoUV |NN const char* pv|NN UV* valptr|NULLOK const char** endptr : These are all indirectly referenced by globals.c. This is somewhat annoying. p |int |magic_clearenv |NN SV* sv|NN MAGIC* mg @@ -1530,6 +1532,7 @@ p |OP* |pmruntime |NN OP *o|NN OP *expr|NULLOK OP *repl \ #if defined(PERL_IN_OP_C) S |OP* |pmtrans |NN OP* o|NN OP* expr|NN OP* repl #endif +p |void |invmap_dump |NN SV* invlist|NN UV * map Ap |void |pop_scope Ap |void |push_scope #if defined(PERL_IN_PERLY_C) || defined(PERL_IN_OP_C) || defined(PERL_IN_TOKE_C) @@ -1618,7 +1621,7 @@ p |void |rxres_save |NN void **rsp|NN REGEXP *rx p |I32 |same_dirent |NN const char* a|NN const char* b #endif Apda |char* |savepv |NULLOK const char* pv -Apda |char* |savepvn |NULLOK const char* pv|I32 len +Apda |char* |savepvn |NULLOK const char* pv|Size_t len Apda |char* |savesharedpv |NULLOK const char* pv : NULLOK only to suppress a compiler warning @@ -1628,7 +1631,7 @@ Apda |char* |savesharedsvpv |NN SV *sv Apda |char* |savesvpv |NN SV* sv Ap |void |savestack_grow Ap |void |savestack_grow_cnt |I32 need -Amp |void |save_aelem |NN AV* av|SSize_t idx|NN SV **sptr +Am |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 @@ -1651,7 +1654,7 @@ Ap |void |save_shared_pvref|NN char** str Adp |void |save_gp |NN GV* gv|I32 empty Apdh |HV* |save_hash |NN GV* gv Ap |void |save_hints -Amp |void |save_helem |NN HV *hv|NN SV *key|NN SV **sptr +Am |void |save_helem |NN HV *hv|NN SV *key|NN SV **sptr Ap |void |save_helem_flags|NN HV *hv|NN SV *key|NN SV **sptr|const U32 flags Apdh |void |save_hptr |NN HV** hptr Ap |void |save_I16 |NN I16* intp @@ -1706,14 +1709,19 @@ Axpd |OP* |op_scope |NULLOK OP* o pe |void |set_caret_X Apd |void |setdefout |NN GV* gv Ap |HEK* |share_hek |NN const char* str|SSize_t len|U32 hash -#if defined(HAS_SIGACTION) && defined(SA_SIGINFO) +#ifdef PERL_USE_3ARG_SIGHANDLER : Used in perl.c -Tp |Signal_t |sighandler |int sig|NULLOK siginfo_t *info|NULLOK void *uap -ATp |Signal_t |csighandler |int sig|NULLOK siginfo_t *info|NULLOK void *uap +Tp |Signal_t |sighandler |int sig|NULLOK Siginfo_t *info|NULLOK void *uap +ATp |Signal_t |csighandler |int sig|NULLOK Siginfo_t *info|NULLOK void *uap #else Tp |Signal_t |sighandler |int sig ATp |Signal_t |csighandler |int sig #endif +Tp |Signal_t |sighandler1 |int sig +ATp |Signal_t |csighandler1 |int sig +Tp |Signal_t |sighandler3 |int sig|NULLOK Siginfo_t *info|NULLOK void *uap +ATp |Signal_t |csighandler3 |int sig|NULLOK Siginfo_t *info|NULLOK void *uap +ATp |Signal_t |perly_sighandler |int sig|NULLOK Siginfo_t *info|NULLOK void *uap|bool safe Ap |SV** |stack_grow |NN SV** sp|NN SV** p|SSize_t n Ap |I32 |start_subparse |I32 is_format|U32 flags Xp |void |init_named_cv |NN CV *cv|NN OP *nameop @@ -1776,10 +1784,10 @@ Apd |void |sv_clear |NN SV *const orig_sv #if defined(PERL_IN_SV_C) S |bool |curse |NN SV * const sv|const bool check_refcnt #endif -AMopd |I32 |sv_cmp |NULLOK SV *const sv1|NULLOK SV *const sv2 +AMpd |I32 |sv_cmp |NULLOK SV *const sv1|NULLOK SV *const sv2 Apd |I32 |sv_cmp_flags |NULLOK SV *const sv1|NULLOK SV *const sv2 \ |const U32 flags -AMopd |I32 |sv_cmp_locale |NULLOK SV *const sv1|NULLOK SV *const sv2 +AMpd |I32 |sv_cmp_locale |NULLOK SV *const sv1|NULLOK SV *const sv2 Apd |I32 |sv_cmp_locale_flags |NULLOK SV *const sv1 \ |NULLOK SV *const sv2|const U32 flags #if defined(USE_LOCALE_COLLATE) @@ -1795,6 +1803,7 @@ ApdR |bool |sv_derived_from_sv|NN SV* sv|NN SV *namesv|U32 flags ApdR |bool |sv_derived_from_pv|NN SV* sv|NN const char *const name|U32 flags ApdR |bool |sv_derived_from_pvn|NN SV* sv|NN const char *const name \ |const STRLEN len|U32 flags +ApdRx |bool |sv_isa_sv |NN SV* sv|NN SV* namesv ApdR |bool |sv_does |NN SV* sv|NN const char *const name ApdR |bool |sv_does_sv |NN SV* sv|NN SV* namesv|U32 flags ApdR |bool |sv_does_pv |NN SV* sv|NN const char *const name|U32 flags @@ -1891,46 +1900,51 @@ Apd |void |sv_vsetpvfn |NN SV *const sv|NN const char *const pat|const STRLEN pa |NULLOK va_list *const args|NULLOK SV **const svargs \ |const Size_t sv_count|NULLOK bool *const maybe_tainted ApR |NV |str_to_version |NN SV *sv -EXpR |SV* |swash_init |NN const char* pkg|NN const char* name|NN SV* listsv|I32 minbits|I32 none -EXp |UV |swash_fetch |NN SV *swash|NN const U8 *ptr|bool do_utf8 -#ifdef PERL_IN_REGCOMP_C +#if defined(PERL_IN_REGCOMP_C) || defined(PERL_IN_OP_C) || defined(PERL_IN_DOOP_C) EiR |SV* |add_cp_to_invlist |NULLOK SV* invlist|const UV cp +Ei |void |invlist_extend |NN SV* const invlist|const UV len +Ei |void |invlist_set_len|NN SV* const invlist|const UV len|const bool offset +EiRT |UV |invlist_highest|NN SV* const invlist +#endif +#if defined(PERL_IN_REGCOMP_C) || defined(PERL_IN_OP_C) +EiRT |STRLEN*|get_invlist_iter_addr |NN SV* invlist +EiT |void |invlist_iterinit|NN SV* invlist +EiRT |bool |invlist_iternext|NN SV* invlist|NN UV* start|NN UV* end +EiT |void |invlist_iterfinish|NN SV* invlist +#endif +#if defined(PERL_IN_REGCOMP_C) EiRT |bool |invlist_is_iterating|NN SV* const invlist +EiR |SV* |invlist_contents|NN SV* const invlist \ + |const bool traditional_style +EixRT |UV |invlist_lowest|NN SV* const invlist #ifndef PERL_EXT_RE_BUILD EiRT |UV* |_invlist_array_init |NN SV* const invlist|const bool will_have_0 EiRT |UV |invlist_max |NN SV* const invlist -ES |void |_append_range_to_invlist |NN SV* const invlist|const UV start|const UV end -ES |void |invlist_extend |NN SV* const invlist|const UV len -ES |void |invlist_replace_list_destroys_src|NN SV *dest|NN SV *src EiRT |IV* |get_invlist_previous_index_addr|NN SV* invlist -Ei |void |invlist_set_len|NN SV* const invlist|const UV len|const bool offset EiT |void |invlist_set_previous_index|NN SV* const invlist|const IV index EiRT |IV |invlist_previous_index|NN SV* const invlist EiT |void |invlist_trim |NN SV* invlist Ei |void |invlist_clear |NN SV* invlist -S |void |initialize_invlist_guts|NN SV* invlist|const Size_t initial_size #endif -EiRT |STRLEN*|get_invlist_iter_addr |NN SV* invlist -EiT |void |invlist_iterinit|NN SV* invlist -ESRT |bool |invlist_iternext|NN SV* invlist|NN UV* start|NN UV* end -EiT |void |invlist_iterfinish|NN SV* invlist -EiRT |UV |invlist_highest|NN SV* const invlist -ERS |SV* |_make_exactf_invlist |NN RExC_state_t *pRExC_state \ - |NN regnode *node -ESR |SV* |invlist_contents|NN SV* const invlist \ - |const bool traditional_style ESRT |bool |new_regcurly |NN const char *s|NN const char *e +ERS |SV* |make_exactf_invlist |NN RExC_state_t *pRExC_state \ + |NN regnode *node +#ifndef PERL_EXT_RE_BUILD +ES |void |_append_range_to_invlist |NN SV* const invlist|const UV start|const UV end +ES |void |invlist_replace_list_destroys_src|NN SV *dest|NN SV *src +S |void |initialize_invlist_guts|NN SV* invlist|const Size_t initial_size #endif -#if defined(PERL_IN_REGCOMP_C) || defined(PERL_IN_UTF8_C) -EXm |void |_invlist_intersection |NN SV* const a|NN SV* const b|NN SV** i +#endif +#if defined(PERL_IN_REGCOMP_C) || defined(PERL_IN_UTF8_C) || defined(PERL_IN_OP_C) || defined(PERL_IN_DOOP_C) +m |void |_invlist_intersection |NN SV* const a|NN SV* const b|NN SV** i EXp |void |_invlist_intersection_maybe_complement_2nd \ |NULLOK SV* const a|NN SV* const b \ |const bool complement_b|NN SV** i -EXm |void |_invlist_union |NULLOK SV* const a|NN SV* const b|NN SV** output +Cm |void |_invlist_union |NULLOK SV* const a|NN SV* const b|NN SV** output EXp |void |_invlist_union_maybe_complement_2nd \ |NULLOK SV* const a|NN SV* const b \ |const bool complement_b|NN SV** output -EXm |void |_invlist_subtract|NN SV* const a|NN SV* const b|NN SV** result +m |void |_invlist_subtract|NN SV* const a|NN SV* const b|NN SV** result EXp |void |_invlist_invert|NN SV* const invlist EXpR |SV* |_new_invlist |IV initial_size EXpR |SV* |_add_range_to_invlist |NULLOK SV* invlist|UV start|UV end @@ -1939,7 +1953,10 @@ EXpR |SV* |_setup_canned_invlist|const STRLEN size|const UV element0|NN UV** oth #if defined(PERL_IN_REGCOMP_C) || defined(PERL_IN_SV_C) EpX |SV* |invlist_clone |NN SV* const invlist|NULLOK SV* newlist #endif -#if defined(PERL_IN_REGCOMP_C) || defined(PERL_IN_REGEXEC_C) || defined(PERL_IN_TOKE_C) || defined(PERL_IN_UTF8_C) || defined(PERL_IN_PP_C) +#if defined(PERL_IN_REGCOMP_C) || defined(PERL_IN_REGEXEC_C) \ + || defined(PERL_IN_TOKE_C) || defined(PERL_IN_UTF8_C) \ + || defined(PERL_IN_PP_C) || defined(PERL_IN_OP_C) \ + || defined(PERL_IN_DOOP_C) EiRT |UV* |invlist_array |NN SV* const invlist EiRT |bool |is_invlist |NULLOK SV* const invlist EiRT |bool* |get_invlist_offset_addr|NN SV* invlist @@ -1959,14 +1976,14 @@ EXp |SV* |_get_regclass_nonbitmap_data \ |NULLOK SV **lonly_utf8_locale \ |NULLOK SV **output_invlist #endif -#if defined(PERL_IN_REGCOMP_C) || defined (PERL_IN_DUMP_C) +#if defined(PERL_IN_REGCOMP_C) || defined (PERL_IN_DUMP_C) || defined(PERL_IN_OP_C) EXp |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 -Ep |char * |_byte_dump_string \ +EXp |char * |_byte_dump_string \ |NN const U8 * const start \ |const STRLEN len \ |const bool format @@ -1982,48 +1999,35 @@ SR |char * |unexpected_non_continuation_text \ |STRLEN print_len \ |const STRLEN non_cont_byte_pos \ |const STRLEN expect_len +#if 0 /* Not currently used, but may be needed in the future */ S |void |warn_on_first_deprecated_use \ |NN const char * const name \ |NN const char * const alternative \ |const bool use_locale \ |NN const char * const file \ |const unsigned line -S |U32 |check_and_deprecate \ - |NN const U8 * p \ - |NN const U8 ** e \ - |const unsigned type \ - |const bool use_locale \ - |NN const char * const file \ - |const unsigned line +#endif S |UV |_to_utf8_case |const UV uv1 \ |NULLOK const U8 *p \ |NN U8* ustrp \ |NN STRLEN *lenp \ |NN SV *invlist \ - |NN const int * const invmap \ - |NULLOK const unsigned int * const * const aux_tables \ + |NN const I32 * const invmap \ + |NULLOK const U32 * const * const aux_tables \ |NULLOK const U8 * const aux_table_lengths \ |NN const char * const normal S |UV |turkic_fc |NN const U8 * const p |NN const U8 * const e|NN U8* ustrp|NN STRLEN *lenp S |UV |turkic_lc |NN const U8 * const p0|NN const U8 * const e|NN U8* ustrp|NN STRLEN *lenp S |UV |turkic_uc |NN const U8 * const p |NN const U8 * const e|NN U8* ustrp|NN STRLEN *lenp #endif -ApbMdD |UV |to_utf8_lower |NN const U8 *p|NN U8* ustrp|NULLOK STRLEN *lenp Cp |UV |_to_utf8_lower_flags|NN const U8 *p|NULLOK const U8* e \ - |NN U8* ustrp|NULLOK STRLEN *lenp|bool flags \ - |NN const char * const file|const int line -ApbMdD |UV |to_utf8_upper |NN const U8 *p|NN U8* ustrp|NULLOK STRLEN *lenp + |NN U8* ustrp|NULLOK STRLEN *lenp|bool flags Cp |UV |_to_utf8_upper_flags |NN const U8 *p|NULLOK const U8 *e \ - |NN U8* ustrp|NULLOK STRLEN *lenp|bool flags \ - |NN const char * const file|const int line -ApbMdD |UV |to_utf8_title |NN const U8 *p|NN U8* ustrp|NULLOK STRLEN *lenp + |NN U8* ustrp|NULLOK STRLEN *lenp|bool flags Cp |UV |_to_utf8_title_flags |NN const U8 *p|NULLOK const U8* e \ - |NN U8* ustrp|NULLOK STRLEN *lenp|bool flags \ - |NN const char * const file|const int line -ApbMdD |UV |to_utf8_fold |NN const U8 *p|NN U8* ustrp|NULLOK STRLEN *lenp + |NN U8* ustrp|NULLOK STRLEN *lenp|bool flags Cp |UV |_to_utf8_fold_flags|NN const U8 *p|NULLOK const U8 *e \ - |NN U8* ustrp|NULLOK STRLEN *lenp|U8 flags \ - |NN const char * const file|const int line + |NN U8* ustrp|NULLOK STRLEN *lenp|U8 flags #if defined(PERL_IN_MG_C) || defined(PERL_IN_PP_C) pT |bool |translate_substr_offsets|STRLEN curlen|IV pos1_iv \ |bool pos1_is_uv|IV len_iv \ @@ -2046,8 +2050,8 @@ p |void |utilize |int aver|I32 floor|NULLOK OP* version|NN OP* idop|NULLOK OP* a Cp |void |_force_out_malformed_utf8_message \ |NN const U8 *const p|NN const U8 * const e|const U32 flags \ |const bool die_here -EXp |U8* |utf16_to_utf8 |NN U8* p|NN U8 *d|I32 bytelen|NN I32 *newlen -EXp |U8* |utf16_to_utf8_reversed|NN U8* p|NN U8 *d|I32 bytelen|NN I32 *newlen +EXp |U8* |utf16_to_utf8 |NN U8* p|NN U8 *d|Size_t bytelen|NN Size_t *newlen +EXp |U8* |utf16_to_utf8_reversed|NN U8* p|NN U8 *d|Size_t bytelen|NN Size_t *newlen AdpR |STRLEN |utf8_length |NN const U8* s|NN const U8 *e AipdR |IV |utf8_distance |NN const U8 *a|NN const U8 *b AipdRT |U8* |utf8_hop |NN const U8 *s|SSize_t off @@ -2100,14 +2104,14 @@ Adm |U8* |uvchr_to_utf8 |NN U8 *d|UV uv Cp |U8* |uvuni_to_utf8 |NN U8 *d|UV uv Adm |U8* |uvchr_to_utf8_flags |NN U8 *d|UV uv|UV flags Admx |U8* |uvchr_to_utf8_flags_msgs|NN U8 *d|UV uv|UV flags|NULLOK HV ** msgs -CMpod |U8* |uvoffuni_to_utf8_flags |NN U8 *d|UV uv|const UV flags +CMpd |U8* |uvoffuni_to_utf8_flags |NN U8 *d|UV uv|const UV flags Cp |U8* |uvoffuni_to_utf8_flags_msgs|NN U8 *d|UV uv|const UV flags|NULLOK HV** msgs Cdp |U8* |uvuni_to_utf8_flags |NN U8 *d|UV uv|UV flags Apd |char* |pv_uni_display |NN SV *dsv|NN const U8 *spv|STRLEN len|STRLEN pvlim|UV flags ApdR |char* |sv_uni_display |NN SV *dsv|NN SV *ssv|STRLEN pvlim|UV flags EXpR |Size_t |_inverse_folds |const UV cp \ - |NN unsigned int * first_folds_to \ - |NN const unsigned int ** remaining_folds_to + |NN U32 * first_folds_to \ + |NN const U32 ** remaining_folds_to : Used by Data::Alias EXp |void |vivify_defelem |NN SV* sv : Used in pp.c @@ -2318,7 +2322,9 @@ Ap |void |sys_intern_dup |NN struct interp_intern* src|NN struct interp_intern* # endif #endif -Admop |const XOP * |custom_op_xop |NN const OP *o +: The reason for the 'u' flag is that this passes "aTHX_ x" to its callee: not +: a legal C parameter +Admu |const XOP * |Perl_custom_op_xop |NN const OP *o AbpRdD |const char * |custom_op_name |NN const OP *o AbpRdD |const char * |custom_op_desc |NN const OP *o pRX |XOPRETANY |custom_op_get_field |NN const OP *o|const xop_flags_enum field @@ -2333,12 +2339,11 @@ Adp |int |nothreadhook p |void |init_constants #if defined(PERL_IN_DOOP_C) -SR |Size_t |do_trans_simple |NN SV * const sv -SR |Size_t |do_trans_count |NN SV * const sv -SR |Size_t |do_trans_complex |NN SV * const sv -SR |Size_t |do_trans_simple_utf8 |NN SV * const sv -SR |Size_t |do_trans_count_utf8 |NN SV * const sv -SR |Size_t |do_trans_complex_utf8 |NN SV * const sv +SR |Size_t |do_trans_simple |NN SV * const sv|NN const OPtrans_map * const tbl +SR |Size_t |do_trans_count |NN SV * const sv|NN const OPtrans_map * const tbl +SR |Size_t |do_trans_complex |NN SV * const sv|NN const OPtrans_map * const tbl +SR |Size_t |do_trans_invmap |NN SV * const sv|NN AV * const map +SR |Size_t |do_trans_count_invmap |NN SV * const sv|NN AV * const map #endif #if defined(PERL_IN_GV_C) @@ -2594,6 +2599,7 @@ ES |void |set_ANYOF_arg |NN RExC_state_t* const pRExC_state \ ES |void |output_posix_warnings \ |NN RExC_state_t *pRExC_state \ |NN AV* posix_warnings +EiT |Size_t |find_first_differing_byte_pos|NN const U8 * s1|NN const U8 * s2| const Size_t max ES |AV* |add_multi_match|NULLOK AV* multi_char_matches \ |NN SV* multi_string \ |const STRLEN cp_count @@ -2709,14 +2715,13 @@ ES |I32 |make_trie |NN RExC_state_t *pRExC_state \ |U32 word_count|U32 flags|U32 depth ES |regnode *|construct_ahocorasick_from_trie|NN RExC_state_t *pRExC_state \ |NN regnode *source|U32 depth -ETSR |const char *|cntrl_to_mnemonic|const U8 c ETSR |int |edit_distance |NN const UV *src \ |NN const UV *tgt \ |const STRLEN x \ |const STRLEN y \ |const SSize_t maxDistance EpX |SV * |parse_uniprop_string|NN const char * const name \ - |const Size_t name_len \ + |Size_t name_len \ |const bool is_utf8 \ |const bool to_fold \ |const bool runtime \ @@ -2749,6 +2754,7 @@ ES |bool |put_charclass_bitmap_innards|NN SV* sv \ |NULLOK SV* nonbitmap_invlist \ |NULLOK SV* only_utf8_locale_invlist\ |NULLOK const regnode * const node \ + |const U8 flags \ |const bool force_as_is_display ES |SV* |put_charclass_bitmap_innards_common \ |NN SV* invlist \ @@ -2780,8 +2786,8 @@ ESR |bool |regtail_study |NN RExC_state_t *pRExC_state \ EXRp |bool |isFOO_lc |const U8 classnum|const U8 character #endif -#if defined(PERL_IN_REGEXEC_C) || defined(PERL_IN_TOKE_C) -ERp |bool |_is_grapheme |NN const U8 * strbeg|NN const U8 * s|NN const U8 *strend|const UV cp +#if defined(PERL_IN_REGEXEC_C) || defined(PERL_IN_REGCOMP_C) || defined(PERL_IN_TOKE_C) +ERp |bool |is_grapheme |NN const U8 * strbeg|NN const U8 * s|NN const U8 *strend|const UV cp #endif #if defined(PERL_IN_REGEXEC_C) @@ -2956,6 +2962,10 @@ EXpR |SV* |get_and_check_backslash_N_name|NN const char* s \ |NN const char* const e \ |const bool is_utf8 \ |NN const char** error_msg +EXpR |HV* |load_charnames |NN SV * char_name \ + |NN const char * context \ + |const STRLEN context_len \ + |NN const char ** error_msg : For use ONLY in B::Hooks::Parser, by special dispensation EXpxR |char* |scan_str |NN char *start|int keep_quoted \ @@ -3030,8 +3040,13 @@ EdXxp |bool |validate_proto |NN SV *name|NULLOK SV *proto|bool warn \ |bool curstash #if defined(PERL_IN_UNIVERSAL_C) -S |bool |isa_lookup |NN HV *stash|NN const char * const name \ +SG |bool |isa_lookup |NULLOK HV *stash|NULLOK SV *namesv|NULLOK const char * name \ |STRLEN len|U32 flags +SG |bool |sv_derived_from_svpvn |NULLOK SV *sv \ + |NULLOK SV *namesv \ + |NULLOK const char * name \ + |const STRLEN len \ + |U32 flags #endif #if defined(PERL_IN_LOCALE_C) @@ -3118,14 +3133,8 @@ SR |UV |check_locale_boundary_crossing \ |NN U8* const ustrp \ |NN STRLEN *lenp iR |bool |is_utf8_common |NN const U8 *const p \ + |NN const U8 *const e \ |NULLOK SV* const invlist -iR |bool |is_utf8_common_with_len|NN const U8 *const p \ - |NN const U8 *const e \ - |NULLOK SV* const invlist -SR |SV* |swatch_get |NN SV* swash|UV start|UV span -SR |U8* |swash_scan_list_line|NN U8* l|NN U8* const lend|NN UV* min \ - |NN UV* max|NN UV* val|const bool wants_value \ - |NN const U8* const typestr #endif EXiTp |void |append_utf8_from_native_byte|const U8 byte|NN U8** dest @@ -3141,14 +3150,14 @@ Amd |STRLEN |sv_utf8_upgrade_flags|NN SV *const sv|const I32 flags Adp |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 AdpMb |void |sv_copypv |NN SV *const dsv|NN SV *const ssv -Apmd |void |sv_copypv_nomg |NN SV *const dsv|NN SV *const ssv +Amd |void |sv_copypv_nomg |NN SV *const dsv|NN SV *const ssv Apd |void |sv_copypv_flags |NN SV *const dsv|NN SV *const ssv|const I32 flags Cpo |char* |my_atof2 |NN const char *orig|NN NV* value Cp |char* |my_atof3 |NN const char *orig|NN NV* value|const STRLEN len ApT |int |my_socketpair |int family|int type|int protocol|int fd[2] ApT |int |my_dirfd |NULLOK DIR* dir #ifdef PERL_ANY_COW -: Used in pp_hot.c and regexec.c +: Used in regexec.c pxXE |SV* |sv_setsv_cow |NULLOK SV* dstr|NN SV* sstr #endif @@ -3342,11 +3351,11 @@ ApoP |bool |ckwarn_d |U32 w XEopxR |STRLEN *|new_warnings_bitfield|NULLOK STRLEN *buffer \ |NN const char *const bits|STRLEN size -AMpTodf |int |my_snprintf |NN char *buffer|const Size_t len|NN const char *format|... -AMpTod |int |my_vsnprintf |NN char *buffer|const Size_t len|NN const char *format|va_list ap +AMpTdf |int |my_snprintf |NN char *buffer|const Size_t len|NN const char *format|... +AMpTd |int |my_vsnprintf |NN char *buffer|const Size_t len|NN const char *format|va_list ap #ifdef USE_QUADMATH -ApTd |const char* |quadmath_format_single|NN const char* format -ApTd |bool|quadmath_format_needed|NN const char* format +pTd |bool |quadmath_format_valid|NN const char* format +pTd |bool|quadmath_format_needed|NN const char* format #endif : Used in mg.c, sv.c @@ -3376,7 +3385,7 @@ ApTd |Size_t |my_strlcpy |NULLOK char *dst|NULLOK const char *src|Size_t siz #endif #ifndef HAS_STRNLEN -ApTd |Size_t |my_strnlen |NN const char *str|Size_t maxlen +AipTd |Size_t |my_strnlen |NN const char *str|Size_t maxlen #endif #ifndef HAS_MKOSTEMP @@ -3387,7 +3396,7 @@ pTo |int |my_mkstemp |NN char *templte #endif APpdT |bool |isinfnan |NV nv -p |bool |isinfnansv |NN SV *sv +pd |bool |isinfnansv |NN SV *sv #if !defined(HAS_SIGNBIT) AxdToP |int |Perl_signbit |NV f @@ -3456,10 +3465,6 @@ ATop |void |clone_params_del|NN CLONE_PARAMS *param : Used in perl.c and toke.c op |void |populate_isa |NN const char *name|STRLEN len|... -: Used in keywords.c and toke.c -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) @@ -3473,6 +3478,7 @@ Apx |void |leave_adjust_stacks|NN SV **from_sp|NN SV **to_sp \ |U8 gimme|int filter #ifndef PERL_NO_INLINE_FUNCTIONS +Aixp |U8 |gimme_V | Aixp |PERL_CONTEXT * |cx_pushblock|U8 type|U8 gimme|NN SV** sp|I32 saveix Aixp |void |cx_popblock|NN PERL_CONTEXT *cx Aixp |void |cx_topblock|NN PERL_CONTEXT *cx