X-Git-Url: https://perl5.git.perl.org/perl5.git/blobdiff_plain/7cf8d05d1e856f3bd3a392b3ccea008f1c1eb743..27c74dfd9a73dc0baa42c9e37899f741b08b7c4b:/embed.fnc diff --git a/embed.fnc b/embed.fnc index 4e60cd2..654dad9 100644 --- a/embed.fnc +++ b/embed.fnc @@ -1,6 +1,11 @@ : BEGIN{die "You meant to run regen/embed.pl"} # Stop early if fed to perl. : : This file is processed by regen/embed.pl and autodoc.pl +: It is used to declare the interfaces to the functions defined by perl. All +: non-static functions must have entries here. Static functions need not, but +: there is benefit to declaring them here, as it generally handles the thread +: context parameter invisibly, as well as making sure a PERL_ARGS_ASSERT_foo +: macro is defined, which can save you debugging time. : : Lines are of the form: : flags|return_type|function_name|arg1|arg2|...|argN @@ -8,6 +13,11 @@ : A line may be continued on another by ending it with a backslash. : Leading and trailing whitespace will be ignored in each component. : +: The default without flags is to declare a function for internal perl-core use +: only, not visible to XS code nor to Perl extensions. Use the A and E flags to +: modify this. Most non-static functions should have the 'p' flag to avoid +: namespace clashes with programs that embed perl. +: : flags are single letters with following meanings: : : A Available fully everywhere (usually part of the public API): @@ -55,7 +65,7 @@ : This flag effectively causes nothing to happen if the perl interpreter : is compiled with -DNO_MATHOMS; otherwise these happen: : add entry to the list of exported symbols; -: create PERL_ARGS_ASSERT_FOO; +: create PERL_ARGS_ASSERT_foo; : add embed.h entry (unless overridden by the 'm' flag) : : D Function is deprecated: @@ -75,7 +85,7 @@ : 1) must be static to its containing file ("i" or "s" flag); or : 2) be combined with the "X" flag. : -: f Function takes a format string. If the function name /strftime/ +: f Function takes a format string. If the function name =~ qr/strftime/ : then its assumed to take a strftime-style format string as 1st arg; : otherwise it's assumed to be a printf style format string, varargs : (hence any entry that would otherwise go in embed.h is suppressed): @@ -116,8 +126,22 @@ : : 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: +: P Pure function: +: +: A pure function has no effects except the return value, and the return +: value depends only on params and/or globals. This is a hint to the +: compiler that it can optimize calls to this function out of common +: subexpressions. Consequently if this flag is wrongly specified, it can +: lead to subtle bugs that vary by platform, compiler, compiler version, +: and optimization level. Also, a future commit could easily change a +: currently-pure function without even noticing this flag. So it should +: be used sparingly, only for functions that are unlikely to ever become +: not pure by future commits. It should not be used for static +: functions, as the compiler already has the information needed to make +: the 'pure' determination and doesn't need any hint; so it doesn't add +: value in those cases, and could be dangerous if it causes the compiler +: to skip doing its own checks. It should not be used on functions that +: touch SVs, as those can trigger unexpected magic. Also implies "R": : : proto.h: add __attribute__pure__ : @@ -126,7 +150,7 @@ : 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): +: R Return value must not be ignored (also implied by 'a' and 'P' flags): : : proto.h: add __attribute__warn_unused_result__ : @@ -144,6 +168,13 @@ : : (currently no effect) : +: W Add a _pDEPTH argument to function prototypes, and an _aDEPTH +: argument to the function calls. This means that under DEBUGGING +: a depth argument is added to the functions, which is used for +: example by the regex engine for debugging and trace output. +: A non DEBUGGING build will not pass the unused argument. +: Currently restricted to functions with at least one argument. +: : X Explicitly exported: : : add entry to the list of exported symbols, unless x or m @@ -252,9 +283,7 @@ Apd |void |av_push |NN AV *av|NN SV *val EXp |void |av_reify |NN AV *av ApdR |SV* |av_shift |NN AV *av Apd |SV** |av_store |NN AV *av|SSize_t key|NULLOK SV *val -#ifndef PERL_NO_INLINE_FUNCTIONS AidR |SSize_t|av_top_index |NN AV *av -#endif 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 @@ -462,7 +491,7 @@ pR |Off_t |do_tell |NN GV* gv : Defined in doop.c, used only in pp.c p |I32 |do_trans |NN SV* sv : Used in my.c and pp.c -p |UV |do_vecget |NN SV* sv|SSize_t offset|int size +p |UV |do_vecget |NN SV* sv|STRLEN offset|int size : Defined in doop.c, used only in mg.c (with /* XXX slurp this routine */) p |void |do_vecset |NN SV* sv : Defined in doop.c, used only in pp.c @@ -475,6 +504,7 @@ p |void |dump_all_perl |bool justperl Ap |void |dump_eval Ap |void |dump_form |NN const GV* gv Ap |void |gv_dump |NULLOK GV* gv +Apd |OPclass|op_class |NULLOK const OP *o Ap |void |op_dump |NN const OP *o Ap |void |pmop_dump |NULLOK PMOP* pm Ap |void |dump_packsubs |NN const HV* stash @@ -498,7 +528,7 @@ i |void |op_relocate_sv |NN SV** svp|NN PADOFFSET* targp i |OP* |newMETHOP_internal |I32 type|I32 flags|NULLOK OP* dynamic_meth \ |NULLOK SV* const_meth : FIXME -s |OP* |fold_constants |NN OP *o +s |OP* |fold_constants |NN OP * const o #endif Afpd |char* |form |NN const char* pat|... Ap |char* |vform |NN const char* pat|NULLOK va_list* args @@ -646,10 +676,10 @@ ApbmM |SV** |hv_store_flags |NULLOK HV *hv|NULLOK const char *key \ |I32 klen|NULLOK SV *val|U32 hash|int flags Amd |void |hv_undef |NULLOK HV *hv poX |void |hv_undef_flags |NULLOK HV *hv|U32 flags -Am |I32 |ibcmp |NN const char* a|NN const char* b|I32 len -AnpP |I32 |foldEQ |NN const char* a|NN const char* b|I32 len -Am |I32 |ibcmp_locale |NN const char* a|NN const char* b|I32 len -AnpP |I32 |foldEQ_locale |NN const char* a|NN const char* b|I32 len +AmP |I32 |ibcmp |NN const char* a|NN const char* b|I32 len +Ainp |I32 |foldEQ |NN const char* a|NN const char* b|I32 len +AmP |I32 |ibcmp_locale |NN const char* a|NN const char* b|I32 len +Ainp |I32 |foldEQ_locale |NN const char* a|NN const char* b|I32 len Am |I32 |ibcmp_utf8 |NN const char *s1|NULLOK char **pe1|UV l1 \ |bool u1|NN const char *s2|NULLOK char **pe2 \ |UV l2|bool u2 @@ -659,7 +689,7 @@ Amd |I32 |foldEQ_utf8 |NN const char *s1|NULLOK char **pe1|UV l1 \ AMp |I32 |foldEQ_utf8_flags |NN const char *s1|NULLOK char **pe1|UV l1 \ |bool u1|NN const char *s2|NULLOK char **pe2 \ |UV l2|bool u2|U32 flags -AnpP |I32 |foldEQ_latin1 |NN const char* a|NN const char* b|I32 len +Ainp |I32 |foldEQ_latin1 |NN const char* a|NN const char* b|I32 len #if defined(PERL_IN_DOIO_C) sR |bool |ingroup |Gid_t testgid|bool effective #endif @@ -681,34 +711,33 @@ pR |OP* |invert |NULLOK OP* cmd ApR |I32 |is_lvalue_sub : Used in cop.h XopR |I32 |was_lvalue_sub -#ifndef PERL_NO_INLINE_FUNCTIONS ApMRnP |STRLEN |_is_utf8_char_helper|NN const U8 * const s|NN const U8 * e|const U32 flags -#endif -ADMpPR |U32 |to_uni_upper_lc|U32 c -ADMpPR |U32 |to_uni_title_lc|U32 c -ADMpPR |U32 |to_uni_lower_lc|U32 c -ADMpPR |bool |is_uni_alnum |UV c -ADMpPR |bool |is_uni_alnumc |UV c -ADMpPR |bool |is_uni_idfirst |UV c -ADMpPR |bool |is_uni_alpha |UV c +ADMpR |U32 |to_uni_upper_lc|U32 c +ADMpR |U32 |to_uni_title_lc|U32 c +ADMpR |U32 |to_uni_lower_lc|U32 c +ADMpR |bool |is_uni_alnum |UV c +ADMpR |bool |is_uni_alnumc |UV c +ADMpR |bool |is_uni_idfirst |UV c +ADMpR |bool |is_uni_alpha |UV c ADMpPR |bool |is_uni_ascii |UV c ADMpPR |bool |is_uni_blank |UV c ADMpPR |bool |is_uni_space |UV c ADMpPR |bool |is_uni_cntrl |UV c -ADMpPR |bool |is_uni_graph |UV c -ADMpPR |bool |is_uni_digit |UV c -ADMpPR |bool |is_uni_upper |UV c -ADMpPR |bool |is_uni_lower |UV c -ADMpPR |bool |is_uni_print |UV c -ADMpPR |bool |is_uni_punct |UV c +ADMpR |bool |is_uni_graph |UV c +ADMpR |bool |is_uni_digit |UV c +ADMpR |bool |is_uni_upper |UV c +ADMpR |bool |is_uni_lower |UV c +ADMpR |bool |is_uni_print |UV c +ADMpR |bool |is_uni_punct |UV c ADMpPR |bool |is_uni_xdigit |UV c AMp |UV |to_uni_upper |UV c|NN U8 *p|NN STRLEN *lenp AMp |UV |to_uni_title |UV c|NN U8 *p|NN STRLEN *lenp -ADMpPR |bool |isIDFIRST_lazy |NN const char* p -ADMpPR |bool |isALNUM_lazy |NN const char* p +ADMpR |bool |isIDFIRST_lazy |NN const char* p +ADMpR |bool |isALNUM_lazy |NN const char* p #ifdef PERL_IN_UTF8_C -snR |U8 |to_lower_latin1|const U8 c|NULLOK U8 *p|NULLOK STRLEN *lenp -inPR |bool |is_utf8_cp_above_31_bits|NN const U8 * const s|NN const U8 * const e +snR |U8 |to_lower_latin1|const U8 c|NULLOK U8 *p|NULLOK STRLEN *lenp \ + |const char dummy +inR |bool |is_utf8_cp_above_31_bits|NN const U8 * const s|NN const U8 * const e #endif #if defined(PERL_IN_UTF8_C) || defined(PERL_IN_REGCOMP_C) || defined(PERL_IN_REGEXEC_C) EXp |UV |_to_fold_latin1|const U8 c|NN U8 *p|NN STRLEN *lenp|const unsigned int flags @@ -719,33 +748,33 @@ p |UV |_to_upper_title_latin1|const U8 c|NN U8 *p|NN STRLEN *lenp|const char S_o AMp |UV |to_uni_lower |UV c|NN U8 *p|NN STRLEN *lenp AMmp |UV |to_uni_fold |UV c|NN U8 *p|NN STRLEN *lenp AMp |UV |_to_uni_fold_flags|UV c|NN U8 *p|NN STRLEN *lenp|U8 flags -ADMpPR |bool |is_uni_alnum_lc|UV c -ADMpPR |bool |is_uni_alnumc_lc|UV c -ADMpPR |bool |is_uni_idfirst_lc|UV c +ADMpR |bool |is_uni_alnum_lc|UV c +ADMpR |bool |is_uni_alnumc_lc|UV c +ADMpR |bool |is_uni_idfirst_lc|UV c AMpR |bool |_is_uni_perl_idcont|UV c AMpR |bool |_is_uni_perl_idstart|UV c -ADMpPR |bool |is_uni_alpha_lc|UV c +ADMpR |bool |is_uni_alpha_lc|UV c ADMpPR |bool |is_uni_ascii_lc|UV c ADMpPR |bool |is_uni_space_lc|UV c ADMpPR |bool |is_uni_blank_lc|UV c ADMpPR |bool |is_uni_cntrl_lc|UV c -ADMpPR |bool |is_uni_graph_lc|UV c -ADMpPR |bool |is_uni_digit_lc|UV c -ADMpPR |bool |is_uni_upper_lc|UV c -ADMpPR |bool |is_uni_lower_lc|UV c -ADMpPR |bool |is_uni_print_lc|UV c -ADMpPR |bool |is_uni_punct_lc|UV c +ADMpR |bool |is_uni_graph_lc|UV c +ADMpR |bool |is_uni_digit_lc|UV c +ADMpR |bool |is_uni_upper_lc|UV c +ADMpR |bool |is_uni_lower_lc|UV c +ADMpR |bool |is_uni_print_lc|UV c +ADMpR |bool |is_uni_punct_lc|UV c ADMpPR |bool |is_uni_xdigit_lc|UV c -AnidRP |bool |is_utf8_invariant_string|NN const U8* const s|STRLEN const len +AnidR |bool |is_utf8_invariant_string|NN const U8* const s|STRLEN const len AmnpdRP |bool |is_ascii_string|NN const U8* const s|const STRLEN len AmnpdRP |bool |is_invariant_string|NN const U8* const s|const STRLEN len AnpdD |STRLEN |is_utf8_char |NN const U8 *s Abmnpd |STRLEN |is_utf8_char_buf|NN const U8 *buf|NN const U8 *buf_end -AnipdP |bool |is_utf8_string |NN const U8 *s|const STRLEN len -AnidP |bool |is_utf8_string_flags \ +AnipdR |bool |is_utf8_string |NN const U8 *s|const STRLEN len +AnidR |bool |is_utf8_string_flags \ |NN const U8 *s|const STRLEN len|const U32 flags -AnidP |bool |is_strict_utf8_string|NN const U8 *s|const STRLEN len -AnidP |bool |is_c9strict_utf8_string|NN const U8 *s|const STRLEN len +AnidR |bool |is_strict_utf8_string|NN const U8 *s|const STRLEN len +AnidR |bool |is_c9strict_utf8_string|NN const U8 *s|const STRLEN len Anpdmb |bool |is_utf8_string_loc \ |NN const U8 *s|const STRLEN len|NN const U8 **ep Andm |bool |is_utf8_string_loc_flags \ @@ -777,10 +806,16 @@ Anid |bool |is_utf8_fixed_width_buf_loclen_flags \ |NULLOK const U8 **ep|NULLOK STRLEN *el|const U32 flags AmndP |bool |is_utf8_valid_partial_char \ |NN const U8 * const s|NN const U8 * const e -AnidP |bool |is_utf8_valid_partial_char_flags \ +AnidR |bool |is_utf8_valid_partial_char_flags \ |NN const U8 * const s|NN const U8 * const e|const U32 flags AMpR |bool |_is_uni_FOO|const U8 classnum|const UV c -AMpR |bool |_is_utf8_FOO|const U8 classnum|NN const U8 *p +AMpR |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 +AMpR |bool |_is_utf8_FOO_with_len|const U8 classnum|NN const U8 *p \ + |NN const U8 * const e ADMpR |bool |is_utf8_alnum |NN const U8 *p ADMpR |bool |is_utf8_alnumc |NN const U8 *p ADMpR |bool |is_utf8_idfirst|NN const U8 *p @@ -789,8 +824,10 @@ AMpR |bool |_is_utf8_idcont|NN const U8 *p AMpR |bool |_is_utf8_idstart|NN const U8 *p AMpR |bool |_is_utf8_xidcont|NN const U8 *p AMpR |bool |_is_utf8_xidstart|NN const U8 *p -AMpR |bool |_is_utf8_perl_idcont|NN const U8 *p -AMpR |bool |_is_utf8_perl_idstart|NN const U8 *p +AMpR |bool |_is_utf8_perl_idcont_with_len|NN const U8 *p \ + |NN const U8 * const e +AMpR |bool |_is_utf8_perl_idstart_with_len|NN const U8 *p \ + |NN const U8 * const e ADMpR |bool |is_utf8_idcont |NN const U8 *p ADMpR |bool |is_utf8_xidcont |NN const U8 *p ADMpR |bool |is_utf8_alpha |NN const U8 *p @@ -818,6 +855,7 @@ pP |I32 |keyword |NN const char *name|I32 len|bool all_keywords s |void |inplace_aassign |NN OP* o #endif Ap |void |leave_scope |I32 base +p |void |notify_parser_that_changed_to_utf8 : Public lexer API AMpd |void |lex_start |NULLOK SV* line|NULLOK PerlIO *rsfp|U32 flags AMpd |bool |lex_bufutf8 @@ -879,7 +917,7 @@ EMpRX |bool |grok_bslash_o |NN char** s|NN UV* uv \ |const bool utf8 EMiR |char*|form_short_octal_warning|NN const char * const s \ |const STRLEN len -EiPRn |I32 |regcurly |NN const char *s +EiRn |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 Apd |int |grok_infnan |NN const char** sp|NN const char *send @@ -1203,9 +1241,9 @@ ApdO |HV* |get_hv |NN const char *name|I32 flags ApdO |CV* |get_cv |NN const char* name|I32 flags Apd |CV* |get_cvn_flags |NN const char* name|STRLEN len|I32 flags #ifdef WIN32 -ApPM |char* |my_setlocale |int category|NULLOK const char* locale +ApM |char* |my_setlocale |int category|NULLOK const char* locale #else -AmPM |char* |my_setlocale |int category|NULLOK const char* locale +AmM |char* |my_setlocale |int category|NULLOK const char* locale #endif ApOM |int |init_i18nl10n |int printwarn ApOM |int |init_i18nl14n |int printwarn @@ -1243,7 +1281,7 @@ ApM |SV* |regclass_swash |NULLOK const regexp *prog \ |NN const struct regnode *node|bool doinit \ |NULLOK SV **listsvp|NULLOK SV **altsvp #if defined(PERL_IN_REGCOMP_C) || defined(PERL_IN_PERL_C) || defined(PERL_IN_UTF8_C) -AMpR |SV* |_new_invlist_C_array|NN const UV* const list +EXpR |SV* |_new_invlist_C_array|NN const UV* const list EXMp |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 \ @@ -1486,7 +1524,7 @@ Apd |char* |sv_collxfrm_flags |NN SV *const sv|NN STRLEN *const nxp|I32 const fl Apd |int |getcwd_sv |NN SV* sv Apd |void |sv_dec |NULLOK SV *const sv Apd |void |sv_dec_nomg |NULLOK SV *const sv -Ap |void |sv_dump |NN SV* sv +Ap |void |sv_dump |NULLOK SV* sv ApdR |bool |sv_derived_from|NN SV* sv|NN const char *const name 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 @@ -1511,7 +1549,7 @@ Apmdb |void |sv_insert |NN SV *const bigstr|const STRLEN offset \ |const STRLEN len|NN const char *const little \ |const STRLEN littlelen Apd |void |sv_insert_flags|NN SV *const bigstr|const STRLEN offset|const STRLEN len \ - |NN const char *const little|const STRLEN littlelen|const U32 flags + |NN const char *little|const STRLEN littlelen|const U32 flags Apd |int |sv_isa |NULLOK SV* sv|NN const char *const name Apd |int |sv_isobject |NULLOK SV* sv Apd |STRLEN |sv_len |NULLOK SV *const sv @@ -1522,9 +1560,7 @@ Apd |void |sv_magic |NN SV *const sv|NULLOK SV *const obj|const int how \ 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 -#ifndef PERL_NO_INLINE_FUNCTIONS Ein |bool |sv_only_taint_gmagic|NN SV *sv -#endif : exported for re.pm EXp |MAGIC *|sv_magicext_mglob|NN SV *sv ApdbmR |SV* |sv_mortalcopy |NULLOK SV *const oldsv @@ -1566,6 +1602,7 @@ Apd |SV* |sv_setref_pvn |NN SV *const rv|NULLOK const char *const classname \ |NN const char *const pv|const STRLEN n Apd |void |sv_setpv |NN SV *const sv|NULLOK const char *const ptr Apd |void |sv_setpvn |NN SV *const sv|NULLOK const char *const ptr|const STRLEN len +Apd |char *|sv_setpv_bufsize|NN SV *const sv|const STRLEN cur|const STRLEN len Xp |void |sv_sethek |NN SV *const sv|NULLOK const HEK *const hek Apmdb |void |sv_setsv |NN SV *dstr|NULLOK SV *sstr Apmdb |void |sv_taint |NN SV* sv @@ -1589,8 +1626,8 @@ 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 I32 svmax|NULLOK bool *const maybe_tainted ApR |NV |str_to_version |NN SV *sv -ApRM |SV* |swash_init |NN const char* pkg|NN const char* name|NN SV* listsv|I32 minbits|I32 none -ApM |UV |swash_fetch |NN SV *swash|NN const U8 *ptr|bool do_utf8 +EXpRM |SV* |swash_init |NN const char* pkg|NN const char* name|NN SV* listsv|I32 minbits|I32 none +EXpM |UV |swash_fetch |NN SV *swash|NN const U8 *ptr|bool do_utf8 #ifdef PERL_IN_REGCOMP_C EiMR |SV* |add_cp_to_invlist |NULLOK SV* invlist|const UV cp EiM |void |invlist_set_len|NN SV* const invlist|const UV len|const bool offset @@ -1650,7 +1687,7 @@ EXMpR |SV* |_get_swash_invlist|NN SV* const swash EXMpR |HV* |_swash_inversion_hash |NN SV* const swash #endif #if defined(PERL_IN_REGCOMP_C) || defined(PERL_IN_REGEXEC_C) -ApM |SV* |_get_regclass_nonbitmap_data \ +EXpM |SV* |_get_regclass_nonbitmap_data \ |NULLOK const regexp *prog \ |NN const struct regnode *node \ |bool doinit \ @@ -1672,13 +1709,32 @@ ApdD |UV |to_utf8_case |NN const U8 *p \ |NN SV **swashp \ |NN const char *normal| \ NULLOK const char *special +pM |char * |_byte_dump_string \ + |NN const U8 * s \ + |const STRLEN len \ + |const bool format #if defined(PERL_IN_UTF8_C) +inR |bool |does_utf8_overflow|NN const U8 * const s|NN const U8 * e +inR |bool |is_utf8_overlong_given_start_byte_ok|NN const U8 * const s|const STRLEN len +inR |bool |isFF_OVERLONG |NN const U8 * const s|const STRLEN len sMR |char * |unexpected_non_continuation_text \ |NN const U8 * const s \ - |const STRLEN print_len \ + |STRLEN print_len \ |const STRLEN non_cont_byte_pos \ |const STRLEN expect_len -sM |char * |_byte_dump_string|NN const U8 * s|const STRLEN len +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 s |UV |_to_utf8_case |const UV uv1 \ |NN const U8 *p \ |NN U8* ustrp \ @@ -1687,18 +1743,22 @@ s |UV |_to_utf8_case |const UV uv1 \ |NN const char *normal \ |NULLOK const char *special #endif -Apbmd |UV |to_utf8_lower |NN const U8 *p|NN U8* ustrp|NULLOK STRLEN *lenp -AMp |UV |_to_utf8_lower_flags |NN const U8 *p|NN U8* ustrp \ - |NULLOK STRLEN *lenp|bool flags -Apbmd |UV |to_utf8_upper |NN const U8 *p|NN U8* ustrp|NULLOK STRLEN *lenp -AMp |UV |_to_utf8_upper_flags |NN const U8 *p|NN U8* ustrp \ - |NULLOK STRLEN *lenp|bool flags -Apbmd |UV |to_utf8_title |NN const U8 *p|NN U8* ustrp|NULLOK STRLEN *lenp -AMp |UV |_to_utf8_title_flags |NN const U8 *p|NN U8* ustrp \ - |NULLOK STRLEN *lenp|bool flags -Apbmd |UV |to_utf8_fold |NN const U8 *p|NN U8* ustrp|NULLOK STRLEN *lenp -AMp |UV |_to_utf8_fold_flags|NN const U8 *p|NN U8* ustrp \ - |NULLOK STRLEN *lenp|U8 flags +ApbmdD |UV |to_utf8_lower |NN const U8 *p|NN U8* ustrp|NULLOK STRLEN *lenp +AMp |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 +AMp |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 +AMp |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 +AMp |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 #if defined(PERL_IN_MG_C) || defined(PERL_IN_PP_C) pn |bool |translate_substr_offsets|STRLEN curlen|IV pos1_iv \ |bool pos1_is_uv|IV len_iv \ @@ -1718,11 +1778,17 @@ Ap |void |unsharepvn |NULLOK const char* sv|I32 len|U32 hash p |void |unshare_hek |NULLOK HEK* hek : Used in perly.y p |void |utilize |int aver|I32 floor|NULLOK OP* version|NN OP* idop|NULLOK OP* arg +ApM |void |_force_out_malformed_utf8_message \ + |NN const U8 *const p|NN const U8 * const e|const U32 flags \ + |const bool die_here Ap |U8* |utf16_to_utf8 |NN U8* p|NN U8 *d|I32 bytelen|NN I32 *newlen Ap |U8* |utf16_to_utf8_reversed|NN U8* p|NN U8 *d|I32 bytelen|NN I32 *newlen AdpPR |STRLEN |utf8_length |NN const U8* s|NN const U8 *e -AipdPR |IV |utf8_distance |NN const U8 *a|NN const U8 *b -AipdPRn |U8* |utf8_hop |NN const U8 *s|SSize_t off +AipdR |IV |utf8_distance |NN const U8 *a|NN const U8 *b +AipdRn |U8* |utf8_hop |NN const U8 *s|SSize_t off +AipdRn |U8* |utf8_hop_back|NN const U8 *s|SSize_t off|NN const U8 *start +AipdRn |U8* |utf8_hop_forward|NN const U8 *s|SSize_t off|NN const U8 *end +AipdRn |U8* |utf8_hop_safe |NN const U8 *s|SSize_t off|NN const U8 *start|NN const U8 *end ApMd |U8* |utf8_to_bytes |NN U8 *s|NN STRLEN *len Apd |int |bytes_cmp_utf8 |NN const U8 *b|STRLEN blen|NN const U8 *u \ |STRLEN ulen @@ -1731,18 +1797,26 @@ ApMd |U8* |bytes_to_utf8 |NN const U8 *s|NN STRLEN *len ApdD |UV |utf8_to_uvchr |NN const U8 *s|NULLOK STRLEN *retlen ApdD |UV |utf8_to_uvuni |NN const U8 *s|NULLOK STRLEN *retlen ApMD |UV |valid_utf8_to_uvuni |NN const U8 *s|NULLOK STRLEN *retlen -Amd |UV |utf8_to_uvchr_buf |NN const U8 *s|NN const U8 *send|NULLOK STRLEN *retlen +Aopd |UV |utf8_to_uvchr_buf |NN const U8 *s|NN const U8 *send|NULLOK STRLEN *retlen ApdD |UV |utf8_to_uvuni_buf |NN const U8 *s|NN const U8 *send|NULLOK STRLEN *retlen pM |bool |check_utf8_print |NN const U8 *s|const STRLEN len -Adp |UV |utf8n_to_uvchr |NN const U8 *s|STRLEN curlen|NULLOK STRLEN *retlen|U32 flags +Adop |UV |utf8n_to_uvchr |NN const U8 *s \ + |STRLEN curlen \ + |NULLOK STRLEN *retlen \ + |const U32 flags +Adp |UV |utf8n_to_uvchr_error|NN const U8 *s \ + |STRLEN curlen \ + |NULLOK STRLEN *retlen \ + |const U32 flags \ + |NULLOK U32 * errors AipnR |UV |valid_utf8_to_uvchr |NN const U8 *s|NULLOK STRLEN *retlen Ap |UV |utf8n_to_uvuni|NN const U8 *s|STRLEN curlen|NULLOK STRLEN *retlen|U32 flags Adm |U8* |uvchr_to_utf8 |NN U8 *d|UV uv Ap |U8* |uvuni_to_utf8 |NN U8 *d|UV uv Adm |U8* |uvchr_to_utf8_flags |NN U8 *d|UV uv|UV flags -Apd |U8* |uvoffuni_to_utf8_flags |NN U8 *d|UV uv|UV flags +Apd |U8* |uvoffuni_to_utf8_flags |NN U8 *d|UV uv|const UV flags Ap |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 @@ -1789,10 +1863,8 @@ Am |I32 |whichsig |NN const char* sig 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 -#ifndef PERL_NO_INLINE_FUNCTIONS : used to check for NULs in pathnames and other names AiR |bool |is_safe_syscall|NN const char *pv|STRLEN len|NN const char *what|NN const char *op_name -#endif #ifdef PERL_CORE inR |bool |should_warn_nl|NN const char *pv #endif @@ -1800,8 +1872,10 @@ inR |bool |should_warn_nl|NN const char *pv p |void |write_to_stderr|NN SV* msv : Used in op.c p |int |yyerror |NN const char *const s +p |void |yyquit +pr |void |abort_execution|NN const char * const msg|NN const char * const name p |int |yyerror_pv |NN const char *const s|U32 flags -p |int |yyerror_pvn |NN const char *const s|STRLEN len|U32 flags +p |int |yyerror_pvn |NULLOK const char *const s|STRLEN len|U32 flags : Used in perly.y, and by Data::Alias EXp |int |yylex p |void |yyunlex @@ -1893,7 +1967,7 @@ Apdmb |void |sv_force_normal|NN SV *sv Apd |void |sv_force_normal_flags|NN SV *const sv|const U32 flags pX |SSize_t|tmps_grow_p |SSize_t ix Apd |SV* |sv_rvweaken |NN SV *const sv -AnpPMd |SV* |sv_get_backrefs|NN SV *const sv +AnpMd |SV* |sv_get_backrefs|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 Ap |OP* |newANONATTRSUB |I32 floor|NULLOK OP *proto|NULLOK OP *attrs|NULLOK OP *block @@ -1946,7 +2020,7 @@ Ap |void |sys_intern_dup |NN struct interp_intern* src|NN struct interp_intern* # endif #endif -AmopP |const XOP * |custom_op_xop |NN const OP *o +Amop |const XOP * |custom_op_xop |NN const OP *o ApR |const char * |custom_op_name |NN const OP *o ApR |const char * |custom_op_desc |NN const OP *o pRX |XOPRETANY |custom_op_get_field |NN const OP *o|const xop_flags_enum field @@ -2241,11 +2315,17 @@ Ei |regnode*|handle_named_backref|NN RExC_state_t *pRExC_state \ |NN I32 *flagp \ |NN char * parse_start \ |char ch -EsnP |unsigned int|regex_set_precedence|const U8 my_operator +EsnR |unsigned int|regex_set_precedence|const U8 my_operator Es |regnode*|handle_regex_sets|NN RExC_state_t *pRExC_state \ |NULLOK SV ** return_invlist \ |NN I32 *flagp|U32 depth \ |NN char * const oregcomp_parse +#if defined(DEBUGGING) && defined(ENABLE_REGEX_SETS_DEBUGGING) +Es |void |dump_regex_sets_structures \ + |NN RExC_state_t *pRExC_state \ + |NN AV * stack \ + |const IV fence|NN AV * fence_stack +#endif Es |void|parse_lparen_question_flags|NN RExC_state_t *pRExC_state Es |regnode*|reg_node |NN RExC_state_t *pRExC_state|U8 op Es |regnode*|regpiece |NN RExC_state_t *pRExC_state \ @@ -2258,7 +2338,7 @@ Es |bool |grok_bslash_N |NN RExC_state_t *pRExC_state \ |const bool strict \ |const U32 depth Es |void |reginsert |NN RExC_state_t *pRExC_state \ - |U8 op|NN regnode *opnd|U32 depth + |U8 op|NN regnode *operand|U32 depth Es |void |regtail |NN RExC_state_t * pRExC_state \ |NN const regnode * const p \ |NN const regnode * const val \ @@ -2333,8 +2413,8 @@ 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 -EnPs |const char *|cntrl_to_mnemonic|const U8 c -EnPs |int |edit_distance |NN const UV *src \ +EnsR |const char *|cntrl_to_mnemonic|const U8 c +EnsR |int |edit_distance |NN const UV *src \ |NN const UV *tgt \ |const STRLEN x \ |const STRLEN y \ @@ -2381,25 +2461,31 @@ Es |U8 |regtail_study |NN RExC_state_t *pRExC_state \ # endif #endif +#if defined(PERL_IN_REGEXEC_C) || defined(PERL_IN_UTF8_C) +EXRpM |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 +#endif + #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 |SSize_t|regmatch |NN regmatch_info *reginfo|NN char *startpos|NN regnode *prog -ERs |I32 |regrepeat |NN regexp *prog|NN char **startposp \ +WERs |I32 |regrepeat |NN regexp *prog|NN char **startposp \ |NN const regnode *p \ |NN regmatch_info *const reginfo \ - |I32 max \ - |int depth + |I32 max ERs |bool |regtry |NN regmatch_info *reginfo|NN char **startposp ERs |bool |reginclass |NULLOK regexp * const prog \ |NN const regnode * const n \ |NN const U8 * const p \ |NN const U8 * const p_end \ |bool const utf8_target -Es |CHECKPOINT|regcppush |NN const regexp *rex|I32 parenfloor\ +WEs |CHECKPOINT|regcppush |NN const regexp *rex|I32 parenfloor\ |U32 maxopenparen -Es |void |regcppop |NN regexp *rex\ - |NN U32 *maxopenparen_p +WEs |void |regcppop |NN regexp *rex|NN U32 *maxopenparen_p +WEs |void |regcp_restore |NN regexp *rex|I32 ix|NN U32 *maxopenparen_p ERsn |U8* |reghop3 |NN U8 *s|SSize_t off|NN const U8 *lim ERsn |U8* |reghop4 |NN U8 *s|SSize_t off|NN const U8 *llim \ |NN const U8 *rlim @@ -2553,11 +2639,11 @@ s |char* |force_word |NN char *start|int token|int check_keyword \ |int allow_pack s |SV* |tokeq |NN SV *sv sR |char* |scan_const |NN char *start -iR |SV* |get_and_check_backslash_N_name|NN const char* s \ +sR |SV* |get_and_check_backslash_N_name|NN const char* s \ |NN const char* const e sR |char* |scan_formline |NN char *s sR |char* |scan_heredoc |NN char *s -s |char* |scan_ident |NN char *s|NN char *dest \ +s |char* |scan_ident |NN char *s|NN char *dest \ |STRLEN destlen|I32 ck_uni sR |char* |scan_inputsymbol|NN char *start sR |char* |scan_pat |NN char *start|I32 type @@ -2583,7 +2669,7 @@ s |void |force_ident_maybe_lex|char pit s |void |incline |NN const char *s s |int |intuit_method |NN char *s|NULLOK SV *ioname|NULLOK CV *cv s |int |intuit_more |NN char *s -s |I32 |lop |I32 f|int x|NN char *s +s |I32 |lop |I32 f|U8 x|NN char *s rs |void |missingterm |NULLOK char *s s |void |no_op |NN const char *const what|NULLOK char *s s |int |pending_ident @@ -2633,7 +2719,7 @@ s |void |print_collxfrm_input_and_return \ && (defined(PERL_IN_LOCALE_C) || defined (PERL_EXT_POSIX)) ApM |bool |_is_cur_LC_category_utf8|int category # ifdef DEBUGGING -AMnPpR |char * |_setlocale_debug_string|const int category \ +AMnpR |char * |_setlocale_debug_string|const int category \ |NULLOK const char* const locale \ |NULLOK const char* const retval # endif @@ -2671,17 +2757,24 @@ sRM |UV |check_locale_boundary_crossing \ |const UV result \ |NN U8* const ustrp \ |NN STRLEN *lenp -iR |bool |is_utf8_common |NN const U8 *const p|NN SV **swash|NN const char * const swashname|NULLOK SV* const invlist +iR |bool |is_utf8_common |NN const U8 *const p \ + |NN SV **swash \ + |NN const char * const swashname \ + |NULLOK SV* const invlist +iR |bool |is_utf8_common_with_len|NN const U8 *const p \ + |NN const U8 *const e \ + |NN SV **swash \ + |NN const char * const swashname \ + |NULLOK SV* const invlist sR |SV* |swatch_get |NN SV* swash|UV start|UV span sRM |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 -#ifndef PERL_NO_INLINE_FUNCTIONS -AiMn |void |append_utf8_from_native_byte|const U8 byte|NN U8** dest -#endif +EXiMn |void |append_utf8_from_native_byte|const U8 byte|NN U8** dest +Apd |void |sv_set_undef |NN SV *sv 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 @@ -2882,8 +2975,8 @@ Apbm |GV* |gv_SVadd |NULLOK GV *gv #if defined(PERL_IN_UTIL_C) s |bool |ckwarn_common |U32 w #endif -Apo |bool |ckwarn |U32 w -Apo |bool |ckwarn_d |U32 w +ApoP |bool |ckwarn |U32 w +ApoP |bool |ckwarn_d |U32 w : FIXME - exported for ByteLoader - public or private? XEopMR |STRLEN *|new_warnings_bitfield|NULLOK STRLEN *buffer \ |NN const char *const bits|STRLEN size @@ -2925,7 +3018,7 @@ Apnod |Size_t |my_strlcat |NULLOK char *dst|NULLOK const char *src|Size_t size Apnod |Size_t |my_strlcpy |NULLOK char *dst|NULLOK const char *src|Size_t size #endif -Apdn |bool |isinfnan |NV nv +APpdn |bool |isinfnan |NV nv p |bool |isinfnansv |NN SV *sv #if !defined(HAS_SIGNBIT)