Algorithm-Line-Lerp
view release on metacpan or search on metacpan
167016711672167316741675167616771678167916801681168216831684168516861687168816891690COP_SEQ_RANGE_LOW|5.009005||Viu
CopSTASH|5.006000|5.003007|p
CopSTASH_eq|5.006000|5.003007|p
CopSTASH_ne|5.006000||Viu
CopSTASHPV|5.006000|5.003007|p
CopSTASHPV_set|5.017001|5.017001|p
CopSTASH_set|5.006000|5.003007|p
cop_store_label|5.031004|5.031004|x
Copy|5.003007|5.003007|
CopyD|5.009002|5.003007|p
copy_length|||Viu
core_prototype|5.015002||Vi
coresub_op|5.015003||Viu
CowREFCNT|5.017007||Viu
cPADOP|5.006000||Viu
cPADOPo|5.006000||Viu
cPADOPx|5.006000||Viu
CPERLarg|5.005000||Viu
CPERLscope|5.005000|5.003007|pdV
cPMOP|5.003007||Viu
cPMOPo|5.004005||Viu
472847294730473147324733473447354736473747384739474047414742474347444745474647474748KEY_int|5.003007||Viu
KEY_ioctl|5.003007||Viu
KEY_isa|5.031007||Viu
KEY_join|5.003007||Viu
KEY_keys|5.003007||Viu
KEY_kill|5.003007||Viu
KEY_last|5.003007||Viu
KEY_lc|5.003007||Viu
KEY_lcfirst|5.003007||Viu
KEY_le|5.003007||Viu
KEY_length|5.003007||Viu
KEY___LINE|5.003007||Viu
KEY_link|5.003007||Viu
KEY_listen|5.003007||Viu
KEY_local|5.003007||Viu
KEY_localtime|5.003007||Viu
KEY_lock|5.005000||Viu
KEY_log|5.003007||Viu
KEY_lstat|5.003007||Viu
KEY_lt|5.003007||Viu
KEY_m|5.003007||Viu
531753185319532053215322532353245325532653275328532953305331533253335334533553365337MGf_LOCAL|5.009003||Viu
MGf_MINMATCH|5.003007||Viu
MGf_PERSIST|5.021005||Viu
mg_free|5.003007|5.003007|
mg_freeext|5.027004|5.027004|
mg_free_type|5.013006|5.013006|
MGf_REFCOUNTED|5.003007||Viu
MGf_REQUIRE_GV|5.021004||Viu
MGf_TAINTEDDIR|5.003007||Viu
mg_get|5.003007|5.003007|
mg_length|5.005000|5.005000|d
mg_localize|5.009003||Vi
mg_magical|5.003007|5.003007|n
MgPV|5.003007||Viu
MgPV_const|5.009003||Viu
MgPV_nolen_const|5.009003||Viu
mg_set|5.003007|5.003007|
mg_size|5.005000|5.005000|u
MgSV|5.033009||Viu
MgTAINTEDDIR|5.003007||Viu
MgTAINTEDDIR_off|5.004000||Viu
812581268127812881298130813181328133813481358136813781388139814081418142814381448145reg_named_buff_nextkey|5.009005||cVu
reg_named_buff_scalar|5.009005||cVu
regnext|5.003007||cVu
reg_node|5.005000||Viu
regnode_guts|5.021005||Viu
regnode_guts_debug|||Viu
REGNODE_MAX|5.009004||Viu
REGNODE_SIMPLE|5.013002||Viu
REGNODE_VARIES|5.013002||Viu
reg_numbered_buff_fetch|5.009005||cViu
reg_numbered_buff_length|5.009005||cViu
reg_numbered_buff_store|5.009005||cViu
regpiece|5.005000||Viu
regpnode|5.031010||Viu
regprop|5.003007||Viu
reg_qr_package|5.009005||cViu
REG_RECURSE_SEEN|5.019009||Viu
regrepeat|5.005000||Viu
REG_RUN_ON_COMMENT_SEEN|5.019009||Viu
reg_scan_name|5.009005||Viu
reg_skipcomment|5.009005||Vniu
102031020410205102061020710208102091021010211102121021310214102151021610217102181021910220102211022210223UTF8_IS_INVARIANT|5.007001|5.003007|p
UTF8_IS_NEXT_CHAR_DOWNGRADEABLE|5.017006||Viu
UTF8_IS_NONCHAR|5.023002|5.023002|
UTF8_IS_NONCHAR_GIVEN_THAT_NON_SUPER_AND_GE_PROBLEMATIC|5.013009||Viu
UTF8_IS_PERL_EXTENDED|5.035004||Viu
UTF8_IS_REPLACEMENT|||
UTF8_IS_START|5.007001||Viu
UTF8_IS_START_base|5.031007||Viu
UTF8_IS_SUPER|5.023002|5.023002|
UTF8_IS_SURROGATE|5.023002|5.023002|
utf8_length|5.007001|5.007001|
UTF8_MAXBYTES|5.009002|5.006000|p
UTF8_MAXBYTES_CASE|5.009002|5.003007|p
UTF8_MAX_FOLD_CHAR_EXPAND|5.013009||Viu
UTF8_MAXLEN|5.006000||Viu
utf8_mg_len_cache_update|5.013003||Viu
utf8_mg_pos_cache_update|5.009004||Viu
utf8n_to_uvchr|5.007001|5.007001|n
utf8n_to_uvchr_error|5.025006|5.025006|n
utf8n_to_uvchr_msgs|5.027009|5.027009|n
_utf8n_to_uvchr_msgs_helper|5.029001||cVnu
106821068310684106851068610687106881068910690106911069210693106941069510696106971069810699107001070110702if
(
exists
$opt
{
'list-unsupported'
}) {
my
$f
;
for
$f
(
sort
dictionary_order
keys
%API
) {
next
if
$API
{
$f
}{core_only};
next
if
$API
{
$f
}{beyond_depr};
next
if
$API
{
$f
}{inaccessible};
next
if
$API
{
$f
}{experimental};
next
unless
$API
{
$f
}{todo};
next
if
int_parse_version(
$API
{
$f
}{todo}) <=
$int_min_perl
;
my
$repeat
= 40 -
length
(
$f
);
$repeat
= 0
if
$repeat
< 0;
"$f "
,
'.'
x
$repeat
,
" "
, format_version(
$API
{
$f
}{todo}),
"\n"
;
}
exit
0;
}
# Scan for hints, possible replacement candidates, etc.
my
(
%replace
,
%need
,
%hints
,
%warnings
,
%depends
);
my
$replace
= 0;
1071510716107171071810719107201072110722107231072410725107261072710728107291073010731107321073310734while
(<DATA>) {
if
(
$hint
) {
# Here, we are in the middle of accumulating a hint or warning.
my
$end_of_hint
= 0;
# A line containing a comment end marker closes the hint. Remove that
# marker for processing below.
if
(s/\s
*$rcce
(.*?)\s*$//) {
die
"Nothing can follow the end of comment in '$_'\n"
if
length
$1 > 0;
$end_of_hint
= 1;
}
# Set $h to the hash of which type.
my
$h
=
$hint
->[0] eq
'Hint'
? \
%hints
: \
%warnings
;
# Ignore any leading and trailing white space, and an optional star comment
# continuation marker, then place the meat of the line into $1
m/^\s*(?:\*\s*)?(.*?)\s*$/;
1286412865128661286712868128691287012871128721287312874128751287612877128781287912880128811288212883128841288512886#endif
#ifndef av_count
# define av_count(av) (AvFILL(av)+1)
#endif
#ifndef ERRSV
# define ERRSV get_sv("@",FALSE)
#endif
/* Hint: gv_stashpvn
* This function
's backport doesn'
t support the
length
parameter, but
* rather ignores it. Portability can only be ensured
if
the
length
* parameter is used
for
speed reasons, but the
length
can always be
* correctly computed from the string argument.
*/
#ifndef gv_stashpvn
# define gv_stashpvn(str,len,create) gv_stashpv(str,create)
#endif
/* Replace: 1 */
#ifndef get_cv
# define get_cv perl_get_cv
#endif
139751397613977139781397913980139811398213983139841398513986139871398813989139901399113992139931399413995
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)) \
? (croak(D_PPP_TOO_SHORT_MSG, \
s[0], (
int
) ((e) - (s)), (
int
) UTF8SKIP(s)), \
0) \
: D_PPP_TO_
## name ## _CALLEE(s,r,l))
#ifndef toUPPER_utf8_safe
# define toUPPER_utf8_safe(s,e,r,l) \
D_PPP_GENERIC_MULTI_ARG_TO(UPPER,s,e,r,l)
#endif
1401414015140161401714018140191402014021140221402314024140251402614027140281402914030140311403214033/* Here we have UTF-8 support, but using the original API where the case
* changing functions merely returned the changed code point; hence they
* couldn't handle multi-character results. */
# ifdef uvchr_to_utf8
# define D_PPP_UV_TO_UTF8 uvchr_to_utf8
# else
# define D_PPP_UV_TO_UTF8 uv_to_utf8
# endif
/* Get the utf8 of the case changed value, and store its
length
; then have
* to re-calculate the changed case value in order to
return
it */
# define D_PPP_GENERIC_SINGLE_ARG_TO_UVCHR(name, c, s, l) \
(*(l) = (D_PPP_UV_TO_UTF8(s, \
UNI_TO_NATIVE(to_uni_
## name(NATIVE_TO_UNI(c)))) - (s)), \
UNI_TO_NATIVE(to_uni_
## name(NATIVE_TO_UNI(c))))
#ifndef toLOWER_uvchr
# define toLOWER_uvchr(c, s, l) \
D_PPP_GENERIC_SINGLE_ARG_TO_UVCHR(lower, c, s, l)
#endif
1404114042140431404414045140461404714048140491405014051140521405314054140551405614057140581405914060140611406214063140641406514066140671406814069# define toTITLE_uvchr(c, s, l) \
D_PPP_GENERIC_SINGLE_ARG_TO_UVCHR(title, c, s, l)
#endif
#ifndef toFOLD_uvchr
# define toFOLD_uvchr(c, s, l) toLOWER_uvchr(c, s, l)
#endif
# define D_PPP_GENERIC_SINGLE_ARG_TO_UTF8(name, s, e, r, l) \
(((((e) - (s)) <= 0) \
? (croak(
"Attempting case change on zero length string"
), \
0) /* So looks like it returns something, and will compile */ \
: ((e) - (s)) < UTF8SKIP(s)) \
? (croak(D_PPP_TOO_SHORT_MSG, \
s[0], (
int
) ((e) - (s)), (
int
) UTF8SKIP(s)), \
0) \
/* Get the changed code point and store its UTF-8 */ \
: D_PPP_UV_TO_UTF8(r, to_utf8_
## name(s)), \
/* Then store its
length
, and re-get code point
for
return
*/ \
*(l) = UTF8SKIP(r), to_utf8_
## name(r))
/* Warning: toUPPER_utf8_safe, toLOWER_utf8_safe, toTITLE_utf8_safe,
* toUPPER_uvchr, toLOWER_uvchr, toTITLE_uvchr
The UTF-8 case changing operations had bugs
before
around
5.12 or 5.14;
this backport does not correct them.
In perls
before
7.3, multi-character case changing is not implemented; this
backport uses the simple case changes available in those perls. */
#ifndef toUPPER_utf8_safe
161301613116132161331613416135161361613716138161391614016141161421614316144161451614616147161481614916150#ifndef SvSHARED_HASH
# 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))
173991740017401174021740317404174051740617407174081740917410174111741217413174141741517416174171741817419174201742117422174231742417425174261742717428#if defined(NEED_my_strlcat) || defined(NEED_my_strlcat_GLOBAL)
#define my_strlcat DPPP_(my_my_strlcat)
#define Perl_my_strlcat DPPP_(my_my_strlcat)
Size_t
DPPP_(my_my_strlcat)(char
*dst
, const char
*src
, Size_t size)
{
Size_t used,
length
, copy;
used = strlen(dst);
length
= strlen(src);
if
(size > 0 && used < size - 1) {
copy = (
length
>= size - used) ? size - used - 1 :
length
;
memcpy(dst + used, src, copy);
dst[used + copy] =
'\0'
;
}
return
used +
length
;
}
#endif
#endif
#if !defined(my_strlcpy)
#if defined(NEED_my_strlcpy)
static Size_t DPPP_(my_my_strlcpy)(char * dst, const char * src, Size_t size);
static
#else
extern Size_t DPPP_(my_my_strlcpy)(char * dst, const char * src, Size_t size);
17430174311743217433174341743517436174371743817439174401744117442174431744417445174461744717448174491745017451174521745317454174551745617457#if defined(NEED_my_strlcpy) || defined(NEED_my_strlcpy_GLOBAL)
#define my_strlcpy DPPP_(my_my_strlcpy)
#define Perl_my_strlcpy DPPP_(my_my_strlcpy)
Size_t
DPPP_(my_my_strlcpy)(char
*dst
, const char
*src
, Size_t size)
{
Size_t
length
, copy;
length
= strlen(src);
if
(size > 0) {
copy = (
length
>= size) ? size - 1 :
length
;
memcpy(dst, src, copy);
dst[copy] =
'\0'
;
}
return
length
;
}
#endif
#endif
#ifdef SVf_UTF8
#ifndef SvUTF8
# define SvUTF8(sv) (SvFLAGS(sv) & SVf_UTF8)
#endif
177951779617797177981779917800178011780217803178041780517806178071780817809178101781117812178131781417815#define utf8_to_uvchr_buf(a,b,c) DPPP_(my_utf8_to_uvchr_buf)(aTHX_ a,b,c)
#define Perl_utf8_to_uvchr_buf DPPP_(my_utf8_to_uvchr_buf)
UV
DPPP_(my_utf8_to_uvchr_buf)(pTHX_ const U8
*s
, const U8
*send
, STRLEN
*retlen
)
{
# if (PERL_BCDVERSION >= 0x5031004) /* But from above, must be < 5.35.10 */
# if (PERL_BCDVERSION != 0x5035009)
/* Versions less than 5.35.9 could dereference s on zero
length
, so
* pass it something where
no
harm comes from that. */
if
(
send
<= s) s =
send
= (U8 *)
"?"
;
return
Perl_utf8_to_uvchr_buf_helper(aTHX_ s,
send
, retlen);
# else /* Below is 5.35.9, which also works on non-empty input, but
for
empty input, can wrongly dereference, and additionally is
also just plain broken */
if
(
send
> s)
return
Perl_utf8_to_uvchr_buf_helper(aTHX_ s,
send
, retlen);
if
(! ckWARN_d(WARN_UTF8)) {
if
(retlen)
*retlen
= 0;
178261782717828178291783017831178321783317834178351783617837178381783917840178411784217843178441784517846# endif
# else
UV ret;
STRLEN curlen;
bool overflows = 0;
const U8
*cur_s
= s;
const bool do_warnings = ckWARN_d(WARN_UTF8);
# if (PERL_BCDVERSION < 0x5026000) && ! defined(EBCDIC)
STRLEN overflow_length = 0;
# endif
if
(
send
> s) {
curlen =
send
- s;
}
else
{
assert(0); /* Modern perls
die
under this circumstance */
curlen = 0;
if
(! do_warnings) { /* Handle empty here
if
no
warnings needed */
if
(retlen)
*retlen
= 0;
178581785917860178611786217863178641786517866178671786817869178701787117872178731787417875178761787717878* parameters. Therefore detect it ourselves in releases it was
* problematic in. */
if
(curlen > 0 && UNLIKELY(
*s
>= 0xFE)) {
/* First, on a 32-bit machine the first byte being at least \xFE
* automatically is overflow, as it indicates something requiring more
* than 31 bits */
if
(sizeof(ret) < 8) {
overflows = 1;
overflow_length = (
*s
== 0xFE) ? 7 : 13;
}
else
{
const U8 highest[] = /* 2*63-1 */
"\xFF\x80\x87\xBF\xBF\xBF\xBF\xBF\xBF\xBF\xBF\xBF\xBF"
;
const U8
*cur_h
= highest;
for
(cur_s = s; cur_s <
send
; cur_s++, cur_h++) {
if
(UNLIKELY(
*cur_s
==
*cur_h
)) {
continue
;
}
1788317884178851788617887178881788917890178911789217893178941789517896178971789817899179001790117902179031790417905179061790717908179091791017911
* sequence doesn't overflow */
overflows =
*cur_s
>
*cur_h
;
break;
}
/* Here, either we set the bool and broke out of the loop, or got
* to the end and all bytes are the same which indicates it doesn't
* overflow. If it did overflow, it would be this number of bytes
* */
overflow_length = 13;
}
}
if
(UNLIKELY(overflows)) {
ret = 0;
if
(! do_warnings && retlen) {
*retlen
= overflow_length;
}
}
else
# endif /* < 5.26 */
/* Here, we are either in a release that properly detects overflow, or
* we have checked
for
overflow and the
next
statement is executing as
* part of the above conditional where we know we don't have overflow.
*
17967179681796917970179711797217973179741797517976179771797817979179801798117982179831798417985179861798717988
ret = D_PPP_utf8_to_uvchr_buf_callee(
(U8 *) /* Early perls:
no
const */
s, curlen, retlen, UTF8_ALLOW_ANY);
/* Override
with
the REPLACEMENT character, as that is what the
* modern version of this function returns */
ret = UNICODE_REPLACEMENT;
# if (PERL_BCDVERSION < 0x5016000)
/* Versions earlier than this don't necessarily
return
the proper
*
length
. It should not extend past the end of string, nor past
* what the first byte indicates the
length
is, nor past the
* continuation characters */
if
(retlen && (IV)
*retlen
>= 0) {
unsigned
int
i = 1;
*retlen
= D_PPP_MIN(
*retlen
, curlen);
*retlen
= D_PPP_MIN(
*retlen
, UTF8SKIP(s));
do
{
# ifdef UTF8_IS_CONTINUATION
if
(! UTF8_IS_CONTINUATION(s[i]))
# else /* Versions without the above don't support EBCDIC anyway */
( run in 0.342 second using v1.01-cache-2.11-cpan-95122f20152 )