Algorithm-AM
view release on metacpan or search on metacpan
sv_magic((SV *) self, svguts, PERL_MAGIC_ext, NULL, 0);
SvRMAGICAL_off((SV *) self);
MAGIC *magic = mg_find((SV *)self, PERL_MAGIC_ext);
magic->mg_virtual = &AMguts_vtab;
mg_magical((SV *) self);
void
_fillandcount(...)
PPCODE:
/* Input args are the AM object ($self), number of features in each
* lattice, and a flag to indicate whether to count occurrences
* (true) or pointers (false), also known as linear/quadratic.
*/
HV *self = hash_pointer_from_stack(0);
SV **lattice_sizes_input = array_pointer_from_stack(1);
UV linear_flag = unsigned_int_from_stack(2);
MAGIC *magic = mg_find((SV *)self, PERL_MAGIC_ext);
AM_GUTS *guts = (AM_GUTS *)SvPVX(magic->mg_obj);
/*
* We initialize the memory for the sublattices, including setting up the
* linked lists.
*/
AM_SHORT **lattice_list = guts->lattice_list;
AM_SUPRA **supra_list = guts->supra_list;
count[1] *= p2->count;
carry(count, 0);
carry(count, 1);
count[0] *= p3->count;
count[1] *= p3->count;
count[2] *= p3->count;
carry(count, 0);
carry(count, 1);
carry(count, 2);
if(!linear_flag){
/* If scoring is pointers (quadratic) instead of linear*/
AM_LONG pointercount = 0;
for (int i = 0; i < length; ++i) {
pointercount += (AM_LONG) SvUV(*hv_fetch(context_size,
(char *) (subcontext + (NUM_LATTICES * intersectlist[i])), 8, 0));
}
if (pointercount & 0xffff0000) {
AM_SHORT pchi = (AM_SHORT) (high_bits(pointercount));
AM_SHORT pclo = (AM_SHORT) (low_bits(pointercount));
AM_LONG hiprod[6];
3.10 2016-06-05 21:03:55+09:00 Asia/Tokyo
Fixed bad typos in citation names
Improved analogize documentation (#50)
Changed percentage printing format (#56)
3.09 2015-08-28 20:29:15+09:00 Asia/Tokyo
removed random_outcome (addition was misguided)
updated documentation
added data file comment functionality
3.08 2015-06-07 20:39:47+09:00 Asia/Tokyo
fixed regression in XS (GH #42)
added include_nulls, include_given, and linear flags to analogize.pl
3.07 2015-06-03 21:01:25+09:00 Asia/Tokyo
Add detailed gang printing option to analogize
Fix incorrect gang handling
Fix for printing gangs with false values as feature names
3.06 2015-05-31 20:43:59+09:00 Asia/Tokyo
Added analogize for command line classification
Fixed POD inaccuracies
3.05 2014-10-19 20:53:02+09:00 Asia/Tokyo
XS efficiency improvements, and tweaks in an attempt to comply with C89 and fix ActiveState builds.
3.04 2014-10-11 22:24:48+09:00 Asia/Tokyo
lib/Algorithm/AM.pm view on Meta::CPAN
if($self->{context_to_class}->{$context} != $class){
$self->{context_to_class}->{$context} = 0;
}
}
else {
$self->{context_to_class}->{$context} = $class;
}
}
# $nullcontext is all 0's, which is a context label for
# a training item that exactly matches the test item. Exclude
# the item if required, and set a flag that the test item was
# found in the training set.
if ( exists $self->{context_to_class}->{$nullcontext} ) {
$test_in_training = 1;
if($self->exclude_given){
delete $self->{context_to_class}->{$nullcontext};
$given_excluded = 1;
}
}
# initialize the results object to hold all of the configuration
# info.
$squeezed_a = $lc_a;
$squeezed_a =~ s/[\W_]//g; # No punct, including no underscore
$squeezed_b = $lc_b;
$squeezed_b =~ s/[\W_]//g;
return( $squeezed_a cmp $squeezed_b
or $lc_a cmp $lc_b
or $valid_a cmp $valid_b);
}
sub sort_api_lines # Sort lines of the form flags|return|name|args...
# by 'name'
{
$a =~ / ^ [^|]* \| [^|]* \| (\w+) /x; # 3rd field '|' is sep
my $a_name = $1;
$b =~ / ^ [^|]* \| [^|]* \| (\w+) /x;
my $b_name = $1;
return dictionary_order($a_name, $b_name);
}
1;
cop_hints_2hv|5.013007|5.013007|
cop_hints_fetch_pv|5.013007|5.013007|
cop_hints_fetch_pvn|5.013007|5.013007|
cop_hints_fetch_pvs|5.013007|5.013007|
cop_hints_fetch_sv|5.013007|5.013007|
CopHINTS_get|5.009004||Viu
CopHINTS_set|5.009004||Viu
CopLABEL|5.009005|5.009005|
CopLABEL_alloc|5.009005||Viu
CopLABEL_len|5.016000|5.016000|
CopLABEL_len_flags|5.016000|5.016000|
CopLINE|5.006000|5.006000|
CopLINE_dec|5.006000||Viu
CopLINE_inc|5.006000||Viu
CopLINE_set|5.006000||Viu
COP_SEQMAX_INC|5.021006||Viu
COP_SEQ_RANGE_HIGH|5.009005||Viu
COP_SEQ_RANGE_LOW|5.009005||Viu
CopSTASH|5.006000|5.003007|p
CopSTASH_eq|5.006000|5.003007|p
CopSTASH_ne|5.006000||Viu
CvANON|5.003007||Viu
CvANONCONST|5.021008||Viu
CvANONCONST_off|5.021008||Viu
CvANONCONST_on|5.021008||Viu
CvANON_off|5.003007||Viu
CvANON_on|5.003007||Viu
CvAUTOLOAD|5.015004||Viu
CvAUTOLOAD_off|5.015004||Viu
CvAUTOLOAD_on|5.015004||Viu
cv_ckproto|5.009004||Viu
cv_ckproto_len_flags|5.015004||xcViu
cv_clone|5.003007|5.003007|
CvCLONE|5.003007||Viu
CvCLONED|5.003007||Viu
CvCLONED_off|5.003007||Viu
CvCLONED_on|5.003007||Viu
cv_clone_into|5.017004||Viu
CvCLONE_off|5.003007||Viu
CvCLONE_on|5.003007||Viu
CvCONST|5.007001||Viu
CvCONST_off|5.007001||Viu
CVf_LEXICAL|5.021004||Viu
CVf_LVALUE|5.006000||Viu
CVf_METHOD|5.005000||Viu
CVf_NAMED|5.017004||Viu
CVf_NODEBUG|5.004000||Viu
cv_forget_slab|5.017002||Vi
CVf_SLABBED|5.017002||Viu
CVf_UNIQUE|5.004000||Viu
CVf_WEAKOUTSIDE|5.008001||Viu
cv_get_call_checker|5.013006|5.013006|
cv_get_call_checker_flags|5.027003|5.027003|
CvGV|5.003007|5.003007|
cvgv_from_hek|||ciu
cvgv_set|5.013003||cViu
CvGV_set|5.013003||Viu
CvHASEVAL|5.017002||Viu
CvHASEVAL_off|5.017002||Viu
CvHASEVAL_on|5.017002||Viu
CvHASGV|5.021004||Viu
CvHSCXT|5.021006||Viu
CvISXSUB|5.009004||Viu
CvNODEBUG_off|5.004000||Viu
CvNODEBUG_on|5.004000||Viu
CvOUTSIDE|5.003007||Viu
CvOUTSIDE_SEQ|5.008001||Viu
CvPADLIST|5.008001|5.008001|x
CvPADLIST_set|5.021006||Viu
CvPROTO|5.015004||Viu
CvPROTOLEN|5.015004||Viu
CvROOT|5.003007||Viu
cv_set_call_checker|5.013006|5.013006|
cv_set_call_checker_flags|5.021004|5.021004|
CvSLABBED|5.017002||Viu
CvSLABBED_off|5.017002||Viu
CvSLABBED_on|5.017002||Viu
CvSPECIAL|5.005003||Viu
CvSPECIAL_off|5.005003||Viu
CvSPECIAL_on|5.005003||Viu
CvSTART|5.003007||Viu
CvSTASH|5.003007|5.003007|
cvstash_set|5.013007||cViu
CvSTASH_set|5.013007||Viu
cv_undef|5.003007|5.003007|
cv_undef_flags|5.021004||Viu
CV_UNDEF_KEEP_NAME|5.021004||Viu
CvUNIQUE|5.004000||Viu
CvUNIQUE_off|5.004000||Viu
CvUNIQUE_on|5.004000||Viu
CvWEAKOUTSIDE|5.008001||Vi
CvWEAKOUTSIDE_off|5.008001||Viu
CvWEAKOUTSIDE_on|5.008001||Viu
CvXSUB|5.003007||Viu
CvXSUBANY|5.003007||Viu
CX_CUR|5.023008||Viu
cx_dump|5.003007||cVu
cx_dup|5.006000||cVu
CxEVAL_TXT_REFCNTED|5.025007||Viu
CxFOREACH|5.009003||Viu
CxHASARGS|5.010001||Viu
cxinc|5.003007||cVu
CXINC|5.003007||Viu
CxITERVAR|5.006000||Viu
CxLABEL|5.010001||Viu
CxLABEL_len|5.016000||Viu
CxLABEL_len_flags|5.016000||Viu
CX_LEAVE_SCOPE|5.023008||Viu
CxLVAL|5.010001||Viu
CxMULTICALL|5.009003||Viu
CxOLD_IN_EVAL|5.010001||Viu
CxOLD_OP_TYPE|5.010001||Viu
CxONCE|5.010001||Viu
CxPADLOOP|5.006000||Viu
CXp_FOR_DEF|5.027008||Viu
CXp_FOR_GV|5.023008||Viu
CXp_FOR_LVREF|5.021005||Viu
foldEQ|5.013002|5.013002|n
foldEQ_latin1|5.013008||cVnu
foldEQ_latin1_s2_folded|5.029007||Vniu
foldEQ_locale|5.013002|5.013002|n
FOLDEQ_LOCALE|5.019009||Viu
FOLDEQ_S1_ALREADY_FOLDED|5.015004||Viu
FOLDEQ_S1_FOLDS_SANE|5.021008||Viu
FOLDEQ_S2_ALREADY_FOLDED|5.015004||Viu
FOLDEQ_S2_FOLDS_SANE|5.021008||Viu
foldEQ_utf8|5.013002|5.007003|p
foldEQ_utf8_flags|5.013010||cVu
FOLDEQ_UTF8_NOMIX_ASCII|5.013010||Viu
FOLD_FLAGS_FULL|5.015006||Viu
FOLD_FLAGS_LOCALE|5.015006||Viu
FOLD_FLAGS_NOMIX_ASCII|5.017000||Viu
fopen|5.003007||Viu
forbid_setid|5.005000||Viu
force_ident|5.003007||Viu
force_ident_maybe_lex|5.017004||Viu
force_list|5.003007||Viu
force_next|5.003007||Viu
get_ANYOFM_contents|5.027009||Viu
GETATARGET|5.003007||Viu
get_aux_mg|5.011000||Viu
get_av|5.006000|5.003007|p
getc|5.003007||Viu
get_c_backtrace|5.021001||Vi
get_c_backtrace_dump|5.021001||V
get_context|5.006000|5.006000|nu
getc_unlocked|5.003007||Viu
get_cv|5.006000|5.003007|p
get_cvn_flags|5.009005|5.003007|p
get_cvs|5.011000|5.003007|p
getcwd_sv|5.007002|5.007002|
get_db_sub|||iu
get_debug_opts|5.008001||Viu
get_deprecated_property_msg|5.031010||cVniu
getegid|5.005000||Viu
getenv|5.005000||Viu
getenv_len|5.006000||Viu
geteuid|5.005000||Viu
getgid|5.005000||Viu
grok_atoUV|5.021010||cVni
grok_bin|5.007003|5.003007|p
grok_bin_oct_hex|5.031008||cVu
grok_bslash_c|5.013001||cViu
grok_bslash_N|5.017003||Viu
grok_bslash_o|5.013003||cViu
grok_bslash_x|5.017002||cViu
grok_hex|5.007003|5.003007|p
grok_infnan|5.021004|5.021004|
grok_number|5.007002|5.003007|p
grok_number_flags|5.021002|5.021002|
GROK_NUMERIC_RADIX|5.007002|5.003007|p
grok_numeric_radix|5.007002|5.003007|p
grok_oct|5.007003|5.003007|p
group_end|5.007003||Viu
GROUPP|5.005000||Viu
GROUPPN|5.031001||Viu
Groups_t|5.003007|5.003007|Vn
GRPASSWD|5.005000|5.005000|Vn
G_SCALAR|5.003007|5.003007|
G_UNDEF_FILL|5.013001||Viu
gv_efullname|5.003007|5.003007|du
GvEGV|5.003007||Viu
GvEGVx|5.013000||Viu
GvENAME|5.003007||Viu
GvENAME_HEK|5.015004||Viu
GvENAMELEN|5.015004||Viu
GvENAMEUTF8|5.015004||Viu
GvESTASH|5.003007||Viu
GVf_ASSUMECV|5.003007||Viu
gv_fetchfile|5.003007|5.003007|
gv_fetchfile_flags|5.009005|5.009005|
gv_fetchmeth|5.003007|5.003007|
gv_fetchmeth_autoload|5.007003|5.007003|
gv_fetchmeth_internal|5.021007||Viu
gv_fetchmethod|5.003007|5.003007|
gv_fetchmethod_autoload|5.004000|5.004000|
gv_fetchmethod_flags|5.015004||Viu
gv_fetchmethod_pv_flags|5.015004|5.015004|xu
gv_fetchmethod_pvn_flags|5.015004|5.015004|xu
gv_fetchmethod_sv_flags|5.015004|5.015004|xu
gv_fetchmeth_pv|5.015004|5.015004|
gv_fetchmeth_pv_autoload|5.015004|5.015004|
gv_fetchmeth_pvn|5.015004|5.015004|
gv_fetchmeth_pvn_autoload|5.015004|5.015004|
gv_fetchmeth_sv|5.015004|5.015004|
gv_fetchmeth_sv_autoload|5.015004|5.015004|
gv_fetchpv|5.003007|5.003007|
gv_fetchpvn|5.013006|5.013006|
gv_fetchpvn_flags|5.009002|5.003007|p
gv_fetchpvs|5.009004|5.003007|p
gv_fetchsv|5.009002|5.003007|p
gv_fetchsv_nomg|5.015003|5.015003|
GvFILE|5.006000||Viu
GvFILEGV|5.003007||Viu
GvFILE_HEK|5.009004||Viu
GvFILEx|5.019006||Viu
GVf_IMPORTED|5.003007||Viu
GVf_IMPORTED_AV|5.003007||Viu
GVf_IMPORTED_CV|5.003007||Viu
HVhek_KEYCANONICAL|5.010001||Viu
HVhek_MASK|5.008000||Viu
HVhek_PLACEHOLD|5.008000||Viu
HVhek_UNSHARED|5.009004||Viu
HVhek_UTF8|5.008000||Viu
HVhek_WASUTF8|5.008000||Viu
hv_iterinit|5.003007|5.003007|
hv_iterkey|5.003007|5.003007|
hv_iterkeysv|5.003007|5.003007|
hv_iternext|5.003007|5.003007|
hv_iternext_flags|5.008000|5.008000|x
hv_iternextsv|5.003007|5.003007|
HV_ITERNEXT_WANTPLACEHOLDERS|5.008000|5.008000|
hv_iterval|5.003007|5.003007|
HvKEYS|5.003007||Viu
hv_kill_backrefs|||xiu
hv_ksplit|5.003007|5.003007|u
HvLASTRAND_get|5.017011||Viu
HvLAZYDEL|5.003007||Viu
HvLAZYDEL_off|5.003007||Viu
HvLAZYDEL_on|5.003007||Viu
HvRITER_get|5.009003||Viu
hv_riter_p|5.009003|5.009003|u
hv_riter_set|5.009003|5.009003|u
HvRITER_set|5.009003||Viu
hv_scalar|5.009001|5.009001|
HvSHAREKEYS|5.003007||Viu
HvSHAREKEYS_off|5.003007||Viu
HvSHAREKEYS_on|5.003007||Viu
hv_store|5.003007|5.003007|
hv_store_ent|5.003007|5.003007|
hv_store_flags|5.008000|5.008000|xu
hv_storehek|5.019006||Viu
hv_stores|5.009004|5.003007|p
HvTOTALKEYS|5.007003||Viu
hv_undef|5.003007|5.003007|
hv_undef_flags|||ciu
HvUSEDKEYS|5.007003||Viu
HYPHEN_UTF8|5.017004||Viu
I16_MAX|5.003007||Viu
I16_MIN|5.003007||Viu
I16SIZE|5.006000|5.006000|Vn
I16TYPE|5.006000|5.006000|Vn
I_32|5.003007||Viu
I32_MAX|5.003007||Viu
I32_MAX_P1|5.007002||Viu
I32_MIN|5.003007||Viu
isUPPER_LC_utf8_safe|5.025009|5.006000|p
isUPPER_LC_uvchr|5.007001|5.007001|
isUPPER_uni|5.006000||Viu
isUPPER_utf8|5.031005|5.031005|
isUPPER_utf8_safe|5.025009|5.006000|p
isUPPER_uvchr|5.023009|5.006000|p
is_utf8_char|5.006000|5.006000|dn
IS_UTF8_CHAR|5.009003||Viu
isUTF8_CHAR|5.021001|5.006001|pn
is_utf8_char_buf|5.015008|5.015008|n
isUTF8_CHAR_flags|5.025005|5.025005|
is_utf8_char_helper|5.031004||cVnu
is_UTF8_CHAR_utf8_no_length_checks|5.021001||Viu
is_utf8_common|5.009003||Viu
is_utf8_cp_above_31_bits|5.025005||Vniu
is_utf8_fixed_width_buf_flags|5.025006|5.025006|n
is_utf8_fixed_width_buf_loc_flags|5.025006|5.025006|n
is_utf8_fixed_width_buf_loclen_flags|5.025006|5.025006|n
_is_utf8_FOO|5.031006||cVu
is_utf8_invariant_string|5.025005|5.011000|pn
is_utf8_invariant_string_loc|5.027001|5.027001|n
is_utf8_non_invariant_string|5.027007||cVni
is_utf8_overlong_given_start_byte_ok|5.025006||Vniu
_is_utf8_perl_idcont|5.031006||cVu
_is_utf8_perl_idstart|5.031006||cVu
isUTF8_POSSIBLY_PROBLEMATIC|5.023003||Viu
is_utf8_string|5.006001|5.006001|n
is_utf8_string_flags|5.025006|5.025006|n
is_utf8_string_loc|5.008001|5.008001|n
is_utf8_string_loc_flags|5.025006|5.025006|n
is_utf8_string_loclen|5.009003|5.009003|n
is_utf8_string_loclen_flags|5.025006|5.025006|n
is_utf8_valid_partial_char|5.025005|5.025005|n
is_utf8_valid_partial_char_flags|5.025005|5.025005|n
is_VERTWS_cp_high|5.017006||Viu
is_VERTWS_high|5.017006||Viu
isVERTWS_uni|5.017006||Viu
isVERTWS_utf8|5.017006||Viu
isVERTWS_utf8_safe|5.025009||Viu
isVERTWS_uvchr|5.023009||Viu
isWARNf_on|5.006001||Viu
isWARN_on|5.006000||Viu
isWARN_ONCE|5.006000||Viu
isWB|5.021009||Viu
MAXO|5.003007||Viu
MAXPATHLEN|5.006000||Viu
MAX_PORTABLE_UTF8_TWO_BYTE|5.011002||Viu
MAX_PRINT_A_FOR_USE_ONLY_BY_REGCOMP_DOT_C|5.021004||Viu
MAX_RECURSE_EVAL_NOCHANGE_DEPTH|5.009005||Viu
MAXSYSFD|5.003007||Viu
MAX_UNICODE_UTF8|5.027006||Viu
MAX_UNI_KEYWORD_INDEX|5.027011||Viu
MAX_UTF8_TWO_BYTE|5.019004||Viu
MAYBE_DEREF_GV|5.015003||Viu
MAYBE_DEREF_GV_flags|5.015003||Viu
MAYBE_DEREF_GV_nomg|5.015003||Viu
maybe_multimagic_gv|5.019004||Viu
mayberelocate|5.015006||Viu
MBOL|5.003007||Viu
MDEREF_ACTION_MASK|5.021007||Viu
MDEREF_AV_gvav_aelem|5.021007||Viu
MDEREF_AV_gvsv_vivify_rv2av_aelem|5.021007||Viu
MDEREF_AV_padav_aelem|5.021007||Viu
MDEREF_AV_padsv_vivify_rv2av_aelem|5.021007||Viu
MDEREF_AV_pop_rv2av_aelem|5.021007||Viu
MY_CXT_INIT_ARG|5.013005||Viu
MY_CXT_INIT_INTERP|5.009003||Viu
my_dirfd|5.009005|5.009005|nu
my_exit|5.003007|5.003007|
my_exit_jump|5.005000||Viu
my_failure_exit|5.004000|5.004000|u
my_fflush_all|5.006000|5.006000|u
my_fork|5.007003|5.007003|nu
my_kid|5.006000||Viu
my_lstat|5.013003||Viu
my_lstat_flags|5.013003||cViu
my_memrchr|5.027006||Vniu
my_mkostemp_cloexec|||niu
my_mkostemp|||niu
my_mkstemp_cloexec|||niu
my_mkstemp|||niu
my_nl_langinfo|5.027006||Vniu
my_pclose|5.003007|5.003007|u
my_popen|5.003007|5.003007|u
my_popen_list|5.007001|5.007001|u
my_setenv|5.003007|5.003007|
my_snprintf|5.009004|5.003007|pvn
my_socketpair|5.007003|5.007003|nu
my_sprintf|5.009003|5.003007|pdn
my_stat|5.013003||Viu
my_stat_flags|5.013003||cViu
my_strerror|5.021001||Viu
my_strftime|5.007002|5.007002|
my_strlcat|5.009004|5.003007|pn
my_strlcpy|5.009004|5.003007|pn
my_strnlen|5.027006|5.003007|pn
my_strtod|5.029010|5.029010|n
my_unexec|5.003007||Viu
my_vsnprintf|5.009004|5.009004|n
N0|5.029001||Viu
N10|5.029001||Viu
newATTRSUB|5.006000|5.006000|
newATTRSUB_x|5.019008||cVi
newAV|5.003007|5.003007|
newAVREF|5.003007|5.003007|u
newBINOP|5.003007|5.003007|
Newc|5.003007||Viu
new_collate|5.006000||Viu
newCONDOP|5.003007|5.003007|
new_constant|||iu
newCONSTSUB|5.004005|5.003007|p
newCONSTSUB_flags|5.015006|5.015006|
new_ctype|5.006000||Viu
newCVREF|5.003007|5.003007|u
newDEFSVOP|5.021006|5.021006|
newFORM|5.003007|5.003007|u
newFOROP|5.013007|5.013007|
newGIVENOP|5.009003|5.009003|
newGIVWHENOP|5.027008||Viu
newGP|||xiu
newGVgen|5.003007|5.003007|u
newGVgen_flags|5.015004|5.015004|u
newGVOP|5.003007|5.003007|
newGVREF|5.003007|5.003007|u
new_he|5.005000||Viu
newHV|5.003007|5.003007|
newHVhv|5.005000|5.005000|u
newHVREF|5.003007|5.003007|u
_new_invlist|5.013010||cViu
_new_invlist_C_array|5.015008||cViu
newIO|5.003007|5.003007|u
newLISTOP|5.003007|5.003007|
newSVavdefelem|5.019004||Viu
newSVhek|5.009003|5.009003|
newSViv|5.003007|5.003007|
newSVnv|5.006000|5.003007|
newSVOP|5.003007|5.003007|
newSVpadname|5.017004|5.017004|x
newSVpv|5.003007|5.003007|
newSVpvf|5.006000|5.004000|v
newSVpvf_nocontext|5.006000|5.006000|vn
newSVpvn|5.004005|5.003007|p
newSVpvn_flags|5.010001|5.003007|p
newSVpvn_share|5.007001|5.003007|p
newSVpvn_utf8|5.010001|5.003007|p
newSVpvs|5.009003|5.003007|p
newSVpvs_flags|5.010001|5.003007|p
newSVpv_share|5.013006|5.013006|
newSVpvs_share|5.009003|5.003007|p
newSVREF|5.003007|5.003007|u
newSVrv|5.003007|5.003007|
newSVsv|5.003007|5.003007|
newSVsv_flags|5.029009|5.003007|pocVu
newSVsv_nomg|5.029009|5.003007|p
newSV_type|5.009005|5.003007|p
newSVuv|5.006000|5.003007|p
newUNOP|5.003007|5.003007|
newUNOP_AUX|5.021007|5.021007|
new_version|5.009000|5.009000|
NEW_VERSION|5.019008||Viu
new_warnings_bitfield|||xciu
newWHENOP|5.027008|5.027008|
newWHILEOP|5.013007|5.013007|
Newx|5.009003|5.003007|p
Newxc|5.009003|5.003007|p
newXS|5.006000|5.006000|
newXS_deffile|5.021006||cViu
newXS_flags|5.009004|5.009004|xu
newXS_len_flags|5.015006||Vi
newXSproto|5.006000|5.006000|
Newxz|5.009003|5.003007|p
Newz|5.003007||Viu
nextargv|5.003007||Viu
nextchar|5.005000||Viu
NEXT_LINE_CHAR|5.007003||Viu
NEXT_OFF|5.005000||Viu
NEXTOPER|5.003007||Viu
next_symbol|5.007003||Viu
ninstr|5.003007|5.003007|n
OP_IS_DIRHOP|5.015003||Viu
OP_IS_FILETEST|5.006001||Viu
OP_IS_FILETEST_ACCESS|5.008001||Viu
OP_IS_INFIX_BIT|5.021009||Viu
OP_IS_NUMCOMPARE|5.015003||Viu
OP_IS_SOCKET|5.006001||Viu
OP_IS_STAT|5.031001||Viu
OpLASTSIB_set|5.021011|5.003007|p
op_linklist|5.013006|5.013006|
op_lvalue|5.013007|5.013007|x
op_lvalue_flags|||ciu
OP_LVALUE_NO_CROAK|5.015001||Viu
OpMAYBESIB_set|5.021011|5.003007|p
opmethod_stash|5.021007||Viu
OpMORESIB_set|5.021011|5.003007|p
OP_NAME|5.007003|5.007003|
op_null|5.007002|5.007002|
OPpALLOW_FAKE|5.015006||Viu
op_parent|5.025001|5.025001|n
OPpARG1_MASK|5.021004||Viu
OPpARG2_MASK|5.021004||Viu
parse_arithexpr|5.013008|5.013008|x
parse_barestmt|5.013007|5.013007|x
parse_block|5.013007|5.013007|x
parse_body|5.006000||Viu
parse_fullexpr|5.013008|5.013008|x
parse_fullstmt|5.013005|5.013005|x
parse_gv_stash_name|5.019004||Viu
parse_ident|5.017010||Viu
parse_label|5.013007|5.013007|x
parse_listexpr|5.013008|5.013008|x
parse_lparen_question_flags|5.017009||Viu
PARSE_OPTIONAL|5.013007|5.013007|
parser_dup|5.009000|5.009000|u
parser_free|5.009005||Viu
parser_free_nexttoke_ops|5.017006||Viu
parse_stmtseq|5.013006|5.013006|x
parse_subsignature|5.031003|5.031003|x
parse_termexpr|5.013008|5.013008|x
parse_unicode_opts|5.008001||Viu
parse_uniprop_string|5.027011||Viu
PATCHLEVEL|5.003007||Viu
PL_endav|5.005000||Viu
PL_Env|5.006000||Viu
PL_envgv|5.005000||Viu
PL_errgv|5.004005|5.003007|p
PL_error_count||5.003007|ponu
PL_errors|5.006000||Viu
PL_e_script|5.005000||Viu
PL_eval_root|5.005000||Viu
PL_evalseq|5.005000||Viu
PL_eval_start|5.005000||Viu
PL_exit_flags|5.006000|5.006000|
PL_exitlist|5.005000||Viu
PL_exitlistlen|5.005000||Viu
PL_expect||5.003007|ponu
PL_fdpid|5.005000||Viu
PL_filemode|5.005000||Viu
PL_firstgv|5.005000||Viu
PL_forkprocess|5.005000||Viu
PL_formtarget|5.005000||Viu
PL_GCB_invlist|5.021009||Viu
PL_generation|5.005000||Viu
regatom|5.005000||Viu
regbranch|5.005000||Viu
reg_check_named_buff_matched|5.009005||Vniu
regclass|5.005000||Viu
regcppop|5.005000||Viu
regcppush|5.005000||Viu
regcp_restore|5.025006||Viu
regcurly|5.013010||Vniu
REG_CUTGROUP_SEEN|5.019009||Viu
regdump|5.003007||cVu
regdump_extflags|5.009005||Viu
regdump_intflags|5.019002||Viu
regdupe_internal|5.009005||cVu
regexec_flags|5.005000||cVu
REGEX_SET|5.031009||Viu
regex_set_precedence|5.021010||Vniu
REG_EXTFLAGS_NAME_SIZE|5.020000||Viu
regfree_internal|5.009005||cVu
REG_GPOS_SEEN|5.019009||Viu
reghop3|5.007001||Vniu
reghop4|5.009005||Vniu
reghopmaybe3|5.007001||Vniu
reginclass|5.005000||Viu
REG_INFTY|5.004005||Viu
safesysfree|5.006000|5.006000|n
safesysmalloc|5.006000|5.006000|n
safesysrealloc|5.006000|5.006000|n
SAFE_TRIE_NODENUM|5.009002||Viu
same_dirent|5.003007||Viu
SANE_ERRSV|5.031003|5.031003|
SANY|5.003007||Viu
save_adelete|5.011000|5.011000|u
SAVEADELETE|5.011000||Viu
save_aelem|5.004005|5.004005|u
save_aelem_flags|5.011000|5.011000|u
save_alloc|5.006000|5.006000|u
save_aptr|5.003007|5.003007|
save_ary|5.003007|5.003007|
SAVEBOOL|5.008001|5.008001|
save_bool|5.008001||cVu
save_clearsv|5.003007||cVu
SAVECLEARSV|5.003007||Vi
SAVECOMPILEWARNINGS|5.009004||Viu
SAVECOMPPAD|5.006000||Vi
SAVECOPFILE|5.006000||Viu
save_freesv|5.010001||cVu
SAVEf_SETMAGIC|5.011000||Viu
SAVEGENERICPV|5.006001||Viu
save_generic_pvref|5.006001|5.006001|u
SAVEGENERICSV|5.005003||Viu
save_generic_svref|5.005003|5.005003|u
save_gp|5.004000|5.004000|
save_hash|5.003007|5.003007|
save_hdelete|5.011000|5.011000|u
SAVEHDELETE|5.011000||Viu
save_hek_flags|5.008000||Vniu
save_helem|5.004005|5.004005|u
save_helem_flags|5.011000|5.011000|u
SAVEHINTS|5.005000||Viu
save_hints|5.010001|5.010001|u
save_hptr|5.003007|5.003007|
SAVEI16|5.004000|5.004000|
save_I16|5.004000||cVu
SAVEI32|5.003007|5.003007|
save_I32|5.003007||cVu
SAVEI8|5.006000|5.006000|
save_I8|5.006000||cVu
SAVEINT|5.003007|5.003007|
save_int|5.003007||cVu
save_item|5.003007|5.003007|
SAVEIV|5.003007|5.003007|
save_iv|5.004000||cVu
save_lines|5.005000||Viu
save_list|5.003007|5.003007|d
SAVELONG|5.003007|5.003007|
save_long|5.003007||dcVu
save_magic_flags|5.019002||Viu
SAVE_MASK|5.013001||Viu
SAVEMORTALIZESV|5.007001|5.007001|
save_mortalizesv|5.010001||cVu
save_nogv|5.003007|5.003007|du
SAVEOP|5.005000||Viu
save_op|5.010001|5.010001|u
save_padsv_and_mortalize|5.010001|5.010001|u
SAVEPADSVANDMORTALIZE|5.010001||Viu
SAVEPADSV|||i
SAVEPARSER|5.009005||Viu
save_pushi32ptr|5.010001|5.010001|u
save_pushptr|5.010001|5.010001|u
save_pushptri32ptr|5.010001||Viu
save_pushptrptr|5.010001|5.010001|u
savepv|5.003007|5.003007|
savepvn|5.003007|5.003007|
savepvs|5.009003|5.009003|
save_re_context|5.006000||cVu
save_scalar|5.003007|5.003007|
save_scalar_at|5.005000||Viu
save_set_svflags|5.009000|5.009000|u
SAVESETSVFLAGS|5.009000||Viu
savesharedpv|5.007003|5.007003|
SAVESHAREDPV|5.007003||Viu
savesharedpvn|5.009005|5.009005|
save_shared_pvref|5.007003|5.007003|u
savesharedpvs|5.013006|5.013006|
savesharedsvpv|5.013006|5.013006|
SAVESPTR|5.003007|5.003007|
save_sptr|5.003007||cVu
savestack_grow|5.003007|5.003007|u
SBOX32_SKIP_MASK|5.027001||Viu
SBOX32_STATE_BITS|5.027001||Viu
SBOX32_STATE_BYTES|5.027001||Viu
SBOX32_STATE_WORDS|5.027001||Viu
SBOX32_STATIC_INLINE|5.027001||Viu
SBOX32_WARN2|5.027001||Viu
SBOX32_WARN3|5.027001||Viu
SBOX32_WARN4|5.027001||Viu
SBOX32_WARN5|5.027001||Viu
SBOX32_WARN6|5.027001||Viu
sb_rflags|5.006000||Viu
sb_rx|5.003007||Viu
sb_rxres|5.004000||Viu
sb_rxtainted|5.004000||Viu
sb_s|5.003007||Viu
sb_strend|5.003007||Viu
sb_targ|5.003007||Viu
scalar|5.003007||Viu
scalarboolean|5.005000||Viu
scalarkids|5.003007||Viu
scalar_mod_type|5.006000||Vniu
SET_SVANY_FOR_BODYLESS_IV|5.023008||Viu
SET_SVANY_FOR_BODYLESS_NV|5.023008||Viu
SETTARG|5.003007||Viu
SET_THR|5.005000||Viu
SET_THREAD_SELF|5.005003||Viu
SETu|5.004000||Viu
setuid|5.005000||Viu
_setup_canned_invlist|5.019008||cViu
setvbuf|5.003007||Viu
share_hek|5.004000|5.004000|u
share_hek_flags|5.008000||Viu
share_hek_hek|5.009003||Viu
sharepvn|5.005000||Viu
SHARP_S_SKIP|5.007003||Viu
Shmat_t|5.003007|5.003007|Vn
SHORTSIZE|5.004000|5.004000|Vn
should_warn_nl|5.021001||Vniu
should_we_output_Debug_r|5.031010||Viu
SH_PATH|5.003007|5.003007|Vn
shutdown|5.005000||Viu
si_dup|5.007003|5.007003|u
S_IXGRP|5.003007||Viu
S_IXOTH|5.003007||Viu
S_IXUSR|5.003007||Viu
SIZE_ALIGN|5.005000||Viu
Size_t|5.003007|5.003007|Vn
Size_t_MAX|5.021003||Viu
Size_t_size|5.006000|5.006000|Vn
SKIP|5.009005||Viu
SKIP_next|5.009005||Viu
SKIP_next_fail|5.009005||Viu
skipspace_flags|5.019002||xcViu
skip_to_be_ignored_text|5.023004||Viu
Slab_Alloc|5.006000||cViu
Slab_Free|5.007003||cViu
Slab_to_ro|5.017002||Viu
Slab_to_rw|5.009005||Viu
sleep|5.005000||Viu
SLOPPYDIVIDE|5.003007||Viu
socket|5.005000||Viu
SOCKET_OPEN_MODE|5.008002||Viu
socketpair|5.005000||Viu
Sock_size_t|5.006000|5.006000|Vn
softref2xv|||iu
sortcv|5.009003||Viu
sortcv_stacked|5.009003||Viu
sortcv_xsub|5.009003||Viu
sortsv|5.007003|5.007003|
sortsv_flags|5.009003|5.009003|
sortsv_flags_impl|5.031010||Viu
SP|5.003007|5.003007|
space_join_names_mortal|5.009004||Viu
SPAGAIN|5.003007|5.003007|
S_PAT_MODS|5.009005||Viu
specialWARN|5.006000||Viu
SRAND48_R_PROTO|5.008000|5.008000|Vn
SRANDOM_R_PROTO|5.008000|5.008000|Vn
SRCLOSE|5.027008||Viu
SROPEN|5.027008||Viu
SS_ACCVIO|5.008001||Viu
sublex_start|5.005000||Viu
SUBST_TAINT_BOOLRET|5.013010||Viu
SUBST_TAINT_PAT|5.013010||Viu
SUBST_TAINT_REPL|5.013010||Viu
SUBST_TAINT_RETAINT|5.013010||Viu
SUBST_TAINT_STR|5.013010||Viu
SUBVERSION|5.003007||Viu
SUCCEED|5.003007||Viu
SUSPEND|5.005000||Viu
sv_2bool|5.013006||cV
sv_2bool_flags|5.013006||cV
sv_2bool_nomg|5.017002||Viu
sv_2cv|5.003007|5.003007|
sv_2io|5.003007|5.003007|
sv_2iuv_common|5.009004||Viu
sv_2iuv_non_preserve|5.007001||Viu
sv_2iv|5.009001||cVu
sv_2iv_flags|5.009001|5.009001|
sv_2mortal|5.003007|5.003007|
sv_2num|5.010000||xVi
sv_2nv|5.013001||Viu
sv_2nv_flags|5.013001|5.013001|
sv_2pv|5.005000||cVu
sv_2pvbyte|5.006000|5.003007|p
sv_2pvbyte_flags|5.031004|5.031004|
sv_2pvbyte_nolen|5.009003|5.003007|pocV
sv_2pv_flags|5.007002|5.003007|pocV
sv_2pv_nolen|5.009003|5.003007|pocV
sv_2pv_nomg|5.007002||Viu
sv_2pvutf8|5.006000|5.006000|
sv_2pvutf8_flags|5.031004|5.031004|u
sv_2pvutf8_nolen|5.009003||cV
sv_2uv|5.009001|5.003007|pocVu
sv_2uv_flags|5.009001|5.009001|
sv_add_arena|5.003007||Vi
sv_add_backref|||iu
SvAMAGIC|5.003007||Viu
SvAMAGIC_off|5.031004|5.031004|n
SvAMAGIC_on|5.031004|5.031004|n
SvANY|5.003007||Viu
sv_backoff|5.003007|5.003007|n
sv_bless|5.003007|5.003007|
sv_buf_to_ro|5.019008||Viu
sv_buf_to_rw|5.019008||Viu
SvCANCOW|5.017007||Viu
SvCANEXISTDELETE|5.011000||Viu
SV_CATBYTES|5.021005|5.021005|
sv_cat_decode|5.008001|5.008001|
sv_cathek|5.021004||Viu
sv_catpv|5.003007|5.003007|
sv_catpvf|5.006000|5.004000|v
sv_catpv_flags|5.013006|5.013006|
sv_catpvf_mg|5.006000|5.004000|pv
sv_catpvf_mg_nocontext|5.006000|5.006000|pvn
sv_catpvf_nocontext|5.006000|5.006000|vn
sv_catpv_mg|5.004005|5.003007|p
sv_catpvn|5.003007|5.003007|
sv_catpvn_flags|5.007002|5.007002|
sv_catpvn_mg|5.004005|5.003007|p
sv_catpvn_nomg|5.007002|5.003007|p
sv_catpvn_nomg_maybeutf8|5.017005||Viu
sv_catpvn_nomg_utf8_upgrade|5.017002||Viu
sv_catpv_nomg|5.013006|5.013006|
sv_catpvs|5.009003|5.003007|p
sv_catpvs_flags|5.013006|5.013006|
sv_catpvs_mg|5.013006|5.013006|
sv_catpvs_nomg|5.013006|5.013006|
sv_catsv|5.003007|5.003007|
sv_catsv_flags|5.007002|5.007002|
sv_catsv_mg|5.004005|5.003007|p
sv_catsv_nomg|5.007002|5.003007|p
SV_CATUTF8|5.021005|5.021005|
sv_catxmlpvs|5.013006||Viu
SV_CHECK_THINKFIRST|5.008001||Viu
SV_CHECK_THINKFIRST_COW_DROP|5.009000||Viu
sv_chop|5.003007|5.003007|
sv_clean_all|5.003007||Vi
sv_clean_objs|5.003007||Vi
sv_clear|5.003007|5.003007|
sv_cmp|5.003007|5.003007|
sv_cmp_flags|5.013006|5.013006|
sv_cmp_locale|5.004000|5.004000|
sv_cmp_locale_flags|5.013006|5.013006|
sv_collxfrm|5.013006||V
sv_collxfrm_flags|5.013006|5.013006|
SvCOMPILED|5.003007||Viu
SvCOMPILED_off|5.003007||Viu
SvCOMPILED_on|5.003007||Viu
SV_CONST|5.019002||Viu
SV_CONST_BINMODE|5.019002||Viu
SV_CONST_CLEAR|5.019002||Viu
SV_CONST_CLOSE|5.019002||Viu
SV_CONST_DELETE|5.019002||Viu
SV_CONST_DESTROY|5.019002||Viu
SV_CONST_EOF|5.019002||Viu
SV_CONST_STORESIZE|5.019002||Viu
SV_CONST_TELL|5.019002||Viu
SV_CONST_TIEARRAY|5.019002||Viu
SV_CONST_TIEHANDLE|5.019002||Viu
SV_CONST_TIEHASH|5.019002||Viu
SV_CONST_TIESCALAR|5.019002||Viu
SV_CONST_UNSHIFT|5.019002||Viu
SV_CONST_UNTIE|5.019002||Viu
SV_CONST_WRITE|5.019002||Viu
sv_copypv|5.007003|5.007003|
sv_copypv_flags|5.017002|5.017002|
sv_copypv_nomg|5.017002|5.017002|
SV_COW_DROP_PV|5.008001|5.003007|p
SV_COW_OTHER_PVS|5.009005||Viu
SV_COW_REFCNT_MAX|5.017007||Viu
SV_COW_SHARED_HASH_KEYS|5.009005|5.003007|poVnu
SvCUR|5.003007|5.003007|
SvCUR_set|5.003007|5.003007|
sv_dec|5.003007|5.003007|
sv_dec_nomg|5.013002|5.013002|
sv_del_backref|5.006000||cViu
sv_does_sv|5.015004|5.015004|
sv_dump|5.003007|5.003007|
sv_dup|5.007003|5.007003|u
sv_dup_common|5.013002||Viu
sv_dup_inc|5.013002|5.013002|u
sv_dup_inc_multiple|5.011000||Viu
SvEND|5.003007|5.003007|
SvEND_set|5.003007||Viu
SvENDx|5.003007||Viu
sv_eq|5.003007|5.003007|
sv_eq_flags|5.013006|5.013006|
sv_exp_grow|5.009003||Viu
SVf256|5.008001||Viu
SVf32|5.009002||Viu
SVf|5.006000|5.003007|p
SvFAKE|5.003007||Viu
SvFAKE_off|5.003007||Viu
SvFAKE_on|5.003007||Viu
SVf_AMAGIC|5.003007||Viu
SVfARG|5.009005|5.003007|p
SVf_BREAK|5.003007||Viu
SVf_FAKE|5.003007||Viu
SVf_IOK|5.003007||Viu
SVf_IsCOW|5.017006||Viu
SVf_IVisUV|5.006000||Viu
SvFLAGS|5.003007||Viu
SVf_NOK|5.003007||Viu
SVf_OK|5.003007||Viu
SVf_OOK|5.003007||Viu
sv_force_normal|5.006000|5.006000|
sv_force_normal_flags|5.007001|5.007001|
SV_FORCE_UTF8_UPGRADE|5.011000||Viu
SVf_POK|5.003007||Viu
SVf_PROTECT|5.021005||Viu
SVf_READONLY|5.003007||Viu
sv_free2|||xciu
sv_free|5.003007|5.003007|
sv_free_arenas|5.003007||Vi
SVf_ROK|5.003007||Viu
SVf_THINKFIRST|5.003007||Viu
SVf_UTF8|5.006000|5.003007|p
SV_HAS_TRAILING_NUL|5.009004|5.003007|p
SV_IMMEDIATE_UNREF|5.007001|5.003007|p
SvIMMORTAL|5.004000||Viu
SvIMMORTAL_INTERP|5.027003||Viu
SvIMMORTAL_TRUE|5.027003||Viu
sv_inc|5.003007|5.003007|
sv_i_ncmp|5.009003||Viu
sv_i_ncmp_desc|5.031010||Viu
sv_inc_nomg|5.013002|5.013002|
sv_insert|5.003007|5.003007|
sv_insert_flags|5.010001|5.010001|
SvIOK|5.003007|5.003007|
SvIOK_nog|5.017002||Viu
SvIOK_nogthink|5.017002||Viu
SvIOK_notUV|5.006000|5.006000|
SvIOK_off|5.003007|5.003007|
SvIOK_on|5.003007|5.003007|
SvIOK_only|5.003007|5.003007|
SvIOK_only_UV|5.006000|5.006000|
SvIOKp|5.003007|5.003007|
SvIOKp_on|5.003007||Viu
sv_magic|5.003007|5.003007|
SvMAGIC|5.003007||Viu
SvMAGICAL|5.003007||Viu
SvMAGICAL_off|5.003007||Viu
SvMAGICAL_on|5.003007||Viu
sv_magicext|5.007003|5.007003|
sv_magicext_mglob|5.019002||cViu
sv_magic_portable||5.004000|pou
SvMAGIC_set|5.009003|5.003007|p
sv_mortalcopy|5.003007|5.003007|
sv_mortalcopy_flags|5.017005|5.003007|p
SV_MUTABLE_RETURN|5.009003|5.003007|poVnu
sv_ncmp|5.009003||Viu
sv_ncmp_desc|5.031010||Viu
sv_newmortal|5.003007|5.003007|
sv_newref|5.003007||cV
SvNIOK|5.003007|5.003007|
SvNIOK_nog|5.017002||Viu
SvNIOK_nogthink|5.017002||Viu
SvNIOK_off|5.003007|5.003007|
SvNIOKp|5.003007|5.003007|
SvPOK_on|5.003007|5.003007|
SvPOK_only|5.003007|5.003007|
SvPOK_only_UTF8|5.006000|5.006000|
SvPOKp|5.003007|5.003007|
SvPOKp_on|5.003007||Viu
SvPOK_pure_nogthink|5.017003||Viu
SvPOK_utf8_nog|5.017002||Viu
SvPOK_utf8_nogthink|5.017002||Viu
SvPOK_utf8_pure_nogthink|5.017003||Viu
sv_pos_b2u|5.006000|5.006000|
sv_pos_b2u_flags|5.019003|5.019003|
sv_pos_b2u_midway|5.009004||Viu
sv_pos_u2b|5.006000|5.006000|
sv_pos_u2b_cached|5.009004||Viu
sv_pos_u2b_flags|5.011005|5.011005|
sv_pos_u2b_forwards|5.009004||Vniu
sv_pos_u2b_midway|5.009004||Vniu
SVp_POK|5.003007||Viu
SVprv_PCS_IMPORTED|5.009005||Viu
SVprv_WEAKREF|5.006000||Viu
SVp_SCREAM|5.003007||Viu
SvPV|5.003007|5.003007|
sv_pv|5.008000||cV
SvPVbyte|5.006000|5.003007|p
sv_pvbyte|5.008000||cV
sv_pvbyten_force_wrapper|||iu
SvPVbyte_nolen|5.006000|5.006000|
SvPVbyte_nomg|5.031004|5.031004|
SvPVbyte_or_null|5.031004|5.031004|
SvPVbyte_or_null_nomg|5.031004|5.031004|
SvPVbytex|5.006000|5.006000|
SvPVbytex_force|5.006000|5.006000|
SvPVbytex_nolen|5.009003||Viu
SvPVCLEAR|5.025006|5.025006|
SvPV_const|5.009003|5.003007|p
SvPV_flags|5.007002|5.003007|p
SvPV_flags_const|5.009003|5.003007|p
SvPV_flags_const_nolen|5.009003|5.003007|p
SvPV_flags_mutable|5.009003|5.003007|p
SvPV_force|5.003007|5.003007|p
SvPV_force_flags|5.007002|5.003007|p
SvPV_force_flags_mutable|5.009003|5.003007|p
SvPV_force_flags_nolen|5.009003|5.003007|p
SvPV_force_mutable|5.009003|5.003007|p
SvPV_force_nolen|5.009003|5.003007|p
SvPV_force_nomg|5.007002|5.003007|p
SvPV_force_nomg_nolen|5.009003|5.003007|p
SvPV_free|5.009003||Viu
SvPV_mutable|5.009003|5.003007|p
sv_pvn|5.004000||dcV
sv_pvn_force|5.005000||cV
sv_pvn_force_flags|5.007002|5.003007|p
sv_pvn_force_nomg|5.007002||Viu
sv_pvn_nomg|5.007003|5.005000|pdu
SvPV_nolen|5.006000|5.003007|p
SvPV_nolen_const|5.009003|5.003007|p
SvPV_nomg|5.007002|5.003007|p
SvPV_nomg_const|5.009003|5.003007|p
SvPV_nomg_const_nolen|5.009003|5.003007|p
SvPV_nomg_nolen|5.013007|5.003007|p
SvPV_renew|5.009003|5.003007|p
SvPV_set|5.003007|5.003007|
sv_setpvs_mg|5.013006|5.013006|
sv_setref_iv|5.003007|5.003007|
sv_setref_nv|5.006000|5.003007|
sv_setref_pv|5.003007|5.003007|
sv_setref_pvn|5.003007|5.003007|
sv_setref_pvs|5.013006|5.013006|
sv_setref_uv|5.007001|5.007001|
sv_setsv|5.003007|5.003007|
SvSetSV|5.003007|5.003007|
sv_setsv_cow|5.009000||xcViu
sv_setsv_flags|5.007002|5.003007|p
sv_setsv_mg|5.004005|5.003007|p
sv_setsv_nomg|5.007002|5.003007|p
SvSetSV_nosteal|5.004000|5.004000|
sv_setuid|5.019001||Viu
sv_set_undef|5.025008|5.025008|
sv_setuv|5.004000|5.003007|p
sv_setuv_mg|5.004005|5.003007|p
SVs_GMG|5.003007||Viu
SvSHARE|5.007003|5.007003|
SvSHARED_HASH|5.009003|5.003007|p
SvTYPE|5.003007|5.003007|
SVTYPEMASK|5.003007||Viu
SvUID|5.019001||Viu
SV_UNDEF_RETURNS_NULL|5.011000||Viu
sv_unglob|5.005000||Viu
sv_uni_display|5.007003|5.007003|
SvUNLOCK|5.007003|5.007003|
sv_unmagic|5.003007|5.003007|
sv_unmagicext|5.013008|5.003007|p
sv_unref|5.003007|5.003007|
sv_unref_flags|5.007001|5.007001|
sv_untaint|5.004000||cV
SvUOK|5.007001|5.006000|p
SvUOK_nog|5.017002||Viu
SvUOK_nogthink|5.017002||Viu
sv_upgrade|5.003007|5.003007|
SvUPGRADE|5.003007|5.003007|
sv_usepvn|5.003007|5.003007|
sv_usepvn_flags|5.009004|5.009004|
sv_usepvn_mg|5.004005|5.003007|p
SvUTF8|5.006000|5.003007|p
sv_utf8_decode|5.006000|5.006000|
sv_utf8_downgrade|5.006000|5.006000|
sv_utf8_downgrade_flags|5.031004|5.031004|
sv_utf8_downgrade_nomg|5.031004|5.031004|
sv_utf8_encode|5.006000|5.006000|
SV_UTF8_NO_ENCODING|5.008001|5.003007|pd
SvUTF8_off|5.006000|5.006000|
SvUTF8_on|5.006000|5.006000|
sv_utf8_upgrade|5.007001|5.007001|
sv_utf8_upgrade_flags|5.007002|5.007002|
sv_utf8_upgrade_flags_grow|5.011000|5.011000|
sv_utf8_upgrade_nomg|5.007002|5.007002|
SvUV|5.004000|5.003007|p
sv_uv|5.005000|5.003007|podcV
SvUV_nomg|5.009001|5.003007|p
SvUV_set|5.009003|5.003007|p
SvUVX|5.004000|5.003007|p
SvUVx|5.004000|5.003007|p
SvUVXx|5.004000|5.003007|pd
SvVALID|5.003007||Viu
sv_vcatpvf|5.006000|5.004000|p
sv_vcatpvf_mg|5.006000|5.004000|p
sv_vcatpvfn|5.004000|5.004000|
sv_vcatpvfn_flags|5.017002|5.017002|
SvVOK|5.008001|5.008001|
sv_vsetpvf|5.006000|5.004000|p
sv_vsetpvf_mg|5.006000|5.004000|p
sv_vsetpvfn|5.004000|5.004000|
SvVSTRING_mg|5.009004|5.003007|p
SvWEAKREF|5.006000||Viu
SvWEAKREF_off|5.006000||Viu
SvWEAKREF_on|5.006000||Viu
swallow_bom|5.006001||Viu
switch_category_locale_to_template|5.027009||Viu
TOPs|5.003007||Viu
TOPu|5.004000||Viu
TOPul|5.006000||Viu
toTITLE|5.019001|5.019001|
toTITLE_A|5.019001||Viu
toTITLE_uni|5.006000||Viu
toTITLE_utf8|5.031005|5.031005|
toTITLE_utf8_safe|5.025009|5.006000|p
toTITLE_uvchr|5.023009|5.006000|p
to_uni_fold|5.014000||cVu
_to_uni_fold_flags|5.014000||cVu
to_uni_lower|5.006000||cVu
to_uni_title|5.006000||cVu
to_uni_upper|5.006000||cVu
toUPPER|5.003007|5.003007|
toUPPER_A|5.019001||Viu
toUPPER_LATIN1_MOD|5.011002||Viu
toUPPER_LC|5.004000||Viu
_to_upper_title_latin1|5.015005||Viu
toUPPER_uni|5.006000||Viu
toUPPER_utf8|5.031005|5.031005|
toUPPER_utf8_safe|5.025009|5.006000|p
toUPPER_uvchr|5.023009|5.006000|p
_to_utf8_case|5.023006||Viu
_to_utf8_fold_flags|5.014000||cVu
_to_utf8_lower_flags|5.015006||cVu
to_utf8_substr|5.008000||Viu
_to_utf8_title_flags|5.015006||cVu
_to_utf8_upper_flags|5.015006||cVu
translate_substr_offsets|5.015006||Vniu
traverse_op_tree|5.029008||Vi
TR_DELETE|5.031007||Viu
TRIE|5.009002||Viu
TRIE_BITMAP|5.009004||Viu
TRIE_BITMAP_BYTE|5.009004||Viu
TRIE_BITMAP_CLEAR|5.009004||Viu
TRIE_BITMAP_SET|5.009004||Viu
TRIE_BITMAP_TEST|5.009004||Viu
TRIEC|5.009004||Viu
UTF_MIN_START_BYTE|5.031006||Viu
UTF_START_MARK|5.007001||Viu
UTF_START_MASK|5.007001||Viu
UTF_TO_NATIVE|5.007001||Viu
utilize|5.003007||Viu
utime|5.005000||Viu
U_V|5.003007||Viu
UVCHR_IS_INVARIANT|5.019004|5.003007|p
UVCHR_SKIP|5.022000|5.003007|p
uvchr_to_utf8|5.007001|5.007001|
uvchr_to_utf8_flags|5.007003|5.007003|
uvchr_to_utf8_flags_msgs|5.027009|5.027009|
UV_DIG|5.006000||Viu
UVf|5.007001||Viu
UV_IS_QUAD|5.006000||Viu
UV_MAX|5.003007|5.003007|oVnu
UV_MAX_P1|5.007002||Viu
UV_MAX_P1_HALF|5.007002||Viu
UV_MIN|5.003007|5.003007|oVnu
UVof|5.006000|5.003007|p
uvoffuni_to_utf8_flags|5.027009||cV
uvoffuni_to_utf8_flags_msgs|5.027009||cVu
UVSIZE|5.006000|5.003007|poVn
UVTYPE|5.006000|5.003007|poVn
UVuf|5.006000|5.003007|p
uvuni_to_utf8|5.019004||cVu
uvuni_to_utf8_flags|5.007003||dcV
UVxf|5.006000|5.003007|p
UVXf|5.007001|5.007001|poVn
VAL_EAGAIN|5.003007|5.003007|Vn
validate_proto|5.019002||xcVi
validate_suid|||iu
valid_utf8_to_uvchr|5.015009||cVn
valid_utf8_to_uvuni|5.015009||dcVu
VAL_O_NONBLOCK|5.003007|5.003007|Vn
variant_byte_number|5.031004||cVnu
variant_under_utf8_count|5.027007||Vni
$count or print "\nFound no API matching '$opt{'api-info'}'.";
print "\n";
exit 0;
}
if (exists $opt{'list-provided'}) {
my $f;
for $f (sort dictionary_order keys %API) {
next unless $API{$f}{provided};
my @flags;
push @flags, 'explicit' if exists $need{$f};
push @flags, 'depend' if exists $depends{$f};
push @flags, 'hint' if exists $hints{$f};
push @flags, 'warning' if exists $warnings{$f};
my $flags = @flags ? ' ['.join(', ', @flags).']' : '';
print "$f$flags\n";
}
exit 0;
}
my @files;
my @srcext = qw( .xs .c .h .cc .cpp -c.inc -xs.inc );
my $srcext = join '|', map { quotemeta $_ } @srcext;
if (@ARGV) {
my %seen;
# define D_PPP_TO_FOLD_CALLEE(s,r,l) toFOLD_utf8(s,r,l)
# else
# define D_PPP_TO_FOLD_CALLEE(s,r,l) to_utf8_fold(s,r,l)
# endif
# else /* Below is 5.15.6, which failed to make the macros available
# outside of core, so we have to use the 'Perl_' form. khw
# decided it was easier to just handle this case than have to
# document the exception, and make an exception in the tests below
# */
# define D_PPP_TO_LOWER_CALLEE(s,r,l) \
Perl__to_utf8_lower_flags(aTHX_ s, r, l, 0, NULL)
# define D_PPP_TO_TITLE_CALLEE(s,r,l) \
Perl__to_utf8_title_flags(aTHX_ s, r, l, 0, NULL)
# define D_PPP_TO_UPPER_CALLEE(s,r,l) \
Perl__to_utf8_upper_flags(aTHX_ s, r, l, 0, NULL)
# define D_PPP_TO_FOLD_CALLEE(s,r,l) \
Perl__to_utf8_fold_flags(aTHX_ s, r, l, FOLD_FLAGS_FULL, NULL)
# endif
/* The actual implementation of the backported macros. If too short, croak,
* otherwise call the original that doesn't have an upper limit parameter */
# define D_PPP_GENERIC_MULTI_ARG_TO(name, s, e,r,l) \
(((((e) - (s)) <= 0) \
/* We could just do nothing, but modern perls croak */ \
? (croak("Attempting case change on zero length string"), \
0) /* So looks like it returns something, and will compile */ \
: ((e) - (s)) < UTF8SKIP(s)) \
#ifndef SV_HAS_TRAILING_NUL
# define SV_HAS_TRAILING_NUL 0
#endif
#ifndef SV_COW_SHARED_HASH_KEYS
# define SV_COW_SHARED_HASH_KEYS 0
#endif
#if defined(PERL_USE_GCC_BRACE_GROUPS)
#ifndef sv_2pv_flags
# define sv_2pv_flags(sv, lp, flags) ({ SV *_sv = (sv); const I32 _flags = (flags); STRLEN *_lp = lp; _lp = _lp ? : &PL_na; (!(_flags & SV_GMAGIC) && SvGMAGICAL(_sv)) ? ({ char *_pv; SvGMAGICAL_off(_sv); _pv = sv_2pv(_sv, _lp); SvGMAGICAL_on(_sv)...
#endif
#ifndef sv_pvn_force_flags
# define sv_pvn_force_flags(sv, lp, flags) ({ SV *_sv = (sv); const I32 _flags = (flags); STRLEN *_lp = lp; _lp = _lp ? : &PL_na; (!(_flags & SV_GMAGIC) && SvGMAGICAL(_sv)) ? ({ char *_pv; SvGMAGICAL_off(_sv); _pv = sv_pvn_force(_sv, _lp); SvGMAGICA...
#endif
#else
#ifndef sv_2pv_flags
# define sv_2pv_flags(sv, lp, flags) ((PL_Sv = (sv)), (!((flags) & SV_GMAGIC) && SvGMAGICAL(PL_Sv)) ? (SvGMAGICAL_off(PL_Sv), (PL_Xpv = (XPV *)sv_2pv(PL_Sv, (lp) ? (lp) : &PL_na)), SvGMAGICAL_on(PL_Sv), (char *)PL_Xpv) : sv_2pv(PL_Sv, (lp) ? (lp)...
#endif
#ifndef sv_pvn_force_flags
# define sv_pvn_force_flags(sv, lp, flags) ((PL_Sv = (sv)), (!((flags) & SV_GMAGIC) && SvGMAGICAL(PL_Sv)) ? (SvGMAGICAL_off(PL_Sv), (PL_Xpv = (XPV *)sv_pvn_force(PL_Sv, (lp) ? (lp) : &PL_na)), SvGMAGICAL_on(PL_Sv), (char *)PL_Xpv) : sv_pvn_force(PL_...
#endif
#endif
#if (PERL_BCDVERSION < 0x5008008) || ( (PERL_BCDVERSION >= 0x5009000) && (PERL_BCDVERSION < 0x5009003) )
# define D_PPP_SVPV_NOLEN_LP_ARG &PL_na
#else
# define D_PPP_SVPV_NOLEN_LP_ARG 0
#endif
#ifndef SvPV_const
# define SvPV_const(sv, lp) SvPV_flags_const(sv, lp, SV_GMAGIC)
#endif
#ifndef SvPV_mutable
# define SvPV_mutable(sv, lp) SvPV_flags_mutable(sv, lp, SV_GMAGIC)
#endif
#ifndef SvPV_flags
# define SvPV_flags(sv, lp, flags) \
((SvFLAGS(sv) & (SVf_POK)) == SVf_POK \
? ((lp = SvCUR(sv)), SvPVX(sv)) : sv_2pv_flags(sv, &lp, flags))
#endif
#ifndef SvPV_flags_const
# define SvPV_flags_const(sv, lp, flags) \
((SvFLAGS(sv) & (SVf_POK)) == SVf_POK \
? ((lp = SvCUR(sv)), SvPVX_const(sv)) : \
(const char*) sv_2pv_flags(sv, &lp, flags|SV_CONST_RETURN))
#endif
#ifndef SvPV_flags_const_nolen
# define SvPV_flags_const_nolen(sv, flags) \
((SvFLAGS(sv) & (SVf_POK)) == SVf_POK \
? SvPVX_const(sv) : \
(const char*) sv_2pv_flags(sv, D_PPP_SVPV_NOLEN_LP_ARG, flags|SV_CONST_RETURN))
#endif
#ifndef SvPV_flags_mutable
# define SvPV_flags_mutable(sv, lp, flags) \
((SvFLAGS(sv) & (SVf_POK)) == SVf_POK \
? ((lp = SvCUR(sv)), SvPVX_mutable(sv)) : \
sv_2pv_flags(sv, &lp, flags|SV_MUTABLE_RETURN))
#endif
#ifndef SvPV_force
# define SvPV_force(sv, lp) SvPV_force_flags(sv, lp, SV_GMAGIC)
#endif
#ifndef SvPV_force_nolen
# define SvPV_force_nolen(sv) SvPV_force_flags_nolen(sv, SV_GMAGIC)
#endif
#ifndef SvPV_force_mutable
# define SvPV_force_mutable(sv, lp) SvPV_force_flags_mutable(sv, lp, SV_GMAGIC)
#endif
#ifndef SvPV_force_nomg
# define SvPV_force_nomg(sv, lp) SvPV_force_flags(sv, lp, 0)
#endif
#ifndef SvPV_force_nomg_nolen
# define SvPV_force_nomg_nolen(sv) SvPV_force_flags_nolen(sv, 0)
#endif
#ifndef SvPV_force_flags
# define SvPV_force_flags(sv, lp, flags) \
((SvFLAGS(sv) & (SVf_POK|SVf_THINKFIRST)) == SVf_POK \
? ((lp = SvCUR(sv)), SvPVX(sv)) : sv_pvn_force_flags(sv, &lp, flags))
#endif
#ifndef SvPV_force_flags_nolen
# define SvPV_force_flags_nolen(sv, flags) \
((SvFLAGS(sv) & (SVf_POK|SVf_THINKFIRST)) == SVf_POK \
? SvPVX(sv) : sv_pvn_force_flags(sv, D_PPP_SVPV_NOLEN_LP_ARG, flags))
#endif
#ifndef SvPV_force_flags_mutable
# define SvPV_force_flags_mutable(sv, lp, flags) \
((SvFLAGS(sv) & (SVf_POK|SVf_THINKFIRST)) == SVf_POK \
? ((lp = SvCUR(sv)), SvPVX_mutable(sv)) \
: sv_pvn_force_flags(sv, &lp, flags|SV_MUTABLE_RETURN))
#endif
#ifndef SvPV_nolen
# define SvPV_nolen(sv) \
((SvFLAGS(sv) & (SVf_POK)) == SVf_POK \
? SvPVX(sv) : sv_2pv_flags(sv, D_PPP_SVPV_NOLEN_LP_ARG, SV_GMAGIC))
#endif
#ifndef SvPV_nolen_const
# define SvPV_nolen_const(sv) \
((SvFLAGS(sv) & (SVf_POK)) == SVf_POK \
? SvPVX_const(sv) : sv_2pv_flags(sv, D_PPP_SVPV_NOLEN_LP_ARG, SV_GMAGIC|SV_CONST_RETURN))
#endif
# if defined(PERL_USE_GCC_BRACE_GROUPS)
#ifndef SvPVx_nolen_const
# define SvPVx_nolen_const(sv) ({SV *sV_ = (sv); SvPV_nolen_const(sV_); })
#endif
# else
#ifndef SvPVx_nolen_const
# define SvPVx_nolen_const(sv) (PL_Sv = sv, SvPV_nolen_const(PL_Sv))
#endif
# endif
#ifndef SvPV_nomg
# define SvPV_nomg(sv, lp) SvPV_flags(sv, lp, 0)
#endif
#ifndef SvPV_nomg_const
# define SvPV_nomg_const(sv, lp) SvPV_flags_const(sv, lp, 0)
#endif
#ifndef SvPV_nomg_const_nolen
# define SvPV_nomg_const_nolen(sv) SvPV_flags_const_nolen(sv, 0)
#endif
#ifndef SvPV_nomg_nolen
# define SvPV_nomg_nolen(sv) ((SvFLAGS(sv) & (SVf_POK)) == SVf_POK \
? SvPVX(sv) : sv_2pv_flags(sv, D_PPP_SVPV_NOLEN_LP_ARG, 0))
#endif
#ifndef SvPV_renew
# define SvPV_renew(sv,n) STMT_START { SvLEN_set(sv, n); \
SvPV_set((sv), (char *) saferealloc( \
(Malloc_t)SvPVX(sv), (MEM_SIZE)((n)))); \
} STMT_END
#endif
#ifndef WARN_ALL
# define WARN_ALL 0
#endif
#else
# define D_PPP_CROAK_IF_ERROR(cond) ((cond) && (SvROK(ERRSV) || SvTRUE(ERRSV)) && (croak_sv(ERRSV), 1))
#endif
#ifndef G_METHOD
# define G_METHOD 64
# ifdef call_sv
# undef call_sv
# endif
# if (PERL_BCDVERSION < 0x5006000)
# define call_sv(sv, flags) ((flags) & G_METHOD ? perl_call_method((char *) SvPV_nolen_const(sv), \
(flags) & ~G_METHOD) : perl_call_sv(sv, flags))
# else
# define call_sv(sv, flags) ((flags) & G_METHOD ? Perl_call_method(aTHX_ (char *) SvPV_nolen_const(sv), \
(flags) & ~G_METHOD) : Perl_call_sv(aTHX_ sv, flags))
# endif
#endif
#ifndef G_RETHROW
# define G_RETHROW 8192
# ifdef eval_sv
# undef eval_sv
# endif
# if defined(PERL_USE_GCC_BRACE_GROUPS)
# define eval_sv(sv, flags) ({ I32 _flags = (flags); I32 _ret = Perl_eval_sv(aTHX_ sv, (_flags & ~G_RETHROW)); D_PPP_CROAK_IF_ERROR(_flags & G_RETHROW); _ret; })
# else
# define eval_sv(sv, flags) ((PL_na = Perl_eval_sv(aTHX_ sv, ((flags) & ~G_RETHROW))), D_PPP_CROAK_IF_ERROR((flags) & G_RETHROW), (I32)PL_na)
# endif
#endif
/* Older Perl versions have broken croak_on_error=1 */
#if (PERL_BCDVERSION < 0x5031002)
# ifdef eval_pv
# undef eval_pv
# if defined(PERL_USE_GCC_BRACE_GROUPS)
# define eval_pv(p, croak_on_error) ({ SV *_sv = Perl_eval_pv(aTHX_ p, 0); D_PPP_CROAK_IF_ERROR(croak_on_error); _sv; })
# else
D_PPP_CROAK_IF_ERROR(croak_on_error);
return sv;
}
#endif
#endif
#if ! defined(vload_module) && defined(start_subparse)
#if defined(NEED_vload_module)
static void DPPP_(my_vload_module)(U32 flags, SV * name, SV * ver, va_list * args);
static
#else
extern void DPPP_(my_vload_module)(U32 flags, SV * name, SV * ver, va_list * args);
#endif
#if defined(NEED_vload_module) || defined(NEED_vload_module_GLOBAL)
#ifdef vload_module
# undef vload_module
#endif
#define vload_module(a,b,c,d) DPPP_(my_vload_module)(aTHX_ a,b,c,d)
#define Perl_vload_module DPPP_(my_vload_module)
void
DPPP_(my_vload_module)(U32 flags, SV *name, SV *ver, va_list *args)
{
dTHR;
dVAR;
OP *veop, *imop;
OP * const modname = newSVOP(OP_CONST, 0, name);
/* 5.005 has a somewhat hacky force_normal that doesn't croak on
SvREADONLY() if PL_compling is true. Current perls take care in
ck_require() to correctly turn off SvREADONLY before calling
force_normal_flags(). This seems a better fix than fudging PL_compling
*/
SvREADONLY_off(((SVOP*)modname)->op_sv);
modname->op_private |= OPpCONST_BARE;
if (ver) {
veop = newSVOP(OP_CONST, 0, ver);
}
else
veop = NULL;
if (flags & PERL_LOADMOD_NOIMPORT) {
imop = sawparens(newNULLLIST());
}
else if (flags & PERL_LOADMOD_IMPORT_OPS) {
imop = va_arg(*args, OP*);
}
else {
SV *sv;
imop = NULL;
sv = va_arg(*args, SV*);
while (sv) {
imop = append_elem(OP_LIST, imop, newSVOP(OP_CONST, 0, sv));
sv = va_arg(*args, SV*);
}
}
{
const line_t ocopline = PL_copline;
COP * const ocurcop = PL_curcop;
const int oexpect = PL_expect;
utilize(!(flags & PERL_LOADMOD_DENY), start_subparse(FALSE, 0),
#if (PERL_BCDVERSION > 0x5003000)
veop,
#endif
modname, imop);
PL_expect = oexpect;
PL_copline = ocopline;
PL_curcop = ocurcop;
}
}
#endif
#endif
#ifndef load_module
#if defined(NEED_load_module)
static void DPPP_(my_load_module)(U32 flags, SV * name, SV * ver, ...);
static
#else
extern void DPPP_(my_load_module)(U32 flags, SV * name, SV * ver, ...);
#endif
#if defined(NEED_load_module) || defined(NEED_load_module_GLOBAL)
#ifdef load_module
# undef load_module
#endif
#define load_module DPPP_(my_load_module)
#define Perl_load_module DPPP_(my_load_module)
void
DPPP_(my_load_module)(U32 flags, SV *name, SV *ver, ...)
{
va_list args;
va_start(args, ver);
vload_module(flags, name, ver, &args);
va_end(args);
}
#endif
#endif
#ifndef newRV_inc
# define newRV_inc(sv) newRV(sv) /* Replace */
#endif
#ifndef newRV_noinc
# define D_PPP_CONSTPV_ARG(x) ((char *) (x))
#else
# define D_PPP_CONSTPV_ARG(x) (x)
#endif
#ifndef newSVpvn
# define newSVpvn(data,len) ((data) \
? ((len) ? newSVpv((data), (len)) : newSVpv("", 0)) \
: newSV(0))
#endif
#ifndef newSVpvn_utf8
# define newSVpvn_utf8(s, len, u) newSVpvn_flags((s), (len), (u) ? SVf_UTF8 : 0)
#endif
#ifndef SVf_UTF8
# define SVf_UTF8 0
#endif
#ifndef newSVpvn_flags
#if defined(PERL_USE_GCC_BRACE_GROUPS)
# define newSVpvn_flags(s, len, flags) ({ SV *_sv = newSVpvn(D_PPP_CONSTPV_ARG((s)), (len)); SvFLAGS(_sv) |= ((flags) & SVf_UTF8); ((flags) & SVs_TEMP) ? sv_2mortal(_sv) : _sv; })
#else
# define newSVpvn_flags(s, len, flags) ((PL_Sv = newSVpvn(D_PPP_CONSTPV_ARG((s)), (len))), SvFLAGS(PL_Sv) |= ((flags) & SVf_UTF8), (((flags) & SVs_TEMP) ? sv_2mortal(PL_Sv) : PL_Sv))
#endif
#endif
#ifndef SV_NOSTEAL
# define SV_NOSTEAL 16
#endif
#if ( (PERL_BCDVERSION >= 0x5007003) && (PERL_BCDVERSION < 0x5008007) ) || ( (PERL_BCDVERSION >= 0x5009000) && (PERL_BCDVERSION < 0x5009002) )
#undef sv_setsv_flags
#if defined(PERL_USE_GCC_BRACE_GROUPS)
#define sv_setsv_flags(dstr, sstr, flags) \
STMT_START { \
if (((flags) & SV_NOSTEAL) && (sstr) && (SvFLAGS((SV *)(sstr)) & SVs_TEMP)) { \
SvTEMP_off((SV *)(sstr)); \
Perl_sv_setsv_flags(aTHX_ (dstr), (sstr), (flags) & ~SV_NOSTEAL); \
SvTEMP_on((SV *)(sstr)); \
} else { \
Perl_sv_setsv_flags(aTHX_ (dstr), (sstr), (flags) & ~SV_NOSTEAL); \
} \
} STMT_END
#else
( \
(((flags) & SV_NOSTEAL) && (sstr) && (SvFLAGS((SV *)(sstr)) & SVs_TEMP)) ? ( \
SvTEMP_off((SV *)(sstr)), \
Perl_sv_setsv_flags(aTHX_ (dstr), (sstr), (flags) & ~SV_NOSTEAL), \
SvTEMP_on((SV *)(sstr)), \
1 \
) : ( \
Perl_sv_setsv_flags(aTHX_ (dstr), (sstr), (flags) & ~SV_NOSTEAL), \
1 \
) \
)
#endif
#endif
#if defined(PERL_USE_GCC_BRACE_GROUPS)
#ifndef sv_setsv_flags
# define sv_setsv_flags(dstr, sstr, flags) \
STMT_START { \
if (((flags) & SV_NOSTEAL) && (sstr) && (SvFLAGS((SV *)(sstr)) & SVs_TEMP)) { \
SvTEMP_off((SV *)(sstr)); \
if (!((flags) & SV_GMAGIC) && (sstr) && SvGMAGICAL((SV *)(sstr))) { \
SvGMAGICAL_off((SV *)(sstr)); \
sv_setsv((dstr), (sstr)); \
SvGMAGICAL_on((SV *)(sstr)); \
} else { \
sv_setsv((dstr), (sstr)); \
} \
SvTEMP_on((SV *)(sstr)); \
} else { \
if (!((flags) & SV_GMAGIC) && (sstr) && SvGMAGICAL((SV *)(sstr))) { \
SvGMAGICAL_off((SV *)(sstr)); \
sv_setsv((dstr), (sstr)); \
SvGMAGICAL_on((SV *)(sstr)); \
} else { \
sv_setsv((dstr), (sstr)); \
} \
} \
} STMT_END
#endif
#else
#ifndef sv_setsv_flags
# define sv_setsv_flags(dstr, sstr, flags) \
( \
(((flags) & SV_NOSTEAL) && (sstr) && (SvFLAGS((SV *)(sstr)) & SVs_TEMP)) ? ( \
SvTEMP_off((SV *)(sstr)), \
(!((flags) & SV_GMAGIC) && (sstr) && SvGMAGICAL((SV *)(sstr))) ? ( \
SvGMAGICAL_off((SV *)(sstr)), \
sv_setsv((dstr), (sstr)), \
SvGMAGICAL_on((SV *)(sstr)), \
1 \
) : ( \
sv_setsv((dstr), (sstr)), \
1 \
), \
SvTEMP_on((SV *)(sstr)), \
1 \
) : ( \
(!((flags) & SV_GMAGIC) && (sstr) && SvGMAGICAL((SV *)(sstr))) ? ( \
SvGMAGICAL_off((SV *)(sstr)), \
sv_setsv((dstr), (sstr)), \
SvGMAGICAL_on((SV *)(sstr)), \
1 \
) : ( \
sv_setsv((dstr), (sstr)), \
1 \
) \
) \
)
#endif
#endif
#if defined(PERL_USE_GCC_BRACE_GROUPS)
#ifndef newSVsv_flags
# define newSVsv_flags(sv, flags) ({ SV *_sv = newSV(0); sv_setsv_flags(_sv, (sv), (flags)); _sv; })
#endif
#else
#ifndef newSVsv_flags
# define newSVsv_flags(sv, flags) ((PL_Sv = newSV(0)), sv_setsv_flags(PL_Sv, (sv), (flags)), PL_Sv)
#endif
#endif
#ifndef newSVsv_nomg
# define newSVsv_nomg(sv) newSVsv_flags((sv), SV_NOSTEAL)
#endif
#if (PERL_BCDVERSION >= 0x5017005)
#ifndef sv_mortalcopy_flags
# define sv_mortalcopy_flags(sv, flags) Perl_sv_mortalcopy_flags(aTHX_ (sv), (flags))
#endif
#else
#ifndef sv_mortalcopy_flags
# define sv_mortalcopy_flags(sv, flags) sv_2mortal(newSVsv_flags((sv), (flags)))
#endif
#endif
#ifndef SvMAGIC_set
# define SvMAGIC_set(sv, val) \
STMT_START { assert(SvTYPE(sv) >= SVt_PVMG); \
(((XPVMG*) SvANY(sv))->xmg_magic = (val)); } STMT_END
#endif
#if (PERL_BCDVERSION < 0x5009003)
# define SvSHARED_HASH(sv) (0 + SvUVX(sv))
#endif
#ifndef HvNAME_get
# define HvNAME_get(hv) HvNAME(hv)
#endif
#ifndef HvNAMELEN_get
# define HvNAMELEN_get(hv) (HvNAME_get(hv) ? (I32)strlen(HvNAME_get(hv)) : 0)
#endif
#if (PERL_BCDVERSION >= 0x5009002) && (PERL_BCDVERSION <= 0x5009003) /* 5.9.2 and 5.9.3 ignore the length param */
#undef gv_fetchpvn_flags
#endif
#ifdef GV_NOADD_MASK
# define D_PPP_GV_NOADD_MASK GV_NOADD_MASK
#else
# define D_PPP_GV_NOADD_MASK 0xE0
#endif
#ifndef gv_fetchpvn_flags
# define gv_fetchpvn_flags(name, len, flags, sv_type) gv_fetchpv(SvPVX(sv_2mortal(newSVpvn((name), (len)))), ((flags) & D_PPP_GV_NOADD_MASK) ? FALSE : TRUE, (I32)(sv_type))
#endif
#ifndef GvSVn
# define GvSVn(gv) GvSV(gv)
#endif
#ifndef isGV_with_GP
# define isGV_with_GP(gv) isGV(gv)
#endif
#ifndef gv_fetchsv
# define gv_fetchsv(name, flags, svt) gv_fetchpv(SvPV_nolen_const(name), flags, svt)
#endif
#ifndef get_cvn_flags
# define get_cvn_flags(name, namelen, flags) get_cv(name, flags)
#endif
#ifndef gv_init_pvn
# define gv_init_pvn(gv, stash, ptr, len, flags) gv_init(gv, stash, ptr, len, flags & GV_ADDMULTI ? TRUE : FALSE)
#endif
/* concatenating with "" ensures that only literal strings are accepted as argument
* note that STR_WITH_LEN() can't be used as argument to macros or functions that
* under some configurations might be macros
*/
#ifndef STR_WITH_LEN
# define STR_WITH_LEN(s) (s ""), (sizeof(s)-1)
#endif
#ifndef newSVpvs
# define newSVpvs(str) newSVpvn(str "", sizeof(str) - 1)
#endif
#ifndef newSVpvs_flags
# define newSVpvs_flags(str, flags) newSVpvn_flags(str "", sizeof(str) - 1, flags)
#endif
#ifndef newSVpvs_share
# define newSVpvs_share(str) newSVpvn_share(str "", sizeof(str) - 1, 0)
#endif
#ifndef sv_catpvs
# define sv_catpvs(sv, str) sv_catpvn(sv, str "", sizeof(str) - 1)
#endif
#endif
#ifndef hv_fetchs
# define hv_fetchs(hv, key, lval) hv_fetch(hv, key "", sizeof(key) - 1, lval)
#endif
#ifndef hv_stores
# define hv_stores(hv, key, val) hv_store(hv, key "", sizeof(key) - 1, val, 0)
#endif
#ifndef gv_fetchpvs
# define gv_fetchpvs(name, flags, svt) gv_fetchpvn_flags(name "", sizeof(name) - 1, flags, svt)
#endif
#ifndef gv_stashpvs
# define gv_stashpvs(name, flags) gv_stashpvn(name "", sizeof(name) - 1, flags)
#endif
#ifndef get_cvs
# define get_cvs(name, flags) get_cvn_flags(name "", sizeof(name)-1, flags)
#endif
#ifndef SvGETMAGIC
# define SvGETMAGIC(x) STMT_START { if (SvGMAGICAL(x)) mg_get(x); } STMT_END
#endif
/* That's the best we can do... */
#ifndef sv_catpvn_nomg
# define sv_catpvn_nomg sv_catpvn
#endif
# define sv_setsv_nomg sv_setsv
#endif
#ifndef sv_pvn_nomg
# define sv_pvn_nomg sv_pvn
#endif
#ifdef SVf_IVisUV
#if defined(PERL_USE_GCC_BRACE_GROUPS)
#ifndef SvIV_nomg
# define SvIV_nomg(sv) (!SvGMAGICAL((sv)) ? SvIV((sv)) : ({ SV *_sviv = sv_mortalcopy_flags((sv), SV_NOSTEAL); IV _iv = SvIV(_sviv); SvFLAGS((sv)) = (SvFLAGS((sv)) & ~SVf_IVisUV) | (SvFLAGS(_sviv) & SVf_IVisUV); _iv; }))
#endif
#ifndef SvUV_nomg
# define SvUV_nomg(sv) (!SvGMAGICAL((sv)) ? SvUV((sv)) : ({ SV *_svuv = sv_mortalcopy_flags((sv), SV_NOSTEAL); UV _uv = SvUV(_svuv); SvFLAGS((sv)) = (SvFLAGS((sv)) & ~SVf_IVisUV) | (SvFLAGS(_svuv) & SVf_IVisUV); _uv; }))
#endif
#else
#ifndef SvIV_nomg
# define SvIV_nomg(sv) (!SvGMAGICAL((sv)) ? SvIV((sv)) : ((PL_Sv = sv_mortalcopy_flags((sv), SV_NOSTEAL)), sv_upgrade(PL_Sv, SVt_PVIV), (SvIVX(PL_Sv) = SvIV(PL_Sv)), (SvFLAGS((sv)) = (SvFLAGS((sv)) & ~SVf_IVisUV) | (SvFLAGS(PL_Sv) &...
#endif
#ifndef SvUV_nomg
# define SvUV_nomg(sv) (!SvGMAGICAL((sv)) ? SvIV((sv)) : ((PL_Sv = sv_mortalcopy_flags((sv), SV_NOSTEAL)), sv_upgrade(PL_Sv, SVt_PVIV), (SvUVX(PL_Sv) = SvUV(PL_Sv)), (SvFLAGS((sv)) = (SvFLAGS((sv)) & ~SVf_IVisUV) | (SvFLAGS(PL_Sv) &...
#endif
#endif
#else
#ifndef SvIV_nomg
# define SvIV_nomg(sv) (!SvGMAGICAL((sv)) ? SvIV((sv)) : SvIVx(sv_mortalcopy_flags((sv), SV_NOSTEAL)))
#endif
#ifndef SvUV_nomg
# define SvUV_nomg(sv) (!SvGMAGICAL((sv)) ? SvUV((sv)) : SvUVx(sv_mortalcopy_flags((sv), SV_NOSTEAL)))
#endif
#endif
#ifndef SvNV_nomg
# define SvNV_nomg(sv) (!SvGMAGICAL((sv)) ? SvNV((sv)) : SvNVx(sv_mortalcopy_flags((sv), SV_NOSTEAL)))
#endif
#ifndef SvTRUE_nomg
# define SvTRUE_nomg(sv) (!SvGMAGICAL((sv)) ? SvTRUE((sv)) : SvTRUEx(sv_mortalcopy_flags((sv), SV_NOSTEAL)))
#endif
#ifndef sv_catpv_mg
# define sv_catpv_mg(sv, ptr) \
STMT_START { \
SV *TeMpSv = sv; \
sv_catpv(TeMpSv,ptr); \
SvSETMAGIC(TeMpSv); \
} STMT_END
#endif
if (virt && virt->svt_free)
virt->svt_free(aTHX_ sv, mg);
if (mg->mg_ptr && mg->mg_type != PERL_MAGIC_regex_global) {
if (mg->mg_len > 0)
Safefree(mg->mg_ptr);
else if (mg->mg_len == HEf_SVKEY) /* Questionable on older perls... */
SvREFCNT_dec(MUTABLE_SV(mg->mg_ptr));
else if (mg->mg_type == PERL_MAGIC_utf8)
Safefree(mg->mg_ptr);
}
if (mg->mg_flags & MGf_REFCOUNTED)
SvREFCNT_dec(mg->mg_obj);
Safefree(mg);
}
else
mgp = &mg->mg_moremagic;
}
if (SvMAGIC(sv)) {
if (SvMAGICAL(sv)) /* if we're under save_magic, wait for restore_magic; */
mg_magical(sv); /* else fix the flags now */
}
else {
SvMAGICAL_off(sv);
SvFLAGS(sv) |= (SvFLAGS(sv) & (SVp_IOK|SVp_NOK|SVp_POK)) >> PRIVSHIFT;
}
return 0;
}
#endif
#endif
if (sawinf) {
numtype &= IS_NUMBER_NEG; /* Keep track of sign */
numtype |= IS_NUMBER_INFINITY | IS_NUMBER_NOT_INT;
} else if (sawnan) {
numtype &= IS_NUMBER_NEG; /* Keep track of sign */
numtype |= IS_NUMBER_NAN | IS_NUMBER_NOT_INT;
} else if (s < send) {
/* we can have an optional exponent part */
if (*s == 'e' || *s == 'E') {
/* The only flag we keep is sign. Blow away any "it's UV" */
numtype &= IS_NUMBER_NEG;
numtype |= IS_NUMBER_NOT_INT;
s++;
if (s < send && (*s == '-' || *s == '+'))
s++;
if (s < send && isDIGIT(*s)) {
do {
s++;
} while (s < send && isDIGIT(*s));
}
#endif
/*
* The grok_* routines have been modified to use warn() instead of
* Perl_warner(). Also, 'hexdigit' was the former name of PL_hexdigit,
* which is why the stack variable has been renamed to 'xdigit'.
*/
#ifndef grok_bin
#if defined(NEED_grok_bin)
static UV DPPP_(my_grok_bin)(pTHX_ const char * start, STRLEN * len_p, I32 * flags, NV * result);
static
#else
extern UV DPPP_(my_grok_bin)(pTHX_ const char * start, STRLEN * len_p, I32 * flags, NV * result);
#endif
#if defined(NEED_grok_bin) || defined(NEED_grok_bin_GLOBAL)
#ifdef grok_bin
# undef grok_bin
#endif
#define grok_bin(a,b,c,d) DPPP_(my_grok_bin)(aTHX_ a,b,c,d)
#define Perl_grok_bin DPPP_(my_grok_bin)
UV
DPPP_(my_grok_bin)(pTHX_ const char *start, STRLEN *len_p, I32 *flags, NV *result)
{
const char *s = start;
STRLEN len = *len_p;
UV value = 0;
NV value_nv = 0;
const UV max_div_2 = UV_MAX / 2;
bool allow_underscores = *flags & PERL_SCAN_ALLOW_UNDERSCORES;
bool overflowed = FALSE;
if (!(*flags & PERL_SCAN_DISALLOW_PREFIX)) {
/* strip off leading b or 0b.
for compatibility silently suffer "b" and "0b" as valid binary
numbers. */
if (len >= 1) {
if (s[0] == 'b') {
s++;
len--;
}
else if (len >= 2 && s[0] == '0' && s[1] == 'b') {
s+=2;
value_nv += (NV)(bit - '0');
continue;
}
if (bit == '_' && len && allow_underscores && (bit = s[1])
&& (bit == '0' || bit == '1'))
{
--len;
++s;
goto redo;
}
if (!(*flags & PERL_SCAN_SILENT_ILLDIGIT))
warn("Illegal binary digit '%c' ignored", *s);
break;
}
if ( ( overflowed && value_nv > 4294967295.0)
#if UVSIZE > 4
|| (!overflowed && value > 0xffffffff )
#endif
) {
warn("Binary number > 0b11111111111111111111111111111111 non-portable");
}
*len_p = s - start;
if (!overflowed) {
*flags = 0;
return value;
}
*flags = PERL_SCAN_GREATER_THAN_UV_MAX;
if (result)
*result = value_nv;
return UV_MAX;
}
#endif
#endif
#ifndef grok_hex
#if defined(NEED_grok_hex)
static UV DPPP_(my_grok_hex)(pTHX_ const char * start, STRLEN * len_p, I32 * flags, NV * result);
static
#else
extern UV DPPP_(my_grok_hex)(pTHX_ const char * start, STRLEN * len_p, I32 * flags, NV * result);
#endif
#if defined(NEED_grok_hex) || defined(NEED_grok_hex_GLOBAL)
#ifdef grok_hex
# undef grok_hex
#endif
#define grok_hex(a,b,c,d) DPPP_(my_grok_hex)(aTHX_ a,b,c,d)
#define Perl_grok_hex DPPP_(my_grok_hex)
UV
DPPP_(my_grok_hex)(pTHX_ const char *start, STRLEN *len_p, I32 *flags, NV *result)
{
const char *s = start;
STRLEN len = *len_p;
UV value = 0;
NV value_nv = 0;
const UV max_div_16 = UV_MAX / 16;
bool allow_underscores = *flags & PERL_SCAN_ALLOW_UNDERSCORES;
bool overflowed = FALSE;
const char *xdigit;
if (!(*flags & PERL_SCAN_DISALLOW_PREFIX)) {
/* strip off leading x or 0x.
for compatibility silently suffer "x" and "0x" as valid hex numbers.
*/
if (len >= 1) {
if (s[0] == 'x') {
s++;
len--;
}
else if (len >= 2 && s[0] == '0' && s[1] == 'x') {
s+=2;
value_nv += (NV)((xdigit - PL_hexdigit) & 15);
continue;
}
if (*s == '_' && len && allow_underscores && s[1]
&& (xdigit = strchr((char *) PL_hexdigit, s[1])))
{
--len;
++s;
goto redo;
}
if (!(*flags & PERL_SCAN_SILENT_ILLDIGIT))
warn("Illegal hexadecimal digit '%c' ignored", *s);
break;
}
if ( ( overflowed && value_nv > 4294967295.0)
#if UVSIZE > 4
|| (!overflowed && value > 0xffffffff )
#endif
) {
warn("Hexadecimal number > 0xffffffff non-portable");
}
*len_p = s - start;
if (!overflowed) {
*flags = 0;
return value;
}
*flags = PERL_SCAN_GREATER_THAN_UV_MAX;
if (result)
*result = value_nv;
return UV_MAX;
}
#endif
#endif
#ifndef grok_oct
#if defined(NEED_grok_oct)
static UV DPPP_(my_grok_oct)(pTHX_ const char * start, STRLEN * len_p, I32 * flags, NV * result);
static
#else
extern UV DPPP_(my_grok_oct)(pTHX_ const char * start, STRLEN * len_p, I32 * flags, NV * result);
#endif
#if defined(NEED_grok_oct) || defined(NEED_grok_oct_GLOBAL)
#ifdef grok_oct
# undef grok_oct
#endif
#define grok_oct(a,b,c,d) DPPP_(my_grok_oct)(aTHX_ a,b,c,d)
#define Perl_grok_oct DPPP_(my_grok_oct)
UV
DPPP_(my_grok_oct)(pTHX_ const char *start, STRLEN *len_p, I32 *flags, NV *result)
{
const char *s = start;
STRLEN len = *len_p;
UV value = 0;
NV value_nv = 0;
const UV max_div_8 = UV_MAX / 8;
bool allow_underscores = *flags & PERL_SCAN_ALLOW_UNDERSCORES;
bool overflowed = FALSE;
for (; len-- && *s; s++) {
/* gcc 2.95 optimiser not smart enough to figure that this subtraction
out front allows slicker code. */
int digit = *s - '0';
if (digit >= 0 && digit <= 7) {
/* Write it in this wonky order with a goto to attempt to get the
compiler to make the common case integer-only loop pretty tight.
*/
&& (digit = s[1] - '0') && (digit >= 0 && digit <= 7))
{
--len;
++s;
goto redo;
}
/* Allow \octal to work the DWIM way (that is, stop scanning
* as soon as non-octal characters are seen, complain only iff
* someone seems to want to use the digits eight and nine). */
if (digit == 8 || digit == 9) {
if (!(*flags & PERL_SCAN_SILENT_ILLDIGIT))
warn("Illegal octal digit '%c' ignored", *s);
}
break;
}
if ( ( overflowed && value_nv > 4294967295.0)
#if UVSIZE > 4
|| (!overflowed && value > 0xffffffff )
#endif
) {
warn("Octal number > 037777777777 non-portable");
}
*len_p = s - start;
if (!overflowed) {
*flags = 0;
return value;
}
*flags = PERL_SCAN_GREATER_THAN_UV_MAX;
if (result)
*result = value_nv;
return UV_MAX;
}
#endif
#endif
#if !defined(my_snprintf)
#if defined(NEED_my_snprintf)
static int DPPP_(my_my_snprintf)(char * buffer, const Size_t len, const char * format, ...);
#if (PERL_BCDVERSION == 0x5019001) /* 5.19.1 does not have UTF8fARG, only broken UTF8f */
#undef UTF8f
#endif
#ifdef SVf_UTF8
#ifndef UTF8f
# define UTF8f SVf
#endif
#ifndef UTF8fARG
# define UTF8fARG(u,l,p) newSVpvn_flags((p), (l), ((u) ? SVf_UTF8 : 0) | SVs_TEMP)
#endif
#endif
#define D_PPP_MIN(a,b) (((a) <= (b)) ? (a) : (b))
#ifndef UNICODE_REPLACEMENT
# define UNICODE_REPLACEMENT 0xFFFD
#endif
#ifdef UTF8_MAXLEN
/* Choose which underlying implementation to use. At least one must be
* present or the perl is too early to handle this function */
# if defined(utf8n_to_uvchr) || defined(utf8_to_uvchr) || defined(utf8_to_uv)
# if defined(utf8n_to_uvchr) /* This is the preferred implementation */
# define D_PPP_utf8_to_uvchr_buf_callee utf8n_to_uvchr
# elif /* Must be at least 5.6.1 from #if above; \
If have both regular and _simple, regular has all args */ \
defined(utf8_to_uv) && defined(utf8_to_uv_simple)
# define D_PPP_utf8_to_uvchr_buf_callee utf8_to_uv
# elif defined(utf8_to_uvchr) /* The below won't work well on error input */
# define D_PPP_utf8_to_uvchr_buf_callee(s, curlen, retlen, flags) \
utf8_to_uvchr((U8 *)(s), (retlen))
# else
# define D_PPP_utf8_to_uvchr_buf_callee(s, curlen, retlen, flags) \
utf8_to_uv((U8 *)(s), (retlen))
# endif
# endif
# if defined(NEED_utf8_to_uvchr_buf)
static UV DPPP_(my_utf8_to_uvchr_buf)(pTHX_ const U8 * s, const U8 * send, STRLEN * retlen);
static
#else
extern UV DPPP_(my_utf8_to_uvchr_buf)(pTHX_ const U8 * s, const U8 * send, STRLEN * retlen);
#endif
/* Hint: utf8_to_uvchr
Use utf8_to_uvchr_buf() instead. But ONLY if you KNOW the upper bound
of the input string (not resorting to using UTF8SKIP, etc., to infer it).
The backported utf8_to_uvchr() will do a better job to prevent most cases
of trying to read beyond the end of the buffer */
/* Replace utf8_to_uvchr with utf8_to_uvchr_buf */
#ifdef sv_len_utf8
/* Older Perl versions have broken sv_len_utf8() when passed sv does not have SVf_UTF8 flag set */
/* Also note that SvGETMAGIC() may change presence of SVf_UTF8 flag */
# if (PERL_BCDVERSION < 0x5017005)
# undef sv_len_utf8
# if defined(PERL_USE_GCC_BRACE_GROUPS)
# define sv_len_utf8_nomg(sv) ({ SV *_sv2 = (sv); (SvUTF8(_sv2) ? Perl_sv_len_utf8(aTHX_ (!SvGMAGICAL(_sv2) ? _sv2 : sv_mortalcopy_flags(_sv2, SV_NOSTEAL))) : ({ STRLEN _len; SvPV_nomg(_sv2, _len); _len; })); })
# define sv_len_utf8(sv) ({ SV *_sv1 = (sv); SvGETMAGIC(_sv1); sv_len_utf8_nomg(_sv1); })
# else
# define sv_len_utf8_nomg(sv) (PL_Sv = (sv), (SvUTF8(PL_Sv) ? Perl_sv_len_utf8(aTHX_ (!SvGMAGICAL(PL_Sv) ? PL_Sv : sv_mortalcopy_flags(PL_Sv, SV_NOSTEAL))) : (SvPV_nomg(PL_Sv, PL_na), PL_na)))
# define sv_len_utf8(sv) (PL_Sv = (sv), SvGETMAGIC(PL_Sv), sv_len_utf8_nomg(PL_Sv))
# endif
# endif
# if defined(PERL_USE_GCC_BRACE_GROUPS)
#ifndef sv_len_utf8_nomg
# define sv_len_utf8_nomg(sv) ({ SV *_sv = (sv); sv_len_utf8(!SvGMAGICAL(_sv) ? _sv : sv_mortalcopy_flags(_sv, SV_NOSTEAL)); })
#endif
# else
#ifndef sv_len_utf8_nomg
# define sv_len_utf8_nomg(sv) ((PL_Sv = (sv)), sv_len_utf8(!SvGMAGICAL(PL_Sv) ? PL_Sv : sv_mortalcopy_flags(PL_Sv, SV_NOSTEAL)))
#endif
# endif
#endif
#ifndef PERL_PV_ESCAPE_QUOTE
# define PERL_PV_ESCAPE_QUOTE 0x0001
#endif
#ifndef PERL_PV_PRETTY_QUOTE
# define PERL_PV_PRETTY_QUOTE PERL_PV_ESCAPE_QUOTE
#endif
/* Hint: pv_escape
* Note that unicode functionality is only backported to
* those perl versions that support it. For older perl
* versions, the implementation will fall back to bytes.
*/
#ifndef pv_escape
#if defined(NEED_pv_escape)
static char * DPPP_(my_pv_escape)(pTHX_ SV * dsv, char const * const str, const STRLEN count, const STRLEN max, STRLEN * const escaped, const U32 flags);
static
#else
extern char * DPPP_(my_pv_escape)(pTHX_ SV * dsv, char const * const str, const STRLEN count, const STRLEN max, STRLEN * const escaped, const U32 flags);
#endif
#if defined(NEED_pv_escape) || defined(NEED_pv_escape_GLOBAL)
#ifdef pv_escape
# undef pv_escape
#endif
#define pv_escape(a,b,c,d,e,f) DPPP_(my_pv_escape)(aTHX_ a,b,c,d,e,f)
#define Perl_pv_escape DPPP_(my_pv_escape)
char *
DPPP_(my_pv_escape)(pTHX_ SV *dsv, char const * const str,
const STRLEN count, const STRLEN max,
STRLEN * const escaped, const U32 flags)
{
const char esc = flags & PERL_PV_ESCAPE_RE ? '%' : '\\';
const char dq = flags & PERL_PV_ESCAPE_QUOTE ? '"' : esc;
char octbuf[32] = "%123456789ABCDF";
STRLEN wrote = 0;
STRLEN chsize = 0;
STRLEN readsize = 1;
#if defined(is_utf8_string) && defined(utf8_to_uvchr_buf)
bool isuni = flags & PERL_PV_ESCAPE_UNI ? 1 : 0;
#endif
const char *pv = str;
const char * const end = pv + count;
octbuf[0] = esc;
if (!(flags & PERL_PV_ESCAPE_NOCLEAR))
sv_setpvs(dsv, "");
#if defined(is_utf8_string) && defined(utf8_to_uvchr_buf)
if ((flags & PERL_PV_ESCAPE_UNI_DETECT) && is_utf8_string((U8*)pv, count))
isuni = 1;
#endif
for (; pv < end && (!max || wrote < max) ; pv += readsize) {
const UV u =
#if defined(is_utf8_string) && defined(utf8_to_uvchr_buf)
isuni ? utf8_to_uvchr_buf((U8*)pv, end, &readsize) :
#endif
(U8)*pv;
const U8 c = (U8)u & 0xFF;
if (u > 255 || (flags & PERL_PV_ESCAPE_ALL)) {
if (flags & PERL_PV_ESCAPE_FIRSTCHAR)
chsize = my_snprintf(octbuf, sizeof octbuf,
"%" UVxf, u);
else
chsize = my_snprintf(octbuf, sizeof octbuf,
"%cx{%" UVxf "}", esc, u);
} else if (flags & PERL_PV_ESCAPE_NOBACKSLASH) {
chsize = 1;
} else {
if (c == dq || c == esc || !isPRINT(c)) {
chsize = 2;
switch (c) {
case '\\' : /* fallthrough */
case '%' : if (c == esc)
octbuf[1] = esc;
else
chsize = 1;
break;
} else if (chsize > 1) {
sv_catpvn(dsv, octbuf, chsize);
wrote += chsize;
} else {
char tmp[2];
my_snprintf(tmp, sizeof tmp, "%c", c);
sv_catpvn(dsv, tmp, 1);
wrote++;
}
if (flags & PERL_PV_ESCAPE_FIRSTCHAR)
break;
}
if (escaped != NULL)
*escaped= pv - str;
return SvPVX(dsv);
}
#endif
#endif
#ifndef pv_pretty
#if defined(NEED_pv_pretty)
static char * DPPP_(my_pv_pretty)(pTHX_ SV * dsv, char const * const str, const STRLEN count, const STRLEN max, char const * const start_color, char const * const end_color, const U32 flags);
static
#else
extern char * DPPP_(my_pv_pretty)(pTHX_ SV * dsv, char const * const str, const STRLEN count, const STRLEN max, char const * const start_color, char const * const end_color, const U32 flags);
#endif
#if defined(NEED_pv_pretty) || defined(NEED_pv_pretty_GLOBAL)
#ifdef pv_pretty
# undef pv_pretty
#endif
#define pv_pretty(a,b,c,d,e,f,g) DPPP_(my_pv_pretty)(aTHX_ a,b,c,d,e,f,g)
#define Perl_pv_pretty DPPP_(my_pv_pretty)
char *
DPPP_(my_pv_pretty)(pTHX_ SV *dsv, char const * const str, const STRLEN count,
const STRLEN max, char const * const start_color, char const * const end_color,
const U32 flags)
{
const U8 dq = (flags & PERL_PV_PRETTY_QUOTE) ? '"' : '%';
STRLEN escaped;
if (!(flags & PERL_PV_PRETTY_NOCLEAR))
sv_setpvs(dsv, "");
if (dq == '"')
sv_catpvs(dsv, "\"");
else if (flags & PERL_PV_PRETTY_LTGT)
sv_catpvs(dsv, "<");
if (start_color != NULL)
sv_catpv(dsv, D_PPP_CONSTPV_ARG(start_color));
pv_escape(dsv, str, count, max, &escaped, flags | PERL_PV_ESCAPE_NOCLEAR);
if (end_color != NULL)
sv_catpv(dsv, D_PPP_CONSTPV_ARG(end_color));
if (dq == '"')
sv_catpvs(dsv, "\"");
else if (flags & PERL_PV_PRETTY_LTGT)
sv_catpvs(dsv, ">");
if ((flags & PERL_PV_PRETTY_ELLIPSES) && escaped < count)
sv_catpvs(dsv, "...");
return SvPVX(dsv);
}
#endif
#endif
#ifndef pv_display
#if defined(NEED_pv_display)
( run in 2.032 seconds using v1.01-cache-2.11-cpan-94b05bcf43c )