diff options
Diffstat (limited to 'Master/tlpkg/tlperl/lib/CORE')
49 files changed, 14911 insertions, 4761 deletions
diff --git a/Master/tlpkg/tlperl/lib/CORE/XSUB.h b/Master/tlpkg/tlperl/lib/CORE/XSUB.h index e64bc83b929..e74abae26fd 100644 --- a/Master/tlpkg/tlperl/lib/CORE/XSUB.h +++ b/Master/tlpkg/tlperl/lib/CORE/XSUB.h @@ -93,12 +93,7 @@ is a lexical C<$_> in scope. */ #ifndef PERL_UNUSED_ARG -# if defined(lint) && defined(S_SPLINT_S) /* www.splint.org */ -# include <note.h> -# define PERL_UNUSED_ARG(x) NOTE(ARGUNUSED(x)) -# else -# define PERL_UNUSED_ARG(x) ((void)x) -# endif +# define PERL_UNUSED_ARG(x) ((void)x) #endif #ifndef PERL_UNUSED_VAR # define PERL_UNUSED_VAR(x) ((void)x) @@ -164,12 +159,7 @@ is a lexical C<$_> in scope. #define dITEMS I32 items = (I32)(SP - MARK) -#if defined(lint) && defined(S_SPLINT_S) /* www.splint.org */ -# define dXSARGS \ - NOTE(ARGUNUSED(cv)) \ - dSP; dAXMARK; dITEMS -#else -# define dXSARGS \ +#define dXSARGS \ dSP; dAXMARK; dITEMS /* These 3 macros are replacements for dXSARGS macro only in bootstrap. They factor out common code in every BOOT XSUB. Computation of vars mark @@ -177,19 +167,18 @@ is a lexical C<$_> in scope. optimized away since BOOT must return &PL_sv_yes by default from xsubpp. Note these macros are not drop in replacements for dXSARGS since they set PL_xsubfilename. */ -# define dXSBOOTARGSXSAPIVERCHK \ +#define dXSBOOTARGSXSAPIVERCHK \ I32 ax = XS_BOTHVERSION_SETXSUBFN_POPMARK_BOOTCHECK; \ SV **mark = PL_stack_base + ax; dSP; dITEMS -# define dXSBOOTARGSAPIVERCHK \ +#define dXSBOOTARGSAPIVERCHK \ I32 ax = XS_APIVERSION_SETXSUBFN_POPMARK_BOOTCHECK; \ SV **mark = PL_stack_base + ax; dSP; dITEMS /* dXSBOOTARGSNOVERCHK has no API in xsubpp to choose it so do #undef dXSBOOTARGSXSAPIVERCHK #define dXSBOOTARGSXSAPIVERCHK dXSBOOTARGSNOVERCHK */ -# define dXSBOOTARGSNOVERCHK \ +#define dXSBOOTARGSNOVERCHK \ I32 ax = XS_SETXSUBFN_POPMARK; \ SV **mark = PL_stack_base + ax; dSP; dITEMS -#endif #define dXSTARG SV * const targ = ((PL_op->op_private & OPpENTERSUB_HASTARG) \ ? PAD_SV(PL_op->op_targ) : sv_newmortal()) diff --git a/Master/tlpkg/tlperl/lib/CORE/av.h b/Master/tlpkg/tlperl/lib/CORE/av.h index d6d21378e4c..97ce2bc3bb8 100644 --- a/Master/tlpkg/tlperl/lib/CORE/av.h +++ b/Master/tlpkg/tlperl/lib/CORE/av.h @@ -81,14 +81,12 @@ Same as C<av_top_index()>. ? mg_size(MUTABLE_SV(av)) : AvFILLp(av)) #define av_tindex(av) av_top_index(av) -#if defined(PERL_IN_REGCOMP_C) || defined(PERL_IN_REGEXEC_C) || defined(PERL_IN_UTF8_C) /* Note that it doesn't make sense to do this: * SvGETMAGIC(av); IV x = av_tindex_nomg(av); - * This name is controversial, and so is restricted by the #ifdef to the places - * it already occurs */ -# define av_tindex_nomg(av) (__ASSERT_(SvTYPE(av) == SVt_PVAV) AvFILLp(av)) -#endif +# define av_top_index_skip_len_mg(av) \ + (__ASSERT_(SvTYPE(av) == SVt_PVAV) AvFILLp(av)) +# define av_tindex_skip_len_mg(av) av_top_index_skip_len_mg(av) #define NEGATIVE_INDICES_VAR "NEGATIVE_INDICES" diff --git a/Master/tlpkg/tlperl/lib/CORE/charclass_invlists.h b/Master/tlpkg/tlperl/lib/CORE/charclass_invlists.h index 6abd325442f..7b5b7eae1cb 100644 --- a/Master/tlpkg/tlperl/lib/CORE/charclass_invlists.h +++ b/Master/tlpkg/tlperl/lib/CORE/charclass_invlists.h @@ -42,8 +42,1291 @@ static const UV ASCII_invlist[] = { /* for ASCII/Latin1 */ 0x80 }; +static const UV Assigned_invlist[] = { /* for ASCII/Latin1 */ + 1276, /* Number of elements */ + 148565664, /* Version and data structure type */ + 0, /* 0 if the list starts at 0; + 1 if it starts at the element beyond 0 */ + 0x0, + 0x378, + 0x37A, + 0x380, + 0x384, + 0x38B, + 0x38C, + 0x38D, + 0x38E, + 0x3A2, + 0x3A3, + 0x530, + 0x531, + 0x557, + 0x559, + 0x560, + 0x561, + 0x588, + 0x589, + 0x58B, + 0x58D, + 0x590, + 0x591, + 0x5C8, + 0x5D0, + 0x5EB, + 0x5F0, + 0x5F5, + 0x600, + 0x61D, + 0x61E, + 0x70E, + 0x70F, + 0x74B, + 0x74D, + 0x7B2, + 0x7C0, + 0x7FB, + 0x800, + 0x82E, + 0x830, + 0x83F, + 0x840, + 0x85C, + 0x85E, + 0x85F, + 0x8A0, + 0x8B5, + 0x8B6, + 0x8BE, + 0x8D4, + 0x984, + 0x985, + 0x98D, + 0x98F, + 0x991, + 0x993, + 0x9A9, + 0x9AA, + 0x9B1, + 0x9B2, + 0x9B3, + 0x9B6, + 0x9BA, + 0x9BC, + 0x9C5, + 0x9C7, + 0x9C9, + 0x9CB, + 0x9CF, + 0x9D7, + 0x9D8, + 0x9DC, + 0x9DE, + 0x9DF, + 0x9E4, + 0x9E6, + 0x9FC, + 0xA01, + 0xA04, + 0xA05, + 0xA0B, + 0xA0F, + 0xA11, + 0xA13, + 0xA29, + 0xA2A, + 0xA31, + 0xA32, + 0xA34, + 0xA35, + 0xA37, + 0xA38, + 0xA3A, + 0xA3C, + 0xA3D, + 0xA3E, + 0xA43, + 0xA47, + 0xA49, + 0xA4B, + 0xA4E, + 0xA51, + 0xA52, + 0xA59, + 0xA5D, + 0xA5E, + 0xA5F, + 0xA66, + 0xA76, + 0xA81, + 0xA84, + 0xA85, + 0xA8E, + 0xA8F, + 0xA92, + 0xA93, + 0xAA9, + 0xAAA, + 0xAB1, + 0xAB2, + 0xAB4, + 0xAB5, + 0xABA, + 0xABC, + 0xAC6, + 0xAC7, + 0xACA, + 0xACB, + 0xACE, + 0xAD0, + 0xAD1, + 0xAE0, + 0xAE4, + 0xAE6, + 0xAF2, + 0xAF9, + 0xAFA, + 0xB01, + 0xB04, + 0xB05, + 0xB0D, + 0xB0F, + 0xB11, + 0xB13, + 0xB29, + 0xB2A, + 0xB31, + 0xB32, + 0xB34, + 0xB35, + 0xB3A, + 0xB3C, + 0xB45, + 0xB47, + 0xB49, + 0xB4B, + 0xB4E, + 0xB56, + 0xB58, + 0xB5C, + 0xB5E, + 0xB5F, + 0xB64, + 0xB66, + 0xB78, + 0xB82, + 0xB84, + 0xB85, + 0xB8B, + 0xB8E, + 0xB91, + 0xB92, + 0xB96, + 0xB99, + 0xB9B, + 0xB9C, + 0xB9D, + 0xB9E, + 0xBA0, + 0xBA3, + 0xBA5, + 0xBA8, + 0xBAB, + 0xBAE, + 0xBBA, + 0xBBE, + 0xBC3, + 0xBC6, + 0xBC9, + 0xBCA, + 0xBCE, + 0xBD0, + 0xBD1, + 0xBD7, + 0xBD8, + 0xBE6, + 0xBFB, + 0xC00, + 0xC04, + 0xC05, + 0xC0D, + 0xC0E, + 0xC11, + 0xC12, + 0xC29, + 0xC2A, + 0xC3A, + 0xC3D, + 0xC45, + 0xC46, + 0xC49, + 0xC4A, + 0xC4E, + 0xC55, + 0xC57, + 0xC58, + 0xC5B, + 0xC60, + 0xC64, + 0xC66, + 0xC70, + 0xC78, + 0xC84, + 0xC85, + 0xC8D, + 0xC8E, + 0xC91, + 0xC92, + 0xCA9, + 0xCAA, + 0xCB4, + 0xCB5, + 0xCBA, + 0xCBC, + 0xCC5, + 0xCC6, + 0xCC9, + 0xCCA, + 0xCCE, + 0xCD5, + 0xCD7, + 0xCDE, + 0xCDF, + 0xCE0, + 0xCE4, + 0xCE6, + 0xCF0, + 0xCF1, + 0xCF3, + 0xD01, + 0xD04, + 0xD05, + 0xD0D, + 0xD0E, + 0xD11, + 0xD12, + 0xD3B, + 0xD3D, + 0xD45, + 0xD46, + 0xD49, + 0xD4A, + 0xD50, + 0xD54, + 0xD64, + 0xD66, + 0xD80, + 0xD82, + 0xD84, + 0xD85, + 0xD97, + 0xD9A, + 0xDB2, + 0xDB3, + 0xDBC, + 0xDBD, + 0xDBE, + 0xDC0, + 0xDC7, + 0xDCA, + 0xDCB, + 0xDCF, + 0xDD5, + 0xDD6, + 0xDD7, + 0xDD8, + 0xDE0, + 0xDE6, + 0xDF0, + 0xDF2, + 0xDF5, + 0xE01, + 0xE3B, + 0xE3F, + 0xE5C, + 0xE81, + 0xE83, + 0xE84, + 0xE85, + 0xE87, + 0xE89, + 0xE8A, + 0xE8B, + 0xE8D, + 0xE8E, + 0xE94, + 0xE98, + 0xE99, + 0xEA0, + 0xEA1, + 0xEA4, + 0xEA5, + 0xEA6, + 0xEA7, + 0xEA8, + 0xEAA, + 0xEAC, + 0xEAD, + 0xEBA, + 0xEBB, + 0xEBE, + 0xEC0, + 0xEC5, + 0xEC6, + 0xEC7, + 0xEC8, + 0xECE, + 0xED0, + 0xEDA, + 0xEDC, + 0xEE0, + 0xF00, + 0xF48, + 0xF49, + 0xF6D, + 0xF71, + 0xF98, + 0xF99, + 0xFBD, + 0xFBE, + 0xFCD, + 0xFCE, + 0xFDB, + 0x1000, + 0x10C6, + 0x10C7, + 0x10C8, + 0x10CD, + 0x10CE, + 0x10D0, + 0x1249, + 0x124A, + 0x124E, + 0x1250, + 0x1257, + 0x1258, + 0x1259, + 0x125A, + 0x125E, + 0x1260, + 0x1289, + 0x128A, + 0x128E, + 0x1290, + 0x12B1, + 0x12B2, + 0x12B6, + 0x12B8, + 0x12BF, + 0x12C0, + 0x12C1, + 0x12C2, + 0x12C6, + 0x12C8, + 0x12D7, + 0x12D8, + 0x1311, + 0x1312, + 0x1316, + 0x1318, + 0x135B, + 0x135D, + 0x137D, + 0x1380, + 0x139A, + 0x13A0, + 0x13F6, + 0x13F8, + 0x13FE, + 0x1400, + 0x169D, + 0x16A0, + 0x16F9, + 0x1700, + 0x170D, + 0x170E, + 0x1715, + 0x1720, + 0x1737, + 0x1740, + 0x1754, + 0x1760, + 0x176D, + 0x176E, + 0x1771, + 0x1772, + 0x1774, + 0x1780, + 0x17DE, + 0x17E0, + 0x17EA, + 0x17F0, + 0x17FA, + 0x1800, + 0x180F, + 0x1810, + 0x181A, + 0x1820, + 0x1878, + 0x1880, + 0x18AB, + 0x18B0, + 0x18F6, + 0x1900, + 0x191F, + 0x1920, + 0x192C, + 0x1930, + 0x193C, + 0x1940, + 0x1941, + 0x1944, + 0x196E, + 0x1970, + 0x1975, + 0x1980, + 0x19AC, + 0x19B0, + 0x19CA, + 0x19D0, + 0x19DB, + 0x19DE, + 0x1A1C, + 0x1A1E, + 0x1A5F, + 0x1A60, + 0x1A7D, + 0x1A7F, + 0x1A8A, + 0x1A90, + 0x1A9A, + 0x1AA0, + 0x1AAE, + 0x1AB0, + 0x1ABF, + 0x1B00, + 0x1B4C, + 0x1B50, + 0x1B7D, + 0x1B80, + 0x1BF4, + 0x1BFC, + 0x1C38, + 0x1C3B, + 0x1C4A, + 0x1C4D, + 0x1C89, + 0x1CC0, + 0x1CC8, + 0x1CD0, + 0x1CF7, + 0x1CF8, + 0x1CFA, + 0x1D00, + 0x1DF6, + 0x1DFB, + 0x1F16, + 0x1F18, + 0x1F1E, + 0x1F20, + 0x1F46, + 0x1F48, + 0x1F4E, + 0x1F50, + 0x1F58, + 0x1F59, + 0x1F5A, + 0x1F5B, + 0x1F5C, + 0x1F5D, + 0x1F5E, + 0x1F5F, + 0x1F7E, + 0x1F80, + 0x1FB5, + 0x1FB6, + 0x1FC5, + 0x1FC6, + 0x1FD4, + 0x1FD6, + 0x1FDC, + 0x1FDD, + 0x1FF0, + 0x1FF2, + 0x1FF5, + 0x1FF6, + 0x1FFF, + 0x2000, + 0x2065, + 0x2066, + 0x2072, + 0x2074, + 0x208F, + 0x2090, + 0x209D, + 0x20A0, + 0x20BF, + 0x20D0, + 0x20F1, + 0x2100, + 0x218C, + 0x2190, + 0x23FF, + 0x2400, + 0x2427, + 0x2440, + 0x244B, + 0x2460, + 0x2B74, + 0x2B76, + 0x2B96, + 0x2B98, + 0x2BBA, + 0x2BBD, + 0x2BC9, + 0x2BCA, + 0x2BD2, + 0x2BEC, + 0x2BF0, + 0x2C00, + 0x2C2F, + 0x2C30, + 0x2C5F, + 0x2C60, + 0x2CF4, + 0x2CF9, + 0x2D26, + 0x2D27, + 0x2D28, + 0x2D2D, + 0x2D2E, + 0x2D30, + 0x2D68, + 0x2D6F, + 0x2D71, + 0x2D7F, + 0x2D97, + 0x2DA0, + 0x2DA7, + 0x2DA8, + 0x2DAF, + 0x2DB0, + 0x2DB7, + 0x2DB8, + 0x2DBF, + 0x2DC0, + 0x2DC7, + 0x2DC8, + 0x2DCF, + 0x2DD0, + 0x2DD7, + 0x2DD8, + 0x2DDF, + 0x2DE0, + 0x2E45, + 0x2E80, + 0x2E9A, + 0x2E9B, + 0x2EF4, + 0x2F00, + 0x2FD6, + 0x2FF0, + 0x2FFC, + 0x3000, + 0x3040, + 0x3041, + 0x3097, + 0x3099, + 0x3100, + 0x3105, + 0x312E, + 0x3131, + 0x318F, + 0x3190, + 0x31BB, + 0x31C0, + 0x31E4, + 0x31F0, + 0x321F, + 0x3220, + 0x32FF, + 0x3300, + 0x4DB6, + 0x4DC0, + 0x9FD6, + 0xA000, + 0xA48D, + 0xA490, + 0xA4C7, + 0xA4D0, + 0xA62C, + 0xA640, + 0xA6F8, + 0xA700, + 0xA7AF, + 0xA7B0, + 0xA7B8, + 0xA7F7, + 0xA82C, + 0xA830, + 0xA83A, + 0xA840, + 0xA878, + 0xA880, + 0xA8C6, + 0xA8CE, + 0xA8DA, + 0xA8E0, + 0xA8FE, + 0xA900, + 0xA954, + 0xA95F, + 0xA97D, + 0xA980, + 0xA9CE, + 0xA9CF, + 0xA9DA, + 0xA9DE, + 0xA9FF, + 0xAA00, + 0xAA37, + 0xAA40, + 0xAA4E, + 0xAA50, + 0xAA5A, + 0xAA5C, + 0xAAC3, + 0xAADB, + 0xAAF7, + 0xAB01, + 0xAB07, + 0xAB09, + 0xAB0F, + 0xAB11, + 0xAB17, + 0xAB20, + 0xAB27, + 0xAB28, + 0xAB2F, + 0xAB30, + 0xAB66, + 0xAB70, + 0xABEE, + 0xABF0, + 0xABFA, + 0xAC00, + 0xD7A4, + 0xD7B0, + 0xD7C7, + 0xD7CB, + 0xD7FC, + 0xD800, + 0xFA6E, + 0xFA70, + 0xFADA, + 0xFB00, + 0xFB07, + 0xFB13, + 0xFB18, + 0xFB1D, + 0xFB37, + 0xFB38, + 0xFB3D, + 0xFB3E, + 0xFB3F, + 0xFB40, + 0xFB42, + 0xFB43, + 0xFB45, + 0xFB46, + 0xFBC2, + 0xFBD3, + 0xFD40, + 0xFD50, + 0xFD90, + 0xFD92, + 0xFDC8, + 0xFDF0, + 0xFDFE, + 0xFE00, + 0xFE1A, + 0xFE20, + 0xFE53, + 0xFE54, + 0xFE67, + 0xFE68, + 0xFE6C, + 0xFE70, + 0xFE75, + 0xFE76, + 0xFEFD, + 0xFEFF, + 0xFF00, + 0xFF01, + 0xFFBF, + 0xFFC2, + 0xFFC8, + 0xFFCA, + 0xFFD0, + 0xFFD2, + 0xFFD8, + 0xFFDA, + 0xFFDD, + 0xFFE0, + 0xFFE7, + 0xFFE8, + 0xFFEF, + 0xFFF9, + 0xFFFE, + 0x10000, + 0x1000C, + 0x1000D, + 0x10027, + 0x10028, + 0x1003B, + 0x1003C, + 0x1003E, + 0x1003F, + 0x1004E, + 0x10050, + 0x1005E, + 0x10080, + 0x100FB, + 0x10100, + 0x10103, + 0x10107, + 0x10134, + 0x10137, + 0x1018F, + 0x10190, + 0x1019C, + 0x101A0, + 0x101A1, + 0x101D0, + 0x101FE, + 0x10280, + 0x1029D, + 0x102A0, + 0x102D1, + 0x102E0, + 0x102FC, + 0x10300, + 0x10324, + 0x10330, + 0x1034B, + 0x10350, + 0x1037B, + 0x10380, + 0x1039E, + 0x1039F, + 0x103C4, + 0x103C8, + 0x103D6, + 0x10400, + 0x1049E, + 0x104A0, + 0x104AA, + 0x104B0, + 0x104D4, + 0x104D8, + 0x104FC, + 0x10500, + 0x10528, + 0x10530, + 0x10564, + 0x1056F, + 0x10570, + 0x10600, + 0x10737, + 0x10740, + 0x10756, + 0x10760, + 0x10768, + 0x10800, + 0x10806, + 0x10808, + 0x10809, + 0x1080A, + 0x10836, + 0x10837, + 0x10839, + 0x1083C, + 0x1083D, + 0x1083F, + 0x10856, + 0x10857, + 0x1089F, + 0x108A7, + 0x108B0, + 0x108E0, + 0x108F3, + 0x108F4, + 0x108F6, + 0x108FB, + 0x1091C, + 0x1091F, + 0x1093A, + 0x1093F, + 0x10940, + 0x10980, + 0x109B8, + 0x109BC, + 0x109D0, + 0x109D2, + 0x10A04, + 0x10A05, + 0x10A07, + 0x10A0C, + 0x10A14, + 0x10A15, + 0x10A18, + 0x10A19, + 0x10A34, + 0x10A38, + 0x10A3B, + 0x10A3F, + 0x10A48, + 0x10A50, + 0x10A59, + 0x10A60, + 0x10AA0, + 0x10AC0, + 0x10AE7, + 0x10AEB, + 0x10AF7, + 0x10B00, + 0x10B36, + 0x10B39, + 0x10B56, + 0x10B58, + 0x10B73, + 0x10B78, + 0x10B92, + 0x10B99, + 0x10B9D, + 0x10BA9, + 0x10BB0, + 0x10C00, + 0x10C49, + 0x10C80, + 0x10CB3, + 0x10CC0, + 0x10CF3, + 0x10CFA, + 0x10D00, + 0x10E60, + 0x10E7F, + 0x11000, + 0x1104E, + 0x11052, + 0x11070, + 0x1107F, + 0x110C2, + 0x110D0, + 0x110E9, + 0x110F0, + 0x110FA, + 0x11100, + 0x11135, + 0x11136, + 0x11144, + 0x11150, + 0x11177, + 0x11180, + 0x111CE, + 0x111D0, + 0x111E0, + 0x111E1, + 0x111F5, + 0x11200, + 0x11212, + 0x11213, + 0x1123F, + 0x11280, + 0x11287, + 0x11288, + 0x11289, + 0x1128A, + 0x1128E, + 0x1128F, + 0x1129E, + 0x1129F, + 0x112AA, + 0x112B0, + 0x112EB, + 0x112F0, + 0x112FA, + 0x11300, + 0x11304, + 0x11305, + 0x1130D, + 0x1130F, + 0x11311, + 0x11313, + 0x11329, + 0x1132A, + 0x11331, + 0x11332, + 0x11334, + 0x11335, + 0x1133A, + 0x1133C, + 0x11345, + 0x11347, + 0x11349, + 0x1134B, + 0x1134E, + 0x11350, + 0x11351, + 0x11357, + 0x11358, + 0x1135D, + 0x11364, + 0x11366, + 0x1136D, + 0x11370, + 0x11375, + 0x11400, + 0x1145A, + 0x1145B, + 0x1145C, + 0x1145D, + 0x1145E, + 0x11480, + 0x114C8, + 0x114D0, + 0x114DA, + 0x11580, + 0x115B6, + 0x115B8, + 0x115DE, + 0x11600, + 0x11645, + 0x11650, + 0x1165A, + 0x11660, + 0x1166D, + 0x11680, + 0x116B8, + 0x116C0, + 0x116CA, + 0x11700, + 0x1171A, + 0x1171D, + 0x1172C, + 0x11730, + 0x11740, + 0x118A0, + 0x118F3, + 0x118FF, + 0x11900, + 0x11AC0, + 0x11AF9, + 0x11C00, + 0x11C09, + 0x11C0A, + 0x11C37, + 0x11C38, + 0x11C46, + 0x11C50, + 0x11C6D, + 0x11C70, + 0x11C90, + 0x11C92, + 0x11CA8, + 0x11CA9, + 0x11CB7, + 0x12000, + 0x1239A, + 0x12400, + 0x1246F, + 0x12470, + 0x12475, + 0x12480, + 0x12544, + 0x13000, + 0x1342F, + 0x14400, + 0x14647, + 0x16800, + 0x16A39, + 0x16A40, + 0x16A5F, + 0x16A60, + 0x16A6A, + 0x16A6E, + 0x16A70, + 0x16AD0, + 0x16AEE, + 0x16AF0, + 0x16AF6, + 0x16B00, + 0x16B46, + 0x16B50, + 0x16B5A, + 0x16B5B, + 0x16B62, + 0x16B63, + 0x16B78, + 0x16B7D, + 0x16B90, + 0x16F00, + 0x16F45, + 0x16F50, + 0x16F7F, + 0x16F8F, + 0x16FA0, + 0x16FE0, + 0x16FE1, + 0x17000, + 0x187ED, + 0x18800, + 0x18AF3, + 0x1B000, + 0x1B002, + 0x1BC00, + 0x1BC6B, + 0x1BC70, + 0x1BC7D, + 0x1BC80, + 0x1BC89, + 0x1BC90, + 0x1BC9A, + 0x1BC9C, + 0x1BCA4, + 0x1D000, + 0x1D0F6, + 0x1D100, + 0x1D127, + 0x1D129, + 0x1D1E9, + 0x1D200, + 0x1D246, + 0x1D300, + 0x1D357, + 0x1D360, + 0x1D372, + 0x1D400, + 0x1D455, + 0x1D456, + 0x1D49D, + 0x1D49E, + 0x1D4A0, + 0x1D4A2, + 0x1D4A3, + 0x1D4A5, + 0x1D4A7, + 0x1D4A9, + 0x1D4AD, + 0x1D4AE, + 0x1D4BA, + 0x1D4BB, + 0x1D4BC, + 0x1D4BD, + 0x1D4C4, + 0x1D4C5, + 0x1D506, + 0x1D507, + 0x1D50B, + 0x1D50D, + 0x1D515, + 0x1D516, + 0x1D51D, + 0x1D51E, + 0x1D53A, + 0x1D53B, + 0x1D53F, + 0x1D540, + 0x1D545, + 0x1D546, + 0x1D547, + 0x1D54A, + 0x1D551, + 0x1D552, + 0x1D6A6, + 0x1D6A8, + 0x1D7CC, + 0x1D7CE, + 0x1DA8C, + 0x1DA9B, + 0x1DAA0, + 0x1DAA1, + 0x1DAB0, + 0x1E000, + 0x1E007, + 0x1E008, + 0x1E019, + 0x1E01B, + 0x1E022, + 0x1E023, + 0x1E025, + 0x1E026, + 0x1E02B, + 0x1E800, + 0x1E8C5, + 0x1E8C7, + 0x1E8D7, + 0x1E900, + 0x1E94B, + 0x1E950, + 0x1E95A, + 0x1E95E, + 0x1E960, + 0x1EE00, + 0x1EE04, + 0x1EE05, + 0x1EE20, + 0x1EE21, + 0x1EE23, + 0x1EE24, + 0x1EE25, + 0x1EE27, + 0x1EE28, + 0x1EE29, + 0x1EE33, + 0x1EE34, + 0x1EE38, + 0x1EE39, + 0x1EE3A, + 0x1EE3B, + 0x1EE3C, + 0x1EE42, + 0x1EE43, + 0x1EE47, + 0x1EE48, + 0x1EE49, + 0x1EE4A, + 0x1EE4B, + 0x1EE4C, + 0x1EE4D, + 0x1EE50, + 0x1EE51, + 0x1EE53, + 0x1EE54, + 0x1EE55, + 0x1EE57, + 0x1EE58, + 0x1EE59, + 0x1EE5A, + 0x1EE5B, + 0x1EE5C, + 0x1EE5D, + 0x1EE5E, + 0x1EE5F, + 0x1EE60, + 0x1EE61, + 0x1EE63, + 0x1EE64, + 0x1EE65, + 0x1EE67, + 0x1EE6B, + 0x1EE6C, + 0x1EE73, + 0x1EE74, + 0x1EE78, + 0x1EE79, + 0x1EE7D, + 0x1EE7E, + 0x1EE7F, + 0x1EE80, + 0x1EE8A, + 0x1EE8B, + 0x1EE9C, + 0x1EEA1, + 0x1EEA4, + 0x1EEA5, + 0x1EEAA, + 0x1EEAB, + 0x1EEBC, + 0x1EEF0, + 0x1EEF2, + 0x1F000, + 0x1F02C, + 0x1F030, + 0x1F094, + 0x1F0A0, + 0x1F0AF, + 0x1F0B1, + 0x1F0C0, + 0x1F0C1, + 0x1F0D0, + 0x1F0D1, + 0x1F0F6, + 0x1F100, + 0x1F10D, + 0x1F110, + 0x1F12F, + 0x1F130, + 0x1F16C, + 0x1F170, + 0x1F1AD, + 0x1F1E6, + 0x1F203, + 0x1F210, + 0x1F23C, + 0x1F240, + 0x1F249, + 0x1F250, + 0x1F252, + 0x1F300, + 0x1F6D3, + 0x1F6E0, + 0x1F6ED, + 0x1F6F0, + 0x1F6F7, + 0x1F700, + 0x1F774, + 0x1F780, + 0x1F7D5, + 0x1F800, + 0x1F80C, + 0x1F810, + 0x1F848, + 0x1F850, + 0x1F85A, + 0x1F860, + 0x1F888, + 0x1F890, + 0x1F8AE, + 0x1F910, + 0x1F91F, + 0x1F920, + 0x1F928, + 0x1F930, + 0x1F931, + 0x1F933, + 0x1F93F, + 0x1F940, + 0x1F94C, + 0x1F950, + 0x1F95F, + 0x1F980, + 0x1F992, + 0x1F9C0, + 0x1F9C1, + 0x20000, + 0x2A6D7, + 0x2A700, + 0x2B735, + 0x2B740, + 0x2B81E, + 0x2B820, + 0x2CEA2, + 0x2F800, + 0x2FA1E, + 0xE0001, + 0xE0002, + 0xE0020, + 0xE0080, + 0xE0100, + 0xE01F0, + 0xF0000, + 0xFFFFE, + 0x100000, + 0x10FFFE +}; + static const UV Cased_invlist[] = { /* for ASCII/Latin1 */ - 263, /* Number of elements */ + 271, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -112,6 +1395,8 @@ static const UV Cased_invlist[] = { /* for ASCII/Latin1 */ 0x13F6, 0x13F8, 0x13FE, + 0x1C80, + 0x1C89, 0x1D00, 0x1DC0, 0x1E00, @@ -217,7 +1502,7 @@ static const UV Cased_invlist[] = { /* for ASCII/Latin1 */ 0xA78B, 0xA78F, 0xA790, - 0xA7AE, + 0xA7AF, 0xA7B0, 0xA7B8, 0xA7F8, @@ -238,6 +1523,10 @@ static const UV Cased_invlist[] = { /* for ASCII/Latin1 */ 0xFF5B, 0x10400, 0x10450, + 0x104B0, + 0x104D4, + 0x104D8, + 0x104FC, 0x10C80, 0x10CB3, 0x10CC0, @@ -304,6 +1593,8 @@ static const UV Cased_invlist[] = { /* for ASCII/Latin1 */ 0x1D7C3, 0x1D7C4, 0x1D7CC, + 0x1E900, + 0x1E944, 0x1F130, 0x1F14A, 0x1F150, @@ -369,7 +1660,7 @@ static const UV NonL1_Perl_Non_Final_Folds_invlist[] = { /* for ASCII/Latin1 */ }; static const UV _Perl_Any_Folds_invlist[] = { /* for ASCII/Latin1 */ - 247, /* Number of elements */ + 253, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -419,8 +1710,6 @@ static const UV _Perl_Any_Folds_invlist[] = { /* for ASCII/Latin1 */ 0x265, 0x267, 0x268, - 0x26A, - 0x26B, 0x26D, 0x26F, 0x270, @@ -500,6 +1789,8 @@ static const UV _Perl_Any_Folds_invlist[] = { /* for ASCII/Latin1 */ 0x13F6, 0x13F8, 0x13FE, + 0x1C80, + 0x1C89, 0x1D79, 0x1D7A, 0x1D7D, @@ -597,7 +1888,7 @@ static const UV _Perl_Any_Folds_invlist[] = { /* for ASCII/Latin1 */ 0xA790, 0xA794, 0xA796, - 0xA7AE, + 0xA7AF, 0xA7B0, 0xA7B8, 0xAB53, @@ -614,12 +1905,18 @@ static const UV _Perl_Any_Folds_invlist[] = { /* for ASCII/Latin1 */ 0xFF5B, 0x10400, 0x10450, + 0x104B0, + 0x104D4, + 0x104D8, + 0x104FC, 0x10C80, 0x10CB3, 0x10CC0, 0x10CF3, 0x118A0, - 0x118E0 + 0x118E0, + 0x1E900, + 0x1E944 }; static const UV _Perl_Folds_To_Multi_Char_invlist[] = { /* for ASCII/Latin1 */ @@ -693,7 +1990,7 @@ static const UV _Perl_Folds_To_Multi_Char_invlist[] = { /* for ASCII/Latin1 */ #if defined(PERL_IN_PERL_C) static const UV _Perl_GCB_invlist[] = { /* for ASCII/Latin1 */ - 1502, /* Number of elements */ + 1615, /* Number of elements */ 148565664, /* Version and data structure type */ 0, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -760,6 +2057,8 @@ static const UV _Perl_GCB_invlist[] = { /* for ASCII/Latin1 */ 0x82E, 0x859, 0x85C, + 0x8D4, + 0x8E2, 0x8E3, 0x903, 0x904, @@ -908,6 +2207,7 @@ static const UV _Perl_GCB_invlist[] = { /* for ASCII/Latin1 */ 0xD4A, 0xD4D, 0xD4E, + 0xD4F, 0xD57, 0xD58, 0xD62, @@ -1016,6 +2316,8 @@ static const UV _Perl_GCB_invlist[] = { /* for ASCII/Latin1 */ 0x180B, 0x180E, 0x180F, + 0x1885, + 0x1887, 0x18A9, 0x18AA, 0x1920, @@ -1102,10 +2404,11 @@ static const UV _Perl_GCB_invlist[] = { /* for ASCII/Latin1 */ 0x1CFA, 0x1DC0, 0x1DF6, - 0x1DFC, + 0x1DFB, 0x1E00, 0x200B, 0x200C, + 0x200D, 0x200E, 0x2010, 0x2028, @@ -1114,6 +2417,14 @@ static const UV _Perl_GCB_invlist[] = { /* for ASCII/Latin1 */ 0x2070, 0x20D0, 0x20F1, + 0x261D, + 0x261E, + 0x26F9, + 0x26FA, + 0x270A, + 0x270E, + 0x2764, + 0x2765, 0x2CEF, 0x2CF2, 0x2D7F, @@ -1146,7 +2457,7 @@ static const UV _Perl_GCB_invlist[] = { /* for ASCII/Latin1 */ 0xA882, 0xA8B4, 0xA8C4, - 0xA8C5, + 0xA8C6, 0xA8E0, 0xA8F2, 0xA926, @@ -2073,6 +3384,8 @@ static const UV _Perl_GCB_invlist[] = { /* for ASCII/Latin1 */ 0x111B6, 0x111BF, 0x111C1, + 0x111C2, + 0x111C4, 0x111CA, 0x111CD, 0x1122C, @@ -2082,6 +3395,8 @@ static const UV _Perl_GCB_invlist[] = { /* for ASCII/Latin1 */ 0x11235, 0x11236, 0x11238, + 0x1123E, + 0x1123F, 0x112DF, 0x112E0, 0x112E3, @@ -2108,6 +3423,13 @@ static const UV _Perl_GCB_invlist[] = { /* for ASCII/Latin1 */ 0x1136D, 0x11370, 0x11375, + 0x11435, + 0x11438, + 0x11440, + 0x11442, + 0x11445, + 0x11446, + 0x11447, 0x114B0, 0x114B1, 0x114B3, @@ -2152,6 +3474,22 @@ static const UV _Perl_GCB_invlist[] = { /* for ASCII/Latin1 */ 0x11726, 0x11727, 0x1172C, + 0x11C2F, + 0x11C30, + 0x11C37, + 0x11C38, + 0x11C3E, + 0x11C3F, + 0x11C40, + 0x11C92, + 0x11CA8, + 0x11CA9, + 0x11CAA, + 0x11CB1, + 0x11CB2, + 0x11CB4, + 0x11CB5, + 0x11CB7, 0x16AF0, 0x16AF5, 0x16B30, @@ -2191,11 +3529,83 @@ static const UV _Perl_GCB_invlist[] = { /* for ASCII/Latin1 */ 0x1DAA0, 0x1DAA1, 0x1DAB0, + 0x1E000, + 0x1E007, + 0x1E008, + 0x1E019, + 0x1E01B, + 0x1E022, + 0x1E023, + 0x1E025, + 0x1E026, + 0x1E02B, 0x1E8D0, 0x1E8D7, + 0x1E944, + 0x1E94B, 0x1F1E6, 0x1F200, + 0x1F385, + 0x1F386, + 0x1F3C3, + 0x1F3C5, + 0x1F3CA, + 0x1F3CC, + 0x1F3FB, + 0x1F400, + 0x1F442, + 0x1F444, + 0x1F446, + 0x1F451, + 0x1F466, + 0x1F46A, + 0x1F46E, + 0x1F46F, + 0x1F470, + 0x1F479, + 0x1F47C, + 0x1F47D, + 0x1F481, + 0x1F484, + 0x1F485, + 0x1F488, + 0x1F48B, + 0x1F48C, + 0x1F4AA, + 0x1F4AB, + 0x1F575, + 0x1F576, + 0x1F57A, + 0x1F57B, + 0x1F590, + 0x1F591, + 0x1F595, + 0x1F597, + 0x1F5E8, + 0x1F5E9, + 0x1F645, + 0x1F648, + 0x1F64B, + 0x1F650, + 0x1F6A3, + 0x1F6A4, + 0x1F6B4, + 0x1F6B7, + 0x1F6C0, + 0x1F6C1, + 0x1F918, + 0x1F91F, + 0x1F926, + 0x1F927, + 0x1F930, + 0x1F931, + 0x1F933, + 0x1F93A, + 0x1F93C, + 0x1F93F, 0xE0000, + 0xE0020, + 0xE0080, 0xE0100, 0xE01F0, 0xE1000 @@ -2205,23 +3615,28 @@ static const UV _Perl_GCB_invlist[] = { /* for ASCII/Latin1 */ #if defined(PERL_IN_REGEXEC_C) -#define GCB_ENUM_COUNT 14 +#define GCB_ENUM_COUNT 19 typedef enum { GCB_Other = 0, GCB_CR = 1, GCB_Control = 2, - GCB_Extend = 3, - GCB_L = 4, - GCB_LF = 5, - GCB_LV = 6, - GCB_LVT = 7, - GCB_Prepend = 8, - GCB_Regional_Indicator = 9, - GCB_SpacingMark = 10, - GCB_T = 11, - GCB_V = 12, - GCB_EDGE = 13 + GCB_E_Base = 3, + GCB_E_Base_GAZ = 4, + GCB_E_Modifier = 5, + GCB_Extend = 6, + GCB_Glue_After_Zwj = 7, + GCB_L = 8, + GCB_LF = 9, + GCB_LV = 10, + GCB_LVT = 11, + GCB_Prepend = 12, + GCB_Regional_Indicator = 13, + GCB_SpacingMark = 14, + GCB_T = 15, + GCB_V = 16, + GCB_ZWJ = 17, + GCB_EDGE = 18 } GCB_enum; static const GCB_enum _Perl_GCB_invmap[] = { /* for ASCII/Latin1 */ @@ -2249,7 +3664,7 @@ static const GCB_enum _Perl_GCB_invmap[] = { /* for ASCII/Latin1 */ GCB_Other, GCB_Extend, GCB_Other, - GCB_Control, + GCB_Prepend, GCB_Other, GCB_Extend, GCB_Other, @@ -2260,7 +3675,7 @@ static const GCB_enum _Perl_GCB_invmap[] = { /* for ASCII/Latin1 */ GCB_Extend, GCB_Other, GCB_Extend, - GCB_Control, + GCB_Prepend, GCB_Other, GCB_Extend, GCB_Other, @@ -2268,7 +3683,7 @@ static const GCB_enum _Perl_GCB_invmap[] = { /* for ASCII/Latin1 */ GCB_Other, GCB_Extend, GCB_Other, - GCB_Control, + GCB_Prepend, GCB_Other, GCB_Extend, GCB_Other, @@ -2289,6 +3704,8 @@ static const GCB_enum _Perl_GCB_invmap[] = { /* for ASCII/Latin1 */ GCB_Extend, GCB_Other, GCB_Extend, + GCB_Prepend, + GCB_Extend, GCB_SpacingMark, GCB_Other, GCB_Extend, @@ -2435,6 +3852,7 @@ static const GCB_enum _Perl_GCB_invmap[] = { /* for ASCII/Latin1 */ GCB_Other, GCB_SpacingMark, GCB_Extend, + GCB_Prepend, GCB_Other, GCB_Extend, GCB_Other, @@ -2547,6 +3965,8 @@ static const GCB_enum _Perl_GCB_invmap[] = { /* for ASCII/Latin1 */ GCB_Extend, GCB_Other, GCB_Extend, + GCB_Other, + GCB_Extend, GCB_SpacingMark, GCB_Extend, GCB_SpacingMark, @@ -2634,6 +4054,7 @@ static const GCB_enum _Perl_GCB_invmap[] = { /* for ASCII/Latin1 */ GCB_Other, GCB_Control, GCB_Extend, + GCB_ZWJ, GCB_Control, GCB_Other, GCB_Control, @@ -2642,6 +4063,14 @@ static const GCB_enum _Perl_GCB_invmap[] = { /* for ASCII/Latin1 */ GCB_Other, GCB_Extend, GCB_Other, + GCB_E_Base, + GCB_Other, + GCB_E_Base, + GCB_Other, + GCB_E_Base, + GCB_Other, + GCB_Glue_After_Zwj, + GCB_Other, GCB_Extend, GCB_Other, GCB_Extend, @@ -3584,7 +5013,7 @@ static const GCB_enum _Perl_GCB_invmap[] = { /* for ASCII/Latin1 */ GCB_SpacingMark, GCB_Extend, GCB_Other, - GCB_Control, + GCB_Prepend, GCB_Other, GCB_Extend, GCB_Other, @@ -3601,6 +5030,8 @@ static const GCB_enum _Perl_GCB_invmap[] = { /* for ASCII/Latin1 */ GCB_Extend, GCB_SpacingMark, GCB_Other, + GCB_Prepend, + GCB_Other, GCB_Extend, GCB_Other, GCB_SpacingMark, @@ -3611,6 +5042,8 @@ static const GCB_enum _Perl_GCB_invmap[] = { /* for ASCII/Latin1 */ GCB_Extend, GCB_Other, GCB_Extend, + GCB_Other, + GCB_Extend, GCB_SpacingMark, GCB_Extend, GCB_Other, @@ -3636,6 +5069,13 @@ static const GCB_enum _Perl_GCB_invmap[] = { /* for ASCII/Latin1 */ GCB_Other, GCB_Extend, GCB_Other, + GCB_SpacingMark, + GCB_Extend, + GCB_SpacingMark, + GCB_Extend, + GCB_SpacingMark, + GCB_Extend, + GCB_Other, GCB_Extend, GCB_SpacingMark, GCB_Extend, @@ -3680,6 +5120,22 @@ static const GCB_enum _Perl_GCB_invmap[] = { /* for ASCII/Latin1 */ GCB_SpacingMark, GCB_Extend, GCB_Other, + GCB_SpacingMark, + GCB_Extend, + GCB_Other, + GCB_Extend, + GCB_SpacingMark, + GCB_Extend, + GCB_Other, + GCB_Extend, + GCB_Other, + GCB_SpacingMark, + GCB_Extend, + GCB_SpacingMark, + GCB_Extend, + GCB_SpacingMark, + GCB_Extend, + GCB_Other, GCB_Extend, GCB_Other, GCB_Extend, @@ -3721,8 +5177,80 @@ static const GCB_enum _Perl_GCB_invmap[] = { /* for ASCII/Latin1 */ GCB_Other, GCB_Extend, GCB_Other, + GCB_Extend, + GCB_Other, + GCB_Extend, + GCB_Other, + GCB_Extend, + GCB_Other, + GCB_Extend, + GCB_Other, + GCB_Extend, + GCB_Other, + GCB_Extend, + GCB_Other, GCB_Regional_Indicator, GCB_Other, + GCB_E_Base, + GCB_Other, + GCB_E_Base, + GCB_Other, + GCB_E_Base, + GCB_Other, + GCB_E_Modifier, + GCB_Other, + GCB_E_Base, + GCB_Other, + GCB_E_Base, + GCB_Other, + GCB_E_Base_GAZ, + GCB_Other, + GCB_E_Base, + GCB_Other, + GCB_E_Base, + GCB_Other, + GCB_E_Base, + GCB_Other, + GCB_E_Base, + GCB_Other, + GCB_E_Base, + GCB_Other, + GCB_Glue_After_Zwj, + GCB_Other, + GCB_E_Base, + GCB_Other, + GCB_E_Base, + GCB_Other, + GCB_E_Base, + GCB_Other, + GCB_E_Base, + GCB_Other, + GCB_E_Base, + GCB_Other, + GCB_Glue_After_Zwj, + GCB_Other, + GCB_E_Base, + GCB_Other, + GCB_E_Base, + GCB_Other, + GCB_E_Base, + GCB_Other, + GCB_E_Base, + GCB_Other, + GCB_E_Base, + GCB_Other, + GCB_E_Base, + GCB_Other, + GCB_E_Base, + GCB_Other, + GCB_E_Base, + GCB_Other, + GCB_E_Base, + GCB_Other, + GCB_E_Base, + GCB_Other, + GCB_Control, + GCB_Extend, GCB_Control, GCB_Extend, GCB_Control, @@ -3734,7 +5262,7 @@ static const GCB_enum _Perl_GCB_invmap[] = { /* for ASCII/Latin1 */ #if defined(PERL_IN_UTF8_C) static const UV _Perl_IDCont_invlist[] = { /* for ASCII/Latin1 */ - 1317, /* Number of elements */ + 1367, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -3839,6 +5367,10 @@ static const UV _Perl_IDCont_invlist[] = { /* for ASCII/Latin1 */ 0x85C, 0x8A0, 0x8B5, + 0x8B6, + 0x8BE, + 0x8D4, + 0x8E2, 0x8E3, 0x964, 0x966, @@ -4017,7 +5549,7 @@ static const UV _Perl_IDCont_invlist[] = { /* for ASCII/Latin1 */ 0xC64, 0xC66, 0xC70, - 0xC81, + 0xC80, 0xC84, 0xC85, 0xC8D, @@ -4059,7 +5591,7 @@ static const UV _Perl_IDCont_invlist[] = { /* for ASCII/Latin1 */ 0xD49, 0xD4A, 0xD4F, - 0xD57, + 0xD54, 0xD58, 0xD5F, 0xD64, @@ -4295,6 +5827,8 @@ static const UV _Perl_IDCont_invlist[] = { /* for ASCII/Latin1 */ 0x1C4A, 0x1C4D, 0x1C7E, + 0x1C80, + 0x1C89, 0x1CD0, 0x1CD3, 0x1CD4, @@ -4303,7 +5837,7 @@ static const UV _Perl_IDCont_invlist[] = { /* for ASCII/Latin1 */ 0x1CFA, 0x1D00, 0x1DF6, - 0x1DFC, + 0x1DFB, 0x1F16, 0x1F18, 0x1F1E, @@ -4472,7 +6006,7 @@ static const UV _Perl_IDCont_invlist[] = { /* for ASCII/Latin1 */ 0xA722, 0xA789, 0xA78B, - 0xA7AE, + 0xA7AF, 0xA7B0, 0xA7B8, 0xA7F7, @@ -4480,7 +6014,7 @@ static const UV _Perl_IDCont_invlist[] = { /* for ASCII/Latin1 */ 0xA840, 0xA874, 0xA880, - 0xA8C5, + 0xA8C6, 0xA8D0, 0xA8DA, 0xA8E0, @@ -4657,6 +6191,10 @@ static const UV _Perl_IDCont_invlist[] = { /* for ASCII/Latin1 */ 0x1049E, 0x104A0, 0x104AA, + 0x104B0, + 0x104D4, + 0x104D8, + 0x104FC, 0x10500, 0x10528, 0x10530, @@ -4761,6 +6299,8 @@ static const UV _Perl_IDCont_invlist[] = { /* for ASCII/Latin1 */ 0x11212, 0x11213, 0x11238, + 0x1123E, + 0x1123F, 0x11280, 0x11287, 0x11288, @@ -4805,6 +6345,10 @@ static const UV _Perl_IDCont_invlist[] = { /* for ASCII/Latin1 */ 0x1136D, 0x11370, 0x11375, + 0x11400, + 0x1144B, + 0x11450, + 0x1145A, 0x11480, 0x114C6, 0x114C7, @@ -4839,6 +6383,20 @@ static const UV _Perl_IDCont_invlist[] = { /* for ASCII/Latin1 */ 0x11900, 0x11AC0, 0x11AF9, + 0x11C00, + 0x11C09, + 0x11C0A, + 0x11C37, + 0x11C38, + 0x11C41, + 0x11C50, + 0x11C5A, + 0x11C72, + 0x11C90, + 0x11C92, + 0x11CA8, + 0x11CA9, + 0x11CB7, 0x12000, 0x1239A, 0x12400, @@ -4875,6 +6433,12 @@ static const UV _Perl_IDCont_invlist[] = { /* for ASCII/Latin1 */ 0x16F7F, 0x16F8F, 0x16FA0, + 0x16FE0, + 0x16FE1, + 0x17000, + 0x187ED, + 0x18800, + 0x18AF3, 0x1B000, 0x1B002, 0x1BC00, @@ -4973,10 +6537,24 @@ static const UV _Perl_IDCont_invlist[] = { /* for ASCII/Latin1 */ 0x1DAA0, 0x1DAA1, 0x1DAB0, + 0x1E000, + 0x1E007, + 0x1E008, + 0x1E019, + 0x1E01B, + 0x1E022, + 0x1E023, + 0x1E025, + 0x1E026, + 0x1E02B, 0x1E800, 0x1E8C5, 0x1E8D0, 0x1E8D7, + 0x1E900, + 0x1E94B, + 0x1E950, + 0x1E95A, 0x1EE00, 0x1EE04, 0x1EE05, @@ -5058,7 +6636,7 @@ static const UV _Perl_IDCont_invlist[] = { /* for ASCII/Latin1 */ }; static const UV _Perl_IDStart_invlist[] = { /* for ASCII/Latin1 */ - 1129, /* Number of elements */ + 1161, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -5163,6 +6741,8 @@ static const UV _Perl_IDStart_invlist[] = { /* for ASCII/Latin1 */ 0x859, 0x8A0, 0x8B5, + 0x8B6, + 0x8BE, 0x904, 0x93A, 0x93D, @@ -5291,6 +6871,8 @@ static const UV _Perl_IDStart_invlist[] = { /* for ASCII/Latin1 */ 0xC5B, 0xC60, 0xC62, + 0xC80, + 0xC81, 0xC85, 0xC8D, 0xC8E, @@ -5319,6 +6901,8 @@ static const UV _Perl_IDStart_invlist[] = { /* for ASCII/Latin1 */ 0xD3E, 0xD4E, 0xD4F, + 0xD54, + 0xD57, 0xD5F, 0xD62, 0xD7A, @@ -5513,6 +7097,8 @@ static const UV _Perl_IDStart_invlist[] = { /* for ASCII/Latin1 */ 0x1C50, 0x1C5A, 0x1C7E, + 0x1C80, + 0x1C89, 0x1CE9, 0x1CED, 0x1CEE, @@ -5680,7 +7266,7 @@ static const UV _Perl_IDStart_invlist[] = { /* for ASCII/Latin1 */ 0xA722, 0xA789, 0xA78B, - 0xA7AE, + 0xA7AF, 0xA7B0, 0xA7B8, 0xA7F7, @@ -5867,6 +7453,10 @@ static const UV _Perl_IDStart_invlist[] = { /* for ASCII/Latin1 */ 0x103D6, 0x10400, 0x1049E, + 0x104B0, + 0x104D4, + 0x104D8, + 0x104FC, 0x10500, 0x10528, 0x10530, @@ -5989,6 +7579,10 @@ static const UV _Perl_IDStart_invlist[] = { /* for ASCII/Latin1 */ 0x11351, 0x1135D, 0x11362, + 0x11400, + 0x11435, + 0x11447, + 0x1144B, 0x11480, 0x114B0, 0x114C4, @@ -6013,6 +7607,14 @@ static const UV _Perl_IDStart_invlist[] = { /* for ASCII/Latin1 */ 0x11900, 0x11AC0, 0x11AF9, + 0x11C00, + 0x11C09, + 0x11C0A, + 0x11C2F, + 0x11C40, + 0x11C41, + 0x11C72, + 0x11C90, 0x12000, 0x1239A, 0x12400, @@ -6043,6 +7645,12 @@ static const UV _Perl_IDStart_invlist[] = { /* for ASCII/Latin1 */ 0x16F51, 0x16F93, 0x16FA0, + 0x16FE0, + 0x16FE1, + 0x17000, + 0x187ED, + 0x18800, + 0x18AF3, 0x1B000, 0x1B002, 0x1BC00, @@ -6115,6 +7723,8 @@ static const UV _Perl_IDStart_invlist[] = { /* for ASCII/Latin1 */ 0x1D7CC, 0x1E800, 0x1E8C5, + 0x1E900, + 0x1E944, 0x1EE00, 0x1EE04, 0x1EE05, @@ -6198,7 +7808,7 @@ static const UV _Perl_IDStart_invlist[] = { /* for ASCII/Latin1 */ #if defined(PERL_IN_PERL_C) static const UV _Perl_LB_invlist[] = { /* for ASCII/Latin1 */ - 2156, /* Number of elements */ + 2267, /* Number of elements */ 148565664, /* Version and data structure type */ 0, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -6344,6 +7954,8 @@ static const UV _Perl_LB_invlist[] = { /* for ASCII/Latin1 */ 0x82E, 0x859, 0x85C, + 0x8D4, + 0x8E2, 0x8E3, 0x904, 0x93A, @@ -6641,6 +8253,8 @@ static const UV _Perl_LB_invlist[] = { /* for ASCII/Latin1 */ 0x180F, 0x1810, 0x181A, + 0x1885, + 0x1887, 0x18A9, 0x18AA, 0x1920, @@ -6705,7 +8319,7 @@ static const UV _Perl_LB_invlist[] = { /* for ASCII/Latin1 */ 0x1CFA, 0x1DC0, 0x1DF6, - 0x1DFC, + 0x1DFB, 0x1E00, 0x1FFD, 0x1FFE, @@ -6714,6 +8328,8 @@ static const UV _Perl_LB_invlist[] = { /* for ASCII/Latin1 */ 0x2008, 0x200B, 0x200C, + 0x200D, + 0x200E, 0x2010, 0x2011, 0x2012, @@ -6796,6 +8412,8 @@ static const UV _Perl_LB_invlist[] = { /* for ASCII/Latin1 */ 0x2618, 0x2619, 0x261A, + 0x261D, + 0x261E, 0x2620, 0x2639, 0x263C, @@ -6822,15 +8440,19 @@ static const UV _Perl_LB_invlist[] = { /* for ASCII/Latin1 */ 0x26F1, 0x26F6, 0x26F7, + 0x26F9, + 0x26FA, 0x26FB, 0x26FD, 0x2705, 0x2708, + 0x270A, 0x270E, 0x275B, 0x2761, 0x2762, 0x2764, + 0x2765, 0x2768, 0x2769, 0x276A, @@ -6935,6 +8557,7 @@ static const UV _Perl_LB_invlist[] = { /* for ASCII/Latin1 */ 0x2E40, 0x2E42, 0x2E43, + 0x2E45, 0x2E80, 0x2E9A, 0x2E9B, @@ -7085,7 +8708,7 @@ static const UV _Perl_LB_invlist[] = { /* for ASCII/Latin1 */ 0xA880, 0xA882, 0xA8B4, - 0xA8C5, + 0xA8C6, 0xA8CE, 0xA8D0, 0xA8DA, @@ -8060,6 +9683,15 @@ static const UV _Perl_LB_invlist[] = { /* for ASCII/Latin1 */ 0xFF71, 0xFF9E, 0xFFA0, + 0xFFBF, + 0xFFC2, + 0xFFC8, + 0xFFCA, + 0xFFD0, + 0xFFD2, + 0xFFD8, + 0xFFDA, + 0xFFDD, 0xFFE0, 0xFFE1, 0xFFE2, @@ -8152,6 +9784,8 @@ static const UV _Perl_LB_invlist[] = { /* for ASCII/Latin1 */ 0x1123A, 0x1123B, 0x1123D, + 0x1123E, + 0x1123F, 0x112A9, 0x112AA, 0x112DF, @@ -8176,6 +9810,14 @@ static const UV _Perl_LB_invlist[] = { /* for ASCII/Latin1 */ 0x1136D, 0x11370, 0x11375, + 0x11435, + 0x11447, + 0x1144B, + 0x1144F, + 0x11450, + 0x1145A, + 0x1145B, + 0x1145C, 0x114B0, 0x114C4, 0x114D0, @@ -8196,6 +9838,8 @@ static const UV _Perl_LB_invlist[] = { /* for ASCII/Latin1 */ 0x11643, 0x11650, 0x1165A, + 0x11660, + 0x1166D, 0x116AB, 0x116B8, 0x116C0, @@ -8208,6 +9852,21 @@ static const UV _Perl_LB_invlist[] = { /* for ASCII/Latin1 */ 0x1173F, 0x118E0, 0x118EA, + 0x11C2F, + 0x11C37, + 0x11C38, + 0x11C40, + 0x11C41, + 0x11C46, + 0x11C50, + 0x11C5A, + 0x11C70, + 0x11C71, + 0x11C72, + 0x11C92, + 0x11CA8, + 0x11CA9, + 0x11CB7, 0x12470, 0x12475, 0x13258, @@ -8244,6 +9903,12 @@ static const UV _Perl_LB_invlist[] = { /* for ASCII/Latin1 */ 0x16F7F, 0x16F8F, 0x16F93, + 0x16FE0, + 0x16FE1, + 0x17000, + 0x187ED, + 0x18800, + 0x18AF3, 0x1B000, 0x1B002, 0x1BC9D, @@ -8276,44 +9941,73 @@ static const UV _Perl_LB_invlist[] = { /* for ASCII/Latin1 */ 0x1DAA0, 0x1DAA1, 0x1DAB0, + 0x1E000, + 0x1E007, + 0x1E008, + 0x1E019, + 0x1E01B, + 0x1E022, + 0x1E023, + 0x1E025, + 0x1E026, + 0x1E02B, 0x1E8D0, 0x1E8D7, + 0x1E944, + 0x1E94B, + 0x1E950, + 0x1E95A, + 0x1E95E, + 0x1E960, 0x1F000, - 0x1F02C, - 0x1F030, - 0x1F094, - 0x1F0A0, - 0x1F0AF, - 0x1F0B1, - 0x1F0C0, - 0x1F0C1, - 0x1F0D0, - 0x1F0D1, - 0x1F0F6, + 0x1F100, + 0x1F10D, + 0x1F110, + 0x1F12F, + 0x1F130, + 0x1F16C, + 0x1F170, + 0x1F1AD, 0x1F1E6, 0x1F200, - 0x1F203, - 0x1F210, - 0x1F23B, - 0x1F240, - 0x1F249, - 0x1F250, - 0x1F252, - 0x1F300, + 0x1F385, + 0x1F386, 0x1F39C, 0x1F39E, 0x1F3B5, 0x1F3B7, 0x1F3BC, 0x1F3BD, + 0x1F3C3, + 0x1F3C5, + 0x1F3CA, + 0x1F3CC, 0x1F3FB, 0x1F400, + 0x1F442, + 0x1F444, + 0x1F446, + 0x1F451, + 0x1F466, + 0x1F46A, + 0x1F46E, + 0x1F46F, + 0x1F470, + 0x1F479, + 0x1F47C, + 0x1F47D, + 0x1F481, + 0x1F484, + 0x1F485, + 0x1F488, 0x1F4A0, 0x1F4A1, 0x1F4A2, 0x1F4A3, 0x1F4A4, 0x1F4A5, + 0x1F4AA, + 0x1F4AB, 0x1F4AF, 0x1F4B0, 0x1F4B1, @@ -8324,30 +10018,57 @@ static const UV _Perl_LB_invlist[] = { /* for ASCII/Latin1 */ 0x1F525, 0x1F532, 0x1F54A, + 0x1F575, + 0x1F576, 0x1F57A, 0x1F57B, - 0x1F5A4, - 0x1F5A5, + 0x1F590, + 0x1F591, + 0x1F595, + 0x1F597, 0x1F5D4, 0x1F5DC, 0x1F5F4, 0x1F5FA, + 0x1F645, + 0x1F648, + 0x1F64B, 0x1F650, 0x1F676, 0x1F679, 0x1F67C, 0x1F680, - 0x1F6D1, - 0x1F6E0, - 0x1F6ED, - 0x1F6F0, - 0x1F6F4, - 0x1F910, - 0x1F919, - 0x1F980, - 0x1F985, - 0x1F9C0, - 0x1F9C1, + 0x1F6A3, + 0x1F6A4, + 0x1F6B4, + 0x1F6B7, + 0x1F6C0, + 0x1F6C1, + 0x1F700, + 0x1F774, + 0x1F780, + 0x1F7D5, + 0x1F800, + 0x1F80C, + 0x1F810, + 0x1F848, + 0x1F850, + 0x1F85A, + 0x1F860, + 0x1F888, + 0x1F890, + 0x1F8AE, + 0x1F918, + 0x1F91F, + 0x1F926, + 0x1F927, + 0x1F930, + 0x1F931, + 0x1F933, + 0x1F93A, + 0x1F93C, + 0x1F93F, + 0x1FFFE, 0x20000, 0x2FFFE, 0x30000, @@ -8364,7 +10085,7 @@ static const UV _Perl_LB_invlist[] = { /* for ASCII/Latin1 */ #if defined(PERL_IN_REGEXEC_C) -#define LB_ENUM_COUNT 36 +#define LB_ENUM_COUNT 39 typedef enum { LB_Alphabetic = 0, @@ -8377,32 +10098,35 @@ typedef enum { LB_Close_Punctuation = 7, LB_Combining_Mark = 8, LB_Contingent_Break = 9, - LB_Exclamation = 10, - LB_Glue = 11, - LB_H2 = 12, - LB_H3 = 13, - LB_Hebrew_Letter = 14, - LB_Hyphen = 15, - LB_Ideographic = 16, - LB_Infix_Numeric = 17, - LB_Inseparable = 18, - LB_JL = 19, - LB_JT = 20, - LB_JV = 21, - LB_Line_Feed = 22, - LB_Mandatory_Break = 23, - LB_Next_Line = 24, - LB_Nonstarter = 25, - LB_Numeric = 26, - LB_Open_Punctuation = 27, - LB_Postfix_Numeric = 28, - LB_Prefix_Numeric = 29, - LB_Quotation = 30, - LB_Regional_Indicator = 31, - LB_Space = 32, - LB_Word_Joiner = 33, - LB_ZWSpace = 34, - LB_EDGE = 35 + LB_E_Base = 10, + LB_E_Modifier = 11, + LB_Exclamation = 12, + LB_Glue = 13, + LB_H2 = 14, + LB_H3 = 15, + LB_Hebrew_Letter = 16, + LB_Hyphen = 17, + LB_Ideographic = 18, + LB_Infix_Numeric = 19, + LB_Inseparable = 20, + LB_JL = 21, + LB_JT = 22, + LB_JV = 23, + LB_Line_Feed = 24, + LB_Mandatory_Break = 25, + LB_Next_Line = 26, + LB_Nonstarter = 27, + LB_Numeric = 28, + LB_Open_Punctuation = 29, + LB_Postfix_Numeric = 30, + LB_Prefix_Numeric = 31, + LB_Quotation = 32, + LB_Regional_Indicator = 33, + LB_Space = 34, + LB_Word_Joiner = 35, + LB_ZWJ = 36, + LB_ZWSpace = 37, + LB_EDGE = 38 } LB_enum; static const LB_enum _Perl_LB_invmap[] = { /* for ASCII/Latin1 */ @@ -8557,6 +10281,8 @@ static const LB_enum _Perl_LB_invmap[] = { /* for ASCII/Latin1 */ LB_Combining_Mark, LB_Alphabetic, LB_Combining_Mark, + LB_Alphabetic, + LB_Combining_Mark, LB_Break_After, LB_Numeric, LB_Alphabetic, @@ -8851,6 +10577,8 @@ static const LB_enum _Perl_LB_invmap[] = { /* for ASCII/Latin1 */ LB_Alphabetic, LB_Combining_Mark, LB_Alphabetic, + LB_Combining_Mark, + LB_Alphabetic, LB_Exclamation, LB_Numeric, LB_Alphabetic, @@ -8918,6 +10646,8 @@ static const LB_enum _Perl_LB_invmap[] = { /* for ASCII/Latin1 */ LB_Break_After, LB_ZWSpace, LB_Combining_Mark, + LB_ZWJ, + LB_Combining_Mark, LB_Break_After, LB_Glue, LB_Break_After, @@ -9000,6 +10730,8 @@ static const LB_enum _Perl_LB_invmap[] = { /* for ASCII/Latin1 */ LB_Ideographic, LB_Alphabetic, LB_Ideographic, + LB_E_Base, + LB_Ideographic, LB_Alphabetic, LB_Ideographic, LB_Alphabetic, @@ -9026,14 +10758,18 @@ static const LB_enum _Perl_LB_invmap[] = { /* for ASCII/Latin1 */ LB_Ideographic, LB_Alphabetic, LB_Ideographic, + LB_E_Base, + LB_Ideographic, LB_Alphabetic, LB_Ideographic, LB_Alphabetic, LB_Ideographic, + LB_E_Base, LB_Alphabetic, LB_Quotation, LB_Alphabetic, LB_Exclamation, + LB_Ideographic, LB_Alphabetic, LB_Open_Punctuation, LB_Close_Punctuation, @@ -9138,6 +10874,7 @@ static const LB_enum _Perl_LB_invmap[] = { /* for ASCII/Latin1 */ LB_Alphabetic, LB_Break_After, LB_Open_Punctuation, + LB_Break_After, LB_Alphabetic, LB_Ideographic, LB_Alphabetic, @@ -10259,10 +11996,19 @@ static const LB_enum _Perl_LB_invmap[] = { /* for ASCII/Latin1 */ LB_Open_Punctuation, LB_Close_Punctuation, LB_Nonstarter, - LB_Alphabetic, + LB_Ideographic, LB_Nonstarter, - LB_Alphabetic, + LB_Ideographic, LB_Nonstarter, + LB_Ideographic, + LB_Alphabetic, + LB_Ideographic, + LB_Alphabetic, + LB_Ideographic, + LB_Alphabetic, + LB_Ideographic, + LB_Alphabetic, + LB_Ideographic, LB_Alphabetic, LB_Postfix_Numeric, LB_Prefix_Numeric, @@ -10356,6 +12102,8 @@ static const LB_enum _Perl_LB_invmap[] = { /* for ASCII/Latin1 */ LB_Alphabetic, LB_Break_After, LB_Alphabetic, + LB_Combining_Mark, + LB_Alphabetic, LB_Break_After, LB_Alphabetic, LB_Combining_Mark, @@ -10382,6 +12130,14 @@ static const LB_enum _Perl_LB_invmap[] = { /* for ASCII/Latin1 */ LB_Alphabetic, LB_Combining_Mark, LB_Alphabetic, + LB_Break_After, + LB_Alphabetic, + LB_Numeric, + LB_Alphabetic, + LB_Break_After, + LB_Alphabetic, + LB_Combining_Mark, + LB_Alphabetic, LB_Numeric, LB_Alphabetic, LB_Combining_Mark, @@ -10400,6 +12156,8 @@ static const LB_enum _Perl_LB_invmap[] = { /* for ASCII/Latin1 */ LB_Alphabetic, LB_Numeric, LB_Alphabetic, + LB_Break_Before, + LB_Alphabetic, LB_Combining_Mark, LB_Alphabetic, LB_Numeric, @@ -10412,6 +12170,21 @@ static const LB_enum _Perl_LB_invmap[] = { /* for ASCII/Latin1 */ LB_Alphabetic, LB_Numeric, LB_Alphabetic, + LB_Combining_Mark, + LB_Alphabetic, + LB_Combining_Mark, + LB_Alphabetic, + LB_Break_After, + LB_Alphabetic, + LB_Numeric, + LB_Alphabetic, + LB_Break_Before, + LB_Exclamation, + LB_Alphabetic, + LB_Combining_Mark, + LB_Alphabetic, + LB_Combining_Mark, + LB_Alphabetic, LB_Break_After, LB_Alphabetic, LB_Open_Punctuation, @@ -10448,6 +12221,12 @@ static const LB_enum _Perl_LB_invmap[] = { /* for ASCII/Latin1 */ LB_Alphabetic, LB_Combining_Mark, LB_Alphabetic, + LB_Nonstarter, + LB_Alphabetic, + LB_Ideographic, + LB_Alphabetic, + LB_Ideographic, + LB_Alphabetic, LB_Ideographic, LB_Alphabetic, LB_Combining_Mark, @@ -10482,9 +12261,21 @@ static const LB_enum _Perl_LB_invmap[] = { /* for ASCII/Latin1 */ LB_Alphabetic, LB_Combining_Mark, LB_Alphabetic, - LB_Ideographic, + LB_Combining_Mark, LB_Alphabetic, - LB_Ideographic, + LB_Combining_Mark, + LB_Alphabetic, + LB_Combining_Mark, + LB_Alphabetic, + LB_Combining_Mark, + LB_Alphabetic, + LB_Combining_Mark, + LB_Alphabetic, + LB_Combining_Mark, + LB_Alphabetic, + LB_Numeric, + LB_Alphabetic, + LB_Open_Punctuation, LB_Alphabetic, LB_Ideographic, LB_Alphabetic, @@ -10494,9 +12285,10 @@ static const LB_enum _Perl_LB_invmap[] = { /* for ASCII/Latin1 */ LB_Alphabetic, LB_Ideographic, LB_Alphabetic, + LB_Ideographic, LB_Regional_Indicator, LB_Ideographic, - LB_Alphabetic, + LB_E_Base, LB_Ideographic, LB_Alphabetic, LB_Ideographic, @@ -10504,17 +12296,27 @@ static const LB_enum _Perl_LB_invmap[] = { /* for ASCII/Latin1 */ LB_Ideographic, LB_Alphabetic, LB_Ideographic, - LB_Alphabetic, + LB_E_Base, LB_Ideographic, - LB_Alphabetic, + LB_E_Base, LB_Ideographic, - LB_Alphabetic, + LB_E_Modifier, LB_Ideographic, - LB_Alphabetic, + LB_E_Base, LB_Ideographic, - LB_Alphabetic, + LB_E_Base, LB_Ideographic, - LB_Alphabetic, + LB_E_Base, + LB_Ideographic, + LB_E_Base, + LB_Ideographic, + LB_E_Base, + LB_Ideographic, + LB_E_Base, + LB_Ideographic, + LB_E_Base, + LB_Ideographic, + LB_E_Base, LB_Ideographic, LB_Alphabetic, LB_Ideographic, @@ -10522,6 +12324,8 @@ static const LB_enum _Perl_LB_invmap[] = { /* for ASCII/Latin1 */ LB_Ideographic, LB_Alphabetic, LB_Ideographic, + LB_E_Base, + LB_Ideographic, LB_Alphabetic, LB_Ideographic, LB_Alphabetic, @@ -10532,15 +12336,36 @@ static const LB_enum _Perl_LB_invmap[] = { /* for ASCII/Latin1 */ LB_Ideographic, LB_Alphabetic, LB_Ideographic, + LB_E_Base, + LB_Ideographic, + LB_E_Base, + LB_Ideographic, + LB_E_Base, + LB_Ideographic, + LB_E_Base, + LB_Ideographic, LB_Alphabetic, LB_Ideographic, LB_Alphabetic, LB_Ideographic, + LB_E_Base, + LB_Ideographic, + LB_E_Base, LB_Alphabetic, LB_Quotation, LB_Nonstarter, LB_Alphabetic, LB_Ideographic, + LB_E_Base, + LB_Ideographic, + LB_E_Base, + LB_Ideographic, + LB_E_Base, + LB_Ideographic, + LB_Alphabetic, + LB_Ideographic, + LB_Alphabetic, + LB_Ideographic, LB_Alphabetic, LB_Ideographic, LB_Alphabetic, @@ -10551,6 +12376,16 @@ static const LB_enum _Perl_LB_invmap[] = { /* for ASCII/Latin1 */ LB_Ideographic, LB_Alphabetic, LB_Ideographic, + LB_E_Base, + LB_Ideographic, + LB_E_Base, + LB_Ideographic, + LB_E_Base, + LB_Ideographic, + LB_E_Base, + LB_Ideographic, + LB_E_Base, + LB_Ideographic, LB_Alphabetic, LB_Ideographic, LB_Alphabetic, @@ -10569,7 +12404,7 @@ static const LB_enum _Perl_LB_invmap[] = { /* for ASCII/Latin1 */ #if defined(PERL_IN_PERL_C) static const UV _Perl_SB_invlist[] = { /* for ASCII/Latin1 */ - 2896, /* Number of elements */ + 2957, /* Number of elements */ 148565664, /* Version and data structure type */ 0, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -11276,6 +13111,10 @@ static const UV _Perl_SB_invlist[] = { /* for ASCII/Latin1 */ 0x85C, 0x8A0, 0x8B5, + 0x8B6, + 0x8BE, + 0x8D4, + 0x8E2, 0x8E3, 0x904, 0x93A, @@ -11480,6 +13319,7 @@ static const UV _Perl_SB_invlist[] = { /* for ASCII/Latin1 */ 0xC64, 0xC66, 0xC70, + 0xC80, 0xC81, 0xC84, 0xC85, @@ -11527,6 +13367,7 @@ static const UV _Perl_SB_invlist[] = { /* for ASCII/Latin1 */ 0xD4A, 0xD4E, 0xD4F, + 0xD54, 0xD57, 0xD58, 0xD5F, @@ -11766,6 +13607,8 @@ static const UV _Perl_SB_invlist[] = { /* for ASCII/Latin1 */ 0x1820, 0x1878, 0x1880, + 0x1885, + 0x1887, 0x18A9, 0x18AA, 0x18AB, @@ -11839,6 +13682,7 @@ static const UV _Perl_SB_invlist[] = { /* for ASCII/Latin1 */ 0x1C5A, 0x1C7E, 0x1C80, + 0x1C89, 0x1CD0, 0x1CD3, 0x1CD4, @@ -11853,7 +13697,7 @@ static const UV _Perl_SB_invlist[] = { /* for ASCII/Latin1 */ 0x1D00, 0x1DC0, 0x1DF6, - 0x1DFC, + 0x1DFB, 0x1E00, 0x1E01, 0x1E02, @@ -12697,7 +14541,7 @@ static const UV _Perl_SB_invlist[] = { /* for ASCII/Latin1 */ 0xA7A8, 0xA7A9, 0xA7AA, - 0xA7AE, + 0xA7AF, 0xA7B0, 0xA7B5, 0xA7B6, @@ -12721,7 +14565,7 @@ static const UV _Perl_SB_invlist[] = { /* for ASCII/Latin1 */ 0xA880, 0xA882, 0xA8B4, - 0xA8C5, + 0xA8C6, 0xA8CE, 0xA8D0, 0xA8DA, @@ -12969,6 +14813,10 @@ static const UV _Perl_SB_invlist[] = { /* for ASCII/Latin1 */ 0x1049E, 0x104A0, 0x104AA, + 0x104B0, + 0x104D4, + 0x104D8, + 0x104FC, 0x10500, 0x10528, 0x10530, @@ -13103,6 +14951,8 @@ static const UV _Perl_SB_invlist[] = { /* for ASCII/Latin1 */ 0x1123A, 0x1123B, 0x1123D, + 0x1123E, + 0x1123F, 0x11280, 0x11287, 0x11288, @@ -13152,6 +15002,13 @@ static const UV _Perl_SB_invlist[] = { /* for ASCII/Latin1 */ 0x1136D, 0x11370, 0x11375, + 0x11400, + 0x11435, + 0x11447, + 0x1144B, + 0x1144D, + 0x11450, + 0x1145A, 0x11480, 0x114B0, 0x114C4, @@ -13200,6 +15057,23 @@ static const UV _Perl_SB_invlist[] = { /* for ASCII/Latin1 */ 0x11900, 0x11AC0, 0x11AF9, + 0x11C00, + 0x11C09, + 0x11C0A, + 0x11C2F, + 0x11C37, + 0x11C38, + 0x11C40, + 0x11C41, + 0x11C43, + 0x11C50, + 0x11C5A, + 0x11C72, + 0x11C90, + 0x11C92, + 0x11CA8, + 0x11CA9, + 0x11CB7, 0x12000, 0x1239A, 0x12400, @@ -13244,6 +15118,12 @@ static const UV _Perl_SB_invlist[] = { /* for ASCII/Latin1 */ 0x16F8F, 0x16F93, 0x16FA0, + 0x16FE0, + 0x16FE1, + 0x17000, + 0x187ED, + 0x18800, + 0x18AF3, 0x1B000, 0x1B002, 0x1BC00, @@ -13375,10 +15255,26 @@ static const UV _Perl_SB_invlist[] = { /* for ASCII/Latin1 */ 0x1DAA0, 0x1DAA1, 0x1DAB0, + 0x1E000, + 0x1E007, + 0x1E008, + 0x1E019, + 0x1E01B, + 0x1E022, + 0x1E023, + 0x1E025, + 0x1E026, + 0x1E02B, 0x1E800, 0x1E8C5, 0x1E8D0, 0x1E8D7, + 0x1E900, + 0x1E922, + 0x1E944, + 0x1E94B, + 0x1E950, + 0x1E95A, 0x1EE00, 0x1EE04, 0x1EE05, @@ -14200,6 +16096,10 @@ static const SB_enum _Perl_SB_invmap[] = { /* for ASCII/Latin1 */ SB_Other, SB_OLetter, SB_Other, + SB_OLetter, + SB_Other, + SB_Extend, + SB_Format, SB_Extend, SB_OLetter, SB_Extend, @@ -14404,6 +16304,7 @@ static const SB_enum _Perl_SB_invmap[] = { /* for ASCII/Latin1 */ SB_Other, SB_Numeric, SB_Other, + SB_OLetter, SB_Extend, SB_Other, SB_OLetter, @@ -14451,6 +16352,7 @@ static const SB_enum _Perl_SB_invmap[] = { /* for ASCII/Latin1 */ SB_Extend, SB_OLetter, SB_Other, + SB_OLetter, SB_Extend, SB_Other, SB_OLetter, @@ -14692,6 +16594,8 @@ static const SB_enum _Perl_SB_invmap[] = { /* for ASCII/Latin1 */ SB_OLetter, SB_Extend, SB_OLetter, + SB_Extend, + SB_OLetter, SB_Other, SB_OLetter, SB_Other, @@ -14762,6 +16666,7 @@ static const SB_enum _Perl_SB_invmap[] = { /* for ASCII/Latin1 */ SB_Numeric, SB_OLetter, SB_STerm, + SB_Lower, SB_Other, SB_Extend, SB_Other, @@ -15893,6 +17798,10 @@ static const SB_enum _Perl_SB_invmap[] = { /* for ASCII/Latin1 */ SB_Other, SB_Numeric, SB_Other, + SB_Upper, + SB_Other, + SB_Lower, + SB_Other, SB_OLetter, SB_Other, SB_OLetter, @@ -16027,6 +17936,8 @@ static const SB_enum _Perl_SB_invmap[] = { /* for ASCII/Latin1 */ SB_Other, SB_STerm, SB_Other, + SB_Extend, + SB_Other, SB_OLetter, SB_Other, SB_OLetter, @@ -16079,6 +17990,13 @@ static const SB_enum _Perl_SB_invmap[] = { /* for ASCII/Latin1 */ SB_OLetter, SB_Extend, SB_OLetter, + SB_STerm, + SB_Other, + SB_Numeric, + SB_Other, + SB_OLetter, + SB_Extend, + SB_OLetter, SB_Other, SB_OLetter, SB_Other, @@ -16127,6 +18045,23 @@ static const SB_enum _Perl_SB_invmap[] = { /* for ASCII/Latin1 */ SB_OLetter, SB_Other, SB_OLetter, + SB_Extend, + SB_Other, + SB_Extend, + SB_OLetter, + SB_STerm, + SB_Other, + SB_Numeric, + SB_Other, + SB_OLetter, + SB_Other, + SB_Extend, + SB_Other, + SB_Extend, + SB_Other, + SB_OLetter, + SB_Other, + SB_OLetter, SB_Other, SB_OLetter, SB_Other, @@ -16178,6 +18113,12 @@ static const SB_enum _Perl_SB_invmap[] = { /* for ASCII/Latin1 */ SB_Other, SB_OLetter, SB_Other, + SB_OLetter, + SB_Other, + SB_OLetter, + SB_Other, + SB_OLetter, + SB_Other, SB_Extend, SB_STerm, SB_Format, @@ -16299,10 +18240,26 @@ static const SB_enum _Perl_SB_invmap[] = { /* for ASCII/Latin1 */ SB_Other, SB_Extend, SB_Other, + SB_Extend, + SB_Other, + SB_Extend, + SB_Other, + SB_Extend, + SB_Other, + SB_Extend, + SB_Other, + SB_Extend, + SB_Other, SB_OLetter, SB_Other, SB_Extend, SB_Other, + SB_Upper, + SB_Lower, + SB_Extend, + SB_Other, + SB_Numeric, + SB_Other, SB_OLetter, SB_Other, SB_OLetter, @@ -16389,7 +18346,7 @@ static const SB_enum _Perl_SB_invmap[] = { /* for ASCII/Latin1 */ SB_Other, SB_Format, SB_Other, - SB_Format, + SB_Extend, SB_Other, SB_Extend, SB_Other @@ -16400,7 +18357,7 @@ static const SB_enum _Perl_SB_invmap[] = { /* for ASCII/Latin1 */ #if defined(PERL_IN_PERL_C) static const UV _Perl_WB_invlist[] = { /* for ASCII/Latin1 */ - 1535, /* Number of elements */ + 1657, /* Number of elements */ 148565664, /* Version and data structure type */ 0, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -16575,6 +18532,10 @@ static const UV _Perl_WB_invlist[] = { /* for ASCII/Latin1 */ 0x85C, 0x8A0, 0x8B5, + 0x8B6, + 0x8BE, + 0x8D4, + 0x8E2, 0x8E3, 0x904, 0x93A, @@ -16779,6 +18740,7 @@ static const UV _Perl_WB_invlist[] = { /* for ASCII/Latin1 */ 0xC64, 0xC66, 0xC70, + 0xC80, 0xC81, 0xC84, 0xC85, @@ -16826,6 +18788,7 @@ static const UV _Perl_WB_invlist[] = { /* for ASCII/Latin1 */ 0xD4A, 0xD4E, 0xD4F, + 0xD54, 0xD57, 0xD58, 0xD5F, @@ -17013,6 +18976,8 @@ static const UV _Perl_WB_invlist[] = { /* for ASCII/Latin1 */ 0x1820, 0x1878, 0x1880, + 0x1885, + 0x1887, 0x18A9, 0x18AA, 0x18AB, @@ -17068,6 +19033,8 @@ static const UV _Perl_WB_invlist[] = { /* for ASCII/Latin1 */ 0x1C50, 0x1C5A, 0x1C7E, + 0x1C80, + 0x1C89, 0x1CD0, 0x1CD3, 0x1CD4, @@ -17082,7 +19049,7 @@ static const UV _Perl_WB_invlist[] = { /* for ASCII/Latin1 */ 0x1D00, 0x1DC0, 0x1DF6, - 0x1DFC, + 0x1DFB, 0x1E00, 0x1F16, 0x1F18, @@ -17124,6 +19091,7 @@ static const UV _Perl_WB_invlist[] = { /* for ASCII/Latin1 */ 0x2000, 0x200B, 0x200C, + 0x200D, 0x200E, 0x2010, 0x2018, @@ -17184,6 +19152,14 @@ static const UV _Perl_WB_invlist[] = { /* for ASCII/Latin1 */ 0x2189, 0x24B6, 0x24EA, + 0x261D, + 0x261E, + 0x26F9, + 0x26FA, + 0x270A, + 0x270E, + 0x2764, + 0x2765, 0x2C00, 0x2C2F, 0x2C30, @@ -17281,7 +19257,7 @@ static const UV _Perl_WB_invlist[] = { /* for ASCII/Latin1 */ 0xA722, 0xA789, 0xA78B, - 0xA7AE, + 0xA7AF, 0xA7B0, 0xA7B8, 0xA7F7, @@ -17298,7 +19274,7 @@ static const UV _Perl_WB_invlist[] = { /* for ASCII/Latin1 */ 0xA880, 0xA882, 0xA8B4, - 0xA8C5, + 0xA8C6, 0xA8D0, 0xA8DA, 0xA8E0, @@ -17508,6 +19484,10 @@ static const UV _Perl_WB_invlist[] = { /* for ASCII/Latin1 */ 0x1049E, 0x104A0, 0x104AA, + 0x104B0, + 0x104D4, + 0x104D8, + 0x104FC, 0x10500, 0x10528, 0x10530, @@ -17629,6 +19609,8 @@ static const UV _Perl_WB_invlist[] = { /* for ASCII/Latin1 */ 0x11213, 0x1122C, 0x11238, + 0x1123E, + 0x1123F, 0x11280, 0x11287, 0x11288, @@ -17677,6 +19659,12 @@ static const UV _Perl_WB_invlist[] = { /* for ASCII/Latin1 */ 0x1136D, 0x11370, 0x11375, + 0x11400, + 0x11435, + 0x11447, + 0x1144B, + 0x11450, + 0x1145A, 0x11480, 0x114B0, 0x114C4, @@ -17716,6 +19704,22 @@ static const UV _Perl_WB_invlist[] = { /* for ASCII/Latin1 */ 0x11900, 0x11AC0, 0x11AF9, + 0x11C00, + 0x11C09, + 0x11C0A, + 0x11C2F, + 0x11C37, + 0x11C38, + 0x11C40, + 0x11C41, + 0x11C50, + 0x11C5A, + 0x11C72, + 0x11C90, + 0x11C92, + 0x11CA8, + 0x11CA9, + 0x11CB7, 0x12000, 0x1239A, 0x12400, @@ -17755,6 +19759,8 @@ static const UV _Perl_WB_invlist[] = { /* for ASCII/Latin1 */ 0x16F8F, 0x16F93, 0x16FA0, + 0x16FE0, + 0x16FE1, 0x1B000, 0x1B001, 0x1BC00, @@ -17855,10 +19861,25 @@ static const UV _Perl_WB_invlist[] = { /* for ASCII/Latin1 */ 0x1DAA0, 0x1DAA1, 0x1DAB0, + 0x1E000, + 0x1E007, + 0x1E008, + 0x1E019, + 0x1E01B, + 0x1E022, + 0x1E023, + 0x1E025, + 0x1E026, + 0x1E02B, 0x1E800, 0x1E8C5, 0x1E8D0, 0x1E8D7, + 0x1E900, + 0x1E944, + 0x1E94B, + 0x1E950, + 0x1E95A, 0x1EE00, 0x1EE04, 0x1EE05, @@ -17933,6 +19954,64 @@ static const UV _Perl_WB_invlist[] = { /* for ASCII/Latin1 */ 0x1F18A, 0x1F1E6, 0x1F200, + 0x1F385, + 0x1F386, + 0x1F3C3, + 0x1F3C5, + 0x1F3CA, + 0x1F3CC, + 0x1F3FB, + 0x1F400, + 0x1F442, + 0x1F444, + 0x1F446, + 0x1F451, + 0x1F466, + 0x1F46A, + 0x1F46E, + 0x1F46F, + 0x1F470, + 0x1F479, + 0x1F47C, + 0x1F47D, + 0x1F481, + 0x1F484, + 0x1F485, + 0x1F488, + 0x1F48B, + 0x1F48C, + 0x1F4AA, + 0x1F4AB, + 0x1F575, + 0x1F576, + 0x1F57A, + 0x1F57B, + 0x1F590, + 0x1F591, + 0x1F595, + 0x1F597, + 0x1F5E8, + 0x1F5E9, + 0x1F645, + 0x1F648, + 0x1F64B, + 0x1F650, + 0x1F6A3, + 0x1F6A4, + 0x1F6B4, + 0x1F6B7, + 0x1F6C0, + 0x1F6C1, + 0x1F918, + 0x1F91F, + 0x1F926, + 0x1F927, + 0x1F930, + 0x1F931, + 0x1F933, + 0x1F93A, + 0x1F93C, + 0x1F93F, 0xE0001, 0xE0002, 0xE0020, @@ -17945,29 +20024,34 @@ static const UV _Perl_WB_invlist[] = { /* for ASCII/Latin1 */ #if defined(PERL_IN_REGEXEC_C) -#define WB_ENUM_COUNT 20 +#define WB_ENUM_COUNT 25 typedef enum { WB_Other = 0, WB_ALetter = 1, WB_CR = 2, WB_Double_Quote = 3, - WB_Extend = 4, - WB_ExtendNumLet = 5, - WB_Format = 6, - WB_Hebrew_Letter = 7, - WB_Katakana = 8, - WB_LF = 9, - WB_MidLetter = 10, - WB_MidNum = 11, - WB_MidNumLet = 12, - WB_Newline = 13, - WB_Numeric = 14, - WB_Perl_Tailored_HSpace = 15, - WB_Regional_Indicator = 16, - WB_Single_Quote = 17, - WB_EDGE = 18, - WB_UNKNOWN = 19 + WB_E_Base = 4, + WB_E_Base_GAZ = 5, + WB_E_Modifier = 6, + WB_Extend = 7, + WB_ExtendNumLet = 8, + WB_Format = 9, + WB_Glue_After_Zwj = 10, + WB_Hebrew_Letter = 11, + WB_Katakana = 12, + WB_LF = 13, + WB_MidLetter = 14, + WB_MidNum = 15, + WB_MidNumLet = 16, + WB_Newline = 17, + WB_Numeric = 18, + WB_Perl_Tailored_HSpace = 19, + WB_Regional_Indicator = 20, + WB_Single_Quote = 21, + WB_ZWJ = 22, + WB_EDGE = 23, + WB_UNKNOWN = 24 } WB_enum; static const WB_enum _Perl_WB_invmap[] = { /* for ASCII/Latin1 */ @@ -18142,6 +20226,10 @@ static const WB_enum _Perl_WB_invmap[] = { /* for ASCII/Latin1 */ WB_Other, WB_ALetter, WB_Other, + WB_ALetter, + WB_Other, + WB_Extend, + WB_Format, WB_Extend, WB_ALetter, WB_Extend, @@ -18346,6 +20434,7 @@ static const WB_enum _Perl_WB_invmap[] = { /* for ASCII/Latin1 */ WB_Other, WB_Numeric, WB_Other, + WB_ALetter, WB_Extend, WB_Other, WB_ALetter, @@ -18393,6 +20482,7 @@ static const WB_enum _Perl_WB_invmap[] = { /* for ASCII/Latin1 */ WB_Extend, WB_ALetter, WB_Other, + WB_ALetter, WB_Extend, WB_Other, WB_ALetter, @@ -18582,6 +20672,8 @@ static const WB_enum _Perl_WB_invmap[] = { /* for ASCII/Latin1 */ WB_ALetter, WB_Extend, WB_ALetter, + WB_Extend, + WB_ALetter, WB_Other, WB_ALetter, WB_Other, @@ -18635,6 +20727,8 @@ static const WB_enum _Perl_WB_invmap[] = { /* for ASCII/Latin1 */ WB_Numeric, WB_ALetter, WB_Other, + WB_ALetter, + WB_Other, WB_Extend, WB_Other, WB_Extend, @@ -18691,6 +20785,7 @@ static const WB_enum _Perl_WB_invmap[] = { /* for ASCII/Latin1 */ WB_Perl_Tailored_HSpace, WB_Other, WB_Extend, + WB_ZWJ, WB_Format, WB_Other, WB_MidNumLet, @@ -18700,7 +20795,7 @@ static const WB_enum _Perl_WB_invmap[] = { /* for ASCII/Latin1 */ WB_MidLetter, WB_Newline, WB_Format, - WB_Perl_Tailored_HSpace, + WB_ExtendNumLet, WB_Other, WB_ExtendNumLet, WB_Other, @@ -18751,6 +20846,14 @@ static const WB_enum _Perl_WB_invmap[] = { /* for ASCII/Latin1 */ WB_Other, WB_ALetter, WB_Other, + WB_E_Base, + WB_Other, + WB_E_Base, + WB_Other, + WB_E_Base, + WB_Other, + WB_Glue_After_Zwj, + WB_Other, WB_ALetter, WB_Other, WB_ALetter, @@ -19114,6 +21217,10 @@ static const WB_enum _Perl_WB_invmap[] = { /* for ASCII/Latin1 */ WB_ALetter, WB_Other, WB_ALetter, + WB_Other, + WB_ALetter, + WB_Other, + WB_ALetter, WB_Extend, WB_Other, WB_Extend, @@ -19196,6 +21303,8 @@ static const WB_enum _Perl_WB_invmap[] = { /* for ASCII/Latin1 */ WB_ALetter, WB_Extend, WB_Other, + WB_Extend, + WB_Other, WB_ALetter, WB_Other, WB_ALetter, @@ -19248,6 +21357,12 @@ static const WB_enum _Perl_WB_invmap[] = { /* for ASCII/Latin1 */ WB_Extend, WB_ALetter, WB_Other, + WB_Numeric, + WB_Other, + WB_ALetter, + WB_Extend, + WB_ALetter, + WB_Other, WB_ALetter, WB_Other, WB_Numeric, @@ -19286,6 +21401,22 @@ static const WB_enum _Perl_WB_invmap[] = { /* for ASCII/Latin1 */ WB_ALetter, WB_Other, WB_ALetter, + WB_Extend, + WB_Other, + WB_Extend, + WB_ALetter, + WB_Other, + WB_Numeric, + WB_Other, + WB_ALetter, + WB_Other, + WB_Extend, + WB_Other, + WB_Extend, + WB_Other, + WB_ALetter, + WB_Other, + WB_ALetter, WB_Other, WB_ALetter, WB_Other, @@ -19322,6 +21453,8 @@ static const WB_enum _Perl_WB_invmap[] = { /* for ASCII/Latin1 */ WB_Extend, WB_ALetter, WB_Other, + WB_ALetter, + WB_Other, WB_Katakana, WB_Other, WB_ALetter, @@ -19422,11 +21555,26 @@ static const WB_enum _Perl_WB_invmap[] = { /* for ASCII/Latin1 */ WB_Other, WB_Extend, WB_Other, + WB_Extend, + WB_Other, + WB_Extend, + WB_Other, + WB_Extend, + WB_Other, + WB_Extend, + WB_Other, + WB_Extend, + WB_Other, WB_ALetter, WB_Other, WB_Extend, WB_Other, WB_ALetter, + WB_Extend, + WB_Other, + WB_Numeric, + WB_Other, + WB_ALetter, WB_Other, WB_ALetter, WB_Other, @@ -19500,11 +21648,69 @@ static const WB_enum _Perl_WB_invmap[] = { /* for ASCII/Latin1 */ WB_Other, WB_Regional_Indicator, WB_Other, - WB_Format, + WB_E_Base, + WB_Other, + WB_E_Base, + WB_Other, + WB_E_Base, + WB_Other, + WB_E_Modifier, + WB_Other, + WB_E_Base, + WB_Other, + WB_E_Base, + WB_Other, + WB_E_Base_GAZ, + WB_Other, + WB_E_Base, + WB_Other, + WB_E_Base, + WB_Other, + WB_E_Base, + WB_Other, + WB_E_Base, + WB_Other, + WB_E_Base, + WB_Other, + WB_Glue_After_Zwj, + WB_Other, + WB_E_Base, + WB_Other, + WB_E_Base, + WB_Other, + WB_E_Base, + WB_Other, + WB_E_Base, + WB_Other, + WB_E_Base, + WB_Other, + WB_Glue_After_Zwj, + WB_Other, + WB_E_Base, + WB_Other, + WB_E_Base, + WB_Other, + WB_E_Base, + WB_Other, + WB_E_Base, + WB_Other, + WB_E_Base, + WB_Other, + WB_E_Base, + WB_Other, + WB_E_Base, + WB_Other, + WB_E_Base, + WB_Other, + WB_E_Base, + WB_Other, + WB_E_Base, WB_Other, WB_Format, WB_Other, WB_Extend, + WB_Other, + WB_Extend, WB_Other }; @@ -19569,7 +21775,7 @@ static const UV XPerlSpace_invlist[] = { /* for ASCII/Latin1 */ }; static const UV XPosixAlnum_invlist[] = { /* for ASCII/Latin1 */ - 1297, /* Number of elements */ + 1357, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -19678,6 +21884,10 @@ static const UV XPosixAlnum_invlist[] = { /* for ASCII/Latin1 */ 0x859, 0x8A0, 0x8B5, + 0x8B6, + 0x8BE, + 0x8D4, + 0x8E0, 0x8E3, 0x8EA, 0x8F0, @@ -19864,7 +22074,7 @@ static const UV XPosixAlnum_invlist[] = { /* for ASCII/Latin1 */ 0xC64, 0xC66, 0xC70, - 0xC81, + 0xC80, 0xC84, 0xC85, 0xC8D, @@ -19908,7 +22118,7 @@ static const UV XPosixAlnum_invlist[] = { /* for ASCII/Latin1 */ 0xD4D, 0xD4E, 0xD4F, - 0xD57, + 0xD54, 0xD58, 0xD5F, 0xD64, @@ -20152,6 +22362,8 @@ static const UV XPosixAlnum_invlist[] = { /* for ASCII/Latin1 */ 0x1C4A, 0x1C4D, 0x1C7E, + 0x1C80, + 0x1C89, 0x1CE9, 0x1CED, 0x1CEE, @@ -20325,7 +22537,7 @@ static const UV XPosixAlnum_invlist[] = { /* for ASCII/Latin1 */ 0xA722, 0xA789, 0xA78B, - 0xA7AE, + 0xA7AF, 0xA7B0, 0xA7B8, 0xA7F7, @@ -20340,6 +22552,8 @@ static const UV XPosixAlnum_invlist[] = { /* for ASCII/Latin1 */ 0xA874, 0xA880, 0xA8C4, + 0xA8C5, + 0xA8C6, 0xA8D0, 0xA8DA, 0xA8F2, @@ -20498,6 +22712,10 @@ static const UV XPosixAlnum_invlist[] = { /* for ASCII/Latin1 */ 0x1049E, 0x104A0, 0x104AA, + 0x104B0, + 0x104D4, + 0x104D8, + 0x104FC, 0x10500, 0x10528, 0x10530, @@ -20600,6 +22818,8 @@ static const UV XPosixAlnum_invlist[] = { /* for ASCII/Latin1 */ 0x11235, 0x11237, 0x11238, + 0x1123E, + 0x1123F, 0x11280, 0x11287, 0x11288, @@ -20640,6 +22860,14 @@ static const UV XPosixAlnum_invlist[] = { /* for ASCII/Latin1 */ 0x11358, 0x1135D, 0x11364, + 0x11400, + 0x11442, + 0x11443, + 0x11446, + 0x11447, + 0x1144B, + 0x11450, + 0x1145A, 0x11480, 0x114C2, 0x114C4, @@ -20678,6 +22906,22 @@ static const UV XPosixAlnum_invlist[] = { /* for ASCII/Latin1 */ 0x11900, 0x11AC0, 0x11AF9, + 0x11C00, + 0x11C09, + 0x11C0A, + 0x11C37, + 0x11C38, + 0x11C3F, + 0x11C40, + 0x11C41, + 0x11C50, + 0x11C5A, + 0x11C72, + 0x11C90, + 0x11C92, + 0x11CA8, + 0x11CA9, + 0x11CB7, 0x12000, 0x1239A, 0x12400, @@ -20712,6 +22956,12 @@ static const UV XPosixAlnum_invlist[] = { /* for ASCII/Latin1 */ 0x16F7F, 0x16F93, 0x16FA0, + 0x16FE0, + 0x16FE1, + 0x17000, + 0x187ED, + 0x18800, + 0x18AF3, 0x1B000, 0x1B002, 0x1BC00, @@ -20786,8 +23036,24 @@ static const UV XPosixAlnum_invlist[] = { /* for ASCII/Latin1 */ 0x1D7CC, 0x1D7CE, 0x1D800, + 0x1E000, + 0x1E007, + 0x1E008, + 0x1E019, + 0x1E01B, + 0x1E022, + 0x1E023, + 0x1E025, + 0x1E026, + 0x1E02B, 0x1E800, 0x1E8C5, + 0x1E900, + 0x1E944, + 0x1E947, + 0x1E948, + 0x1E950, + 0x1E95A, 0x1EE00, 0x1EE04, 0x1EE05, @@ -20873,7 +23139,7 @@ static const UV XPosixAlnum_invlist[] = { /* for ASCII/Latin1 */ }; static const UV XPosixAlpha_invlist[] = { /* for ASCII/Latin1 */ - 1235, /* Number of elements */ + 1289, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -20982,6 +23248,10 @@ static const UV XPosixAlpha_invlist[] = { /* for ASCII/Latin1 */ 0x859, 0x8A0, 0x8B5, + 0x8B6, + 0x8BE, + 0x8D4, + 0x8E0, 0x8E3, 0x8EA, 0x8F0, @@ -21158,7 +23428,7 @@ static const UV XPosixAlpha_invlist[] = { /* for ASCII/Latin1 */ 0xC5B, 0xC60, 0xC64, - 0xC81, + 0xC80, 0xC84, 0xC85, 0xC8D, @@ -21200,7 +23470,7 @@ static const UV XPosixAlpha_invlist[] = { /* for ASCII/Latin1 */ 0xD4D, 0xD4E, 0xD4F, - 0xD57, + 0xD54, 0xD58, 0xD5F, 0xD64, @@ -21422,6 +23692,8 @@ static const UV XPosixAlpha_invlist[] = { /* for ASCII/Latin1 */ 0x1C50, 0x1C5A, 0x1C7E, + 0x1C80, + 0x1C89, 0x1CE9, 0x1CED, 0x1CEE, @@ -21597,7 +23869,7 @@ static const UV XPosixAlpha_invlist[] = { /* for ASCII/Latin1 */ 0xA722, 0xA789, 0xA78B, - 0xA7AE, + 0xA7AF, 0xA7B0, 0xA7B8, 0xA7F7, @@ -21612,6 +23884,8 @@ static const UV XPosixAlpha_invlist[] = { /* for ASCII/Latin1 */ 0xA874, 0xA880, 0xA8C4, + 0xA8C5, + 0xA8C6, 0xA8F2, 0xA8F8, 0xA8FB, @@ -21762,6 +24036,10 @@ static const UV XPosixAlpha_invlist[] = { /* for ASCII/Latin1 */ 0x103D6, 0x10400, 0x1049E, + 0x104B0, + 0x104D4, + 0x104D8, + 0x104FC, 0x10500, 0x10528, 0x10530, @@ -21858,6 +24136,8 @@ static const UV XPosixAlpha_invlist[] = { /* for ASCII/Latin1 */ 0x11235, 0x11237, 0x11238, + 0x1123E, + 0x1123F, 0x11280, 0x11287, 0x11288, @@ -21896,6 +24176,12 @@ static const UV XPosixAlpha_invlist[] = { /* for ASCII/Latin1 */ 0x11358, 0x1135D, 0x11364, + 0x11400, + 0x11442, + 0x11443, + 0x11446, + 0x11447, + 0x1144B, 0x11480, 0x114C2, 0x114C4, @@ -21926,6 +24212,20 @@ static const UV XPosixAlpha_invlist[] = { /* for ASCII/Latin1 */ 0x11900, 0x11AC0, 0x11AF9, + 0x11C00, + 0x11C09, + 0x11C0A, + 0x11C37, + 0x11C38, + 0x11C3F, + 0x11C40, + 0x11C41, + 0x11C72, + 0x11C90, + 0x11C92, + 0x11CA8, + 0x11CA9, + 0x11CB7, 0x12000, 0x1239A, 0x12400, @@ -21956,6 +24256,12 @@ static const UV XPosixAlpha_invlist[] = { /* for ASCII/Latin1 */ 0x16F7F, 0x16F93, 0x16FA0, + 0x16FE0, + 0x16FE1, + 0x17000, + 0x187ED, + 0x18800, + 0x18AF3, 0x1B000, 0x1B002, 0x1BC00, @@ -22028,8 +24334,22 @@ static const UV XPosixAlpha_invlist[] = { /* for ASCII/Latin1 */ 0x1D7C3, 0x1D7C4, 0x1D7CC, + 0x1E000, + 0x1E007, + 0x1E008, + 0x1E019, + 0x1E01B, + 0x1E022, + 0x1E023, + 0x1E025, + 0x1E026, + 0x1E02B, 0x1E800, 0x1E8C5, + 0x1E900, + 0x1E944, + 0x1E947, + 0x1E948, 0x1EE00, 0x1EE04, 0x1EE05, @@ -22150,7 +24470,7 @@ static const UV XPosixCntrl_invlist[] = { /* for ASCII/Latin1 */ }; static const UV XPosixDigit_invlist[] = { /* for ASCII/Latin1 */ - 103, /* Number of elements */ + 109, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -22241,6 +24561,8 @@ static const UV XPosixDigit_invlist[] = { /* for ASCII/Latin1 */ 0x111DA, 0x112F0, 0x112FA, + 0x11450, + 0x1145A, 0x114D0, 0x114DA, 0x11650, @@ -22251,16 +24573,20 @@ static const UV XPosixDigit_invlist[] = { /* for ASCII/Latin1 */ 0x1173A, 0x118E0, 0x118EA, + 0x11C50, + 0x11C5A, 0x16A60, 0x16A6A, 0x16B50, 0x16B5A, 0x1D7CE, - 0x1D800 + 0x1D800, + 0x1E950, + 0x1E95A }; static const UV XPosixGraph_invlist[] = { /* for ASCII/Latin1 */ - 1237, /* Number of elements */ + 1287, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -22315,7 +24641,9 @@ static const UV XPosixGraph_invlist[] = { /* for ASCII/Latin1 */ 0x85F, 0x8A0, 0x8B5, - 0x8E3, + 0x8B6, + 0x8BE, + 0x8D4, 0x984, 0x985, 0x98D, @@ -22488,8 +24816,6 @@ static const UV XPosixGraph_invlist[] = { /* for ASCII/Latin1 */ 0xC66, 0xC70, 0xC78, - 0xC80, - 0xC81, 0xC84, 0xC85, 0xC8D, @@ -22530,14 +24856,10 @@ static const UV XPosixGraph_invlist[] = { /* for ASCII/Latin1 */ 0xD46, 0xD49, 0xD4A, - 0xD4F, - 0xD57, - 0xD58, - 0xD5F, + 0xD50, + 0xD54, 0xD64, 0xD66, - 0xD76, - 0xD79, 0xD80, 0xD82, 0xD84, @@ -22740,7 +25062,7 @@ static const UV XPosixGraph_invlist[] = { /* for ASCII/Latin1 */ 0x1C3B, 0x1C4A, 0x1C4D, - 0x1C80, + 0x1C89, 0x1CC0, 0x1CC8, 0x1CD0, @@ -22749,7 +25071,7 @@ static const UV XPosixGraph_invlist[] = { /* for ASCII/Latin1 */ 0x1CFA, 0x1D00, 0x1DF6, - 0x1DFC, + 0x1DFB, 0x1F16, 0x1F18, 0x1F1E, @@ -22802,7 +25124,7 @@ static const UV XPosixGraph_invlist[] = { /* for ASCII/Latin1 */ 0x2100, 0x218C, 0x2190, - 0x23FB, + 0x23FF, 0x2400, 0x2427, 0x2440, @@ -22854,7 +25176,7 @@ static const UV XPosixGraph_invlist[] = { /* for ASCII/Latin1 */ 0x2DD8, 0x2DDF, 0x2DE0, - 0x2E43, + 0x2E45, 0x2E80, 0x2E9A, 0x2E9B, @@ -22894,7 +25216,7 @@ static const UV XPosixGraph_invlist[] = { /* for ASCII/Latin1 */ 0xA640, 0xA6F8, 0xA700, - 0xA7AE, + 0xA7AF, 0xA7B0, 0xA7B8, 0xA7F7, @@ -22904,7 +25226,7 @@ static const UV XPosixGraph_invlist[] = { /* for ASCII/Latin1 */ 0xA840, 0xA878, 0xA880, - 0xA8C5, + 0xA8C6, 0xA8CE, 0xA8DA, 0xA8E0, @@ -23028,7 +25350,7 @@ static const UV XPosixGraph_invlist[] = { /* for ASCII/Latin1 */ 0x10107, 0x10134, 0x10137, - 0x1018D, + 0x1018F, 0x10190, 0x1019C, 0x101A0, @@ -23057,6 +25379,10 @@ static const UV XPosixGraph_invlist[] = { /* for ASCII/Latin1 */ 0x1049E, 0x104A0, 0x104AA, + 0x104B0, + 0x104D4, + 0x104D8, + 0x104FC, 0x10500, 0x10528, 0x10530, @@ -23168,7 +25494,7 @@ static const UV XPosixGraph_invlist[] = { /* for ASCII/Latin1 */ 0x11200, 0x11212, 0x11213, - 0x1123E, + 0x1123F, 0x11280, 0x11287, 0x11288, @@ -23213,6 +25539,12 @@ static const UV XPosixGraph_invlist[] = { /* for ASCII/Latin1 */ 0x1136D, 0x11370, 0x11375, + 0x11400, + 0x1145A, + 0x1145B, + 0x1145C, + 0x1145D, + 0x1145E, 0x11480, 0x114C8, 0x114D0, @@ -23225,6 +25557,8 @@ static const UV XPosixGraph_invlist[] = { /* for ASCII/Latin1 */ 0x11645, 0x11650, 0x1165A, + 0x11660, + 0x1166D, 0x11680, 0x116B8, 0x116C0, @@ -23241,6 +25575,20 @@ static const UV XPosixGraph_invlist[] = { /* for ASCII/Latin1 */ 0x11900, 0x11AC0, 0x11AF9, + 0x11C00, + 0x11C09, + 0x11C0A, + 0x11C37, + 0x11C38, + 0x11C46, + 0x11C50, + 0x11C6D, + 0x11C70, + 0x11C90, + 0x11C92, + 0x11CA8, + 0x11CA9, + 0x11CB7, 0x12000, 0x1239A, 0x12400, @@ -23281,6 +25629,12 @@ static const UV XPosixGraph_invlist[] = { /* for ASCII/Latin1 */ 0x16F7F, 0x16F8F, 0x16FA0, + 0x16FE0, + 0x16FE1, + 0x17000, + 0x187ED, + 0x18800, + 0x18AF3, 0x1B000, 0x1B002, 0x1BC00, @@ -23351,10 +25705,26 @@ static const UV XPosixGraph_invlist[] = { /* for ASCII/Latin1 */ 0x1DAA0, 0x1DAA1, 0x1DAB0, + 0x1E000, + 0x1E007, + 0x1E008, + 0x1E019, + 0x1E01B, + 0x1E022, + 0x1E023, + 0x1E025, + 0x1E026, + 0x1E02B, 0x1E800, 0x1E8C5, 0x1E8C7, 0x1E8D7, + 0x1E900, + 0x1E94B, + 0x1E950, + 0x1E95A, + 0x1E95E, + 0x1E960, 0x1EE00, 0x1EE04, 0x1EE05, @@ -23442,25 +25812,21 @@ static const UV XPosixGraph_invlist[] = { /* for ASCII/Latin1 */ 0x1F130, 0x1F16C, 0x1F170, - 0x1F19B, + 0x1F1AD, 0x1F1E6, 0x1F203, 0x1F210, - 0x1F23B, + 0x1F23C, 0x1F240, 0x1F249, 0x1F250, 0x1F252, 0x1F300, - 0x1F57A, - 0x1F57B, - 0x1F5A4, - 0x1F5A5, - 0x1F6D1, + 0x1F6D3, 0x1F6E0, 0x1F6ED, 0x1F6F0, - 0x1F6F4, + 0x1F6F7, 0x1F700, 0x1F774, 0x1F780, @@ -23476,9 +25842,19 @@ static const UV XPosixGraph_invlist[] = { /* for ASCII/Latin1 */ 0x1F890, 0x1F8AE, 0x1F910, - 0x1F919, + 0x1F91F, + 0x1F920, + 0x1F928, + 0x1F930, + 0x1F931, + 0x1F933, + 0x1F93F, + 0x1F940, + 0x1F94C, + 0x1F950, + 0x1F95F, 0x1F980, - 0x1F985, + 0x1F992, 0x1F9C0, 0x1F9C1, 0x20000, @@ -23504,7 +25880,7 @@ static const UV XPosixGraph_invlist[] = { /* for ASCII/Latin1 */ }; static const UV XPosixLower_invlist[] = { /* for ASCII/Latin1 */ - 1275, /* Number of elements */ + 1281, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -24061,6 +26437,8 @@ static const UV XPosixLower_invlist[] = { /* for ASCII/Latin1 */ 0x588, 0x13F8, 0x13FE, + 0x1C80, + 0x1C89, 0x1D00, 0x1DC0, 0x1E01, @@ -24723,6 +27101,8 @@ static const UV XPosixLower_invlist[] = { /* for ASCII/Latin1 */ 0xFF5B, 0x10428, 0x10450, + 0x104D8, + 0x104FC, 0x10CC0, 0x10CF3, 0x118C0, @@ -24782,11 +27162,13 @@ static const UV XPosixLower_invlist[] = { /* for ASCII/Latin1 */ 0x1D7C4, 0x1D7CA, 0x1D7CB, - 0x1D7CC + 0x1D7CC, + 0x1E922, + 0x1E944 }; static const UV XPosixPrint_invlist[] = { /* for ASCII/Latin1 */ - 1231, /* Number of elements */ + 1281, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -24841,7 +27223,9 @@ static const UV XPosixPrint_invlist[] = { /* for ASCII/Latin1 */ 0x85F, 0x8A0, 0x8B5, - 0x8E3, + 0x8B6, + 0x8BE, + 0x8D4, 0x984, 0x985, 0x98D, @@ -25014,8 +27398,6 @@ static const UV XPosixPrint_invlist[] = { /* for ASCII/Latin1 */ 0xC66, 0xC70, 0xC78, - 0xC80, - 0xC81, 0xC84, 0xC85, 0xC8D, @@ -25056,14 +27438,10 @@ static const UV XPosixPrint_invlist[] = { /* for ASCII/Latin1 */ 0xD46, 0xD49, 0xD4A, - 0xD4F, - 0xD57, - 0xD58, - 0xD5F, + 0xD50, + 0xD54, 0xD64, 0xD66, - 0xD76, - 0xD79, 0xD80, 0xD82, 0xD84, @@ -25264,7 +27642,7 @@ static const UV XPosixPrint_invlist[] = { /* for ASCII/Latin1 */ 0x1C3B, 0x1C4A, 0x1C4D, - 0x1C80, + 0x1C89, 0x1CC0, 0x1CC8, 0x1CD0, @@ -25273,7 +27651,7 @@ static const UV XPosixPrint_invlist[] = { /* for ASCII/Latin1 */ 0x1CFA, 0x1D00, 0x1DF6, - 0x1DFC, + 0x1DFB, 0x1F16, 0x1F18, 0x1F1E, @@ -25322,7 +27700,7 @@ static const UV XPosixPrint_invlist[] = { /* for ASCII/Latin1 */ 0x2100, 0x218C, 0x2190, - 0x23FB, + 0x23FF, 0x2400, 0x2427, 0x2440, @@ -25374,7 +27752,7 @@ static const UV XPosixPrint_invlist[] = { /* for ASCII/Latin1 */ 0x2DD8, 0x2DDF, 0x2DE0, - 0x2E43, + 0x2E45, 0x2E80, 0x2E9A, 0x2E9B, @@ -25414,7 +27792,7 @@ static const UV XPosixPrint_invlist[] = { /* for ASCII/Latin1 */ 0xA640, 0xA6F8, 0xA700, - 0xA7AE, + 0xA7AF, 0xA7B0, 0xA7B8, 0xA7F7, @@ -25424,7 +27802,7 @@ static const UV XPosixPrint_invlist[] = { /* for ASCII/Latin1 */ 0xA840, 0xA878, 0xA880, - 0xA8C5, + 0xA8C6, 0xA8CE, 0xA8DA, 0xA8E0, @@ -25548,7 +27926,7 @@ static const UV XPosixPrint_invlist[] = { /* for ASCII/Latin1 */ 0x10107, 0x10134, 0x10137, - 0x1018D, + 0x1018F, 0x10190, 0x1019C, 0x101A0, @@ -25577,6 +27955,10 @@ static const UV XPosixPrint_invlist[] = { /* for ASCII/Latin1 */ 0x1049E, 0x104A0, 0x104AA, + 0x104B0, + 0x104D4, + 0x104D8, + 0x104FC, 0x10500, 0x10528, 0x10530, @@ -25688,7 +28070,7 @@ static const UV XPosixPrint_invlist[] = { /* for ASCII/Latin1 */ 0x11200, 0x11212, 0x11213, - 0x1123E, + 0x1123F, 0x11280, 0x11287, 0x11288, @@ -25733,6 +28115,12 @@ static const UV XPosixPrint_invlist[] = { /* for ASCII/Latin1 */ 0x1136D, 0x11370, 0x11375, + 0x11400, + 0x1145A, + 0x1145B, + 0x1145C, + 0x1145D, + 0x1145E, 0x11480, 0x114C8, 0x114D0, @@ -25745,6 +28133,8 @@ static const UV XPosixPrint_invlist[] = { /* for ASCII/Latin1 */ 0x11645, 0x11650, 0x1165A, + 0x11660, + 0x1166D, 0x11680, 0x116B8, 0x116C0, @@ -25761,6 +28151,20 @@ static const UV XPosixPrint_invlist[] = { /* for ASCII/Latin1 */ 0x11900, 0x11AC0, 0x11AF9, + 0x11C00, + 0x11C09, + 0x11C0A, + 0x11C37, + 0x11C38, + 0x11C46, + 0x11C50, + 0x11C6D, + 0x11C70, + 0x11C90, + 0x11C92, + 0x11CA8, + 0x11CA9, + 0x11CB7, 0x12000, 0x1239A, 0x12400, @@ -25801,6 +28205,12 @@ static const UV XPosixPrint_invlist[] = { /* for ASCII/Latin1 */ 0x16F7F, 0x16F8F, 0x16FA0, + 0x16FE0, + 0x16FE1, + 0x17000, + 0x187ED, + 0x18800, + 0x18AF3, 0x1B000, 0x1B002, 0x1BC00, @@ -25871,10 +28281,26 @@ static const UV XPosixPrint_invlist[] = { /* for ASCII/Latin1 */ 0x1DAA0, 0x1DAA1, 0x1DAB0, + 0x1E000, + 0x1E007, + 0x1E008, + 0x1E019, + 0x1E01B, + 0x1E022, + 0x1E023, + 0x1E025, + 0x1E026, + 0x1E02B, 0x1E800, 0x1E8C5, 0x1E8C7, 0x1E8D7, + 0x1E900, + 0x1E94B, + 0x1E950, + 0x1E95A, + 0x1E95E, + 0x1E960, 0x1EE00, 0x1EE04, 0x1EE05, @@ -25962,25 +28388,21 @@ static const UV XPosixPrint_invlist[] = { /* for ASCII/Latin1 */ 0x1F130, 0x1F16C, 0x1F170, - 0x1F19B, + 0x1F1AD, 0x1F1E6, 0x1F203, 0x1F210, - 0x1F23B, + 0x1F23C, 0x1F240, 0x1F249, 0x1F250, 0x1F252, 0x1F300, - 0x1F57A, - 0x1F57B, - 0x1F5A4, - 0x1F5A5, - 0x1F6D1, + 0x1F6D3, 0x1F6E0, 0x1F6ED, 0x1F6F0, - 0x1F6F4, + 0x1F6F7, 0x1F700, 0x1F774, 0x1F780, @@ -25996,9 +28418,19 @@ static const UV XPosixPrint_invlist[] = { /* for ASCII/Latin1 */ 0x1F890, 0x1F8AE, 0x1F910, - 0x1F919, + 0x1F91F, + 0x1F920, + 0x1F928, + 0x1F930, + 0x1F931, + 0x1F933, + 0x1F93F, + 0x1F940, + 0x1F94C, + 0x1F950, + 0x1F95F, 0x1F980, - 0x1F985, + 0x1F992, 0x1F9C0, 0x1F9C1, 0x20000, @@ -26024,7 +28456,7 @@ static const UV XPosixPrint_invlist[] = { /* for ASCII/Latin1 */ }; static const UV XPosixPunct_invlist[] = { /* for ASCII/Latin1 */ - 313, /* Number of elements */ + 327, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -26190,7 +28622,7 @@ static const UV XPosixPunct_invlist[] = { /* for ASCII/Latin1 */ 0x2E00, 0x2E2F, 0x2E30, - 0x2E43, + 0x2E45, 0x3001, 0x3004, 0x3008, @@ -26319,14 +28751,26 @@ static const UV XPosixPunct_invlist[] = { /* for ASCII/Latin1 */ 0x1123E, 0x112A9, 0x112AA, + 0x1144B, + 0x11450, + 0x1145B, + 0x1145C, + 0x1145D, + 0x1145E, 0x114C6, 0x114C7, 0x115C1, 0x115D8, 0x11641, 0x11644, + 0x11660, + 0x1166D, 0x1173C, 0x1173F, + 0x11C41, + 0x11C46, + 0x11C70, + 0x11C72, 0x12470, 0x12475, 0x16A6E, @@ -26340,7 +28784,9 @@ static const UV XPosixPunct_invlist[] = { /* for ASCII/Latin1 */ 0x1BC9F, 0x1BCA0, 0x1DA87, - 0x1DA8C + 0x1DA8C, + 0x1E95E, + 0x1E960 }; static const UV XPosixSpace_invlist[] = { /* for ASCII/Latin1 */ @@ -26372,7 +28818,7 @@ static const UV XPosixSpace_invlist[] = { /* for ASCII/Latin1 */ }; static const UV XPosixUpper_invlist[] = { /* for ASCII/Latin1 */ - 1261, /* Number of elements */ + 1265, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -27556,7 +30002,7 @@ static const UV XPosixUpper_invlist[] = { /* for ASCII/Latin1 */ 0xA7A8, 0xA7A9, 0xA7AA, - 0xA7AE, + 0xA7AF, 0xA7B0, 0xA7B5, 0xA7B6, @@ -27565,6 +30011,8 @@ static const UV XPosixUpper_invlist[] = { /* for ASCII/Latin1 */ 0xFF3B, 0x10400, 0x10428, + 0x104B0, + 0x104D4, 0x10C80, 0x10CB3, 0x118A0, @@ -27631,6 +30079,8 @@ static const UV XPosixUpper_invlist[] = { /* for ASCII/Latin1 */ 0x1D7A9, 0x1D7CA, 0x1D7CB, + 0x1E900, + 0x1E922, 0x1F130, 0x1F14A, 0x1F150, @@ -27640,7 +30090,7 @@ static const UV XPosixUpper_invlist[] = { /* for ASCII/Latin1 */ }; static const UV XPosixWord_invlist[] = { /* for ASCII/Latin1 */ - 1311, /* Number of elements */ + 1361, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -27743,6 +30193,10 @@ static const UV XPosixWord_invlist[] = { /* for ASCII/Latin1 */ 0x85C, 0x8A0, 0x8B5, + 0x8B6, + 0x8BE, + 0x8D4, + 0x8E2, 0x8E3, 0x964, 0x966, @@ -27921,7 +30375,7 @@ static const UV XPosixWord_invlist[] = { /* for ASCII/Latin1 */ 0xC64, 0xC66, 0xC70, - 0xC81, + 0xC80, 0xC84, 0xC85, 0xC8D, @@ -27963,7 +30417,7 @@ static const UV XPosixWord_invlist[] = { /* for ASCII/Latin1 */ 0xD49, 0xD4A, 0xD4F, - 0xD57, + 0xD54, 0xD58, 0xD5F, 0xD64, @@ -28199,6 +30653,8 @@ static const UV XPosixWord_invlist[] = { /* for ASCII/Latin1 */ 0x1C4A, 0x1C4D, 0x1C7E, + 0x1C80, + 0x1C89, 0x1CD0, 0x1CD3, 0x1CD4, @@ -28207,7 +30663,7 @@ static const UV XPosixWord_invlist[] = { /* for ASCII/Latin1 */ 0x1CFA, 0x1D00, 0x1DF6, - 0x1DFC, + 0x1DFB, 0x1F16, 0x1F18, 0x1F1E, @@ -28378,7 +30834,7 @@ static const UV XPosixWord_invlist[] = { /* for ASCII/Latin1 */ 0xA722, 0xA789, 0xA78B, - 0xA7AE, + 0xA7AF, 0xA7B0, 0xA7B8, 0xA7F7, @@ -28386,7 +30842,7 @@ static const UV XPosixWord_invlist[] = { /* for ASCII/Latin1 */ 0xA840, 0xA874, 0xA880, - 0xA8C5, + 0xA8C6, 0xA8D0, 0xA8DA, 0xA8E0, @@ -28551,6 +31007,10 @@ static const UV XPosixWord_invlist[] = { /* for ASCII/Latin1 */ 0x1049E, 0x104A0, 0x104AA, + 0x104B0, + 0x104D4, + 0x104D8, + 0x104FC, 0x10500, 0x10528, 0x10530, @@ -28655,6 +31115,8 @@ static const UV XPosixWord_invlist[] = { /* for ASCII/Latin1 */ 0x11212, 0x11213, 0x11238, + 0x1123E, + 0x1123F, 0x11280, 0x11287, 0x11288, @@ -28699,6 +31161,10 @@ static const UV XPosixWord_invlist[] = { /* for ASCII/Latin1 */ 0x1136D, 0x11370, 0x11375, + 0x11400, + 0x1144B, + 0x11450, + 0x1145A, 0x11480, 0x114C6, 0x114C7, @@ -28733,6 +31199,20 @@ static const UV XPosixWord_invlist[] = { /* for ASCII/Latin1 */ 0x11900, 0x11AC0, 0x11AF9, + 0x11C00, + 0x11C09, + 0x11C0A, + 0x11C37, + 0x11C38, + 0x11C41, + 0x11C50, + 0x11C5A, + 0x11C72, + 0x11C90, + 0x11C92, + 0x11CA8, + 0x11CA9, + 0x11CB7, 0x12000, 0x1239A, 0x12400, @@ -28769,6 +31249,12 @@ static const UV XPosixWord_invlist[] = { /* for ASCII/Latin1 */ 0x16F7F, 0x16F8F, 0x16FA0, + 0x16FE0, + 0x16FE1, + 0x17000, + 0x187ED, + 0x18800, + 0x18AF3, 0x1B000, 0x1B002, 0x1BC00, @@ -28867,10 +31353,24 @@ static const UV XPosixWord_invlist[] = { /* for ASCII/Latin1 */ 0x1DAA0, 0x1DAA1, 0x1DAB0, + 0x1E000, + 0x1E007, + 0x1E008, + 0x1E019, + 0x1E01B, + 0x1E022, + 0x1E023, + 0x1E025, + 0x1E026, + 0x1E02B, 0x1E800, 0x1E8C5, 0x1E8D0, 0x1E8D7, + 0x1E900, + 0x1E94B, + 0x1E950, + 0x1E95A, 0x1EE00, 0x1EE04, 0x1EE05, @@ -29049,8 +31549,1291 @@ static const UV ASCII_invlist[] = { /* for EBCDIC 1047 */ 0xFA }; +static const UV Assigned_invlist[] = { /* for EBCDIC 1047 */ + 1276, /* Number of elements */ + 148565664, /* Version and data structure type */ + 0, /* 0 if the list starts at 0; + 1 if it starts at the element beyond 0 */ + 0x0, + 0x378, + 0x37A, + 0x380, + 0x384, + 0x38B, + 0x38C, + 0x38D, + 0x38E, + 0x3A2, + 0x3A3, + 0x530, + 0x531, + 0x557, + 0x559, + 0x560, + 0x561, + 0x588, + 0x589, + 0x58B, + 0x58D, + 0x590, + 0x591, + 0x5C8, + 0x5D0, + 0x5EB, + 0x5F0, + 0x5F5, + 0x600, + 0x61D, + 0x61E, + 0x70E, + 0x70F, + 0x74B, + 0x74D, + 0x7B2, + 0x7C0, + 0x7FB, + 0x800, + 0x82E, + 0x830, + 0x83F, + 0x840, + 0x85C, + 0x85E, + 0x85F, + 0x8A0, + 0x8B5, + 0x8B6, + 0x8BE, + 0x8D4, + 0x984, + 0x985, + 0x98D, + 0x98F, + 0x991, + 0x993, + 0x9A9, + 0x9AA, + 0x9B1, + 0x9B2, + 0x9B3, + 0x9B6, + 0x9BA, + 0x9BC, + 0x9C5, + 0x9C7, + 0x9C9, + 0x9CB, + 0x9CF, + 0x9D7, + 0x9D8, + 0x9DC, + 0x9DE, + 0x9DF, + 0x9E4, + 0x9E6, + 0x9FC, + 0xA01, + 0xA04, + 0xA05, + 0xA0B, + 0xA0F, + 0xA11, + 0xA13, + 0xA29, + 0xA2A, + 0xA31, + 0xA32, + 0xA34, + 0xA35, + 0xA37, + 0xA38, + 0xA3A, + 0xA3C, + 0xA3D, + 0xA3E, + 0xA43, + 0xA47, + 0xA49, + 0xA4B, + 0xA4E, + 0xA51, + 0xA52, + 0xA59, + 0xA5D, + 0xA5E, + 0xA5F, + 0xA66, + 0xA76, + 0xA81, + 0xA84, + 0xA85, + 0xA8E, + 0xA8F, + 0xA92, + 0xA93, + 0xAA9, + 0xAAA, + 0xAB1, + 0xAB2, + 0xAB4, + 0xAB5, + 0xABA, + 0xABC, + 0xAC6, + 0xAC7, + 0xACA, + 0xACB, + 0xACE, + 0xAD0, + 0xAD1, + 0xAE0, + 0xAE4, + 0xAE6, + 0xAF2, + 0xAF9, + 0xAFA, + 0xB01, + 0xB04, + 0xB05, + 0xB0D, + 0xB0F, + 0xB11, + 0xB13, + 0xB29, + 0xB2A, + 0xB31, + 0xB32, + 0xB34, + 0xB35, + 0xB3A, + 0xB3C, + 0xB45, + 0xB47, + 0xB49, + 0xB4B, + 0xB4E, + 0xB56, + 0xB58, + 0xB5C, + 0xB5E, + 0xB5F, + 0xB64, + 0xB66, + 0xB78, + 0xB82, + 0xB84, + 0xB85, + 0xB8B, + 0xB8E, + 0xB91, + 0xB92, + 0xB96, + 0xB99, + 0xB9B, + 0xB9C, + 0xB9D, + 0xB9E, + 0xBA0, + 0xBA3, + 0xBA5, + 0xBA8, + 0xBAB, + 0xBAE, + 0xBBA, + 0xBBE, + 0xBC3, + 0xBC6, + 0xBC9, + 0xBCA, + 0xBCE, + 0xBD0, + 0xBD1, + 0xBD7, + 0xBD8, + 0xBE6, + 0xBFB, + 0xC00, + 0xC04, + 0xC05, + 0xC0D, + 0xC0E, + 0xC11, + 0xC12, + 0xC29, + 0xC2A, + 0xC3A, + 0xC3D, + 0xC45, + 0xC46, + 0xC49, + 0xC4A, + 0xC4E, + 0xC55, + 0xC57, + 0xC58, + 0xC5B, + 0xC60, + 0xC64, + 0xC66, + 0xC70, + 0xC78, + 0xC84, + 0xC85, + 0xC8D, + 0xC8E, + 0xC91, + 0xC92, + 0xCA9, + 0xCAA, + 0xCB4, + 0xCB5, + 0xCBA, + 0xCBC, + 0xCC5, + 0xCC6, + 0xCC9, + 0xCCA, + 0xCCE, + 0xCD5, + 0xCD7, + 0xCDE, + 0xCDF, + 0xCE0, + 0xCE4, + 0xCE6, + 0xCF0, + 0xCF1, + 0xCF3, + 0xD01, + 0xD04, + 0xD05, + 0xD0D, + 0xD0E, + 0xD11, + 0xD12, + 0xD3B, + 0xD3D, + 0xD45, + 0xD46, + 0xD49, + 0xD4A, + 0xD50, + 0xD54, + 0xD64, + 0xD66, + 0xD80, + 0xD82, + 0xD84, + 0xD85, + 0xD97, + 0xD9A, + 0xDB2, + 0xDB3, + 0xDBC, + 0xDBD, + 0xDBE, + 0xDC0, + 0xDC7, + 0xDCA, + 0xDCB, + 0xDCF, + 0xDD5, + 0xDD6, + 0xDD7, + 0xDD8, + 0xDE0, + 0xDE6, + 0xDF0, + 0xDF2, + 0xDF5, + 0xE01, + 0xE3B, + 0xE3F, + 0xE5C, + 0xE81, + 0xE83, + 0xE84, + 0xE85, + 0xE87, + 0xE89, + 0xE8A, + 0xE8B, + 0xE8D, + 0xE8E, + 0xE94, + 0xE98, + 0xE99, + 0xEA0, + 0xEA1, + 0xEA4, + 0xEA5, + 0xEA6, + 0xEA7, + 0xEA8, + 0xEAA, + 0xEAC, + 0xEAD, + 0xEBA, + 0xEBB, + 0xEBE, + 0xEC0, + 0xEC5, + 0xEC6, + 0xEC7, + 0xEC8, + 0xECE, + 0xED0, + 0xEDA, + 0xEDC, + 0xEE0, + 0xF00, + 0xF48, + 0xF49, + 0xF6D, + 0xF71, + 0xF98, + 0xF99, + 0xFBD, + 0xFBE, + 0xFCD, + 0xFCE, + 0xFDB, + 0x1000, + 0x10C6, + 0x10C7, + 0x10C8, + 0x10CD, + 0x10CE, + 0x10D0, + 0x1249, + 0x124A, + 0x124E, + 0x1250, + 0x1257, + 0x1258, + 0x1259, + 0x125A, + 0x125E, + 0x1260, + 0x1289, + 0x128A, + 0x128E, + 0x1290, + 0x12B1, + 0x12B2, + 0x12B6, + 0x12B8, + 0x12BF, + 0x12C0, + 0x12C1, + 0x12C2, + 0x12C6, + 0x12C8, + 0x12D7, + 0x12D8, + 0x1311, + 0x1312, + 0x1316, + 0x1318, + 0x135B, + 0x135D, + 0x137D, + 0x1380, + 0x139A, + 0x13A0, + 0x13F6, + 0x13F8, + 0x13FE, + 0x1400, + 0x169D, + 0x16A0, + 0x16F9, + 0x1700, + 0x170D, + 0x170E, + 0x1715, + 0x1720, + 0x1737, + 0x1740, + 0x1754, + 0x1760, + 0x176D, + 0x176E, + 0x1771, + 0x1772, + 0x1774, + 0x1780, + 0x17DE, + 0x17E0, + 0x17EA, + 0x17F0, + 0x17FA, + 0x1800, + 0x180F, + 0x1810, + 0x181A, + 0x1820, + 0x1878, + 0x1880, + 0x18AB, + 0x18B0, + 0x18F6, + 0x1900, + 0x191F, + 0x1920, + 0x192C, + 0x1930, + 0x193C, + 0x1940, + 0x1941, + 0x1944, + 0x196E, + 0x1970, + 0x1975, + 0x1980, + 0x19AC, + 0x19B0, + 0x19CA, + 0x19D0, + 0x19DB, + 0x19DE, + 0x1A1C, + 0x1A1E, + 0x1A5F, + 0x1A60, + 0x1A7D, + 0x1A7F, + 0x1A8A, + 0x1A90, + 0x1A9A, + 0x1AA0, + 0x1AAE, + 0x1AB0, + 0x1ABF, + 0x1B00, + 0x1B4C, + 0x1B50, + 0x1B7D, + 0x1B80, + 0x1BF4, + 0x1BFC, + 0x1C38, + 0x1C3B, + 0x1C4A, + 0x1C4D, + 0x1C89, + 0x1CC0, + 0x1CC8, + 0x1CD0, + 0x1CF7, + 0x1CF8, + 0x1CFA, + 0x1D00, + 0x1DF6, + 0x1DFB, + 0x1F16, + 0x1F18, + 0x1F1E, + 0x1F20, + 0x1F46, + 0x1F48, + 0x1F4E, + 0x1F50, + 0x1F58, + 0x1F59, + 0x1F5A, + 0x1F5B, + 0x1F5C, + 0x1F5D, + 0x1F5E, + 0x1F5F, + 0x1F7E, + 0x1F80, + 0x1FB5, + 0x1FB6, + 0x1FC5, + 0x1FC6, + 0x1FD4, + 0x1FD6, + 0x1FDC, + 0x1FDD, + 0x1FF0, + 0x1FF2, + 0x1FF5, + 0x1FF6, + 0x1FFF, + 0x2000, + 0x2065, + 0x2066, + 0x2072, + 0x2074, + 0x208F, + 0x2090, + 0x209D, + 0x20A0, + 0x20BF, + 0x20D0, + 0x20F1, + 0x2100, + 0x218C, + 0x2190, + 0x23FF, + 0x2400, + 0x2427, + 0x2440, + 0x244B, + 0x2460, + 0x2B74, + 0x2B76, + 0x2B96, + 0x2B98, + 0x2BBA, + 0x2BBD, + 0x2BC9, + 0x2BCA, + 0x2BD2, + 0x2BEC, + 0x2BF0, + 0x2C00, + 0x2C2F, + 0x2C30, + 0x2C5F, + 0x2C60, + 0x2CF4, + 0x2CF9, + 0x2D26, + 0x2D27, + 0x2D28, + 0x2D2D, + 0x2D2E, + 0x2D30, + 0x2D68, + 0x2D6F, + 0x2D71, + 0x2D7F, + 0x2D97, + 0x2DA0, + 0x2DA7, + 0x2DA8, + 0x2DAF, + 0x2DB0, + 0x2DB7, + 0x2DB8, + 0x2DBF, + 0x2DC0, + 0x2DC7, + 0x2DC8, + 0x2DCF, + 0x2DD0, + 0x2DD7, + 0x2DD8, + 0x2DDF, + 0x2DE0, + 0x2E45, + 0x2E80, + 0x2E9A, + 0x2E9B, + 0x2EF4, + 0x2F00, + 0x2FD6, + 0x2FF0, + 0x2FFC, + 0x3000, + 0x3040, + 0x3041, + 0x3097, + 0x3099, + 0x3100, + 0x3105, + 0x312E, + 0x3131, + 0x318F, + 0x3190, + 0x31BB, + 0x31C0, + 0x31E4, + 0x31F0, + 0x321F, + 0x3220, + 0x32FF, + 0x3300, + 0x4DB6, + 0x4DC0, + 0x9FD6, + 0xA000, + 0xA48D, + 0xA490, + 0xA4C7, + 0xA4D0, + 0xA62C, + 0xA640, + 0xA6F8, + 0xA700, + 0xA7AF, + 0xA7B0, + 0xA7B8, + 0xA7F7, + 0xA82C, + 0xA830, + 0xA83A, + 0xA840, + 0xA878, + 0xA880, + 0xA8C6, + 0xA8CE, + 0xA8DA, + 0xA8E0, + 0xA8FE, + 0xA900, + 0xA954, + 0xA95F, + 0xA97D, + 0xA980, + 0xA9CE, + 0xA9CF, + 0xA9DA, + 0xA9DE, + 0xA9FF, + 0xAA00, + 0xAA37, + 0xAA40, + 0xAA4E, + 0xAA50, + 0xAA5A, + 0xAA5C, + 0xAAC3, + 0xAADB, + 0xAAF7, + 0xAB01, + 0xAB07, + 0xAB09, + 0xAB0F, + 0xAB11, + 0xAB17, + 0xAB20, + 0xAB27, + 0xAB28, + 0xAB2F, + 0xAB30, + 0xAB66, + 0xAB70, + 0xABEE, + 0xABF0, + 0xABFA, + 0xAC00, + 0xD7A4, + 0xD7B0, + 0xD7C7, + 0xD7CB, + 0xD7FC, + 0xD800, + 0xFA6E, + 0xFA70, + 0xFADA, + 0xFB00, + 0xFB07, + 0xFB13, + 0xFB18, + 0xFB1D, + 0xFB37, + 0xFB38, + 0xFB3D, + 0xFB3E, + 0xFB3F, + 0xFB40, + 0xFB42, + 0xFB43, + 0xFB45, + 0xFB46, + 0xFBC2, + 0xFBD3, + 0xFD40, + 0xFD50, + 0xFD90, + 0xFD92, + 0xFDC8, + 0xFDF0, + 0xFDFE, + 0xFE00, + 0xFE1A, + 0xFE20, + 0xFE53, + 0xFE54, + 0xFE67, + 0xFE68, + 0xFE6C, + 0xFE70, + 0xFE75, + 0xFE76, + 0xFEFD, + 0xFEFF, + 0xFF00, + 0xFF01, + 0xFFBF, + 0xFFC2, + 0xFFC8, + 0xFFCA, + 0xFFD0, + 0xFFD2, + 0xFFD8, + 0xFFDA, + 0xFFDD, + 0xFFE0, + 0xFFE7, + 0xFFE8, + 0xFFEF, + 0xFFF9, + 0xFFFE, + 0x10000, + 0x1000C, + 0x1000D, + 0x10027, + 0x10028, + 0x1003B, + 0x1003C, + 0x1003E, + 0x1003F, + 0x1004E, + 0x10050, + 0x1005E, + 0x10080, + 0x100FB, + 0x10100, + 0x10103, + 0x10107, + 0x10134, + 0x10137, + 0x1018F, + 0x10190, + 0x1019C, + 0x101A0, + 0x101A1, + 0x101D0, + 0x101FE, + 0x10280, + 0x1029D, + 0x102A0, + 0x102D1, + 0x102E0, + 0x102FC, + 0x10300, + 0x10324, + 0x10330, + 0x1034B, + 0x10350, + 0x1037B, + 0x10380, + 0x1039E, + 0x1039F, + 0x103C4, + 0x103C8, + 0x103D6, + 0x10400, + 0x1049E, + 0x104A0, + 0x104AA, + 0x104B0, + 0x104D4, + 0x104D8, + 0x104FC, + 0x10500, + 0x10528, + 0x10530, + 0x10564, + 0x1056F, + 0x10570, + 0x10600, + 0x10737, + 0x10740, + 0x10756, + 0x10760, + 0x10768, + 0x10800, + 0x10806, + 0x10808, + 0x10809, + 0x1080A, + 0x10836, + 0x10837, + 0x10839, + 0x1083C, + 0x1083D, + 0x1083F, + 0x10856, + 0x10857, + 0x1089F, + 0x108A7, + 0x108B0, + 0x108E0, + 0x108F3, + 0x108F4, + 0x108F6, + 0x108FB, + 0x1091C, + 0x1091F, + 0x1093A, + 0x1093F, + 0x10940, + 0x10980, + 0x109B8, + 0x109BC, + 0x109D0, + 0x109D2, + 0x10A04, + 0x10A05, + 0x10A07, + 0x10A0C, + 0x10A14, + 0x10A15, + 0x10A18, + 0x10A19, + 0x10A34, + 0x10A38, + 0x10A3B, + 0x10A3F, + 0x10A48, + 0x10A50, + 0x10A59, + 0x10A60, + 0x10AA0, + 0x10AC0, + 0x10AE7, + 0x10AEB, + 0x10AF7, + 0x10B00, + 0x10B36, + 0x10B39, + 0x10B56, + 0x10B58, + 0x10B73, + 0x10B78, + 0x10B92, + 0x10B99, + 0x10B9D, + 0x10BA9, + 0x10BB0, + 0x10C00, + 0x10C49, + 0x10C80, + 0x10CB3, + 0x10CC0, + 0x10CF3, + 0x10CFA, + 0x10D00, + 0x10E60, + 0x10E7F, + 0x11000, + 0x1104E, + 0x11052, + 0x11070, + 0x1107F, + 0x110C2, + 0x110D0, + 0x110E9, + 0x110F0, + 0x110FA, + 0x11100, + 0x11135, + 0x11136, + 0x11144, + 0x11150, + 0x11177, + 0x11180, + 0x111CE, + 0x111D0, + 0x111E0, + 0x111E1, + 0x111F5, + 0x11200, + 0x11212, + 0x11213, + 0x1123F, + 0x11280, + 0x11287, + 0x11288, + 0x11289, + 0x1128A, + 0x1128E, + 0x1128F, + 0x1129E, + 0x1129F, + 0x112AA, + 0x112B0, + 0x112EB, + 0x112F0, + 0x112FA, + 0x11300, + 0x11304, + 0x11305, + 0x1130D, + 0x1130F, + 0x11311, + 0x11313, + 0x11329, + 0x1132A, + 0x11331, + 0x11332, + 0x11334, + 0x11335, + 0x1133A, + 0x1133C, + 0x11345, + 0x11347, + 0x11349, + 0x1134B, + 0x1134E, + 0x11350, + 0x11351, + 0x11357, + 0x11358, + 0x1135D, + 0x11364, + 0x11366, + 0x1136D, + 0x11370, + 0x11375, + 0x11400, + 0x1145A, + 0x1145B, + 0x1145C, + 0x1145D, + 0x1145E, + 0x11480, + 0x114C8, + 0x114D0, + 0x114DA, + 0x11580, + 0x115B6, + 0x115B8, + 0x115DE, + 0x11600, + 0x11645, + 0x11650, + 0x1165A, + 0x11660, + 0x1166D, + 0x11680, + 0x116B8, + 0x116C0, + 0x116CA, + 0x11700, + 0x1171A, + 0x1171D, + 0x1172C, + 0x11730, + 0x11740, + 0x118A0, + 0x118F3, + 0x118FF, + 0x11900, + 0x11AC0, + 0x11AF9, + 0x11C00, + 0x11C09, + 0x11C0A, + 0x11C37, + 0x11C38, + 0x11C46, + 0x11C50, + 0x11C6D, + 0x11C70, + 0x11C90, + 0x11C92, + 0x11CA8, + 0x11CA9, + 0x11CB7, + 0x12000, + 0x1239A, + 0x12400, + 0x1246F, + 0x12470, + 0x12475, + 0x12480, + 0x12544, + 0x13000, + 0x1342F, + 0x14400, + 0x14647, + 0x16800, + 0x16A39, + 0x16A40, + 0x16A5F, + 0x16A60, + 0x16A6A, + 0x16A6E, + 0x16A70, + 0x16AD0, + 0x16AEE, + 0x16AF0, + 0x16AF6, + 0x16B00, + 0x16B46, + 0x16B50, + 0x16B5A, + 0x16B5B, + 0x16B62, + 0x16B63, + 0x16B78, + 0x16B7D, + 0x16B90, + 0x16F00, + 0x16F45, + 0x16F50, + 0x16F7F, + 0x16F8F, + 0x16FA0, + 0x16FE0, + 0x16FE1, + 0x17000, + 0x187ED, + 0x18800, + 0x18AF3, + 0x1B000, + 0x1B002, + 0x1BC00, + 0x1BC6B, + 0x1BC70, + 0x1BC7D, + 0x1BC80, + 0x1BC89, + 0x1BC90, + 0x1BC9A, + 0x1BC9C, + 0x1BCA4, + 0x1D000, + 0x1D0F6, + 0x1D100, + 0x1D127, + 0x1D129, + 0x1D1E9, + 0x1D200, + 0x1D246, + 0x1D300, + 0x1D357, + 0x1D360, + 0x1D372, + 0x1D400, + 0x1D455, + 0x1D456, + 0x1D49D, + 0x1D49E, + 0x1D4A0, + 0x1D4A2, + 0x1D4A3, + 0x1D4A5, + 0x1D4A7, + 0x1D4A9, + 0x1D4AD, + 0x1D4AE, + 0x1D4BA, + 0x1D4BB, + 0x1D4BC, + 0x1D4BD, + 0x1D4C4, + 0x1D4C5, + 0x1D506, + 0x1D507, + 0x1D50B, + 0x1D50D, + 0x1D515, + 0x1D516, + 0x1D51D, + 0x1D51E, + 0x1D53A, + 0x1D53B, + 0x1D53F, + 0x1D540, + 0x1D545, + 0x1D546, + 0x1D547, + 0x1D54A, + 0x1D551, + 0x1D552, + 0x1D6A6, + 0x1D6A8, + 0x1D7CC, + 0x1D7CE, + 0x1DA8C, + 0x1DA9B, + 0x1DAA0, + 0x1DAA1, + 0x1DAB0, + 0x1E000, + 0x1E007, + 0x1E008, + 0x1E019, + 0x1E01B, + 0x1E022, + 0x1E023, + 0x1E025, + 0x1E026, + 0x1E02B, + 0x1E800, + 0x1E8C5, + 0x1E8C7, + 0x1E8D7, + 0x1E900, + 0x1E94B, + 0x1E950, + 0x1E95A, + 0x1E95E, + 0x1E960, + 0x1EE00, + 0x1EE04, + 0x1EE05, + 0x1EE20, + 0x1EE21, + 0x1EE23, + 0x1EE24, + 0x1EE25, + 0x1EE27, + 0x1EE28, + 0x1EE29, + 0x1EE33, + 0x1EE34, + 0x1EE38, + 0x1EE39, + 0x1EE3A, + 0x1EE3B, + 0x1EE3C, + 0x1EE42, + 0x1EE43, + 0x1EE47, + 0x1EE48, + 0x1EE49, + 0x1EE4A, + 0x1EE4B, + 0x1EE4C, + 0x1EE4D, + 0x1EE50, + 0x1EE51, + 0x1EE53, + 0x1EE54, + 0x1EE55, + 0x1EE57, + 0x1EE58, + 0x1EE59, + 0x1EE5A, + 0x1EE5B, + 0x1EE5C, + 0x1EE5D, + 0x1EE5E, + 0x1EE5F, + 0x1EE60, + 0x1EE61, + 0x1EE63, + 0x1EE64, + 0x1EE65, + 0x1EE67, + 0x1EE6B, + 0x1EE6C, + 0x1EE73, + 0x1EE74, + 0x1EE78, + 0x1EE79, + 0x1EE7D, + 0x1EE7E, + 0x1EE7F, + 0x1EE80, + 0x1EE8A, + 0x1EE8B, + 0x1EE9C, + 0x1EEA1, + 0x1EEA4, + 0x1EEA5, + 0x1EEAA, + 0x1EEAB, + 0x1EEBC, + 0x1EEF0, + 0x1EEF2, + 0x1F000, + 0x1F02C, + 0x1F030, + 0x1F094, + 0x1F0A0, + 0x1F0AF, + 0x1F0B1, + 0x1F0C0, + 0x1F0C1, + 0x1F0D0, + 0x1F0D1, + 0x1F0F6, + 0x1F100, + 0x1F10D, + 0x1F110, + 0x1F12F, + 0x1F130, + 0x1F16C, + 0x1F170, + 0x1F1AD, + 0x1F1E6, + 0x1F203, + 0x1F210, + 0x1F23C, + 0x1F240, + 0x1F249, + 0x1F250, + 0x1F252, + 0x1F300, + 0x1F6D3, + 0x1F6E0, + 0x1F6ED, + 0x1F6F0, + 0x1F6F7, + 0x1F700, + 0x1F774, + 0x1F780, + 0x1F7D5, + 0x1F800, + 0x1F80C, + 0x1F810, + 0x1F848, + 0x1F850, + 0x1F85A, + 0x1F860, + 0x1F888, + 0x1F890, + 0x1F8AE, + 0x1F910, + 0x1F91F, + 0x1F920, + 0x1F928, + 0x1F930, + 0x1F931, + 0x1F933, + 0x1F93F, + 0x1F940, + 0x1F94C, + 0x1F950, + 0x1F95F, + 0x1F980, + 0x1F992, + 0x1F9C0, + 0x1F9C1, + 0x20000, + 0x2A6D7, + 0x2A700, + 0x2B735, + 0x2B740, + 0x2B81E, + 0x2B820, + 0x2CEA2, + 0x2F800, + 0x2FA1E, + 0xE0001, + 0xE0002, + 0xE0020, + 0xE0080, + 0xE0100, + 0xE01F0, + 0xF0000, + 0xFFFFE, + 0x100000, + 0x10FFFE +}; + static const UV Cased_invlist[] = { /* for EBCDIC 1047 */ - 289, /* Number of elements */ + 297, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -29145,6 +32928,8 @@ static const UV Cased_invlist[] = { /* for EBCDIC 1047 */ 0x13F6, 0x13F8, 0x13FE, + 0x1C80, + 0x1C89, 0x1D00, 0x1DC0, 0x1E00, @@ -29250,7 +33035,7 @@ static const UV Cased_invlist[] = { /* for EBCDIC 1047 */ 0xA78B, 0xA78F, 0xA790, - 0xA7AE, + 0xA7AF, 0xA7B0, 0xA7B8, 0xA7F8, @@ -29271,6 +33056,10 @@ static const UV Cased_invlist[] = { /* for EBCDIC 1047 */ 0xFF5B, 0x10400, 0x10450, + 0x104B0, + 0x104D4, + 0x104D8, + 0x104FC, 0x10C80, 0x10CB3, 0x10CC0, @@ -29337,6 +33126,8 @@ static const UV Cased_invlist[] = { /* for EBCDIC 1047 */ 0x1D7C3, 0x1D7C4, 0x1D7CC, + 0x1E900, + 0x1E944, 0x1F130, 0x1F14A, 0x1F150, @@ -29402,7 +33193,7 @@ static const UV NonL1_Perl_Non_Final_Folds_invlist[] = { /* for EBCDIC 1047 */ }; static const UV _Perl_Any_Folds_invlist[] = { /* for EBCDIC 1047 */ - 279, /* Number of elements */ + 285, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -29484,8 +33275,6 @@ static const UV _Perl_Any_Folds_invlist[] = { /* for EBCDIC 1047 */ 0x265, 0x267, 0x268, - 0x26A, - 0x26B, 0x26D, 0x26F, 0x270, @@ -29565,6 +33354,8 @@ static const UV _Perl_Any_Folds_invlist[] = { /* for EBCDIC 1047 */ 0x13F6, 0x13F8, 0x13FE, + 0x1C80, + 0x1C89, 0x1D79, 0x1D7A, 0x1D7D, @@ -29662,7 +33453,7 @@ static const UV _Perl_Any_Folds_invlist[] = { /* for EBCDIC 1047 */ 0xA790, 0xA794, 0xA796, - 0xA7AE, + 0xA7AF, 0xA7B0, 0xA7B8, 0xAB53, @@ -29679,12 +33470,18 @@ static const UV _Perl_Any_Folds_invlist[] = { /* for EBCDIC 1047 */ 0xFF5B, 0x10400, 0x10450, + 0x104B0, + 0x104D4, + 0x104D8, + 0x104FC, 0x10C80, 0x10CB3, 0x10CC0, 0x10CF3, 0x118A0, - 0x118E0 + 0x118E0, + 0x1E900, + 0x1E944 }; static const UV _Perl_Folds_To_Multi_Char_invlist[] = { /* for EBCDIC 1047 */ @@ -29758,7 +33555,7 @@ static const UV _Perl_Folds_To_Multi_Char_invlist[] = { /* for EBCDIC 1047 */ #if defined(PERL_IN_PERL_C) static const UV _Perl_GCB_invlist[] = { /* for EBCDIC 1047 */ - 1502, /* Number of elements */ + 1615, /* Number of elements */ 148565664, /* Version and data structure type */ 0, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -29825,6 +33622,8 @@ static const UV _Perl_GCB_invlist[] = { /* for EBCDIC 1047 */ 0x82E, 0x859, 0x85C, + 0x8D4, + 0x8E2, 0x8E3, 0x903, 0x904, @@ -29973,6 +33772,7 @@ static const UV _Perl_GCB_invlist[] = { /* for EBCDIC 1047 */ 0xD4A, 0xD4D, 0xD4E, + 0xD4F, 0xD57, 0xD58, 0xD62, @@ -30081,6 +33881,8 @@ static const UV _Perl_GCB_invlist[] = { /* for EBCDIC 1047 */ 0x180B, 0x180E, 0x180F, + 0x1885, + 0x1887, 0x18A9, 0x18AA, 0x1920, @@ -30167,10 +33969,11 @@ static const UV _Perl_GCB_invlist[] = { /* for EBCDIC 1047 */ 0x1CFA, 0x1DC0, 0x1DF6, - 0x1DFC, + 0x1DFB, 0x1E00, 0x200B, 0x200C, + 0x200D, 0x200E, 0x2010, 0x2028, @@ -30179,6 +33982,14 @@ static const UV _Perl_GCB_invlist[] = { /* for EBCDIC 1047 */ 0x2070, 0x20D0, 0x20F1, + 0x261D, + 0x261E, + 0x26F9, + 0x26FA, + 0x270A, + 0x270E, + 0x2764, + 0x2765, 0x2CEF, 0x2CF2, 0x2D7F, @@ -30211,7 +34022,7 @@ static const UV _Perl_GCB_invlist[] = { /* for EBCDIC 1047 */ 0xA882, 0xA8B4, 0xA8C4, - 0xA8C5, + 0xA8C6, 0xA8E0, 0xA8F2, 0xA926, @@ -31138,6 +34949,8 @@ static const UV _Perl_GCB_invlist[] = { /* for EBCDIC 1047 */ 0x111B6, 0x111BF, 0x111C1, + 0x111C2, + 0x111C4, 0x111CA, 0x111CD, 0x1122C, @@ -31147,6 +34960,8 @@ static const UV _Perl_GCB_invlist[] = { /* for EBCDIC 1047 */ 0x11235, 0x11236, 0x11238, + 0x1123E, + 0x1123F, 0x112DF, 0x112E0, 0x112E3, @@ -31173,6 +34988,13 @@ static const UV _Perl_GCB_invlist[] = { /* for EBCDIC 1047 */ 0x1136D, 0x11370, 0x11375, + 0x11435, + 0x11438, + 0x11440, + 0x11442, + 0x11445, + 0x11446, + 0x11447, 0x114B0, 0x114B1, 0x114B3, @@ -31217,6 +35039,22 @@ static const UV _Perl_GCB_invlist[] = { /* for EBCDIC 1047 */ 0x11726, 0x11727, 0x1172C, + 0x11C2F, + 0x11C30, + 0x11C37, + 0x11C38, + 0x11C3E, + 0x11C3F, + 0x11C40, + 0x11C92, + 0x11CA8, + 0x11CA9, + 0x11CAA, + 0x11CB1, + 0x11CB2, + 0x11CB4, + 0x11CB5, + 0x11CB7, 0x16AF0, 0x16AF5, 0x16B30, @@ -31256,11 +35094,83 @@ static const UV _Perl_GCB_invlist[] = { /* for EBCDIC 1047 */ 0x1DAA0, 0x1DAA1, 0x1DAB0, + 0x1E000, + 0x1E007, + 0x1E008, + 0x1E019, + 0x1E01B, + 0x1E022, + 0x1E023, + 0x1E025, + 0x1E026, + 0x1E02B, 0x1E8D0, 0x1E8D7, + 0x1E944, + 0x1E94B, 0x1F1E6, 0x1F200, + 0x1F385, + 0x1F386, + 0x1F3C3, + 0x1F3C5, + 0x1F3CA, + 0x1F3CC, + 0x1F3FB, + 0x1F400, + 0x1F442, + 0x1F444, + 0x1F446, + 0x1F451, + 0x1F466, + 0x1F46A, + 0x1F46E, + 0x1F46F, + 0x1F470, + 0x1F479, + 0x1F47C, + 0x1F47D, + 0x1F481, + 0x1F484, + 0x1F485, + 0x1F488, + 0x1F48B, + 0x1F48C, + 0x1F4AA, + 0x1F4AB, + 0x1F575, + 0x1F576, + 0x1F57A, + 0x1F57B, + 0x1F590, + 0x1F591, + 0x1F595, + 0x1F597, + 0x1F5E8, + 0x1F5E9, + 0x1F645, + 0x1F648, + 0x1F64B, + 0x1F650, + 0x1F6A3, + 0x1F6A4, + 0x1F6B4, + 0x1F6B7, + 0x1F6C0, + 0x1F6C1, + 0x1F918, + 0x1F91F, + 0x1F926, + 0x1F927, + 0x1F930, + 0x1F931, + 0x1F933, + 0x1F93A, + 0x1F93C, + 0x1F93F, 0xE0000, + 0xE0020, + 0xE0080, 0xE0100, 0xE01F0, 0xE1000 @@ -31270,23 +35180,28 @@ static const UV _Perl_GCB_invlist[] = { /* for EBCDIC 1047 */ #if defined(PERL_IN_REGEXEC_C) -#define GCB_ENUM_COUNT 14 +#define GCB_ENUM_COUNT 19 typedef enum { GCB_Other = 0, GCB_CR = 1, GCB_Control = 2, - GCB_Extend = 3, - GCB_L = 4, - GCB_LF = 5, - GCB_LV = 6, - GCB_LVT = 7, - GCB_Prepend = 8, - GCB_Regional_Indicator = 9, - GCB_SpacingMark = 10, - GCB_T = 11, - GCB_V = 12, - GCB_EDGE = 13 + GCB_E_Base = 3, + GCB_E_Base_GAZ = 4, + GCB_E_Modifier = 5, + GCB_Extend = 6, + GCB_Glue_After_Zwj = 7, + GCB_L = 8, + GCB_LF = 9, + GCB_LV = 10, + GCB_LVT = 11, + GCB_Prepend = 12, + GCB_Regional_Indicator = 13, + GCB_SpacingMark = 14, + GCB_T = 15, + GCB_V = 16, + GCB_ZWJ = 17, + GCB_EDGE = 18 } GCB_enum; static const GCB_enum _Perl_GCB_invmap[] = { /* for EBCDIC 1047 */ @@ -31314,7 +35229,7 @@ static const GCB_enum _Perl_GCB_invmap[] = { /* for EBCDIC 1047 */ GCB_Other, GCB_Extend, GCB_Other, - GCB_Control, + GCB_Prepend, GCB_Other, GCB_Extend, GCB_Other, @@ -31325,7 +35240,7 @@ static const GCB_enum _Perl_GCB_invmap[] = { /* for EBCDIC 1047 */ GCB_Extend, GCB_Other, GCB_Extend, - GCB_Control, + GCB_Prepend, GCB_Other, GCB_Extend, GCB_Other, @@ -31333,7 +35248,7 @@ static const GCB_enum _Perl_GCB_invmap[] = { /* for EBCDIC 1047 */ GCB_Other, GCB_Extend, GCB_Other, - GCB_Control, + GCB_Prepend, GCB_Other, GCB_Extend, GCB_Other, @@ -31354,6 +35269,8 @@ static const GCB_enum _Perl_GCB_invmap[] = { /* for EBCDIC 1047 */ GCB_Extend, GCB_Other, GCB_Extend, + GCB_Prepend, + GCB_Extend, GCB_SpacingMark, GCB_Other, GCB_Extend, @@ -31500,6 +35417,7 @@ static const GCB_enum _Perl_GCB_invmap[] = { /* for EBCDIC 1047 */ GCB_Other, GCB_SpacingMark, GCB_Extend, + GCB_Prepend, GCB_Other, GCB_Extend, GCB_Other, @@ -31612,6 +35530,8 @@ static const GCB_enum _Perl_GCB_invmap[] = { /* for EBCDIC 1047 */ GCB_Extend, GCB_Other, GCB_Extend, + GCB_Other, + GCB_Extend, GCB_SpacingMark, GCB_Extend, GCB_SpacingMark, @@ -31699,6 +35619,7 @@ static const GCB_enum _Perl_GCB_invmap[] = { /* for EBCDIC 1047 */ GCB_Other, GCB_Control, GCB_Extend, + GCB_ZWJ, GCB_Control, GCB_Other, GCB_Control, @@ -31707,6 +35628,14 @@ static const GCB_enum _Perl_GCB_invmap[] = { /* for EBCDIC 1047 */ GCB_Other, GCB_Extend, GCB_Other, + GCB_E_Base, + GCB_Other, + GCB_E_Base, + GCB_Other, + GCB_E_Base, + GCB_Other, + GCB_Glue_After_Zwj, + GCB_Other, GCB_Extend, GCB_Other, GCB_Extend, @@ -32649,7 +36578,7 @@ static const GCB_enum _Perl_GCB_invmap[] = { /* for EBCDIC 1047 */ GCB_SpacingMark, GCB_Extend, GCB_Other, - GCB_Control, + GCB_Prepend, GCB_Other, GCB_Extend, GCB_Other, @@ -32666,6 +36595,8 @@ static const GCB_enum _Perl_GCB_invmap[] = { /* for EBCDIC 1047 */ GCB_Extend, GCB_SpacingMark, GCB_Other, + GCB_Prepend, + GCB_Other, GCB_Extend, GCB_Other, GCB_SpacingMark, @@ -32676,6 +36607,8 @@ static const GCB_enum _Perl_GCB_invmap[] = { /* for EBCDIC 1047 */ GCB_Extend, GCB_Other, GCB_Extend, + GCB_Other, + GCB_Extend, GCB_SpacingMark, GCB_Extend, GCB_Other, @@ -32701,6 +36634,13 @@ static const GCB_enum _Perl_GCB_invmap[] = { /* for EBCDIC 1047 */ GCB_Other, GCB_Extend, GCB_Other, + GCB_SpacingMark, + GCB_Extend, + GCB_SpacingMark, + GCB_Extend, + GCB_SpacingMark, + GCB_Extend, + GCB_Other, GCB_Extend, GCB_SpacingMark, GCB_Extend, @@ -32745,6 +36685,22 @@ static const GCB_enum _Perl_GCB_invmap[] = { /* for EBCDIC 1047 */ GCB_SpacingMark, GCB_Extend, GCB_Other, + GCB_SpacingMark, + GCB_Extend, + GCB_Other, + GCB_Extend, + GCB_SpacingMark, + GCB_Extend, + GCB_Other, + GCB_Extend, + GCB_Other, + GCB_SpacingMark, + GCB_Extend, + GCB_SpacingMark, + GCB_Extend, + GCB_SpacingMark, + GCB_Extend, + GCB_Other, GCB_Extend, GCB_Other, GCB_Extend, @@ -32786,8 +36742,80 @@ static const GCB_enum _Perl_GCB_invmap[] = { /* for EBCDIC 1047 */ GCB_Other, GCB_Extend, GCB_Other, + GCB_Extend, + GCB_Other, + GCB_Extend, + GCB_Other, + GCB_Extend, + GCB_Other, + GCB_Extend, + GCB_Other, + GCB_Extend, + GCB_Other, + GCB_Extend, + GCB_Other, GCB_Regional_Indicator, GCB_Other, + GCB_E_Base, + GCB_Other, + GCB_E_Base, + GCB_Other, + GCB_E_Base, + GCB_Other, + GCB_E_Modifier, + GCB_Other, + GCB_E_Base, + GCB_Other, + GCB_E_Base, + GCB_Other, + GCB_E_Base_GAZ, + GCB_Other, + GCB_E_Base, + GCB_Other, + GCB_E_Base, + GCB_Other, + GCB_E_Base, + GCB_Other, + GCB_E_Base, + GCB_Other, + GCB_E_Base, + GCB_Other, + GCB_Glue_After_Zwj, + GCB_Other, + GCB_E_Base, + GCB_Other, + GCB_E_Base, + GCB_Other, + GCB_E_Base, + GCB_Other, + GCB_E_Base, + GCB_Other, + GCB_E_Base, + GCB_Other, + GCB_Glue_After_Zwj, + GCB_Other, + GCB_E_Base, + GCB_Other, + GCB_E_Base, + GCB_Other, + GCB_E_Base, + GCB_Other, + GCB_E_Base, + GCB_Other, + GCB_E_Base, + GCB_Other, + GCB_E_Base, + GCB_Other, + GCB_E_Base, + GCB_Other, + GCB_E_Base, + GCB_Other, + GCB_E_Base, + GCB_Other, + GCB_E_Base, + GCB_Other, + GCB_Control, + GCB_Extend, GCB_Control, GCB_Extend, GCB_Control, @@ -32799,7 +36827,7 @@ static const GCB_enum _Perl_GCB_invmap[] = { /* for EBCDIC 1047 */ #if defined(PERL_IN_UTF8_C) static const UV _Perl_IDCont_invlist[] = { /* for EBCDIC 1047 */ - 1341, /* Number of elements */ + 1391, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -32928,6 +36956,10 @@ static const UV _Perl_IDCont_invlist[] = { /* for EBCDIC 1047 */ 0x85C, 0x8A0, 0x8B5, + 0x8B6, + 0x8BE, + 0x8D4, + 0x8E2, 0x8E3, 0x964, 0x966, @@ -33106,7 +37138,7 @@ static const UV _Perl_IDCont_invlist[] = { /* for EBCDIC 1047 */ 0xC64, 0xC66, 0xC70, - 0xC81, + 0xC80, 0xC84, 0xC85, 0xC8D, @@ -33148,7 +37180,7 @@ static const UV _Perl_IDCont_invlist[] = { /* for EBCDIC 1047 */ 0xD49, 0xD4A, 0xD4F, - 0xD57, + 0xD54, 0xD58, 0xD5F, 0xD64, @@ -33384,6 +37416,8 @@ static const UV _Perl_IDCont_invlist[] = { /* for EBCDIC 1047 */ 0x1C4A, 0x1C4D, 0x1C7E, + 0x1C80, + 0x1C89, 0x1CD0, 0x1CD3, 0x1CD4, @@ -33392,7 +37426,7 @@ static const UV _Perl_IDCont_invlist[] = { /* for EBCDIC 1047 */ 0x1CFA, 0x1D00, 0x1DF6, - 0x1DFC, + 0x1DFB, 0x1F16, 0x1F18, 0x1F1E, @@ -33561,7 +37595,7 @@ static const UV _Perl_IDCont_invlist[] = { /* for EBCDIC 1047 */ 0xA722, 0xA789, 0xA78B, - 0xA7AE, + 0xA7AF, 0xA7B0, 0xA7B8, 0xA7F7, @@ -33569,7 +37603,7 @@ static const UV _Perl_IDCont_invlist[] = { /* for EBCDIC 1047 */ 0xA840, 0xA874, 0xA880, - 0xA8C5, + 0xA8C6, 0xA8D0, 0xA8DA, 0xA8E0, @@ -33746,6 +37780,10 @@ static const UV _Perl_IDCont_invlist[] = { /* for EBCDIC 1047 */ 0x1049E, 0x104A0, 0x104AA, + 0x104B0, + 0x104D4, + 0x104D8, + 0x104FC, 0x10500, 0x10528, 0x10530, @@ -33850,6 +37888,8 @@ static const UV _Perl_IDCont_invlist[] = { /* for EBCDIC 1047 */ 0x11212, 0x11213, 0x11238, + 0x1123E, + 0x1123F, 0x11280, 0x11287, 0x11288, @@ -33894,6 +37934,10 @@ static const UV _Perl_IDCont_invlist[] = { /* for EBCDIC 1047 */ 0x1136D, 0x11370, 0x11375, + 0x11400, + 0x1144B, + 0x11450, + 0x1145A, 0x11480, 0x114C6, 0x114C7, @@ -33928,6 +37972,20 @@ static const UV _Perl_IDCont_invlist[] = { /* for EBCDIC 1047 */ 0x11900, 0x11AC0, 0x11AF9, + 0x11C00, + 0x11C09, + 0x11C0A, + 0x11C37, + 0x11C38, + 0x11C41, + 0x11C50, + 0x11C5A, + 0x11C72, + 0x11C90, + 0x11C92, + 0x11CA8, + 0x11CA9, + 0x11CB7, 0x12000, 0x1239A, 0x12400, @@ -33964,6 +38022,12 @@ static const UV _Perl_IDCont_invlist[] = { /* for EBCDIC 1047 */ 0x16F7F, 0x16F8F, 0x16FA0, + 0x16FE0, + 0x16FE1, + 0x17000, + 0x187ED, + 0x18800, + 0x18AF3, 0x1B000, 0x1B002, 0x1BC00, @@ -34062,10 +38126,24 @@ static const UV _Perl_IDCont_invlist[] = { /* for EBCDIC 1047 */ 0x1DAA0, 0x1DAA1, 0x1DAB0, + 0x1E000, + 0x1E007, + 0x1E008, + 0x1E019, + 0x1E01B, + 0x1E022, + 0x1E023, + 0x1E025, + 0x1E026, + 0x1E02B, 0x1E800, 0x1E8C5, 0x1E8D0, 0x1E8D7, + 0x1E900, + 0x1E94B, + 0x1E950, + 0x1E95A, 0x1EE00, 0x1EE04, 0x1EE05, @@ -34147,7 +38225,7 @@ static const UV _Perl_IDCont_invlist[] = { /* for EBCDIC 1047 */ }; static const UV _Perl_IDStart_invlist[] = { /* for EBCDIC 1047 */ - 1155, /* Number of elements */ + 1187, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -34278,6 +38356,8 @@ static const UV _Perl_IDStart_invlist[] = { /* for EBCDIC 1047 */ 0x859, 0x8A0, 0x8B5, + 0x8B6, + 0x8BE, 0x904, 0x93A, 0x93D, @@ -34406,6 +38486,8 @@ static const UV _Perl_IDStart_invlist[] = { /* for EBCDIC 1047 */ 0xC5B, 0xC60, 0xC62, + 0xC80, + 0xC81, 0xC85, 0xC8D, 0xC8E, @@ -34434,6 +38516,8 @@ static const UV _Perl_IDStart_invlist[] = { /* for EBCDIC 1047 */ 0xD3E, 0xD4E, 0xD4F, + 0xD54, + 0xD57, 0xD5F, 0xD62, 0xD7A, @@ -34628,6 +38712,8 @@ static const UV _Perl_IDStart_invlist[] = { /* for EBCDIC 1047 */ 0x1C50, 0x1C5A, 0x1C7E, + 0x1C80, + 0x1C89, 0x1CE9, 0x1CED, 0x1CEE, @@ -34795,7 +38881,7 @@ static const UV _Perl_IDStart_invlist[] = { /* for EBCDIC 1047 */ 0xA722, 0xA789, 0xA78B, - 0xA7AE, + 0xA7AF, 0xA7B0, 0xA7B8, 0xA7F7, @@ -34982,6 +39068,10 @@ static const UV _Perl_IDStart_invlist[] = { /* for EBCDIC 1047 */ 0x103D6, 0x10400, 0x1049E, + 0x104B0, + 0x104D4, + 0x104D8, + 0x104FC, 0x10500, 0x10528, 0x10530, @@ -35104,6 +39194,10 @@ static const UV _Perl_IDStart_invlist[] = { /* for EBCDIC 1047 */ 0x11351, 0x1135D, 0x11362, + 0x11400, + 0x11435, + 0x11447, + 0x1144B, 0x11480, 0x114B0, 0x114C4, @@ -35128,6 +39222,14 @@ static const UV _Perl_IDStart_invlist[] = { /* for EBCDIC 1047 */ 0x11900, 0x11AC0, 0x11AF9, + 0x11C00, + 0x11C09, + 0x11C0A, + 0x11C2F, + 0x11C40, + 0x11C41, + 0x11C72, + 0x11C90, 0x12000, 0x1239A, 0x12400, @@ -35158,6 +39260,12 @@ static const UV _Perl_IDStart_invlist[] = { /* for EBCDIC 1047 */ 0x16F51, 0x16F93, 0x16FA0, + 0x16FE0, + 0x16FE1, + 0x17000, + 0x187ED, + 0x18800, + 0x18AF3, 0x1B000, 0x1B002, 0x1BC00, @@ -35230,6 +39338,8 @@ static const UV _Perl_IDStart_invlist[] = { /* for EBCDIC 1047 */ 0x1D7CC, 0x1E800, 0x1E8C5, + 0x1E900, + 0x1E944, 0x1EE00, 0x1EE04, 0x1EE05, @@ -35313,7 +39423,7 @@ static const UV _Perl_IDStart_invlist[] = { /* for EBCDIC 1047 */ #if defined(PERL_IN_PERL_C) static const UV _Perl_LB_invlist[] = { /* for EBCDIC 1047 */ - 2168, /* Number of elements */ + 2279, /* Number of elements */ 148565664, /* Version and data structure type */ 0, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -35471,6 +39581,8 @@ static const UV _Perl_LB_invlist[] = { /* for EBCDIC 1047 */ 0x82E, 0x859, 0x85C, + 0x8D4, + 0x8E2, 0x8E3, 0x904, 0x93A, @@ -35768,6 +39880,8 @@ static const UV _Perl_LB_invlist[] = { /* for EBCDIC 1047 */ 0x180F, 0x1810, 0x181A, + 0x1885, + 0x1887, 0x18A9, 0x18AA, 0x1920, @@ -35832,7 +39946,7 @@ static const UV _Perl_LB_invlist[] = { /* for EBCDIC 1047 */ 0x1CFA, 0x1DC0, 0x1DF6, - 0x1DFC, + 0x1DFB, 0x1E00, 0x1FFD, 0x1FFE, @@ -35841,6 +39955,8 @@ static const UV _Perl_LB_invlist[] = { /* for EBCDIC 1047 */ 0x2008, 0x200B, 0x200C, + 0x200D, + 0x200E, 0x2010, 0x2011, 0x2012, @@ -35923,6 +40039,8 @@ static const UV _Perl_LB_invlist[] = { /* for EBCDIC 1047 */ 0x2618, 0x2619, 0x261A, + 0x261D, + 0x261E, 0x2620, 0x2639, 0x263C, @@ -35949,15 +40067,19 @@ static const UV _Perl_LB_invlist[] = { /* for EBCDIC 1047 */ 0x26F1, 0x26F6, 0x26F7, + 0x26F9, + 0x26FA, 0x26FB, 0x26FD, 0x2705, 0x2708, + 0x270A, 0x270E, 0x275B, 0x2761, 0x2762, 0x2764, + 0x2765, 0x2768, 0x2769, 0x276A, @@ -36062,6 +40184,7 @@ static const UV _Perl_LB_invlist[] = { /* for EBCDIC 1047 */ 0x2E40, 0x2E42, 0x2E43, + 0x2E45, 0x2E80, 0x2E9A, 0x2E9B, @@ -36212,7 +40335,7 @@ static const UV _Perl_LB_invlist[] = { /* for EBCDIC 1047 */ 0xA880, 0xA882, 0xA8B4, - 0xA8C5, + 0xA8C6, 0xA8CE, 0xA8D0, 0xA8DA, @@ -37187,6 +41310,15 @@ static const UV _Perl_LB_invlist[] = { /* for EBCDIC 1047 */ 0xFF71, 0xFF9E, 0xFFA0, + 0xFFBF, + 0xFFC2, + 0xFFC8, + 0xFFCA, + 0xFFD0, + 0xFFD2, + 0xFFD8, + 0xFFDA, + 0xFFDD, 0xFFE0, 0xFFE1, 0xFFE2, @@ -37279,6 +41411,8 @@ static const UV _Perl_LB_invlist[] = { /* for EBCDIC 1047 */ 0x1123A, 0x1123B, 0x1123D, + 0x1123E, + 0x1123F, 0x112A9, 0x112AA, 0x112DF, @@ -37303,6 +41437,14 @@ static const UV _Perl_LB_invlist[] = { /* for EBCDIC 1047 */ 0x1136D, 0x11370, 0x11375, + 0x11435, + 0x11447, + 0x1144B, + 0x1144F, + 0x11450, + 0x1145A, + 0x1145B, + 0x1145C, 0x114B0, 0x114C4, 0x114D0, @@ -37323,6 +41465,8 @@ static const UV _Perl_LB_invlist[] = { /* for EBCDIC 1047 */ 0x11643, 0x11650, 0x1165A, + 0x11660, + 0x1166D, 0x116AB, 0x116B8, 0x116C0, @@ -37335,6 +41479,21 @@ static const UV _Perl_LB_invlist[] = { /* for EBCDIC 1047 */ 0x1173F, 0x118E0, 0x118EA, + 0x11C2F, + 0x11C37, + 0x11C38, + 0x11C40, + 0x11C41, + 0x11C46, + 0x11C50, + 0x11C5A, + 0x11C70, + 0x11C71, + 0x11C72, + 0x11C92, + 0x11CA8, + 0x11CA9, + 0x11CB7, 0x12470, 0x12475, 0x13258, @@ -37371,6 +41530,12 @@ static const UV _Perl_LB_invlist[] = { /* for EBCDIC 1047 */ 0x16F7F, 0x16F8F, 0x16F93, + 0x16FE0, + 0x16FE1, + 0x17000, + 0x187ED, + 0x18800, + 0x18AF3, 0x1B000, 0x1B002, 0x1BC9D, @@ -37403,44 +41568,73 @@ static const UV _Perl_LB_invlist[] = { /* for EBCDIC 1047 */ 0x1DAA0, 0x1DAA1, 0x1DAB0, + 0x1E000, + 0x1E007, + 0x1E008, + 0x1E019, + 0x1E01B, + 0x1E022, + 0x1E023, + 0x1E025, + 0x1E026, + 0x1E02B, 0x1E8D0, 0x1E8D7, + 0x1E944, + 0x1E94B, + 0x1E950, + 0x1E95A, + 0x1E95E, + 0x1E960, 0x1F000, - 0x1F02C, - 0x1F030, - 0x1F094, - 0x1F0A0, - 0x1F0AF, - 0x1F0B1, - 0x1F0C0, - 0x1F0C1, - 0x1F0D0, - 0x1F0D1, - 0x1F0F6, + 0x1F100, + 0x1F10D, + 0x1F110, + 0x1F12F, + 0x1F130, + 0x1F16C, + 0x1F170, + 0x1F1AD, 0x1F1E6, 0x1F200, - 0x1F203, - 0x1F210, - 0x1F23B, - 0x1F240, - 0x1F249, - 0x1F250, - 0x1F252, - 0x1F300, + 0x1F385, + 0x1F386, 0x1F39C, 0x1F39E, 0x1F3B5, 0x1F3B7, 0x1F3BC, 0x1F3BD, + 0x1F3C3, + 0x1F3C5, + 0x1F3CA, + 0x1F3CC, 0x1F3FB, 0x1F400, + 0x1F442, + 0x1F444, + 0x1F446, + 0x1F451, + 0x1F466, + 0x1F46A, + 0x1F46E, + 0x1F46F, + 0x1F470, + 0x1F479, + 0x1F47C, + 0x1F47D, + 0x1F481, + 0x1F484, + 0x1F485, + 0x1F488, 0x1F4A0, 0x1F4A1, 0x1F4A2, 0x1F4A3, 0x1F4A4, 0x1F4A5, + 0x1F4AA, + 0x1F4AB, 0x1F4AF, 0x1F4B0, 0x1F4B1, @@ -37451,30 +41645,57 @@ static const UV _Perl_LB_invlist[] = { /* for EBCDIC 1047 */ 0x1F525, 0x1F532, 0x1F54A, + 0x1F575, + 0x1F576, 0x1F57A, 0x1F57B, - 0x1F5A4, - 0x1F5A5, + 0x1F590, + 0x1F591, + 0x1F595, + 0x1F597, 0x1F5D4, 0x1F5DC, 0x1F5F4, 0x1F5FA, + 0x1F645, + 0x1F648, + 0x1F64B, 0x1F650, 0x1F676, 0x1F679, 0x1F67C, 0x1F680, - 0x1F6D1, - 0x1F6E0, - 0x1F6ED, - 0x1F6F0, - 0x1F6F4, - 0x1F910, - 0x1F919, - 0x1F980, - 0x1F985, - 0x1F9C0, - 0x1F9C1, + 0x1F6A3, + 0x1F6A4, + 0x1F6B4, + 0x1F6B7, + 0x1F6C0, + 0x1F6C1, + 0x1F700, + 0x1F774, + 0x1F780, + 0x1F7D5, + 0x1F800, + 0x1F80C, + 0x1F810, + 0x1F848, + 0x1F850, + 0x1F85A, + 0x1F860, + 0x1F888, + 0x1F890, + 0x1F8AE, + 0x1F918, + 0x1F91F, + 0x1F926, + 0x1F927, + 0x1F930, + 0x1F931, + 0x1F933, + 0x1F93A, + 0x1F93C, + 0x1F93F, + 0x1FFFE, 0x20000, 0x2FFFE, 0x30000, @@ -37491,7 +41712,7 @@ static const UV _Perl_LB_invlist[] = { /* for EBCDIC 1047 */ #if defined(PERL_IN_REGEXEC_C) -#define LB_ENUM_COUNT 36 +#define LB_ENUM_COUNT 39 typedef enum { LB_Alphabetic = 0, @@ -37504,32 +41725,35 @@ typedef enum { LB_Close_Punctuation = 7, LB_Combining_Mark = 8, LB_Contingent_Break = 9, - LB_Exclamation = 10, - LB_Glue = 11, - LB_H2 = 12, - LB_H3 = 13, - LB_Hebrew_Letter = 14, - LB_Hyphen = 15, - LB_Ideographic = 16, - LB_Infix_Numeric = 17, - LB_Inseparable = 18, - LB_JL = 19, - LB_JT = 20, - LB_JV = 21, - LB_Line_Feed = 22, - LB_Mandatory_Break = 23, - LB_Next_Line = 24, - LB_Nonstarter = 25, - LB_Numeric = 26, - LB_Open_Punctuation = 27, - LB_Postfix_Numeric = 28, - LB_Prefix_Numeric = 29, - LB_Quotation = 30, - LB_Regional_Indicator = 31, - LB_Space = 32, - LB_Word_Joiner = 33, - LB_ZWSpace = 34, - LB_EDGE = 35 + LB_E_Base = 10, + LB_E_Modifier = 11, + LB_Exclamation = 12, + LB_Glue = 13, + LB_H2 = 14, + LB_H3 = 15, + LB_Hebrew_Letter = 16, + LB_Hyphen = 17, + LB_Ideographic = 18, + LB_Infix_Numeric = 19, + LB_Inseparable = 20, + LB_JL = 21, + LB_JT = 22, + LB_JV = 23, + LB_Line_Feed = 24, + LB_Mandatory_Break = 25, + LB_Next_Line = 26, + LB_Nonstarter = 27, + LB_Numeric = 28, + LB_Open_Punctuation = 29, + LB_Postfix_Numeric = 30, + LB_Prefix_Numeric = 31, + LB_Quotation = 32, + LB_Regional_Indicator = 33, + LB_Space = 34, + LB_Word_Joiner = 35, + LB_ZWJ = 36, + LB_ZWSpace = 37, + LB_EDGE = 38 } LB_enum; static const LB_enum _Perl_LB_invmap[] = { /* for EBCDIC 1047 */ @@ -37696,6 +41920,8 @@ static const LB_enum _Perl_LB_invmap[] = { /* for EBCDIC 1047 */ LB_Combining_Mark, LB_Alphabetic, LB_Combining_Mark, + LB_Alphabetic, + LB_Combining_Mark, LB_Break_After, LB_Numeric, LB_Alphabetic, @@ -37990,6 +42216,8 @@ static const LB_enum _Perl_LB_invmap[] = { /* for EBCDIC 1047 */ LB_Alphabetic, LB_Combining_Mark, LB_Alphabetic, + LB_Combining_Mark, + LB_Alphabetic, LB_Exclamation, LB_Numeric, LB_Alphabetic, @@ -38057,6 +42285,8 @@ static const LB_enum _Perl_LB_invmap[] = { /* for EBCDIC 1047 */ LB_Break_After, LB_ZWSpace, LB_Combining_Mark, + LB_ZWJ, + LB_Combining_Mark, LB_Break_After, LB_Glue, LB_Break_After, @@ -38139,6 +42369,8 @@ static const LB_enum _Perl_LB_invmap[] = { /* for EBCDIC 1047 */ LB_Ideographic, LB_Alphabetic, LB_Ideographic, + LB_E_Base, + LB_Ideographic, LB_Alphabetic, LB_Ideographic, LB_Alphabetic, @@ -38165,14 +42397,18 @@ static const LB_enum _Perl_LB_invmap[] = { /* for EBCDIC 1047 */ LB_Ideographic, LB_Alphabetic, LB_Ideographic, + LB_E_Base, + LB_Ideographic, LB_Alphabetic, LB_Ideographic, LB_Alphabetic, LB_Ideographic, + LB_E_Base, LB_Alphabetic, LB_Quotation, LB_Alphabetic, LB_Exclamation, + LB_Ideographic, LB_Alphabetic, LB_Open_Punctuation, LB_Close_Punctuation, @@ -38277,6 +42513,7 @@ static const LB_enum _Perl_LB_invmap[] = { /* for EBCDIC 1047 */ LB_Alphabetic, LB_Break_After, LB_Open_Punctuation, + LB_Break_After, LB_Alphabetic, LB_Ideographic, LB_Alphabetic, @@ -39398,10 +43635,19 @@ static const LB_enum _Perl_LB_invmap[] = { /* for EBCDIC 1047 */ LB_Open_Punctuation, LB_Close_Punctuation, LB_Nonstarter, - LB_Alphabetic, + LB_Ideographic, LB_Nonstarter, - LB_Alphabetic, + LB_Ideographic, LB_Nonstarter, + LB_Ideographic, + LB_Alphabetic, + LB_Ideographic, + LB_Alphabetic, + LB_Ideographic, + LB_Alphabetic, + LB_Ideographic, + LB_Alphabetic, + LB_Ideographic, LB_Alphabetic, LB_Postfix_Numeric, LB_Prefix_Numeric, @@ -39495,6 +43741,8 @@ static const LB_enum _Perl_LB_invmap[] = { /* for EBCDIC 1047 */ LB_Alphabetic, LB_Break_After, LB_Alphabetic, + LB_Combining_Mark, + LB_Alphabetic, LB_Break_After, LB_Alphabetic, LB_Combining_Mark, @@ -39521,6 +43769,14 @@ static const LB_enum _Perl_LB_invmap[] = { /* for EBCDIC 1047 */ LB_Alphabetic, LB_Combining_Mark, LB_Alphabetic, + LB_Break_After, + LB_Alphabetic, + LB_Numeric, + LB_Alphabetic, + LB_Break_After, + LB_Alphabetic, + LB_Combining_Mark, + LB_Alphabetic, LB_Numeric, LB_Alphabetic, LB_Combining_Mark, @@ -39539,6 +43795,8 @@ static const LB_enum _Perl_LB_invmap[] = { /* for EBCDIC 1047 */ LB_Alphabetic, LB_Numeric, LB_Alphabetic, + LB_Break_Before, + LB_Alphabetic, LB_Combining_Mark, LB_Alphabetic, LB_Numeric, @@ -39551,6 +43809,21 @@ static const LB_enum _Perl_LB_invmap[] = { /* for EBCDIC 1047 */ LB_Alphabetic, LB_Numeric, LB_Alphabetic, + LB_Combining_Mark, + LB_Alphabetic, + LB_Combining_Mark, + LB_Alphabetic, + LB_Break_After, + LB_Alphabetic, + LB_Numeric, + LB_Alphabetic, + LB_Break_Before, + LB_Exclamation, + LB_Alphabetic, + LB_Combining_Mark, + LB_Alphabetic, + LB_Combining_Mark, + LB_Alphabetic, LB_Break_After, LB_Alphabetic, LB_Open_Punctuation, @@ -39587,6 +43860,12 @@ static const LB_enum _Perl_LB_invmap[] = { /* for EBCDIC 1047 */ LB_Alphabetic, LB_Combining_Mark, LB_Alphabetic, + LB_Nonstarter, + LB_Alphabetic, + LB_Ideographic, + LB_Alphabetic, + LB_Ideographic, + LB_Alphabetic, LB_Ideographic, LB_Alphabetic, LB_Combining_Mark, @@ -39621,9 +43900,21 @@ static const LB_enum _Perl_LB_invmap[] = { /* for EBCDIC 1047 */ LB_Alphabetic, LB_Combining_Mark, LB_Alphabetic, - LB_Ideographic, + LB_Combining_Mark, LB_Alphabetic, - LB_Ideographic, + LB_Combining_Mark, + LB_Alphabetic, + LB_Combining_Mark, + LB_Alphabetic, + LB_Combining_Mark, + LB_Alphabetic, + LB_Combining_Mark, + LB_Alphabetic, + LB_Combining_Mark, + LB_Alphabetic, + LB_Numeric, + LB_Alphabetic, + LB_Open_Punctuation, LB_Alphabetic, LB_Ideographic, LB_Alphabetic, @@ -39633,9 +43924,10 @@ static const LB_enum _Perl_LB_invmap[] = { /* for EBCDIC 1047 */ LB_Alphabetic, LB_Ideographic, LB_Alphabetic, + LB_Ideographic, LB_Regional_Indicator, LB_Ideographic, - LB_Alphabetic, + LB_E_Base, LB_Ideographic, LB_Alphabetic, LB_Ideographic, @@ -39643,17 +43935,27 @@ static const LB_enum _Perl_LB_invmap[] = { /* for EBCDIC 1047 */ LB_Ideographic, LB_Alphabetic, LB_Ideographic, - LB_Alphabetic, + LB_E_Base, LB_Ideographic, - LB_Alphabetic, + LB_E_Base, LB_Ideographic, - LB_Alphabetic, + LB_E_Modifier, LB_Ideographic, - LB_Alphabetic, + LB_E_Base, LB_Ideographic, - LB_Alphabetic, + LB_E_Base, LB_Ideographic, - LB_Alphabetic, + LB_E_Base, + LB_Ideographic, + LB_E_Base, + LB_Ideographic, + LB_E_Base, + LB_Ideographic, + LB_E_Base, + LB_Ideographic, + LB_E_Base, + LB_Ideographic, + LB_E_Base, LB_Ideographic, LB_Alphabetic, LB_Ideographic, @@ -39661,6 +43963,8 @@ static const LB_enum _Perl_LB_invmap[] = { /* for EBCDIC 1047 */ LB_Ideographic, LB_Alphabetic, LB_Ideographic, + LB_E_Base, + LB_Ideographic, LB_Alphabetic, LB_Ideographic, LB_Alphabetic, @@ -39671,15 +43975,32 @@ static const LB_enum _Perl_LB_invmap[] = { /* for EBCDIC 1047 */ LB_Ideographic, LB_Alphabetic, LB_Ideographic, + LB_E_Base, + LB_Ideographic, + LB_E_Base, + LB_Ideographic, + LB_E_Base, + LB_Ideographic, + LB_E_Base, + LB_Ideographic, LB_Alphabetic, LB_Ideographic, LB_Alphabetic, LB_Ideographic, + LB_E_Base, + LB_Ideographic, + LB_E_Base, LB_Alphabetic, LB_Quotation, LB_Nonstarter, LB_Alphabetic, LB_Ideographic, + LB_E_Base, + LB_Ideographic, + LB_E_Base, + LB_Ideographic, + LB_E_Base, + LB_Ideographic, LB_Alphabetic, LB_Ideographic, LB_Alphabetic, @@ -39694,6 +44015,20 @@ static const LB_enum _Perl_LB_invmap[] = { /* for EBCDIC 1047 */ LB_Ideographic, LB_Alphabetic, LB_Ideographic, + LB_E_Base, + LB_Ideographic, + LB_E_Base, + LB_Ideographic, + LB_E_Base, + LB_Ideographic, + LB_E_Base, + LB_Ideographic, + LB_E_Base, + LB_Ideographic, + LB_Alphabetic, + LB_Ideographic, + LB_Alphabetic, + LB_Ideographic, LB_Alphabetic, LB_Combining_Mark, LB_Alphabetic, @@ -39708,7 +44043,7 @@ static const LB_enum _Perl_LB_invmap[] = { /* for EBCDIC 1047 */ #if defined(PERL_IN_PERL_C) static const UV _Perl_SB_invlist[] = { /* for EBCDIC 1047 */ - 2920, /* Number of elements */ + 2981, /* Number of elements */ 148565664, /* Version and data structure type */ 0, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -40439,6 +44774,10 @@ static const UV _Perl_SB_invlist[] = { /* for EBCDIC 1047 */ 0x85C, 0x8A0, 0x8B5, + 0x8B6, + 0x8BE, + 0x8D4, + 0x8E2, 0x8E3, 0x904, 0x93A, @@ -40643,6 +44982,7 @@ static const UV _Perl_SB_invlist[] = { /* for EBCDIC 1047 */ 0xC64, 0xC66, 0xC70, + 0xC80, 0xC81, 0xC84, 0xC85, @@ -40690,6 +45030,7 @@ static const UV _Perl_SB_invlist[] = { /* for EBCDIC 1047 */ 0xD4A, 0xD4E, 0xD4F, + 0xD54, 0xD57, 0xD58, 0xD5F, @@ -40929,6 +45270,8 @@ static const UV _Perl_SB_invlist[] = { /* for EBCDIC 1047 */ 0x1820, 0x1878, 0x1880, + 0x1885, + 0x1887, 0x18A9, 0x18AA, 0x18AB, @@ -41002,6 +45345,7 @@ static const UV _Perl_SB_invlist[] = { /* for EBCDIC 1047 */ 0x1C5A, 0x1C7E, 0x1C80, + 0x1C89, 0x1CD0, 0x1CD3, 0x1CD4, @@ -41016,7 +45360,7 @@ static const UV _Perl_SB_invlist[] = { /* for EBCDIC 1047 */ 0x1D00, 0x1DC0, 0x1DF6, - 0x1DFC, + 0x1DFB, 0x1E00, 0x1E01, 0x1E02, @@ -41860,7 +46204,7 @@ static const UV _Perl_SB_invlist[] = { /* for EBCDIC 1047 */ 0xA7A8, 0xA7A9, 0xA7AA, - 0xA7AE, + 0xA7AF, 0xA7B0, 0xA7B5, 0xA7B6, @@ -41884,7 +46228,7 @@ static const UV _Perl_SB_invlist[] = { /* for EBCDIC 1047 */ 0xA880, 0xA882, 0xA8B4, - 0xA8C5, + 0xA8C6, 0xA8CE, 0xA8D0, 0xA8DA, @@ -42132,6 +46476,10 @@ static const UV _Perl_SB_invlist[] = { /* for EBCDIC 1047 */ 0x1049E, 0x104A0, 0x104AA, + 0x104B0, + 0x104D4, + 0x104D8, + 0x104FC, 0x10500, 0x10528, 0x10530, @@ -42266,6 +46614,8 @@ static const UV _Perl_SB_invlist[] = { /* for EBCDIC 1047 */ 0x1123A, 0x1123B, 0x1123D, + 0x1123E, + 0x1123F, 0x11280, 0x11287, 0x11288, @@ -42315,6 +46665,13 @@ static const UV _Perl_SB_invlist[] = { /* for EBCDIC 1047 */ 0x1136D, 0x11370, 0x11375, + 0x11400, + 0x11435, + 0x11447, + 0x1144B, + 0x1144D, + 0x11450, + 0x1145A, 0x11480, 0x114B0, 0x114C4, @@ -42363,6 +46720,23 @@ static const UV _Perl_SB_invlist[] = { /* for EBCDIC 1047 */ 0x11900, 0x11AC0, 0x11AF9, + 0x11C00, + 0x11C09, + 0x11C0A, + 0x11C2F, + 0x11C37, + 0x11C38, + 0x11C40, + 0x11C41, + 0x11C43, + 0x11C50, + 0x11C5A, + 0x11C72, + 0x11C90, + 0x11C92, + 0x11CA8, + 0x11CA9, + 0x11CB7, 0x12000, 0x1239A, 0x12400, @@ -42407,6 +46781,12 @@ static const UV _Perl_SB_invlist[] = { /* for EBCDIC 1047 */ 0x16F8F, 0x16F93, 0x16FA0, + 0x16FE0, + 0x16FE1, + 0x17000, + 0x187ED, + 0x18800, + 0x18AF3, 0x1B000, 0x1B002, 0x1BC00, @@ -42538,10 +46918,26 @@ static const UV _Perl_SB_invlist[] = { /* for EBCDIC 1047 */ 0x1DAA0, 0x1DAA1, 0x1DAB0, + 0x1E000, + 0x1E007, + 0x1E008, + 0x1E019, + 0x1E01B, + 0x1E022, + 0x1E023, + 0x1E025, + 0x1E026, + 0x1E02B, 0x1E800, 0x1E8C5, 0x1E8D0, 0x1E8D7, + 0x1E900, + 0x1E922, + 0x1E944, + 0x1E94B, + 0x1E950, + 0x1E95A, 0x1EE00, 0x1EE04, 0x1EE05, @@ -43387,6 +47783,10 @@ static const SB_enum _Perl_SB_invmap[] = { /* for EBCDIC 1047 */ SB_Other, SB_OLetter, SB_Other, + SB_OLetter, + SB_Other, + SB_Extend, + SB_Format, SB_Extend, SB_OLetter, SB_Extend, @@ -43591,6 +47991,7 @@ static const SB_enum _Perl_SB_invmap[] = { /* for EBCDIC 1047 */ SB_Other, SB_Numeric, SB_Other, + SB_OLetter, SB_Extend, SB_Other, SB_OLetter, @@ -43638,6 +48039,7 @@ static const SB_enum _Perl_SB_invmap[] = { /* for EBCDIC 1047 */ SB_Extend, SB_OLetter, SB_Other, + SB_OLetter, SB_Extend, SB_Other, SB_OLetter, @@ -43879,6 +48281,8 @@ static const SB_enum _Perl_SB_invmap[] = { /* for EBCDIC 1047 */ SB_OLetter, SB_Extend, SB_OLetter, + SB_Extend, + SB_OLetter, SB_Other, SB_OLetter, SB_Other, @@ -43949,6 +48353,7 @@ static const SB_enum _Perl_SB_invmap[] = { /* for EBCDIC 1047 */ SB_Numeric, SB_OLetter, SB_STerm, + SB_Lower, SB_Other, SB_Extend, SB_Other, @@ -45080,6 +49485,10 @@ static const SB_enum _Perl_SB_invmap[] = { /* for EBCDIC 1047 */ SB_Other, SB_Numeric, SB_Other, + SB_Upper, + SB_Other, + SB_Lower, + SB_Other, SB_OLetter, SB_Other, SB_OLetter, @@ -45214,6 +49623,8 @@ static const SB_enum _Perl_SB_invmap[] = { /* for EBCDIC 1047 */ SB_Other, SB_STerm, SB_Other, + SB_Extend, + SB_Other, SB_OLetter, SB_Other, SB_OLetter, @@ -45266,6 +49677,13 @@ static const SB_enum _Perl_SB_invmap[] = { /* for EBCDIC 1047 */ SB_OLetter, SB_Extend, SB_OLetter, + SB_STerm, + SB_Other, + SB_Numeric, + SB_Other, + SB_OLetter, + SB_Extend, + SB_OLetter, SB_Other, SB_OLetter, SB_Other, @@ -45314,6 +49732,23 @@ static const SB_enum _Perl_SB_invmap[] = { /* for EBCDIC 1047 */ SB_OLetter, SB_Other, SB_OLetter, + SB_Extend, + SB_Other, + SB_Extend, + SB_OLetter, + SB_STerm, + SB_Other, + SB_Numeric, + SB_Other, + SB_OLetter, + SB_Other, + SB_Extend, + SB_Other, + SB_Extend, + SB_Other, + SB_OLetter, + SB_Other, + SB_OLetter, SB_Other, SB_OLetter, SB_Other, @@ -45365,6 +49800,12 @@ static const SB_enum _Perl_SB_invmap[] = { /* for EBCDIC 1047 */ SB_Other, SB_OLetter, SB_Other, + SB_OLetter, + SB_Other, + SB_OLetter, + SB_Other, + SB_OLetter, + SB_Other, SB_Extend, SB_STerm, SB_Format, @@ -45486,10 +49927,26 @@ static const SB_enum _Perl_SB_invmap[] = { /* for EBCDIC 1047 */ SB_Other, SB_Extend, SB_Other, + SB_Extend, + SB_Other, + SB_Extend, + SB_Other, + SB_Extend, + SB_Other, + SB_Extend, + SB_Other, + SB_Extend, + SB_Other, SB_OLetter, SB_Other, SB_Extend, SB_Other, + SB_Upper, + SB_Lower, + SB_Extend, + SB_Other, + SB_Numeric, + SB_Other, SB_OLetter, SB_Other, SB_OLetter, @@ -45576,7 +50033,7 @@ static const SB_enum _Perl_SB_invmap[] = { /* for EBCDIC 1047 */ SB_Other, SB_Format, SB_Other, - SB_Format, + SB_Extend, SB_Other, SB_Extend, SB_Other @@ -45587,7 +50044,7 @@ static const SB_enum _Perl_SB_invmap[] = { /* for EBCDIC 1047 */ #if defined(PERL_IN_PERL_C) static const UV _Perl_WB_invlist[] = { /* for EBCDIC 1047 */ - 1558, /* Number of elements */ + 1680, /* Number of elements */ 148565664, /* Version and data structure type */ 0, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -45785,6 +50242,10 @@ static const UV _Perl_WB_invlist[] = { /* for EBCDIC 1047 */ 0x85C, 0x8A0, 0x8B5, + 0x8B6, + 0x8BE, + 0x8D4, + 0x8E2, 0x8E3, 0x904, 0x93A, @@ -45989,6 +50450,7 @@ static const UV _Perl_WB_invlist[] = { /* for EBCDIC 1047 */ 0xC64, 0xC66, 0xC70, + 0xC80, 0xC81, 0xC84, 0xC85, @@ -46036,6 +50498,7 @@ static const UV _Perl_WB_invlist[] = { /* for EBCDIC 1047 */ 0xD4A, 0xD4E, 0xD4F, + 0xD54, 0xD57, 0xD58, 0xD5F, @@ -46223,6 +50686,8 @@ static const UV _Perl_WB_invlist[] = { /* for EBCDIC 1047 */ 0x1820, 0x1878, 0x1880, + 0x1885, + 0x1887, 0x18A9, 0x18AA, 0x18AB, @@ -46278,6 +50743,8 @@ static const UV _Perl_WB_invlist[] = { /* for EBCDIC 1047 */ 0x1C50, 0x1C5A, 0x1C7E, + 0x1C80, + 0x1C89, 0x1CD0, 0x1CD3, 0x1CD4, @@ -46292,7 +50759,7 @@ static const UV _Perl_WB_invlist[] = { /* for EBCDIC 1047 */ 0x1D00, 0x1DC0, 0x1DF6, - 0x1DFC, + 0x1DFB, 0x1E00, 0x1F16, 0x1F18, @@ -46334,6 +50801,7 @@ static const UV _Perl_WB_invlist[] = { /* for EBCDIC 1047 */ 0x2000, 0x200B, 0x200C, + 0x200D, 0x200E, 0x2010, 0x2018, @@ -46394,6 +50862,14 @@ static const UV _Perl_WB_invlist[] = { /* for EBCDIC 1047 */ 0x2189, 0x24B6, 0x24EA, + 0x261D, + 0x261E, + 0x26F9, + 0x26FA, + 0x270A, + 0x270E, + 0x2764, + 0x2765, 0x2C00, 0x2C2F, 0x2C30, @@ -46491,7 +50967,7 @@ static const UV _Perl_WB_invlist[] = { /* for EBCDIC 1047 */ 0xA722, 0xA789, 0xA78B, - 0xA7AE, + 0xA7AF, 0xA7B0, 0xA7B8, 0xA7F7, @@ -46508,7 +50984,7 @@ static const UV _Perl_WB_invlist[] = { /* for EBCDIC 1047 */ 0xA880, 0xA882, 0xA8B4, - 0xA8C5, + 0xA8C6, 0xA8D0, 0xA8DA, 0xA8E0, @@ -46718,6 +51194,10 @@ static const UV _Perl_WB_invlist[] = { /* for EBCDIC 1047 */ 0x1049E, 0x104A0, 0x104AA, + 0x104B0, + 0x104D4, + 0x104D8, + 0x104FC, 0x10500, 0x10528, 0x10530, @@ -46839,6 +51319,8 @@ static const UV _Perl_WB_invlist[] = { /* for EBCDIC 1047 */ 0x11213, 0x1122C, 0x11238, + 0x1123E, + 0x1123F, 0x11280, 0x11287, 0x11288, @@ -46887,6 +51369,12 @@ static const UV _Perl_WB_invlist[] = { /* for EBCDIC 1047 */ 0x1136D, 0x11370, 0x11375, + 0x11400, + 0x11435, + 0x11447, + 0x1144B, + 0x11450, + 0x1145A, 0x11480, 0x114B0, 0x114C4, @@ -46926,6 +51414,22 @@ static const UV _Perl_WB_invlist[] = { /* for EBCDIC 1047 */ 0x11900, 0x11AC0, 0x11AF9, + 0x11C00, + 0x11C09, + 0x11C0A, + 0x11C2F, + 0x11C37, + 0x11C38, + 0x11C40, + 0x11C41, + 0x11C50, + 0x11C5A, + 0x11C72, + 0x11C90, + 0x11C92, + 0x11CA8, + 0x11CA9, + 0x11CB7, 0x12000, 0x1239A, 0x12400, @@ -46965,6 +51469,8 @@ static const UV _Perl_WB_invlist[] = { /* for EBCDIC 1047 */ 0x16F8F, 0x16F93, 0x16FA0, + 0x16FE0, + 0x16FE1, 0x1B000, 0x1B001, 0x1BC00, @@ -47065,10 +51571,25 @@ static const UV _Perl_WB_invlist[] = { /* for EBCDIC 1047 */ 0x1DAA0, 0x1DAA1, 0x1DAB0, + 0x1E000, + 0x1E007, + 0x1E008, + 0x1E019, + 0x1E01B, + 0x1E022, + 0x1E023, + 0x1E025, + 0x1E026, + 0x1E02B, 0x1E800, 0x1E8C5, 0x1E8D0, 0x1E8D7, + 0x1E900, + 0x1E944, + 0x1E94B, + 0x1E950, + 0x1E95A, 0x1EE00, 0x1EE04, 0x1EE05, @@ -47143,6 +51664,64 @@ static const UV _Perl_WB_invlist[] = { /* for EBCDIC 1047 */ 0x1F18A, 0x1F1E6, 0x1F200, + 0x1F385, + 0x1F386, + 0x1F3C3, + 0x1F3C5, + 0x1F3CA, + 0x1F3CC, + 0x1F3FB, + 0x1F400, + 0x1F442, + 0x1F444, + 0x1F446, + 0x1F451, + 0x1F466, + 0x1F46A, + 0x1F46E, + 0x1F46F, + 0x1F470, + 0x1F479, + 0x1F47C, + 0x1F47D, + 0x1F481, + 0x1F484, + 0x1F485, + 0x1F488, + 0x1F48B, + 0x1F48C, + 0x1F4AA, + 0x1F4AB, + 0x1F575, + 0x1F576, + 0x1F57A, + 0x1F57B, + 0x1F590, + 0x1F591, + 0x1F595, + 0x1F597, + 0x1F5E8, + 0x1F5E9, + 0x1F645, + 0x1F648, + 0x1F64B, + 0x1F650, + 0x1F6A3, + 0x1F6A4, + 0x1F6B4, + 0x1F6B7, + 0x1F6C0, + 0x1F6C1, + 0x1F918, + 0x1F91F, + 0x1F926, + 0x1F927, + 0x1F930, + 0x1F931, + 0x1F933, + 0x1F93A, + 0x1F93C, + 0x1F93F, 0xE0001, 0xE0002, 0xE0020, @@ -47155,29 +51734,34 @@ static const UV _Perl_WB_invlist[] = { /* for EBCDIC 1047 */ #if defined(PERL_IN_REGEXEC_C) -#define WB_ENUM_COUNT 20 +#define WB_ENUM_COUNT 25 typedef enum { WB_Other = 0, WB_ALetter = 1, WB_CR = 2, WB_Double_Quote = 3, - WB_Extend = 4, - WB_ExtendNumLet = 5, - WB_Format = 6, - WB_Hebrew_Letter = 7, - WB_Katakana = 8, - WB_LF = 9, - WB_MidLetter = 10, - WB_MidNum = 11, - WB_MidNumLet = 12, - WB_Newline = 13, - WB_Numeric = 14, - WB_Perl_Tailored_HSpace = 15, - WB_Regional_Indicator = 16, - WB_Single_Quote = 17, - WB_EDGE = 18, - WB_UNKNOWN = 19 + WB_E_Base = 4, + WB_E_Base_GAZ = 5, + WB_E_Modifier = 6, + WB_Extend = 7, + WB_ExtendNumLet = 8, + WB_Format = 9, + WB_Glue_After_Zwj = 10, + WB_Hebrew_Letter = 11, + WB_Katakana = 12, + WB_LF = 13, + WB_MidLetter = 14, + WB_MidNum = 15, + WB_MidNumLet = 16, + WB_Newline = 17, + WB_Numeric = 18, + WB_Perl_Tailored_HSpace = 19, + WB_Regional_Indicator = 20, + WB_Single_Quote = 21, + WB_ZWJ = 22, + WB_EDGE = 23, + WB_UNKNOWN = 24 } WB_enum; static const WB_enum _Perl_WB_invmap[] = { /* for EBCDIC 1047 */ @@ -47375,6 +51959,10 @@ static const WB_enum _Perl_WB_invmap[] = { /* for EBCDIC 1047 */ WB_Other, WB_ALetter, WB_Other, + WB_ALetter, + WB_Other, + WB_Extend, + WB_Format, WB_Extend, WB_ALetter, WB_Extend, @@ -47579,6 +52167,7 @@ static const WB_enum _Perl_WB_invmap[] = { /* for EBCDIC 1047 */ WB_Other, WB_Numeric, WB_Other, + WB_ALetter, WB_Extend, WB_Other, WB_ALetter, @@ -47626,6 +52215,7 @@ static const WB_enum _Perl_WB_invmap[] = { /* for EBCDIC 1047 */ WB_Extend, WB_ALetter, WB_Other, + WB_ALetter, WB_Extend, WB_Other, WB_ALetter, @@ -47815,6 +52405,8 @@ static const WB_enum _Perl_WB_invmap[] = { /* for EBCDIC 1047 */ WB_ALetter, WB_Extend, WB_ALetter, + WB_Extend, + WB_ALetter, WB_Other, WB_ALetter, WB_Other, @@ -47868,6 +52460,8 @@ static const WB_enum _Perl_WB_invmap[] = { /* for EBCDIC 1047 */ WB_Numeric, WB_ALetter, WB_Other, + WB_ALetter, + WB_Other, WB_Extend, WB_Other, WB_Extend, @@ -47924,6 +52518,7 @@ static const WB_enum _Perl_WB_invmap[] = { /* for EBCDIC 1047 */ WB_Perl_Tailored_HSpace, WB_Other, WB_Extend, + WB_ZWJ, WB_Format, WB_Other, WB_MidNumLet, @@ -47933,7 +52528,7 @@ static const WB_enum _Perl_WB_invmap[] = { /* for EBCDIC 1047 */ WB_MidLetter, WB_Newline, WB_Format, - WB_Perl_Tailored_HSpace, + WB_ExtendNumLet, WB_Other, WB_ExtendNumLet, WB_Other, @@ -47984,6 +52579,14 @@ static const WB_enum _Perl_WB_invmap[] = { /* for EBCDIC 1047 */ WB_Other, WB_ALetter, WB_Other, + WB_E_Base, + WB_Other, + WB_E_Base, + WB_Other, + WB_E_Base, + WB_Other, + WB_Glue_After_Zwj, + WB_Other, WB_ALetter, WB_Other, WB_ALetter, @@ -48347,6 +52950,10 @@ static const WB_enum _Perl_WB_invmap[] = { /* for EBCDIC 1047 */ WB_ALetter, WB_Other, WB_ALetter, + WB_Other, + WB_ALetter, + WB_Other, + WB_ALetter, WB_Extend, WB_Other, WB_Extend, @@ -48429,6 +53036,8 @@ static const WB_enum _Perl_WB_invmap[] = { /* for EBCDIC 1047 */ WB_ALetter, WB_Extend, WB_Other, + WB_Extend, + WB_Other, WB_ALetter, WB_Other, WB_ALetter, @@ -48481,6 +53090,12 @@ static const WB_enum _Perl_WB_invmap[] = { /* for EBCDIC 1047 */ WB_Extend, WB_ALetter, WB_Other, + WB_Numeric, + WB_Other, + WB_ALetter, + WB_Extend, + WB_ALetter, + WB_Other, WB_ALetter, WB_Other, WB_Numeric, @@ -48519,6 +53134,22 @@ static const WB_enum _Perl_WB_invmap[] = { /* for EBCDIC 1047 */ WB_ALetter, WB_Other, WB_ALetter, + WB_Extend, + WB_Other, + WB_Extend, + WB_ALetter, + WB_Other, + WB_Numeric, + WB_Other, + WB_ALetter, + WB_Other, + WB_Extend, + WB_Other, + WB_Extend, + WB_Other, + WB_ALetter, + WB_Other, + WB_ALetter, WB_Other, WB_ALetter, WB_Other, @@ -48555,6 +53186,8 @@ static const WB_enum _Perl_WB_invmap[] = { /* for EBCDIC 1047 */ WB_Extend, WB_ALetter, WB_Other, + WB_ALetter, + WB_Other, WB_Katakana, WB_Other, WB_ALetter, @@ -48655,11 +53288,26 @@ static const WB_enum _Perl_WB_invmap[] = { /* for EBCDIC 1047 */ WB_Other, WB_Extend, WB_Other, + WB_Extend, + WB_Other, + WB_Extend, + WB_Other, + WB_Extend, + WB_Other, + WB_Extend, + WB_Other, + WB_Extend, + WB_Other, WB_ALetter, WB_Other, WB_Extend, WB_Other, WB_ALetter, + WB_Extend, + WB_Other, + WB_Numeric, + WB_Other, + WB_ALetter, WB_Other, WB_ALetter, WB_Other, @@ -48733,11 +53381,69 @@ static const WB_enum _Perl_WB_invmap[] = { /* for EBCDIC 1047 */ WB_Other, WB_Regional_Indicator, WB_Other, - WB_Format, + WB_E_Base, + WB_Other, + WB_E_Base, + WB_Other, + WB_E_Base, + WB_Other, + WB_E_Modifier, + WB_Other, + WB_E_Base, + WB_Other, + WB_E_Base, + WB_Other, + WB_E_Base_GAZ, + WB_Other, + WB_E_Base, + WB_Other, + WB_E_Base, + WB_Other, + WB_E_Base, + WB_Other, + WB_E_Base, + WB_Other, + WB_E_Base, + WB_Other, + WB_Glue_After_Zwj, + WB_Other, + WB_E_Base, + WB_Other, + WB_E_Base, + WB_Other, + WB_E_Base, + WB_Other, + WB_E_Base, + WB_Other, + WB_E_Base, + WB_Other, + WB_Glue_After_Zwj, + WB_Other, + WB_E_Base, + WB_Other, + WB_E_Base, + WB_Other, + WB_E_Base, + WB_Other, + WB_E_Base, + WB_Other, + WB_E_Base, + WB_Other, + WB_E_Base, + WB_Other, + WB_E_Base, + WB_Other, + WB_E_Base, + WB_Other, + WB_E_Base, + WB_Other, + WB_E_Base, WB_Other, WB_Format, WB_Other, WB_Extend, + WB_Other, + WB_Extend, WB_Other }; @@ -48858,7 +53564,7 @@ static const UV XPerlSpace_invlist[] = { /* for EBCDIC 1047 */ }; static const UV XPosixAlnum_invlist[] = { /* for EBCDIC 1047 */ - 1321, /* Number of elements */ + 1381, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -48991,6 +53697,10 @@ static const UV XPosixAlnum_invlist[] = { /* for EBCDIC 1047 */ 0x859, 0x8A0, 0x8B5, + 0x8B6, + 0x8BE, + 0x8D4, + 0x8E0, 0x8E3, 0x8EA, 0x8F0, @@ -49177,7 +53887,7 @@ static const UV XPosixAlnum_invlist[] = { /* for EBCDIC 1047 */ 0xC64, 0xC66, 0xC70, - 0xC81, + 0xC80, 0xC84, 0xC85, 0xC8D, @@ -49221,7 +53931,7 @@ static const UV XPosixAlnum_invlist[] = { /* for EBCDIC 1047 */ 0xD4D, 0xD4E, 0xD4F, - 0xD57, + 0xD54, 0xD58, 0xD5F, 0xD64, @@ -49465,6 +54175,8 @@ static const UV XPosixAlnum_invlist[] = { /* for EBCDIC 1047 */ 0x1C4A, 0x1C4D, 0x1C7E, + 0x1C80, + 0x1C89, 0x1CE9, 0x1CED, 0x1CEE, @@ -49638,7 +54350,7 @@ static const UV XPosixAlnum_invlist[] = { /* for EBCDIC 1047 */ 0xA722, 0xA789, 0xA78B, - 0xA7AE, + 0xA7AF, 0xA7B0, 0xA7B8, 0xA7F7, @@ -49653,6 +54365,8 @@ static const UV XPosixAlnum_invlist[] = { /* for EBCDIC 1047 */ 0xA874, 0xA880, 0xA8C4, + 0xA8C5, + 0xA8C6, 0xA8D0, 0xA8DA, 0xA8F2, @@ -49811,6 +54525,10 @@ static const UV XPosixAlnum_invlist[] = { /* for EBCDIC 1047 */ 0x1049E, 0x104A0, 0x104AA, + 0x104B0, + 0x104D4, + 0x104D8, + 0x104FC, 0x10500, 0x10528, 0x10530, @@ -49913,6 +54631,8 @@ static const UV XPosixAlnum_invlist[] = { /* for EBCDIC 1047 */ 0x11235, 0x11237, 0x11238, + 0x1123E, + 0x1123F, 0x11280, 0x11287, 0x11288, @@ -49953,6 +54673,14 @@ static const UV XPosixAlnum_invlist[] = { /* for EBCDIC 1047 */ 0x11358, 0x1135D, 0x11364, + 0x11400, + 0x11442, + 0x11443, + 0x11446, + 0x11447, + 0x1144B, + 0x11450, + 0x1145A, 0x11480, 0x114C2, 0x114C4, @@ -49991,6 +54719,22 @@ static const UV XPosixAlnum_invlist[] = { /* for EBCDIC 1047 */ 0x11900, 0x11AC0, 0x11AF9, + 0x11C00, + 0x11C09, + 0x11C0A, + 0x11C37, + 0x11C38, + 0x11C3F, + 0x11C40, + 0x11C41, + 0x11C50, + 0x11C5A, + 0x11C72, + 0x11C90, + 0x11C92, + 0x11CA8, + 0x11CA9, + 0x11CB7, 0x12000, 0x1239A, 0x12400, @@ -50025,6 +54769,12 @@ static const UV XPosixAlnum_invlist[] = { /* for EBCDIC 1047 */ 0x16F7F, 0x16F93, 0x16FA0, + 0x16FE0, + 0x16FE1, + 0x17000, + 0x187ED, + 0x18800, + 0x18AF3, 0x1B000, 0x1B002, 0x1BC00, @@ -50099,8 +54849,24 @@ static const UV XPosixAlnum_invlist[] = { /* for EBCDIC 1047 */ 0x1D7CC, 0x1D7CE, 0x1D800, + 0x1E000, + 0x1E007, + 0x1E008, + 0x1E019, + 0x1E01B, + 0x1E022, + 0x1E023, + 0x1E025, + 0x1E026, + 0x1E02B, 0x1E800, 0x1E8C5, + 0x1E900, + 0x1E944, + 0x1E947, + 0x1E948, + 0x1E950, + 0x1E95A, 0x1EE00, 0x1EE04, 0x1EE05, @@ -50186,7 +54952,7 @@ static const UV XPosixAlnum_invlist[] = { /* for EBCDIC 1047 */ }; static const UV XPosixAlpha_invlist[] = { /* for EBCDIC 1047 */ - 1261, /* Number of elements */ + 1315, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -50321,6 +55087,10 @@ static const UV XPosixAlpha_invlist[] = { /* for EBCDIC 1047 */ 0x859, 0x8A0, 0x8B5, + 0x8B6, + 0x8BE, + 0x8D4, + 0x8E0, 0x8E3, 0x8EA, 0x8F0, @@ -50497,7 +55267,7 @@ static const UV XPosixAlpha_invlist[] = { /* for EBCDIC 1047 */ 0xC5B, 0xC60, 0xC64, - 0xC81, + 0xC80, 0xC84, 0xC85, 0xC8D, @@ -50539,7 +55309,7 @@ static const UV XPosixAlpha_invlist[] = { /* for EBCDIC 1047 */ 0xD4D, 0xD4E, 0xD4F, - 0xD57, + 0xD54, 0xD58, 0xD5F, 0xD64, @@ -50761,6 +55531,8 @@ static const UV XPosixAlpha_invlist[] = { /* for EBCDIC 1047 */ 0x1C50, 0x1C5A, 0x1C7E, + 0x1C80, + 0x1C89, 0x1CE9, 0x1CED, 0x1CEE, @@ -50936,7 +55708,7 @@ static const UV XPosixAlpha_invlist[] = { /* for EBCDIC 1047 */ 0xA722, 0xA789, 0xA78B, - 0xA7AE, + 0xA7AF, 0xA7B0, 0xA7B8, 0xA7F7, @@ -50951,6 +55723,8 @@ static const UV XPosixAlpha_invlist[] = { /* for EBCDIC 1047 */ 0xA874, 0xA880, 0xA8C4, + 0xA8C5, + 0xA8C6, 0xA8F2, 0xA8F8, 0xA8FB, @@ -51101,6 +55875,10 @@ static const UV XPosixAlpha_invlist[] = { /* for EBCDIC 1047 */ 0x103D6, 0x10400, 0x1049E, + 0x104B0, + 0x104D4, + 0x104D8, + 0x104FC, 0x10500, 0x10528, 0x10530, @@ -51197,6 +55975,8 @@ static const UV XPosixAlpha_invlist[] = { /* for EBCDIC 1047 */ 0x11235, 0x11237, 0x11238, + 0x1123E, + 0x1123F, 0x11280, 0x11287, 0x11288, @@ -51235,6 +56015,12 @@ static const UV XPosixAlpha_invlist[] = { /* for EBCDIC 1047 */ 0x11358, 0x1135D, 0x11364, + 0x11400, + 0x11442, + 0x11443, + 0x11446, + 0x11447, + 0x1144B, 0x11480, 0x114C2, 0x114C4, @@ -51265,6 +56051,20 @@ static const UV XPosixAlpha_invlist[] = { /* for EBCDIC 1047 */ 0x11900, 0x11AC0, 0x11AF9, + 0x11C00, + 0x11C09, + 0x11C0A, + 0x11C37, + 0x11C38, + 0x11C3F, + 0x11C40, + 0x11C41, + 0x11C72, + 0x11C90, + 0x11C92, + 0x11CA8, + 0x11CA9, + 0x11CB7, 0x12000, 0x1239A, 0x12400, @@ -51295,6 +56095,12 @@ static const UV XPosixAlpha_invlist[] = { /* for EBCDIC 1047 */ 0x16F7F, 0x16F93, 0x16FA0, + 0x16FE0, + 0x16FE1, + 0x17000, + 0x187ED, + 0x18800, + 0x18AF3, 0x1B000, 0x1B002, 0x1BC00, @@ -51367,8 +56173,22 @@ static const UV XPosixAlpha_invlist[] = { /* for EBCDIC 1047 */ 0x1D7C3, 0x1D7C4, 0x1D7CC, + 0x1E000, + 0x1E007, + 0x1E008, + 0x1E019, + 0x1E01B, + 0x1E022, + 0x1E023, + 0x1E025, + 0x1E026, + 0x1E02B, 0x1E800, 0x1E8C5, + 0x1E900, + 0x1E944, + 0x1E947, + 0x1E948, 0x1EE00, 0x1EE04, 0x1EE05, @@ -51487,7 +56307,7 @@ static const UV XPosixCntrl_invlist[] = { /* for EBCDIC 1047 */ }; static const UV XPosixDigit_invlist[] = { /* for EBCDIC 1047 */ - 103, /* Number of elements */ + 109, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -51578,6 +56398,8 @@ static const UV XPosixDigit_invlist[] = { /* for EBCDIC 1047 */ 0x111DA, 0x112F0, 0x112FA, + 0x11450, + 0x1145A, 0x114D0, 0x114DA, 0x11650, @@ -51588,16 +56410,20 @@ static const UV XPosixDigit_invlist[] = { /* for EBCDIC 1047 */ 0x1173A, 0x118E0, 0x118EA, + 0x11C50, + 0x11C5A, 0x16A60, 0x16A6A, 0x16B50, 0x16B5A, 0x1D7CE, - 0x1D800 + 0x1D800, + 0x1E950, + 0x1E95A }; static const UV XPosixGraph_invlist[] = { /* for EBCDIC 1047 */ - 1237, /* Number of elements */ + 1287, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -51652,7 +56478,9 @@ static const UV XPosixGraph_invlist[] = { /* for EBCDIC 1047 */ 0x85F, 0x8A0, 0x8B5, - 0x8E3, + 0x8B6, + 0x8BE, + 0x8D4, 0x984, 0x985, 0x98D, @@ -51825,8 +56653,6 @@ static const UV XPosixGraph_invlist[] = { /* for EBCDIC 1047 */ 0xC66, 0xC70, 0xC78, - 0xC80, - 0xC81, 0xC84, 0xC85, 0xC8D, @@ -51867,14 +56693,10 @@ static const UV XPosixGraph_invlist[] = { /* for EBCDIC 1047 */ 0xD46, 0xD49, 0xD4A, - 0xD4F, - 0xD57, - 0xD58, - 0xD5F, + 0xD50, + 0xD54, 0xD64, 0xD66, - 0xD76, - 0xD79, 0xD80, 0xD82, 0xD84, @@ -52077,7 +56899,7 @@ static const UV XPosixGraph_invlist[] = { /* for EBCDIC 1047 */ 0x1C3B, 0x1C4A, 0x1C4D, - 0x1C80, + 0x1C89, 0x1CC0, 0x1CC8, 0x1CD0, @@ -52086,7 +56908,7 @@ static const UV XPosixGraph_invlist[] = { /* for EBCDIC 1047 */ 0x1CFA, 0x1D00, 0x1DF6, - 0x1DFC, + 0x1DFB, 0x1F16, 0x1F18, 0x1F1E, @@ -52139,7 +56961,7 @@ static const UV XPosixGraph_invlist[] = { /* for EBCDIC 1047 */ 0x2100, 0x218C, 0x2190, - 0x23FB, + 0x23FF, 0x2400, 0x2427, 0x2440, @@ -52191,7 +57013,7 @@ static const UV XPosixGraph_invlist[] = { /* for EBCDIC 1047 */ 0x2DD8, 0x2DDF, 0x2DE0, - 0x2E43, + 0x2E45, 0x2E80, 0x2E9A, 0x2E9B, @@ -52231,7 +57053,7 @@ static const UV XPosixGraph_invlist[] = { /* for EBCDIC 1047 */ 0xA640, 0xA6F8, 0xA700, - 0xA7AE, + 0xA7AF, 0xA7B0, 0xA7B8, 0xA7F7, @@ -52241,7 +57063,7 @@ static const UV XPosixGraph_invlist[] = { /* for EBCDIC 1047 */ 0xA840, 0xA878, 0xA880, - 0xA8C5, + 0xA8C6, 0xA8CE, 0xA8DA, 0xA8E0, @@ -52365,7 +57187,7 @@ static const UV XPosixGraph_invlist[] = { /* for EBCDIC 1047 */ 0x10107, 0x10134, 0x10137, - 0x1018D, + 0x1018F, 0x10190, 0x1019C, 0x101A0, @@ -52394,6 +57216,10 @@ static const UV XPosixGraph_invlist[] = { /* for EBCDIC 1047 */ 0x1049E, 0x104A0, 0x104AA, + 0x104B0, + 0x104D4, + 0x104D8, + 0x104FC, 0x10500, 0x10528, 0x10530, @@ -52505,7 +57331,7 @@ static const UV XPosixGraph_invlist[] = { /* for EBCDIC 1047 */ 0x11200, 0x11212, 0x11213, - 0x1123E, + 0x1123F, 0x11280, 0x11287, 0x11288, @@ -52550,6 +57376,12 @@ static const UV XPosixGraph_invlist[] = { /* for EBCDIC 1047 */ 0x1136D, 0x11370, 0x11375, + 0x11400, + 0x1145A, + 0x1145B, + 0x1145C, + 0x1145D, + 0x1145E, 0x11480, 0x114C8, 0x114D0, @@ -52562,6 +57394,8 @@ static const UV XPosixGraph_invlist[] = { /* for EBCDIC 1047 */ 0x11645, 0x11650, 0x1165A, + 0x11660, + 0x1166D, 0x11680, 0x116B8, 0x116C0, @@ -52578,6 +57412,20 @@ static const UV XPosixGraph_invlist[] = { /* for EBCDIC 1047 */ 0x11900, 0x11AC0, 0x11AF9, + 0x11C00, + 0x11C09, + 0x11C0A, + 0x11C37, + 0x11C38, + 0x11C46, + 0x11C50, + 0x11C6D, + 0x11C70, + 0x11C90, + 0x11C92, + 0x11CA8, + 0x11CA9, + 0x11CB7, 0x12000, 0x1239A, 0x12400, @@ -52618,6 +57466,12 @@ static const UV XPosixGraph_invlist[] = { /* for EBCDIC 1047 */ 0x16F7F, 0x16F8F, 0x16FA0, + 0x16FE0, + 0x16FE1, + 0x17000, + 0x187ED, + 0x18800, + 0x18AF3, 0x1B000, 0x1B002, 0x1BC00, @@ -52688,10 +57542,26 @@ static const UV XPosixGraph_invlist[] = { /* for EBCDIC 1047 */ 0x1DAA0, 0x1DAA1, 0x1DAB0, + 0x1E000, + 0x1E007, + 0x1E008, + 0x1E019, + 0x1E01B, + 0x1E022, + 0x1E023, + 0x1E025, + 0x1E026, + 0x1E02B, 0x1E800, 0x1E8C5, 0x1E8C7, 0x1E8D7, + 0x1E900, + 0x1E94B, + 0x1E950, + 0x1E95A, + 0x1E95E, + 0x1E960, 0x1EE00, 0x1EE04, 0x1EE05, @@ -52779,25 +57649,21 @@ static const UV XPosixGraph_invlist[] = { /* for EBCDIC 1047 */ 0x1F130, 0x1F16C, 0x1F170, - 0x1F19B, + 0x1F1AD, 0x1F1E6, 0x1F203, 0x1F210, - 0x1F23B, + 0x1F23C, 0x1F240, 0x1F249, 0x1F250, 0x1F252, 0x1F300, - 0x1F57A, - 0x1F57B, - 0x1F5A4, - 0x1F5A5, - 0x1F6D1, + 0x1F6D3, 0x1F6E0, 0x1F6ED, 0x1F6F0, - 0x1F6F4, + 0x1F6F7, 0x1F700, 0x1F774, 0x1F780, @@ -52813,9 +57679,19 @@ static const UV XPosixGraph_invlist[] = { /* for EBCDIC 1047 */ 0x1F890, 0x1F8AE, 0x1F910, - 0x1F919, + 0x1F91F, + 0x1F920, + 0x1F928, + 0x1F930, + 0x1F931, + 0x1F933, + 0x1F93F, + 0x1F940, + 0x1F94C, + 0x1F950, + 0x1F95F, 0x1F980, - 0x1F985, + 0x1F992, 0x1F9C0, 0x1F9C1, 0x20000, @@ -52841,7 +57717,7 @@ static const UV XPosixGraph_invlist[] = { /* for EBCDIC 1047 */ }; static const UV XPosixLower_invlist[] = { /* for EBCDIC 1047 */ - 1283, /* Number of elements */ + 1289, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -53406,6 +58282,8 @@ static const UV XPosixLower_invlist[] = { /* for EBCDIC 1047 */ 0x588, 0x13F8, 0x13FE, + 0x1C80, + 0x1C89, 0x1D00, 0x1DC0, 0x1E01, @@ -54068,6 +58946,8 @@ static const UV XPosixLower_invlist[] = { /* for EBCDIC 1047 */ 0xFF5B, 0x10428, 0x10450, + 0x104D8, + 0x104FC, 0x10CC0, 0x10CF3, 0x118C0, @@ -54127,11 +59007,13 @@ static const UV XPosixLower_invlist[] = { /* for EBCDIC 1047 */ 0x1D7C4, 0x1D7CA, 0x1D7CB, - 0x1D7CC + 0x1D7CC, + 0x1E922, + 0x1E944 }; static const UV XPosixPrint_invlist[] = { /* for EBCDIC 1047 */ - 1231, /* Number of elements */ + 1281, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -54186,7 +59068,9 @@ static const UV XPosixPrint_invlist[] = { /* for EBCDIC 1047 */ 0x85F, 0x8A0, 0x8B5, - 0x8E3, + 0x8B6, + 0x8BE, + 0x8D4, 0x984, 0x985, 0x98D, @@ -54359,8 +59243,6 @@ static const UV XPosixPrint_invlist[] = { /* for EBCDIC 1047 */ 0xC66, 0xC70, 0xC78, - 0xC80, - 0xC81, 0xC84, 0xC85, 0xC8D, @@ -54401,14 +59283,10 @@ static const UV XPosixPrint_invlist[] = { /* for EBCDIC 1047 */ 0xD46, 0xD49, 0xD4A, - 0xD4F, - 0xD57, - 0xD58, - 0xD5F, + 0xD50, + 0xD54, 0xD64, 0xD66, - 0xD76, - 0xD79, 0xD80, 0xD82, 0xD84, @@ -54609,7 +59487,7 @@ static const UV XPosixPrint_invlist[] = { /* for EBCDIC 1047 */ 0x1C3B, 0x1C4A, 0x1C4D, - 0x1C80, + 0x1C89, 0x1CC0, 0x1CC8, 0x1CD0, @@ -54618,7 +59496,7 @@ static const UV XPosixPrint_invlist[] = { /* for EBCDIC 1047 */ 0x1CFA, 0x1D00, 0x1DF6, - 0x1DFC, + 0x1DFB, 0x1F16, 0x1F18, 0x1F1E, @@ -54667,7 +59545,7 @@ static const UV XPosixPrint_invlist[] = { /* for EBCDIC 1047 */ 0x2100, 0x218C, 0x2190, - 0x23FB, + 0x23FF, 0x2400, 0x2427, 0x2440, @@ -54719,7 +59597,7 @@ static const UV XPosixPrint_invlist[] = { /* for EBCDIC 1047 */ 0x2DD8, 0x2DDF, 0x2DE0, - 0x2E43, + 0x2E45, 0x2E80, 0x2E9A, 0x2E9B, @@ -54759,7 +59637,7 @@ static const UV XPosixPrint_invlist[] = { /* for EBCDIC 1047 */ 0xA640, 0xA6F8, 0xA700, - 0xA7AE, + 0xA7AF, 0xA7B0, 0xA7B8, 0xA7F7, @@ -54769,7 +59647,7 @@ static const UV XPosixPrint_invlist[] = { /* for EBCDIC 1047 */ 0xA840, 0xA878, 0xA880, - 0xA8C5, + 0xA8C6, 0xA8CE, 0xA8DA, 0xA8E0, @@ -54893,7 +59771,7 @@ static const UV XPosixPrint_invlist[] = { /* for EBCDIC 1047 */ 0x10107, 0x10134, 0x10137, - 0x1018D, + 0x1018F, 0x10190, 0x1019C, 0x101A0, @@ -54922,6 +59800,10 @@ static const UV XPosixPrint_invlist[] = { /* for EBCDIC 1047 */ 0x1049E, 0x104A0, 0x104AA, + 0x104B0, + 0x104D4, + 0x104D8, + 0x104FC, 0x10500, 0x10528, 0x10530, @@ -55033,7 +59915,7 @@ static const UV XPosixPrint_invlist[] = { /* for EBCDIC 1047 */ 0x11200, 0x11212, 0x11213, - 0x1123E, + 0x1123F, 0x11280, 0x11287, 0x11288, @@ -55078,6 +59960,12 @@ static const UV XPosixPrint_invlist[] = { /* for EBCDIC 1047 */ 0x1136D, 0x11370, 0x11375, + 0x11400, + 0x1145A, + 0x1145B, + 0x1145C, + 0x1145D, + 0x1145E, 0x11480, 0x114C8, 0x114D0, @@ -55090,6 +59978,8 @@ static const UV XPosixPrint_invlist[] = { /* for EBCDIC 1047 */ 0x11645, 0x11650, 0x1165A, + 0x11660, + 0x1166D, 0x11680, 0x116B8, 0x116C0, @@ -55106,6 +59996,20 @@ static const UV XPosixPrint_invlist[] = { /* for EBCDIC 1047 */ 0x11900, 0x11AC0, 0x11AF9, + 0x11C00, + 0x11C09, + 0x11C0A, + 0x11C37, + 0x11C38, + 0x11C46, + 0x11C50, + 0x11C6D, + 0x11C70, + 0x11C90, + 0x11C92, + 0x11CA8, + 0x11CA9, + 0x11CB7, 0x12000, 0x1239A, 0x12400, @@ -55146,6 +60050,12 @@ static const UV XPosixPrint_invlist[] = { /* for EBCDIC 1047 */ 0x16F7F, 0x16F8F, 0x16FA0, + 0x16FE0, + 0x16FE1, + 0x17000, + 0x187ED, + 0x18800, + 0x18AF3, 0x1B000, 0x1B002, 0x1BC00, @@ -55216,10 +60126,26 @@ static const UV XPosixPrint_invlist[] = { /* for EBCDIC 1047 */ 0x1DAA0, 0x1DAA1, 0x1DAB0, + 0x1E000, + 0x1E007, + 0x1E008, + 0x1E019, + 0x1E01B, + 0x1E022, + 0x1E023, + 0x1E025, + 0x1E026, + 0x1E02B, 0x1E800, 0x1E8C5, 0x1E8C7, 0x1E8D7, + 0x1E900, + 0x1E94B, + 0x1E950, + 0x1E95A, + 0x1E95E, + 0x1E960, 0x1EE00, 0x1EE04, 0x1EE05, @@ -55307,25 +60233,21 @@ static const UV XPosixPrint_invlist[] = { /* for EBCDIC 1047 */ 0x1F130, 0x1F16C, 0x1F170, - 0x1F19B, + 0x1F1AD, 0x1F1E6, 0x1F203, 0x1F210, - 0x1F23B, + 0x1F23C, 0x1F240, 0x1F249, 0x1F250, 0x1F252, 0x1F300, - 0x1F57A, - 0x1F57B, - 0x1F5A4, - 0x1F5A5, - 0x1F6D1, + 0x1F6D3, 0x1F6E0, 0x1F6ED, 0x1F6F0, - 0x1F6F4, + 0x1F6F7, 0x1F700, 0x1F774, 0x1F780, @@ -55341,9 +60263,19 @@ static const UV XPosixPrint_invlist[] = { /* for EBCDIC 1047 */ 0x1F890, 0x1F8AE, 0x1F910, - 0x1F919, + 0x1F91F, + 0x1F920, + 0x1F928, + 0x1F930, + 0x1F931, + 0x1F933, + 0x1F93F, + 0x1F940, + 0x1F94C, + 0x1F950, + 0x1F95F, 0x1F980, - 0x1F985, + 0x1F992, 0x1F9C0, 0x1F9C1, 0x20000, @@ -55369,7 +60301,7 @@ static const UV XPosixPrint_invlist[] = { /* for EBCDIC 1047 */ }; static const UV XPosixPunct_invlist[] = { /* for EBCDIC 1047 */ - 321, /* Number of elements */ + 335, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -55543,7 +60475,7 @@ static const UV XPosixPunct_invlist[] = { /* for EBCDIC 1047 */ 0x2E00, 0x2E2F, 0x2E30, - 0x2E43, + 0x2E45, 0x3001, 0x3004, 0x3008, @@ -55672,14 +60604,26 @@ static const UV XPosixPunct_invlist[] = { /* for EBCDIC 1047 */ 0x1123E, 0x112A9, 0x112AA, + 0x1144B, + 0x11450, + 0x1145B, + 0x1145C, + 0x1145D, + 0x1145E, 0x114C6, 0x114C7, 0x115C1, 0x115D8, 0x11641, 0x11644, + 0x11660, + 0x1166D, 0x1173C, 0x1173F, + 0x11C41, + 0x11C46, + 0x11C70, + 0x11C72, 0x12470, 0x12475, 0x16A6E, @@ -55693,7 +60637,9 @@ static const UV XPosixPunct_invlist[] = { /* for EBCDIC 1047 */ 0x1BC9F, 0x1BCA0, 0x1DA87, - 0x1DA8C + 0x1DA8C, + 0x1E95E, + 0x1E960 }; static const UV XPosixSpace_invlist[] = { /* for EBCDIC 1047 */ @@ -55727,7 +60673,7 @@ static const UV XPosixSpace_invlist[] = { /* for EBCDIC 1047 */ }; static const UV XPosixUpper_invlist[] = { /* for EBCDIC 1047 */ - 1279, /* Number of elements */ + 1283, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -56929,7 +61875,7 @@ static const UV XPosixUpper_invlist[] = { /* for EBCDIC 1047 */ 0xA7A8, 0xA7A9, 0xA7AA, - 0xA7AE, + 0xA7AF, 0xA7B0, 0xA7B5, 0xA7B6, @@ -56938,6 +61884,8 @@ static const UV XPosixUpper_invlist[] = { /* for EBCDIC 1047 */ 0xFF3B, 0x10400, 0x10428, + 0x104B0, + 0x104D4, 0x10C80, 0x10CB3, 0x118A0, @@ -57004,6 +61952,8 @@ static const UV XPosixUpper_invlist[] = { /* for EBCDIC 1047 */ 0x1D7A9, 0x1D7CA, 0x1D7CB, + 0x1E900, + 0x1E922, 0x1F130, 0x1F14A, 0x1F150, @@ -57013,7 +61963,7 @@ static const UV XPosixUpper_invlist[] = { /* for EBCDIC 1047 */ }; static const UV XPosixWord_invlist[] = { /* for EBCDIC 1047 */ - 1335, /* Number of elements */ + 1385, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -57140,6 +62090,10 @@ static const UV XPosixWord_invlist[] = { /* for EBCDIC 1047 */ 0x85C, 0x8A0, 0x8B5, + 0x8B6, + 0x8BE, + 0x8D4, + 0x8E2, 0x8E3, 0x964, 0x966, @@ -57318,7 +62272,7 @@ static const UV XPosixWord_invlist[] = { /* for EBCDIC 1047 */ 0xC64, 0xC66, 0xC70, - 0xC81, + 0xC80, 0xC84, 0xC85, 0xC8D, @@ -57360,7 +62314,7 @@ static const UV XPosixWord_invlist[] = { /* for EBCDIC 1047 */ 0xD49, 0xD4A, 0xD4F, - 0xD57, + 0xD54, 0xD58, 0xD5F, 0xD64, @@ -57596,6 +62550,8 @@ static const UV XPosixWord_invlist[] = { /* for EBCDIC 1047 */ 0x1C4A, 0x1C4D, 0x1C7E, + 0x1C80, + 0x1C89, 0x1CD0, 0x1CD3, 0x1CD4, @@ -57604,7 +62560,7 @@ static const UV XPosixWord_invlist[] = { /* for EBCDIC 1047 */ 0x1CFA, 0x1D00, 0x1DF6, - 0x1DFC, + 0x1DFB, 0x1F16, 0x1F18, 0x1F1E, @@ -57775,7 +62731,7 @@ static const UV XPosixWord_invlist[] = { /* for EBCDIC 1047 */ 0xA722, 0xA789, 0xA78B, - 0xA7AE, + 0xA7AF, 0xA7B0, 0xA7B8, 0xA7F7, @@ -57783,7 +62739,7 @@ static const UV XPosixWord_invlist[] = { /* for EBCDIC 1047 */ 0xA840, 0xA874, 0xA880, - 0xA8C5, + 0xA8C6, 0xA8D0, 0xA8DA, 0xA8E0, @@ -57948,6 +62904,10 @@ static const UV XPosixWord_invlist[] = { /* for EBCDIC 1047 */ 0x1049E, 0x104A0, 0x104AA, + 0x104B0, + 0x104D4, + 0x104D8, + 0x104FC, 0x10500, 0x10528, 0x10530, @@ -58052,6 +63012,8 @@ static const UV XPosixWord_invlist[] = { /* for EBCDIC 1047 */ 0x11212, 0x11213, 0x11238, + 0x1123E, + 0x1123F, 0x11280, 0x11287, 0x11288, @@ -58096,6 +63058,10 @@ static const UV XPosixWord_invlist[] = { /* for EBCDIC 1047 */ 0x1136D, 0x11370, 0x11375, + 0x11400, + 0x1144B, + 0x11450, + 0x1145A, 0x11480, 0x114C6, 0x114C7, @@ -58130,6 +63096,20 @@ static const UV XPosixWord_invlist[] = { /* for EBCDIC 1047 */ 0x11900, 0x11AC0, 0x11AF9, + 0x11C00, + 0x11C09, + 0x11C0A, + 0x11C37, + 0x11C38, + 0x11C41, + 0x11C50, + 0x11C5A, + 0x11C72, + 0x11C90, + 0x11C92, + 0x11CA8, + 0x11CA9, + 0x11CB7, 0x12000, 0x1239A, 0x12400, @@ -58166,6 +63146,12 @@ static const UV XPosixWord_invlist[] = { /* for EBCDIC 1047 */ 0x16F7F, 0x16F8F, 0x16FA0, + 0x16FE0, + 0x16FE1, + 0x17000, + 0x187ED, + 0x18800, + 0x18AF3, 0x1B000, 0x1B002, 0x1BC00, @@ -58264,10 +63250,24 @@ static const UV XPosixWord_invlist[] = { /* for EBCDIC 1047 */ 0x1DAA0, 0x1DAA1, 0x1DAB0, + 0x1E000, + 0x1E007, + 0x1E008, + 0x1E019, + 0x1E01B, + 0x1E022, + 0x1E023, + 0x1E025, + 0x1E026, + 0x1E02B, 0x1E800, 0x1E8C5, 0x1E8D0, 0x1E8D7, + 0x1E900, + 0x1E94B, + 0x1E950, + 0x1E95A, 0x1EE00, 0x1EE04, 0x1EE05, @@ -58448,8 +63448,1291 @@ static const UV ASCII_invlist[] = { /* for EBCDIC 037 */ 0xFA }; +static const UV Assigned_invlist[] = { /* for EBCDIC 037 */ + 1276, /* Number of elements */ + 148565664, /* Version and data structure type */ + 0, /* 0 if the list starts at 0; + 1 if it starts at the element beyond 0 */ + 0x0, + 0x378, + 0x37A, + 0x380, + 0x384, + 0x38B, + 0x38C, + 0x38D, + 0x38E, + 0x3A2, + 0x3A3, + 0x530, + 0x531, + 0x557, + 0x559, + 0x560, + 0x561, + 0x588, + 0x589, + 0x58B, + 0x58D, + 0x590, + 0x591, + 0x5C8, + 0x5D0, + 0x5EB, + 0x5F0, + 0x5F5, + 0x600, + 0x61D, + 0x61E, + 0x70E, + 0x70F, + 0x74B, + 0x74D, + 0x7B2, + 0x7C0, + 0x7FB, + 0x800, + 0x82E, + 0x830, + 0x83F, + 0x840, + 0x85C, + 0x85E, + 0x85F, + 0x8A0, + 0x8B5, + 0x8B6, + 0x8BE, + 0x8D4, + 0x984, + 0x985, + 0x98D, + 0x98F, + 0x991, + 0x993, + 0x9A9, + 0x9AA, + 0x9B1, + 0x9B2, + 0x9B3, + 0x9B6, + 0x9BA, + 0x9BC, + 0x9C5, + 0x9C7, + 0x9C9, + 0x9CB, + 0x9CF, + 0x9D7, + 0x9D8, + 0x9DC, + 0x9DE, + 0x9DF, + 0x9E4, + 0x9E6, + 0x9FC, + 0xA01, + 0xA04, + 0xA05, + 0xA0B, + 0xA0F, + 0xA11, + 0xA13, + 0xA29, + 0xA2A, + 0xA31, + 0xA32, + 0xA34, + 0xA35, + 0xA37, + 0xA38, + 0xA3A, + 0xA3C, + 0xA3D, + 0xA3E, + 0xA43, + 0xA47, + 0xA49, + 0xA4B, + 0xA4E, + 0xA51, + 0xA52, + 0xA59, + 0xA5D, + 0xA5E, + 0xA5F, + 0xA66, + 0xA76, + 0xA81, + 0xA84, + 0xA85, + 0xA8E, + 0xA8F, + 0xA92, + 0xA93, + 0xAA9, + 0xAAA, + 0xAB1, + 0xAB2, + 0xAB4, + 0xAB5, + 0xABA, + 0xABC, + 0xAC6, + 0xAC7, + 0xACA, + 0xACB, + 0xACE, + 0xAD0, + 0xAD1, + 0xAE0, + 0xAE4, + 0xAE6, + 0xAF2, + 0xAF9, + 0xAFA, + 0xB01, + 0xB04, + 0xB05, + 0xB0D, + 0xB0F, + 0xB11, + 0xB13, + 0xB29, + 0xB2A, + 0xB31, + 0xB32, + 0xB34, + 0xB35, + 0xB3A, + 0xB3C, + 0xB45, + 0xB47, + 0xB49, + 0xB4B, + 0xB4E, + 0xB56, + 0xB58, + 0xB5C, + 0xB5E, + 0xB5F, + 0xB64, + 0xB66, + 0xB78, + 0xB82, + 0xB84, + 0xB85, + 0xB8B, + 0xB8E, + 0xB91, + 0xB92, + 0xB96, + 0xB99, + 0xB9B, + 0xB9C, + 0xB9D, + 0xB9E, + 0xBA0, + 0xBA3, + 0xBA5, + 0xBA8, + 0xBAB, + 0xBAE, + 0xBBA, + 0xBBE, + 0xBC3, + 0xBC6, + 0xBC9, + 0xBCA, + 0xBCE, + 0xBD0, + 0xBD1, + 0xBD7, + 0xBD8, + 0xBE6, + 0xBFB, + 0xC00, + 0xC04, + 0xC05, + 0xC0D, + 0xC0E, + 0xC11, + 0xC12, + 0xC29, + 0xC2A, + 0xC3A, + 0xC3D, + 0xC45, + 0xC46, + 0xC49, + 0xC4A, + 0xC4E, + 0xC55, + 0xC57, + 0xC58, + 0xC5B, + 0xC60, + 0xC64, + 0xC66, + 0xC70, + 0xC78, + 0xC84, + 0xC85, + 0xC8D, + 0xC8E, + 0xC91, + 0xC92, + 0xCA9, + 0xCAA, + 0xCB4, + 0xCB5, + 0xCBA, + 0xCBC, + 0xCC5, + 0xCC6, + 0xCC9, + 0xCCA, + 0xCCE, + 0xCD5, + 0xCD7, + 0xCDE, + 0xCDF, + 0xCE0, + 0xCE4, + 0xCE6, + 0xCF0, + 0xCF1, + 0xCF3, + 0xD01, + 0xD04, + 0xD05, + 0xD0D, + 0xD0E, + 0xD11, + 0xD12, + 0xD3B, + 0xD3D, + 0xD45, + 0xD46, + 0xD49, + 0xD4A, + 0xD50, + 0xD54, + 0xD64, + 0xD66, + 0xD80, + 0xD82, + 0xD84, + 0xD85, + 0xD97, + 0xD9A, + 0xDB2, + 0xDB3, + 0xDBC, + 0xDBD, + 0xDBE, + 0xDC0, + 0xDC7, + 0xDCA, + 0xDCB, + 0xDCF, + 0xDD5, + 0xDD6, + 0xDD7, + 0xDD8, + 0xDE0, + 0xDE6, + 0xDF0, + 0xDF2, + 0xDF5, + 0xE01, + 0xE3B, + 0xE3F, + 0xE5C, + 0xE81, + 0xE83, + 0xE84, + 0xE85, + 0xE87, + 0xE89, + 0xE8A, + 0xE8B, + 0xE8D, + 0xE8E, + 0xE94, + 0xE98, + 0xE99, + 0xEA0, + 0xEA1, + 0xEA4, + 0xEA5, + 0xEA6, + 0xEA7, + 0xEA8, + 0xEAA, + 0xEAC, + 0xEAD, + 0xEBA, + 0xEBB, + 0xEBE, + 0xEC0, + 0xEC5, + 0xEC6, + 0xEC7, + 0xEC8, + 0xECE, + 0xED0, + 0xEDA, + 0xEDC, + 0xEE0, + 0xF00, + 0xF48, + 0xF49, + 0xF6D, + 0xF71, + 0xF98, + 0xF99, + 0xFBD, + 0xFBE, + 0xFCD, + 0xFCE, + 0xFDB, + 0x1000, + 0x10C6, + 0x10C7, + 0x10C8, + 0x10CD, + 0x10CE, + 0x10D0, + 0x1249, + 0x124A, + 0x124E, + 0x1250, + 0x1257, + 0x1258, + 0x1259, + 0x125A, + 0x125E, + 0x1260, + 0x1289, + 0x128A, + 0x128E, + 0x1290, + 0x12B1, + 0x12B2, + 0x12B6, + 0x12B8, + 0x12BF, + 0x12C0, + 0x12C1, + 0x12C2, + 0x12C6, + 0x12C8, + 0x12D7, + 0x12D8, + 0x1311, + 0x1312, + 0x1316, + 0x1318, + 0x135B, + 0x135D, + 0x137D, + 0x1380, + 0x139A, + 0x13A0, + 0x13F6, + 0x13F8, + 0x13FE, + 0x1400, + 0x169D, + 0x16A0, + 0x16F9, + 0x1700, + 0x170D, + 0x170E, + 0x1715, + 0x1720, + 0x1737, + 0x1740, + 0x1754, + 0x1760, + 0x176D, + 0x176E, + 0x1771, + 0x1772, + 0x1774, + 0x1780, + 0x17DE, + 0x17E0, + 0x17EA, + 0x17F0, + 0x17FA, + 0x1800, + 0x180F, + 0x1810, + 0x181A, + 0x1820, + 0x1878, + 0x1880, + 0x18AB, + 0x18B0, + 0x18F6, + 0x1900, + 0x191F, + 0x1920, + 0x192C, + 0x1930, + 0x193C, + 0x1940, + 0x1941, + 0x1944, + 0x196E, + 0x1970, + 0x1975, + 0x1980, + 0x19AC, + 0x19B0, + 0x19CA, + 0x19D0, + 0x19DB, + 0x19DE, + 0x1A1C, + 0x1A1E, + 0x1A5F, + 0x1A60, + 0x1A7D, + 0x1A7F, + 0x1A8A, + 0x1A90, + 0x1A9A, + 0x1AA0, + 0x1AAE, + 0x1AB0, + 0x1ABF, + 0x1B00, + 0x1B4C, + 0x1B50, + 0x1B7D, + 0x1B80, + 0x1BF4, + 0x1BFC, + 0x1C38, + 0x1C3B, + 0x1C4A, + 0x1C4D, + 0x1C89, + 0x1CC0, + 0x1CC8, + 0x1CD0, + 0x1CF7, + 0x1CF8, + 0x1CFA, + 0x1D00, + 0x1DF6, + 0x1DFB, + 0x1F16, + 0x1F18, + 0x1F1E, + 0x1F20, + 0x1F46, + 0x1F48, + 0x1F4E, + 0x1F50, + 0x1F58, + 0x1F59, + 0x1F5A, + 0x1F5B, + 0x1F5C, + 0x1F5D, + 0x1F5E, + 0x1F5F, + 0x1F7E, + 0x1F80, + 0x1FB5, + 0x1FB6, + 0x1FC5, + 0x1FC6, + 0x1FD4, + 0x1FD6, + 0x1FDC, + 0x1FDD, + 0x1FF0, + 0x1FF2, + 0x1FF5, + 0x1FF6, + 0x1FFF, + 0x2000, + 0x2065, + 0x2066, + 0x2072, + 0x2074, + 0x208F, + 0x2090, + 0x209D, + 0x20A0, + 0x20BF, + 0x20D0, + 0x20F1, + 0x2100, + 0x218C, + 0x2190, + 0x23FF, + 0x2400, + 0x2427, + 0x2440, + 0x244B, + 0x2460, + 0x2B74, + 0x2B76, + 0x2B96, + 0x2B98, + 0x2BBA, + 0x2BBD, + 0x2BC9, + 0x2BCA, + 0x2BD2, + 0x2BEC, + 0x2BF0, + 0x2C00, + 0x2C2F, + 0x2C30, + 0x2C5F, + 0x2C60, + 0x2CF4, + 0x2CF9, + 0x2D26, + 0x2D27, + 0x2D28, + 0x2D2D, + 0x2D2E, + 0x2D30, + 0x2D68, + 0x2D6F, + 0x2D71, + 0x2D7F, + 0x2D97, + 0x2DA0, + 0x2DA7, + 0x2DA8, + 0x2DAF, + 0x2DB0, + 0x2DB7, + 0x2DB8, + 0x2DBF, + 0x2DC0, + 0x2DC7, + 0x2DC8, + 0x2DCF, + 0x2DD0, + 0x2DD7, + 0x2DD8, + 0x2DDF, + 0x2DE0, + 0x2E45, + 0x2E80, + 0x2E9A, + 0x2E9B, + 0x2EF4, + 0x2F00, + 0x2FD6, + 0x2FF0, + 0x2FFC, + 0x3000, + 0x3040, + 0x3041, + 0x3097, + 0x3099, + 0x3100, + 0x3105, + 0x312E, + 0x3131, + 0x318F, + 0x3190, + 0x31BB, + 0x31C0, + 0x31E4, + 0x31F0, + 0x321F, + 0x3220, + 0x32FF, + 0x3300, + 0x4DB6, + 0x4DC0, + 0x9FD6, + 0xA000, + 0xA48D, + 0xA490, + 0xA4C7, + 0xA4D0, + 0xA62C, + 0xA640, + 0xA6F8, + 0xA700, + 0xA7AF, + 0xA7B0, + 0xA7B8, + 0xA7F7, + 0xA82C, + 0xA830, + 0xA83A, + 0xA840, + 0xA878, + 0xA880, + 0xA8C6, + 0xA8CE, + 0xA8DA, + 0xA8E0, + 0xA8FE, + 0xA900, + 0xA954, + 0xA95F, + 0xA97D, + 0xA980, + 0xA9CE, + 0xA9CF, + 0xA9DA, + 0xA9DE, + 0xA9FF, + 0xAA00, + 0xAA37, + 0xAA40, + 0xAA4E, + 0xAA50, + 0xAA5A, + 0xAA5C, + 0xAAC3, + 0xAADB, + 0xAAF7, + 0xAB01, + 0xAB07, + 0xAB09, + 0xAB0F, + 0xAB11, + 0xAB17, + 0xAB20, + 0xAB27, + 0xAB28, + 0xAB2F, + 0xAB30, + 0xAB66, + 0xAB70, + 0xABEE, + 0xABF0, + 0xABFA, + 0xAC00, + 0xD7A4, + 0xD7B0, + 0xD7C7, + 0xD7CB, + 0xD7FC, + 0xD800, + 0xFA6E, + 0xFA70, + 0xFADA, + 0xFB00, + 0xFB07, + 0xFB13, + 0xFB18, + 0xFB1D, + 0xFB37, + 0xFB38, + 0xFB3D, + 0xFB3E, + 0xFB3F, + 0xFB40, + 0xFB42, + 0xFB43, + 0xFB45, + 0xFB46, + 0xFBC2, + 0xFBD3, + 0xFD40, + 0xFD50, + 0xFD90, + 0xFD92, + 0xFDC8, + 0xFDF0, + 0xFDFE, + 0xFE00, + 0xFE1A, + 0xFE20, + 0xFE53, + 0xFE54, + 0xFE67, + 0xFE68, + 0xFE6C, + 0xFE70, + 0xFE75, + 0xFE76, + 0xFEFD, + 0xFEFF, + 0xFF00, + 0xFF01, + 0xFFBF, + 0xFFC2, + 0xFFC8, + 0xFFCA, + 0xFFD0, + 0xFFD2, + 0xFFD8, + 0xFFDA, + 0xFFDD, + 0xFFE0, + 0xFFE7, + 0xFFE8, + 0xFFEF, + 0xFFF9, + 0xFFFE, + 0x10000, + 0x1000C, + 0x1000D, + 0x10027, + 0x10028, + 0x1003B, + 0x1003C, + 0x1003E, + 0x1003F, + 0x1004E, + 0x10050, + 0x1005E, + 0x10080, + 0x100FB, + 0x10100, + 0x10103, + 0x10107, + 0x10134, + 0x10137, + 0x1018F, + 0x10190, + 0x1019C, + 0x101A0, + 0x101A1, + 0x101D0, + 0x101FE, + 0x10280, + 0x1029D, + 0x102A0, + 0x102D1, + 0x102E0, + 0x102FC, + 0x10300, + 0x10324, + 0x10330, + 0x1034B, + 0x10350, + 0x1037B, + 0x10380, + 0x1039E, + 0x1039F, + 0x103C4, + 0x103C8, + 0x103D6, + 0x10400, + 0x1049E, + 0x104A0, + 0x104AA, + 0x104B0, + 0x104D4, + 0x104D8, + 0x104FC, + 0x10500, + 0x10528, + 0x10530, + 0x10564, + 0x1056F, + 0x10570, + 0x10600, + 0x10737, + 0x10740, + 0x10756, + 0x10760, + 0x10768, + 0x10800, + 0x10806, + 0x10808, + 0x10809, + 0x1080A, + 0x10836, + 0x10837, + 0x10839, + 0x1083C, + 0x1083D, + 0x1083F, + 0x10856, + 0x10857, + 0x1089F, + 0x108A7, + 0x108B0, + 0x108E0, + 0x108F3, + 0x108F4, + 0x108F6, + 0x108FB, + 0x1091C, + 0x1091F, + 0x1093A, + 0x1093F, + 0x10940, + 0x10980, + 0x109B8, + 0x109BC, + 0x109D0, + 0x109D2, + 0x10A04, + 0x10A05, + 0x10A07, + 0x10A0C, + 0x10A14, + 0x10A15, + 0x10A18, + 0x10A19, + 0x10A34, + 0x10A38, + 0x10A3B, + 0x10A3F, + 0x10A48, + 0x10A50, + 0x10A59, + 0x10A60, + 0x10AA0, + 0x10AC0, + 0x10AE7, + 0x10AEB, + 0x10AF7, + 0x10B00, + 0x10B36, + 0x10B39, + 0x10B56, + 0x10B58, + 0x10B73, + 0x10B78, + 0x10B92, + 0x10B99, + 0x10B9D, + 0x10BA9, + 0x10BB0, + 0x10C00, + 0x10C49, + 0x10C80, + 0x10CB3, + 0x10CC0, + 0x10CF3, + 0x10CFA, + 0x10D00, + 0x10E60, + 0x10E7F, + 0x11000, + 0x1104E, + 0x11052, + 0x11070, + 0x1107F, + 0x110C2, + 0x110D0, + 0x110E9, + 0x110F0, + 0x110FA, + 0x11100, + 0x11135, + 0x11136, + 0x11144, + 0x11150, + 0x11177, + 0x11180, + 0x111CE, + 0x111D0, + 0x111E0, + 0x111E1, + 0x111F5, + 0x11200, + 0x11212, + 0x11213, + 0x1123F, + 0x11280, + 0x11287, + 0x11288, + 0x11289, + 0x1128A, + 0x1128E, + 0x1128F, + 0x1129E, + 0x1129F, + 0x112AA, + 0x112B0, + 0x112EB, + 0x112F0, + 0x112FA, + 0x11300, + 0x11304, + 0x11305, + 0x1130D, + 0x1130F, + 0x11311, + 0x11313, + 0x11329, + 0x1132A, + 0x11331, + 0x11332, + 0x11334, + 0x11335, + 0x1133A, + 0x1133C, + 0x11345, + 0x11347, + 0x11349, + 0x1134B, + 0x1134E, + 0x11350, + 0x11351, + 0x11357, + 0x11358, + 0x1135D, + 0x11364, + 0x11366, + 0x1136D, + 0x11370, + 0x11375, + 0x11400, + 0x1145A, + 0x1145B, + 0x1145C, + 0x1145D, + 0x1145E, + 0x11480, + 0x114C8, + 0x114D0, + 0x114DA, + 0x11580, + 0x115B6, + 0x115B8, + 0x115DE, + 0x11600, + 0x11645, + 0x11650, + 0x1165A, + 0x11660, + 0x1166D, + 0x11680, + 0x116B8, + 0x116C0, + 0x116CA, + 0x11700, + 0x1171A, + 0x1171D, + 0x1172C, + 0x11730, + 0x11740, + 0x118A0, + 0x118F3, + 0x118FF, + 0x11900, + 0x11AC0, + 0x11AF9, + 0x11C00, + 0x11C09, + 0x11C0A, + 0x11C37, + 0x11C38, + 0x11C46, + 0x11C50, + 0x11C6D, + 0x11C70, + 0x11C90, + 0x11C92, + 0x11CA8, + 0x11CA9, + 0x11CB7, + 0x12000, + 0x1239A, + 0x12400, + 0x1246F, + 0x12470, + 0x12475, + 0x12480, + 0x12544, + 0x13000, + 0x1342F, + 0x14400, + 0x14647, + 0x16800, + 0x16A39, + 0x16A40, + 0x16A5F, + 0x16A60, + 0x16A6A, + 0x16A6E, + 0x16A70, + 0x16AD0, + 0x16AEE, + 0x16AF0, + 0x16AF6, + 0x16B00, + 0x16B46, + 0x16B50, + 0x16B5A, + 0x16B5B, + 0x16B62, + 0x16B63, + 0x16B78, + 0x16B7D, + 0x16B90, + 0x16F00, + 0x16F45, + 0x16F50, + 0x16F7F, + 0x16F8F, + 0x16FA0, + 0x16FE0, + 0x16FE1, + 0x17000, + 0x187ED, + 0x18800, + 0x18AF3, + 0x1B000, + 0x1B002, + 0x1BC00, + 0x1BC6B, + 0x1BC70, + 0x1BC7D, + 0x1BC80, + 0x1BC89, + 0x1BC90, + 0x1BC9A, + 0x1BC9C, + 0x1BCA4, + 0x1D000, + 0x1D0F6, + 0x1D100, + 0x1D127, + 0x1D129, + 0x1D1E9, + 0x1D200, + 0x1D246, + 0x1D300, + 0x1D357, + 0x1D360, + 0x1D372, + 0x1D400, + 0x1D455, + 0x1D456, + 0x1D49D, + 0x1D49E, + 0x1D4A0, + 0x1D4A2, + 0x1D4A3, + 0x1D4A5, + 0x1D4A7, + 0x1D4A9, + 0x1D4AD, + 0x1D4AE, + 0x1D4BA, + 0x1D4BB, + 0x1D4BC, + 0x1D4BD, + 0x1D4C4, + 0x1D4C5, + 0x1D506, + 0x1D507, + 0x1D50B, + 0x1D50D, + 0x1D515, + 0x1D516, + 0x1D51D, + 0x1D51E, + 0x1D53A, + 0x1D53B, + 0x1D53F, + 0x1D540, + 0x1D545, + 0x1D546, + 0x1D547, + 0x1D54A, + 0x1D551, + 0x1D552, + 0x1D6A6, + 0x1D6A8, + 0x1D7CC, + 0x1D7CE, + 0x1DA8C, + 0x1DA9B, + 0x1DAA0, + 0x1DAA1, + 0x1DAB0, + 0x1E000, + 0x1E007, + 0x1E008, + 0x1E019, + 0x1E01B, + 0x1E022, + 0x1E023, + 0x1E025, + 0x1E026, + 0x1E02B, + 0x1E800, + 0x1E8C5, + 0x1E8C7, + 0x1E8D7, + 0x1E900, + 0x1E94B, + 0x1E950, + 0x1E95A, + 0x1E95E, + 0x1E960, + 0x1EE00, + 0x1EE04, + 0x1EE05, + 0x1EE20, + 0x1EE21, + 0x1EE23, + 0x1EE24, + 0x1EE25, + 0x1EE27, + 0x1EE28, + 0x1EE29, + 0x1EE33, + 0x1EE34, + 0x1EE38, + 0x1EE39, + 0x1EE3A, + 0x1EE3B, + 0x1EE3C, + 0x1EE42, + 0x1EE43, + 0x1EE47, + 0x1EE48, + 0x1EE49, + 0x1EE4A, + 0x1EE4B, + 0x1EE4C, + 0x1EE4D, + 0x1EE50, + 0x1EE51, + 0x1EE53, + 0x1EE54, + 0x1EE55, + 0x1EE57, + 0x1EE58, + 0x1EE59, + 0x1EE5A, + 0x1EE5B, + 0x1EE5C, + 0x1EE5D, + 0x1EE5E, + 0x1EE5F, + 0x1EE60, + 0x1EE61, + 0x1EE63, + 0x1EE64, + 0x1EE65, + 0x1EE67, + 0x1EE6B, + 0x1EE6C, + 0x1EE73, + 0x1EE74, + 0x1EE78, + 0x1EE79, + 0x1EE7D, + 0x1EE7E, + 0x1EE7F, + 0x1EE80, + 0x1EE8A, + 0x1EE8B, + 0x1EE9C, + 0x1EEA1, + 0x1EEA4, + 0x1EEA5, + 0x1EEAA, + 0x1EEAB, + 0x1EEBC, + 0x1EEF0, + 0x1EEF2, + 0x1F000, + 0x1F02C, + 0x1F030, + 0x1F094, + 0x1F0A0, + 0x1F0AF, + 0x1F0B1, + 0x1F0C0, + 0x1F0C1, + 0x1F0D0, + 0x1F0D1, + 0x1F0F6, + 0x1F100, + 0x1F10D, + 0x1F110, + 0x1F12F, + 0x1F130, + 0x1F16C, + 0x1F170, + 0x1F1AD, + 0x1F1E6, + 0x1F203, + 0x1F210, + 0x1F23C, + 0x1F240, + 0x1F249, + 0x1F250, + 0x1F252, + 0x1F300, + 0x1F6D3, + 0x1F6E0, + 0x1F6ED, + 0x1F6F0, + 0x1F6F7, + 0x1F700, + 0x1F774, + 0x1F780, + 0x1F7D5, + 0x1F800, + 0x1F80C, + 0x1F810, + 0x1F848, + 0x1F850, + 0x1F85A, + 0x1F860, + 0x1F888, + 0x1F890, + 0x1F8AE, + 0x1F910, + 0x1F91F, + 0x1F920, + 0x1F928, + 0x1F930, + 0x1F931, + 0x1F933, + 0x1F93F, + 0x1F940, + 0x1F94C, + 0x1F950, + 0x1F95F, + 0x1F980, + 0x1F992, + 0x1F9C0, + 0x1F9C1, + 0x20000, + 0x2A6D7, + 0x2A700, + 0x2B735, + 0x2B740, + 0x2B81E, + 0x2B820, + 0x2CEA2, + 0x2F800, + 0x2FA1E, + 0xE0001, + 0xE0002, + 0xE0020, + 0xE0080, + 0xE0100, + 0xE01F0, + 0xF0000, + 0xFFFFE, + 0x100000, + 0x10FFFE +}; + static const UV Cased_invlist[] = { /* for EBCDIC 037 */ - 285, /* Number of elements */ + 293, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -58540,6 +64823,8 @@ static const UV Cased_invlist[] = { /* for EBCDIC 037 */ 0x13F6, 0x13F8, 0x13FE, + 0x1C80, + 0x1C89, 0x1D00, 0x1DC0, 0x1E00, @@ -58645,7 +64930,7 @@ static const UV Cased_invlist[] = { /* for EBCDIC 037 */ 0xA78B, 0xA78F, 0xA790, - 0xA7AE, + 0xA7AF, 0xA7B0, 0xA7B8, 0xA7F8, @@ -58666,6 +64951,10 @@ static const UV Cased_invlist[] = { /* for EBCDIC 037 */ 0xFF5B, 0x10400, 0x10450, + 0x104B0, + 0x104D4, + 0x104D8, + 0x104FC, 0x10C80, 0x10CB3, 0x10CC0, @@ -58732,6 +65021,8 @@ static const UV Cased_invlist[] = { /* for EBCDIC 037 */ 0x1D7C3, 0x1D7C4, 0x1D7CC, + 0x1E900, + 0x1E944, 0x1F130, 0x1F14A, 0x1F150, @@ -58797,7 +65088,7 @@ static const UV NonL1_Perl_Non_Final_Folds_invlist[] = { /* for EBCDIC 037 */ }; static const UV _Perl_Any_Folds_invlist[] = { /* for EBCDIC 037 */ - 275, /* Number of elements */ + 281, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -58875,8 +65166,6 @@ static const UV _Perl_Any_Folds_invlist[] = { /* for EBCDIC 037 */ 0x265, 0x267, 0x268, - 0x26A, - 0x26B, 0x26D, 0x26F, 0x270, @@ -58956,6 +65245,8 @@ static const UV _Perl_Any_Folds_invlist[] = { /* for EBCDIC 037 */ 0x13F6, 0x13F8, 0x13FE, + 0x1C80, + 0x1C89, 0x1D79, 0x1D7A, 0x1D7D, @@ -59053,7 +65344,7 @@ static const UV _Perl_Any_Folds_invlist[] = { /* for EBCDIC 037 */ 0xA790, 0xA794, 0xA796, - 0xA7AE, + 0xA7AF, 0xA7B0, 0xA7B8, 0xAB53, @@ -59070,12 +65361,18 @@ static const UV _Perl_Any_Folds_invlist[] = { /* for EBCDIC 037 */ 0xFF5B, 0x10400, 0x10450, + 0x104B0, + 0x104D4, + 0x104D8, + 0x104FC, 0x10C80, 0x10CB3, 0x10CC0, 0x10CF3, 0x118A0, - 0x118E0 + 0x118E0, + 0x1E900, + 0x1E944 }; static const UV _Perl_Folds_To_Multi_Char_invlist[] = { /* for EBCDIC 037 */ @@ -59149,7 +65446,7 @@ static const UV _Perl_Folds_To_Multi_Char_invlist[] = { /* for EBCDIC 037 */ #if defined(PERL_IN_PERL_C) static const UV _Perl_GCB_invlist[] = { /* for EBCDIC 037 */ - 1502, /* Number of elements */ + 1615, /* Number of elements */ 148565664, /* Version and data structure type */ 0, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -59216,6 +65513,8 @@ static const UV _Perl_GCB_invlist[] = { /* for EBCDIC 037 */ 0x82E, 0x859, 0x85C, + 0x8D4, + 0x8E2, 0x8E3, 0x903, 0x904, @@ -59364,6 +65663,7 @@ static const UV _Perl_GCB_invlist[] = { /* for EBCDIC 037 */ 0xD4A, 0xD4D, 0xD4E, + 0xD4F, 0xD57, 0xD58, 0xD62, @@ -59472,6 +65772,8 @@ static const UV _Perl_GCB_invlist[] = { /* for EBCDIC 037 */ 0x180B, 0x180E, 0x180F, + 0x1885, + 0x1887, 0x18A9, 0x18AA, 0x1920, @@ -59558,10 +65860,11 @@ static const UV _Perl_GCB_invlist[] = { /* for EBCDIC 037 */ 0x1CFA, 0x1DC0, 0x1DF6, - 0x1DFC, + 0x1DFB, 0x1E00, 0x200B, 0x200C, + 0x200D, 0x200E, 0x2010, 0x2028, @@ -59570,6 +65873,14 @@ static const UV _Perl_GCB_invlist[] = { /* for EBCDIC 037 */ 0x2070, 0x20D0, 0x20F1, + 0x261D, + 0x261E, + 0x26F9, + 0x26FA, + 0x270A, + 0x270E, + 0x2764, + 0x2765, 0x2CEF, 0x2CF2, 0x2D7F, @@ -59602,7 +65913,7 @@ static const UV _Perl_GCB_invlist[] = { /* for EBCDIC 037 */ 0xA882, 0xA8B4, 0xA8C4, - 0xA8C5, + 0xA8C6, 0xA8E0, 0xA8F2, 0xA926, @@ -60529,6 +66840,8 @@ static const UV _Perl_GCB_invlist[] = { /* for EBCDIC 037 */ 0x111B6, 0x111BF, 0x111C1, + 0x111C2, + 0x111C4, 0x111CA, 0x111CD, 0x1122C, @@ -60538,6 +66851,8 @@ static const UV _Perl_GCB_invlist[] = { /* for EBCDIC 037 */ 0x11235, 0x11236, 0x11238, + 0x1123E, + 0x1123F, 0x112DF, 0x112E0, 0x112E3, @@ -60564,6 +66879,13 @@ static const UV _Perl_GCB_invlist[] = { /* for EBCDIC 037 */ 0x1136D, 0x11370, 0x11375, + 0x11435, + 0x11438, + 0x11440, + 0x11442, + 0x11445, + 0x11446, + 0x11447, 0x114B0, 0x114B1, 0x114B3, @@ -60608,6 +66930,22 @@ static const UV _Perl_GCB_invlist[] = { /* for EBCDIC 037 */ 0x11726, 0x11727, 0x1172C, + 0x11C2F, + 0x11C30, + 0x11C37, + 0x11C38, + 0x11C3E, + 0x11C3F, + 0x11C40, + 0x11C92, + 0x11CA8, + 0x11CA9, + 0x11CAA, + 0x11CB1, + 0x11CB2, + 0x11CB4, + 0x11CB5, + 0x11CB7, 0x16AF0, 0x16AF5, 0x16B30, @@ -60647,11 +66985,83 @@ static const UV _Perl_GCB_invlist[] = { /* for EBCDIC 037 */ 0x1DAA0, 0x1DAA1, 0x1DAB0, + 0x1E000, + 0x1E007, + 0x1E008, + 0x1E019, + 0x1E01B, + 0x1E022, + 0x1E023, + 0x1E025, + 0x1E026, + 0x1E02B, 0x1E8D0, 0x1E8D7, + 0x1E944, + 0x1E94B, 0x1F1E6, 0x1F200, + 0x1F385, + 0x1F386, + 0x1F3C3, + 0x1F3C5, + 0x1F3CA, + 0x1F3CC, + 0x1F3FB, + 0x1F400, + 0x1F442, + 0x1F444, + 0x1F446, + 0x1F451, + 0x1F466, + 0x1F46A, + 0x1F46E, + 0x1F46F, + 0x1F470, + 0x1F479, + 0x1F47C, + 0x1F47D, + 0x1F481, + 0x1F484, + 0x1F485, + 0x1F488, + 0x1F48B, + 0x1F48C, + 0x1F4AA, + 0x1F4AB, + 0x1F575, + 0x1F576, + 0x1F57A, + 0x1F57B, + 0x1F590, + 0x1F591, + 0x1F595, + 0x1F597, + 0x1F5E8, + 0x1F5E9, + 0x1F645, + 0x1F648, + 0x1F64B, + 0x1F650, + 0x1F6A3, + 0x1F6A4, + 0x1F6B4, + 0x1F6B7, + 0x1F6C0, + 0x1F6C1, + 0x1F918, + 0x1F91F, + 0x1F926, + 0x1F927, + 0x1F930, + 0x1F931, + 0x1F933, + 0x1F93A, + 0x1F93C, + 0x1F93F, 0xE0000, + 0xE0020, + 0xE0080, 0xE0100, 0xE01F0, 0xE1000 @@ -60661,23 +67071,28 @@ static const UV _Perl_GCB_invlist[] = { /* for EBCDIC 037 */ #if defined(PERL_IN_REGEXEC_C) -#define GCB_ENUM_COUNT 14 +#define GCB_ENUM_COUNT 19 typedef enum { GCB_Other = 0, GCB_CR = 1, GCB_Control = 2, - GCB_Extend = 3, - GCB_L = 4, - GCB_LF = 5, - GCB_LV = 6, - GCB_LVT = 7, - GCB_Prepend = 8, - GCB_Regional_Indicator = 9, - GCB_SpacingMark = 10, - GCB_T = 11, - GCB_V = 12, - GCB_EDGE = 13 + GCB_E_Base = 3, + GCB_E_Base_GAZ = 4, + GCB_E_Modifier = 5, + GCB_Extend = 6, + GCB_Glue_After_Zwj = 7, + GCB_L = 8, + GCB_LF = 9, + GCB_LV = 10, + GCB_LVT = 11, + GCB_Prepend = 12, + GCB_Regional_Indicator = 13, + GCB_SpacingMark = 14, + GCB_T = 15, + GCB_V = 16, + GCB_ZWJ = 17, + GCB_EDGE = 18 } GCB_enum; static const GCB_enum _Perl_GCB_invmap[] = { /* for EBCDIC 037 */ @@ -60705,7 +67120,7 @@ static const GCB_enum _Perl_GCB_invmap[] = { /* for EBCDIC 037 */ GCB_Other, GCB_Extend, GCB_Other, - GCB_Control, + GCB_Prepend, GCB_Other, GCB_Extend, GCB_Other, @@ -60716,7 +67131,7 @@ static const GCB_enum _Perl_GCB_invmap[] = { /* for EBCDIC 037 */ GCB_Extend, GCB_Other, GCB_Extend, - GCB_Control, + GCB_Prepend, GCB_Other, GCB_Extend, GCB_Other, @@ -60724,7 +67139,7 @@ static const GCB_enum _Perl_GCB_invmap[] = { /* for EBCDIC 037 */ GCB_Other, GCB_Extend, GCB_Other, - GCB_Control, + GCB_Prepend, GCB_Other, GCB_Extend, GCB_Other, @@ -60745,6 +67160,8 @@ static const GCB_enum _Perl_GCB_invmap[] = { /* for EBCDIC 037 */ GCB_Extend, GCB_Other, GCB_Extend, + GCB_Prepend, + GCB_Extend, GCB_SpacingMark, GCB_Other, GCB_Extend, @@ -60891,6 +67308,7 @@ static const GCB_enum _Perl_GCB_invmap[] = { /* for EBCDIC 037 */ GCB_Other, GCB_SpacingMark, GCB_Extend, + GCB_Prepend, GCB_Other, GCB_Extend, GCB_Other, @@ -61003,6 +67421,8 @@ static const GCB_enum _Perl_GCB_invmap[] = { /* for EBCDIC 037 */ GCB_Extend, GCB_Other, GCB_Extend, + GCB_Other, + GCB_Extend, GCB_SpacingMark, GCB_Extend, GCB_SpacingMark, @@ -61090,6 +67510,7 @@ static const GCB_enum _Perl_GCB_invmap[] = { /* for EBCDIC 037 */ GCB_Other, GCB_Control, GCB_Extend, + GCB_ZWJ, GCB_Control, GCB_Other, GCB_Control, @@ -61098,6 +67519,14 @@ static const GCB_enum _Perl_GCB_invmap[] = { /* for EBCDIC 037 */ GCB_Other, GCB_Extend, GCB_Other, + GCB_E_Base, + GCB_Other, + GCB_E_Base, + GCB_Other, + GCB_E_Base, + GCB_Other, + GCB_Glue_After_Zwj, + GCB_Other, GCB_Extend, GCB_Other, GCB_Extend, @@ -62040,7 +68469,7 @@ static const GCB_enum _Perl_GCB_invmap[] = { /* for EBCDIC 037 */ GCB_SpacingMark, GCB_Extend, GCB_Other, - GCB_Control, + GCB_Prepend, GCB_Other, GCB_Extend, GCB_Other, @@ -62057,6 +68486,8 @@ static const GCB_enum _Perl_GCB_invmap[] = { /* for EBCDIC 037 */ GCB_Extend, GCB_SpacingMark, GCB_Other, + GCB_Prepend, + GCB_Other, GCB_Extend, GCB_Other, GCB_SpacingMark, @@ -62067,6 +68498,8 @@ static const GCB_enum _Perl_GCB_invmap[] = { /* for EBCDIC 037 */ GCB_Extend, GCB_Other, GCB_Extend, + GCB_Other, + GCB_Extend, GCB_SpacingMark, GCB_Extend, GCB_Other, @@ -62092,6 +68525,13 @@ static const GCB_enum _Perl_GCB_invmap[] = { /* for EBCDIC 037 */ GCB_Other, GCB_Extend, GCB_Other, + GCB_SpacingMark, + GCB_Extend, + GCB_SpacingMark, + GCB_Extend, + GCB_SpacingMark, + GCB_Extend, + GCB_Other, GCB_Extend, GCB_SpacingMark, GCB_Extend, @@ -62136,6 +68576,22 @@ static const GCB_enum _Perl_GCB_invmap[] = { /* for EBCDIC 037 */ GCB_SpacingMark, GCB_Extend, GCB_Other, + GCB_SpacingMark, + GCB_Extend, + GCB_Other, + GCB_Extend, + GCB_SpacingMark, + GCB_Extend, + GCB_Other, + GCB_Extend, + GCB_Other, + GCB_SpacingMark, + GCB_Extend, + GCB_SpacingMark, + GCB_Extend, + GCB_SpacingMark, + GCB_Extend, + GCB_Other, GCB_Extend, GCB_Other, GCB_Extend, @@ -62177,8 +68633,80 @@ static const GCB_enum _Perl_GCB_invmap[] = { /* for EBCDIC 037 */ GCB_Other, GCB_Extend, GCB_Other, + GCB_Extend, + GCB_Other, + GCB_Extend, + GCB_Other, + GCB_Extend, + GCB_Other, + GCB_Extend, + GCB_Other, + GCB_Extend, + GCB_Other, + GCB_Extend, + GCB_Other, GCB_Regional_Indicator, GCB_Other, + GCB_E_Base, + GCB_Other, + GCB_E_Base, + GCB_Other, + GCB_E_Base, + GCB_Other, + GCB_E_Modifier, + GCB_Other, + GCB_E_Base, + GCB_Other, + GCB_E_Base, + GCB_Other, + GCB_E_Base_GAZ, + GCB_Other, + GCB_E_Base, + GCB_Other, + GCB_E_Base, + GCB_Other, + GCB_E_Base, + GCB_Other, + GCB_E_Base, + GCB_Other, + GCB_E_Base, + GCB_Other, + GCB_Glue_After_Zwj, + GCB_Other, + GCB_E_Base, + GCB_Other, + GCB_E_Base, + GCB_Other, + GCB_E_Base, + GCB_Other, + GCB_E_Base, + GCB_Other, + GCB_E_Base, + GCB_Other, + GCB_Glue_After_Zwj, + GCB_Other, + GCB_E_Base, + GCB_Other, + GCB_E_Base, + GCB_Other, + GCB_E_Base, + GCB_Other, + GCB_E_Base, + GCB_Other, + GCB_E_Base, + GCB_Other, + GCB_E_Base, + GCB_Other, + GCB_E_Base, + GCB_Other, + GCB_E_Base, + GCB_Other, + GCB_E_Base, + GCB_Other, + GCB_E_Base, + GCB_Other, + GCB_Control, + GCB_Extend, GCB_Control, GCB_Extend, GCB_Control, @@ -62190,7 +68718,7 @@ static const GCB_enum _Perl_GCB_invmap[] = { /* for EBCDIC 037 */ #if defined(PERL_IN_UTF8_C) static const UV _Perl_IDCont_invlist[] = { /* for EBCDIC 037 */ - 1337, /* Number of elements */ + 1387, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -62315,6 +68843,10 @@ static const UV _Perl_IDCont_invlist[] = { /* for EBCDIC 037 */ 0x85C, 0x8A0, 0x8B5, + 0x8B6, + 0x8BE, + 0x8D4, + 0x8E2, 0x8E3, 0x964, 0x966, @@ -62493,7 +69025,7 @@ static const UV _Perl_IDCont_invlist[] = { /* for EBCDIC 037 */ 0xC64, 0xC66, 0xC70, - 0xC81, + 0xC80, 0xC84, 0xC85, 0xC8D, @@ -62535,7 +69067,7 @@ static const UV _Perl_IDCont_invlist[] = { /* for EBCDIC 037 */ 0xD49, 0xD4A, 0xD4F, - 0xD57, + 0xD54, 0xD58, 0xD5F, 0xD64, @@ -62771,6 +69303,8 @@ static const UV _Perl_IDCont_invlist[] = { /* for EBCDIC 037 */ 0x1C4A, 0x1C4D, 0x1C7E, + 0x1C80, + 0x1C89, 0x1CD0, 0x1CD3, 0x1CD4, @@ -62779,7 +69313,7 @@ static const UV _Perl_IDCont_invlist[] = { /* for EBCDIC 037 */ 0x1CFA, 0x1D00, 0x1DF6, - 0x1DFC, + 0x1DFB, 0x1F16, 0x1F18, 0x1F1E, @@ -62948,7 +69482,7 @@ static const UV _Perl_IDCont_invlist[] = { /* for EBCDIC 037 */ 0xA722, 0xA789, 0xA78B, - 0xA7AE, + 0xA7AF, 0xA7B0, 0xA7B8, 0xA7F7, @@ -62956,7 +69490,7 @@ static const UV _Perl_IDCont_invlist[] = { /* for EBCDIC 037 */ 0xA840, 0xA874, 0xA880, - 0xA8C5, + 0xA8C6, 0xA8D0, 0xA8DA, 0xA8E0, @@ -63133,6 +69667,10 @@ static const UV _Perl_IDCont_invlist[] = { /* for EBCDIC 037 */ 0x1049E, 0x104A0, 0x104AA, + 0x104B0, + 0x104D4, + 0x104D8, + 0x104FC, 0x10500, 0x10528, 0x10530, @@ -63237,6 +69775,8 @@ static const UV _Perl_IDCont_invlist[] = { /* for EBCDIC 037 */ 0x11212, 0x11213, 0x11238, + 0x1123E, + 0x1123F, 0x11280, 0x11287, 0x11288, @@ -63281,6 +69821,10 @@ static const UV _Perl_IDCont_invlist[] = { /* for EBCDIC 037 */ 0x1136D, 0x11370, 0x11375, + 0x11400, + 0x1144B, + 0x11450, + 0x1145A, 0x11480, 0x114C6, 0x114C7, @@ -63315,6 +69859,20 @@ static const UV _Perl_IDCont_invlist[] = { /* for EBCDIC 037 */ 0x11900, 0x11AC0, 0x11AF9, + 0x11C00, + 0x11C09, + 0x11C0A, + 0x11C37, + 0x11C38, + 0x11C41, + 0x11C50, + 0x11C5A, + 0x11C72, + 0x11C90, + 0x11C92, + 0x11CA8, + 0x11CA9, + 0x11CB7, 0x12000, 0x1239A, 0x12400, @@ -63351,6 +69909,12 @@ static const UV _Perl_IDCont_invlist[] = { /* for EBCDIC 037 */ 0x16F7F, 0x16F8F, 0x16FA0, + 0x16FE0, + 0x16FE1, + 0x17000, + 0x187ED, + 0x18800, + 0x18AF3, 0x1B000, 0x1B002, 0x1BC00, @@ -63449,10 +70013,24 @@ static const UV _Perl_IDCont_invlist[] = { /* for EBCDIC 037 */ 0x1DAA0, 0x1DAA1, 0x1DAB0, + 0x1E000, + 0x1E007, + 0x1E008, + 0x1E019, + 0x1E01B, + 0x1E022, + 0x1E023, + 0x1E025, + 0x1E026, + 0x1E02B, 0x1E800, 0x1E8C5, 0x1E8D0, 0x1E8D7, + 0x1E900, + 0x1E94B, + 0x1E950, + 0x1E95A, 0x1EE00, 0x1EE04, 0x1EE05, @@ -63534,7 +70112,7 @@ static const UV _Perl_IDCont_invlist[] = { /* for EBCDIC 037 */ }; static const UV _Perl_IDStart_invlist[] = { /* for EBCDIC 037 */ - 1151, /* Number of elements */ + 1183, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -63661,6 +70239,8 @@ static const UV _Perl_IDStart_invlist[] = { /* for EBCDIC 037 */ 0x859, 0x8A0, 0x8B5, + 0x8B6, + 0x8BE, 0x904, 0x93A, 0x93D, @@ -63789,6 +70369,8 @@ static const UV _Perl_IDStart_invlist[] = { /* for EBCDIC 037 */ 0xC5B, 0xC60, 0xC62, + 0xC80, + 0xC81, 0xC85, 0xC8D, 0xC8E, @@ -63817,6 +70399,8 @@ static const UV _Perl_IDStart_invlist[] = { /* for EBCDIC 037 */ 0xD3E, 0xD4E, 0xD4F, + 0xD54, + 0xD57, 0xD5F, 0xD62, 0xD7A, @@ -64011,6 +70595,8 @@ static const UV _Perl_IDStart_invlist[] = { /* for EBCDIC 037 */ 0x1C50, 0x1C5A, 0x1C7E, + 0x1C80, + 0x1C89, 0x1CE9, 0x1CED, 0x1CEE, @@ -64178,7 +70764,7 @@ static const UV _Perl_IDStart_invlist[] = { /* for EBCDIC 037 */ 0xA722, 0xA789, 0xA78B, - 0xA7AE, + 0xA7AF, 0xA7B0, 0xA7B8, 0xA7F7, @@ -64365,6 +70951,10 @@ static const UV _Perl_IDStart_invlist[] = { /* for EBCDIC 037 */ 0x103D6, 0x10400, 0x1049E, + 0x104B0, + 0x104D4, + 0x104D8, + 0x104FC, 0x10500, 0x10528, 0x10530, @@ -64487,6 +71077,10 @@ static const UV _Perl_IDStart_invlist[] = { /* for EBCDIC 037 */ 0x11351, 0x1135D, 0x11362, + 0x11400, + 0x11435, + 0x11447, + 0x1144B, 0x11480, 0x114B0, 0x114C4, @@ -64511,6 +71105,14 @@ static const UV _Perl_IDStart_invlist[] = { /* for EBCDIC 037 */ 0x11900, 0x11AC0, 0x11AF9, + 0x11C00, + 0x11C09, + 0x11C0A, + 0x11C2F, + 0x11C40, + 0x11C41, + 0x11C72, + 0x11C90, 0x12000, 0x1239A, 0x12400, @@ -64541,6 +71143,12 @@ static const UV _Perl_IDStart_invlist[] = { /* for EBCDIC 037 */ 0x16F51, 0x16F93, 0x16FA0, + 0x16FE0, + 0x16FE1, + 0x17000, + 0x187ED, + 0x18800, + 0x18AF3, 0x1B000, 0x1B002, 0x1BC00, @@ -64613,6 +71221,8 @@ static const UV _Perl_IDStart_invlist[] = { /* for EBCDIC 037 */ 0x1D7CC, 0x1E800, 0x1E8C5, + 0x1E900, + 0x1E944, 0x1EE00, 0x1EE04, 0x1EE05, @@ -64696,7 +71306,7 @@ static const UV _Perl_IDStart_invlist[] = { /* for EBCDIC 037 */ #if defined(PERL_IN_PERL_C) static const UV _Perl_LB_invlist[] = { /* for EBCDIC 037 */ - 2168, /* Number of elements */ + 2279, /* Number of elements */ 148565664, /* Version and data structure type */ 0, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -64854,6 +71464,8 @@ static const UV _Perl_LB_invlist[] = { /* for EBCDIC 037 */ 0x82E, 0x859, 0x85C, + 0x8D4, + 0x8E2, 0x8E3, 0x904, 0x93A, @@ -65151,6 +71763,8 @@ static const UV _Perl_LB_invlist[] = { /* for EBCDIC 037 */ 0x180F, 0x1810, 0x181A, + 0x1885, + 0x1887, 0x18A9, 0x18AA, 0x1920, @@ -65215,7 +71829,7 @@ static const UV _Perl_LB_invlist[] = { /* for EBCDIC 037 */ 0x1CFA, 0x1DC0, 0x1DF6, - 0x1DFC, + 0x1DFB, 0x1E00, 0x1FFD, 0x1FFE, @@ -65224,6 +71838,8 @@ static const UV _Perl_LB_invlist[] = { /* for EBCDIC 037 */ 0x2008, 0x200B, 0x200C, + 0x200D, + 0x200E, 0x2010, 0x2011, 0x2012, @@ -65306,6 +71922,8 @@ static const UV _Perl_LB_invlist[] = { /* for EBCDIC 037 */ 0x2618, 0x2619, 0x261A, + 0x261D, + 0x261E, 0x2620, 0x2639, 0x263C, @@ -65332,15 +71950,19 @@ static const UV _Perl_LB_invlist[] = { /* for EBCDIC 037 */ 0x26F1, 0x26F6, 0x26F7, + 0x26F9, + 0x26FA, 0x26FB, 0x26FD, 0x2705, 0x2708, + 0x270A, 0x270E, 0x275B, 0x2761, 0x2762, 0x2764, + 0x2765, 0x2768, 0x2769, 0x276A, @@ -65445,6 +72067,7 @@ static const UV _Perl_LB_invlist[] = { /* for EBCDIC 037 */ 0x2E40, 0x2E42, 0x2E43, + 0x2E45, 0x2E80, 0x2E9A, 0x2E9B, @@ -65595,7 +72218,7 @@ static const UV _Perl_LB_invlist[] = { /* for EBCDIC 037 */ 0xA880, 0xA882, 0xA8B4, - 0xA8C5, + 0xA8C6, 0xA8CE, 0xA8D0, 0xA8DA, @@ -66570,6 +73193,15 @@ static const UV _Perl_LB_invlist[] = { /* for EBCDIC 037 */ 0xFF71, 0xFF9E, 0xFFA0, + 0xFFBF, + 0xFFC2, + 0xFFC8, + 0xFFCA, + 0xFFD0, + 0xFFD2, + 0xFFD8, + 0xFFDA, + 0xFFDD, 0xFFE0, 0xFFE1, 0xFFE2, @@ -66662,6 +73294,8 @@ static const UV _Perl_LB_invlist[] = { /* for EBCDIC 037 */ 0x1123A, 0x1123B, 0x1123D, + 0x1123E, + 0x1123F, 0x112A9, 0x112AA, 0x112DF, @@ -66686,6 +73320,14 @@ static const UV _Perl_LB_invlist[] = { /* for EBCDIC 037 */ 0x1136D, 0x11370, 0x11375, + 0x11435, + 0x11447, + 0x1144B, + 0x1144F, + 0x11450, + 0x1145A, + 0x1145B, + 0x1145C, 0x114B0, 0x114C4, 0x114D0, @@ -66706,6 +73348,8 @@ static const UV _Perl_LB_invlist[] = { /* for EBCDIC 037 */ 0x11643, 0x11650, 0x1165A, + 0x11660, + 0x1166D, 0x116AB, 0x116B8, 0x116C0, @@ -66718,6 +73362,21 @@ static const UV _Perl_LB_invlist[] = { /* for EBCDIC 037 */ 0x1173F, 0x118E0, 0x118EA, + 0x11C2F, + 0x11C37, + 0x11C38, + 0x11C40, + 0x11C41, + 0x11C46, + 0x11C50, + 0x11C5A, + 0x11C70, + 0x11C71, + 0x11C72, + 0x11C92, + 0x11CA8, + 0x11CA9, + 0x11CB7, 0x12470, 0x12475, 0x13258, @@ -66754,6 +73413,12 @@ static const UV _Perl_LB_invlist[] = { /* for EBCDIC 037 */ 0x16F7F, 0x16F8F, 0x16F93, + 0x16FE0, + 0x16FE1, + 0x17000, + 0x187ED, + 0x18800, + 0x18AF3, 0x1B000, 0x1B002, 0x1BC9D, @@ -66786,44 +73451,73 @@ static const UV _Perl_LB_invlist[] = { /* for EBCDIC 037 */ 0x1DAA0, 0x1DAA1, 0x1DAB0, + 0x1E000, + 0x1E007, + 0x1E008, + 0x1E019, + 0x1E01B, + 0x1E022, + 0x1E023, + 0x1E025, + 0x1E026, + 0x1E02B, 0x1E8D0, 0x1E8D7, + 0x1E944, + 0x1E94B, + 0x1E950, + 0x1E95A, + 0x1E95E, + 0x1E960, 0x1F000, - 0x1F02C, - 0x1F030, - 0x1F094, - 0x1F0A0, - 0x1F0AF, - 0x1F0B1, - 0x1F0C0, - 0x1F0C1, - 0x1F0D0, - 0x1F0D1, - 0x1F0F6, + 0x1F100, + 0x1F10D, + 0x1F110, + 0x1F12F, + 0x1F130, + 0x1F16C, + 0x1F170, + 0x1F1AD, 0x1F1E6, 0x1F200, - 0x1F203, - 0x1F210, - 0x1F23B, - 0x1F240, - 0x1F249, - 0x1F250, - 0x1F252, - 0x1F300, + 0x1F385, + 0x1F386, 0x1F39C, 0x1F39E, 0x1F3B5, 0x1F3B7, 0x1F3BC, 0x1F3BD, + 0x1F3C3, + 0x1F3C5, + 0x1F3CA, + 0x1F3CC, 0x1F3FB, 0x1F400, + 0x1F442, + 0x1F444, + 0x1F446, + 0x1F451, + 0x1F466, + 0x1F46A, + 0x1F46E, + 0x1F46F, + 0x1F470, + 0x1F479, + 0x1F47C, + 0x1F47D, + 0x1F481, + 0x1F484, + 0x1F485, + 0x1F488, 0x1F4A0, 0x1F4A1, 0x1F4A2, 0x1F4A3, 0x1F4A4, 0x1F4A5, + 0x1F4AA, + 0x1F4AB, 0x1F4AF, 0x1F4B0, 0x1F4B1, @@ -66834,30 +73528,57 @@ static const UV _Perl_LB_invlist[] = { /* for EBCDIC 037 */ 0x1F525, 0x1F532, 0x1F54A, + 0x1F575, + 0x1F576, 0x1F57A, 0x1F57B, - 0x1F5A4, - 0x1F5A5, + 0x1F590, + 0x1F591, + 0x1F595, + 0x1F597, 0x1F5D4, 0x1F5DC, 0x1F5F4, 0x1F5FA, + 0x1F645, + 0x1F648, + 0x1F64B, 0x1F650, 0x1F676, 0x1F679, 0x1F67C, 0x1F680, - 0x1F6D1, - 0x1F6E0, - 0x1F6ED, - 0x1F6F0, - 0x1F6F4, - 0x1F910, - 0x1F919, - 0x1F980, - 0x1F985, - 0x1F9C0, - 0x1F9C1, + 0x1F6A3, + 0x1F6A4, + 0x1F6B4, + 0x1F6B7, + 0x1F6C0, + 0x1F6C1, + 0x1F700, + 0x1F774, + 0x1F780, + 0x1F7D5, + 0x1F800, + 0x1F80C, + 0x1F810, + 0x1F848, + 0x1F850, + 0x1F85A, + 0x1F860, + 0x1F888, + 0x1F890, + 0x1F8AE, + 0x1F918, + 0x1F91F, + 0x1F926, + 0x1F927, + 0x1F930, + 0x1F931, + 0x1F933, + 0x1F93A, + 0x1F93C, + 0x1F93F, + 0x1FFFE, 0x20000, 0x2FFFE, 0x30000, @@ -66874,7 +73595,7 @@ static const UV _Perl_LB_invlist[] = { /* for EBCDIC 037 */ #if defined(PERL_IN_REGEXEC_C) -#define LB_ENUM_COUNT 36 +#define LB_ENUM_COUNT 39 typedef enum { LB_Alphabetic = 0, @@ -66887,32 +73608,35 @@ typedef enum { LB_Close_Punctuation = 7, LB_Combining_Mark = 8, LB_Contingent_Break = 9, - LB_Exclamation = 10, - LB_Glue = 11, - LB_H2 = 12, - LB_H3 = 13, - LB_Hebrew_Letter = 14, - LB_Hyphen = 15, - LB_Ideographic = 16, - LB_Infix_Numeric = 17, - LB_Inseparable = 18, - LB_JL = 19, - LB_JT = 20, - LB_JV = 21, - LB_Line_Feed = 22, - LB_Mandatory_Break = 23, - LB_Next_Line = 24, - LB_Nonstarter = 25, - LB_Numeric = 26, - LB_Open_Punctuation = 27, - LB_Postfix_Numeric = 28, - LB_Prefix_Numeric = 29, - LB_Quotation = 30, - LB_Regional_Indicator = 31, - LB_Space = 32, - LB_Word_Joiner = 33, - LB_ZWSpace = 34, - LB_EDGE = 35 + LB_E_Base = 10, + LB_E_Modifier = 11, + LB_Exclamation = 12, + LB_Glue = 13, + LB_H2 = 14, + LB_H3 = 15, + LB_Hebrew_Letter = 16, + LB_Hyphen = 17, + LB_Ideographic = 18, + LB_Infix_Numeric = 19, + LB_Inseparable = 20, + LB_JL = 21, + LB_JT = 22, + LB_JV = 23, + LB_Line_Feed = 24, + LB_Mandatory_Break = 25, + LB_Next_Line = 26, + LB_Nonstarter = 27, + LB_Numeric = 28, + LB_Open_Punctuation = 29, + LB_Postfix_Numeric = 30, + LB_Prefix_Numeric = 31, + LB_Quotation = 32, + LB_Regional_Indicator = 33, + LB_Space = 34, + LB_Word_Joiner = 35, + LB_ZWJ = 36, + LB_ZWSpace = 37, + LB_EDGE = 38 } LB_enum; static const LB_enum _Perl_LB_invmap[] = { /* for EBCDIC 037 */ @@ -67079,6 +73803,8 @@ static const LB_enum _Perl_LB_invmap[] = { /* for EBCDIC 037 */ LB_Combining_Mark, LB_Alphabetic, LB_Combining_Mark, + LB_Alphabetic, + LB_Combining_Mark, LB_Break_After, LB_Numeric, LB_Alphabetic, @@ -67373,6 +74099,8 @@ static const LB_enum _Perl_LB_invmap[] = { /* for EBCDIC 037 */ LB_Alphabetic, LB_Combining_Mark, LB_Alphabetic, + LB_Combining_Mark, + LB_Alphabetic, LB_Exclamation, LB_Numeric, LB_Alphabetic, @@ -67440,6 +74168,8 @@ static const LB_enum _Perl_LB_invmap[] = { /* for EBCDIC 037 */ LB_Break_After, LB_ZWSpace, LB_Combining_Mark, + LB_ZWJ, + LB_Combining_Mark, LB_Break_After, LB_Glue, LB_Break_After, @@ -67522,6 +74252,8 @@ static const LB_enum _Perl_LB_invmap[] = { /* for EBCDIC 037 */ LB_Ideographic, LB_Alphabetic, LB_Ideographic, + LB_E_Base, + LB_Ideographic, LB_Alphabetic, LB_Ideographic, LB_Alphabetic, @@ -67548,14 +74280,18 @@ static const LB_enum _Perl_LB_invmap[] = { /* for EBCDIC 037 */ LB_Ideographic, LB_Alphabetic, LB_Ideographic, + LB_E_Base, + LB_Ideographic, LB_Alphabetic, LB_Ideographic, LB_Alphabetic, LB_Ideographic, + LB_E_Base, LB_Alphabetic, LB_Quotation, LB_Alphabetic, LB_Exclamation, + LB_Ideographic, LB_Alphabetic, LB_Open_Punctuation, LB_Close_Punctuation, @@ -67660,6 +74396,7 @@ static const LB_enum _Perl_LB_invmap[] = { /* for EBCDIC 037 */ LB_Alphabetic, LB_Break_After, LB_Open_Punctuation, + LB_Break_After, LB_Alphabetic, LB_Ideographic, LB_Alphabetic, @@ -68781,10 +75518,19 @@ static const LB_enum _Perl_LB_invmap[] = { /* for EBCDIC 037 */ LB_Open_Punctuation, LB_Close_Punctuation, LB_Nonstarter, - LB_Alphabetic, + LB_Ideographic, LB_Nonstarter, - LB_Alphabetic, + LB_Ideographic, LB_Nonstarter, + LB_Ideographic, + LB_Alphabetic, + LB_Ideographic, + LB_Alphabetic, + LB_Ideographic, + LB_Alphabetic, + LB_Ideographic, + LB_Alphabetic, + LB_Ideographic, LB_Alphabetic, LB_Postfix_Numeric, LB_Prefix_Numeric, @@ -68878,6 +75624,8 @@ static const LB_enum _Perl_LB_invmap[] = { /* for EBCDIC 037 */ LB_Alphabetic, LB_Break_After, LB_Alphabetic, + LB_Combining_Mark, + LB_Alphabetic, LB_Break_After, LB_Alphabetic, LB_Combining_Mark, @@ -68904,6 +75652,14 @@ static const LB_enum _Perl_LB_invmap[] = { /* for EBCDIC 037 */ LB_Alphabetic, LB_Combining_Mark, LB_Alphabetic, + LB_Break_After, + LB_Alphabetic, + LB_Numeric, + LB_Alphabetic, + LB_Break_After, + LB_Alphabetic, + LB_Combining_Mark, + LB_Alphabetic, LB_Numeric, LB_Alphabetic, LB_Combining_Mark, @@ -68922,6 +75678,8 @@ static const LB_enum _Perl_LB_invmap[] = { /* for EBCDIC 037 */ LB_Alphabetic, LB_Numeric, LB_Alphabetic, + LB_Break_Before, + LB_Alphabetic, LB_Combining_Mark, LB_Alphabetic, LB_Numeric, @@ -68934,6 +75692,21 @@ static const LB_enum _Perl_LB_invmap[] = { /* for EBCDIC 037 */ LB_Alphabetic, LB_Numeric, LB_Alphabetic, + LB_Combining_Mark, + LB_Alphabetic, + LB_Combining_Mark, + LB_Alphabetic, + LB_Break_After, + LB_Alphabetic, + LB_Numeric, + LB_Alphabetic, + LB_Break_Before, + LB_Exclamation, + LB_Alphabetic, + LB_Combining_Mark, + LB_Alphabetic, + LB_Combining_Mark, + LB_Alphabetic, LB_Break_After, LB_Alphabetic, LB_Open_Punctuation, @@ -68970,6 +75743,12 @@ static const LB_enum _Perl_LB_invmap[] = { /* for EBCDIC 037 */ LB_Alphabetic, LB_Combining_Mark, LB_Alphabetic, + LB_Nonstarter, + LB_Alphabetic, + LB_Ideographic, + LB_Alphabetic, + LB_Ideographic, + LB_Alphabetic, LB_Ideographic, LB_Alphabetic, LB_Combining_Mark, @@ -69004,9 +75783,21 @@ static const LB_enum _Perl_LB_invmap[] = { /* for EBCDIC 037 */ LB_Alphabetic, LB_Combining_Mark, LB_Alphabetic, - LB_Ideographic, + LB_Combining_Mark, LB_Alphabetic, - LB_Ideographic, + LB_Combining_Mark, + LB_Alphabetic, + LB_Combining_Mark, + LB_Alphabetic, + LB_Combining_Mark, + LB_Alphabetic, + LB_Combining_Mark, + LB_Alphabetic, + LB_Combining_Mark, + LB_Alphabetic, + LB_Numeric, + LB_Alphabetic, + LB_Open_Punctuation, LB_Alphabetic, LB_Ideographic, LB_Alphabetic, @@ -69016,9 +75807,10 @@ static const LB_enum _Perl_LB_invmap[] = { /* for EBCDIC 037 */ LB_Alphabetic, LB_Ideographic, LB_Alphabetic, + LB_Ideographic, LB_Regional_Indicator, LB_Ideographic, - LB_Alphabetic, + LB_E_Base, LB_Ideographic, LB_Alphabetic, LB_Ideographic, @@ -69026,17 +75818,27 @@ static const LB_enum _Perl_LB_invmap[] = { /* for EBCDIC 037 */ LB_Ideographic, LB_Alphabetic, LB_Ideographic, - LB_Alphabetic, + LB_E_Base, LB_Ideographic, - LB_Alphabetic, + LB_E_Base, LB_Ideographic, - LB_Alphabetic, + LB_E_Modifier, LB_Ideographic, - LB_Alphabetic, + LB_E_Base, LB_Ideographic, - LB_Alphabetic, + LB_E_Base, LB_Ideographic, - LB_Alphabetic, + LB_E_Base, + LB_Ideographic, + LB_E_Base, + LB_Ideographic, + LB_E_Base, + LB_Ideographic, + LB_E_Base, + LB_Ideographic, + LB_E_Base, + LB_Ideographic, + LB_E_Base, LB_Ideographic, LB_Alphabetic, LB_Ideographic, @@ -69044,6 +75846,8 @@ static const LB_enum _Perl_LB_invmap[] = { /* for EBCDIC 037 */ LB_Ideographic, LB_Alphabetic, LB_Ideographic, + LB_E_Base, + LB_Ideographic, LB_Alphabetic, LB_Ideographic, LB_Alphabetic, @@ -69054,15 +75858,36 @@ static const LB_enum _Perl_LB_invmap[] = { /* for EBCDIC 037 */ LB_Ideographic, LB_Alphabetic, LB_Ideographic, + LB_E_Base, + LB_Ideographic, + LB_E_Base, + LB_Ideographic, + LB_E_Base, + LB_Ideographic, + LB_E_Base, + LB_Ideographic, LB_Alphabetic, LB_Ideographic, LB_Alphabetic, LB_Ideographic, + LB_E_Base, + LB_Ideographic, + LB_E_Base, LB_Alphabetic, LB_Quotation, LB_Nonstarter, LB_Alphabetic, LB_Ideographic, + LB_E_Base, + LB_Ideographic, + LB_E_Base, + LB_Ideographic, + LB_E_Base, + LB_Ideographic, + LB_Alphabetic, + LB_Ideographic, + LB_Alphabetic, + LB_Ideographic, LB_Alphabetic, LB_Ideographic, LB_Alphabetic, @@ -69073,6 +75898,16 @@ static const LB_enum _Perl_LB_invmap[] = { /* for EBCDIC 037 */ LB_Ideographic, LB_Alphabetic, LB_Ideographic, + LB_E_Base, + LB_Ideographic, + LB_E_Base, + LB_Ideographic, + LB_E_Base, + LB_Ideographic, + LB_E_Base, + LB_Ideographic, + LB_E_Base, + LB_Ideographic, LB_Alphabetic, LB_Ideographic, LB_Alphabetic, @@ -69091,7 +75926,7 @@ static const LB_enum _Perl_LB_invmap[] = { /* for EBCDIC 037 */ #if defined(PERL_IN_PERL_C) static const UV _Perl_SB_invlist[] = { /* for EBCDIC 037 */ - 2916, /* Number of elements */ + 2977, /* Number of elements */ 148565664, /* Version and data structure type */ 0, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -69818,6 +76653,10 @@ static const UV _Perl_SB_invlist[] = { /* for EBCDIC 037 */ 0x85C, 0x8A0, 0x8B5, + 0x8B6, + 0x8BE, + 0x8D4, + 0x8E2, 0x8E3, 0x904, 0x93A, @@ -70022,6 +76861,7 @@ static const UV _Perl_SB_invlist[] = { /* for EBCDIC 037 */ 0xC64, 0xC66, 0xC70, + 0xC80, 0xC81, 0xC84, 0xC85, @@ -70069,6 +76909,7 @@ static const UV _Perl_SB_invlist[] = { /* for EBCDIC 037 */ 0xD4A, 0xD4E, 0xD4F, + 0xD54, 0xD57, 0xD58, 0xD5F, @@ -70308,6 +77149,8 @@ static const UV _Perl_SB_invlist[] = { /* for EBCDIC 037 */ 0x1820, 0x1878, 0x1880, + 0x1885, + 0x1887, 0x18A9, 0x18AA, 0x18AB, @@ -70381,6 +77224,7 @@ static const UV _Perl_SB_invlist[] = { /* for EBCDIC 037 */ 0x1C5A, 0x1C7E, 0x1C80, + 0x1C89, 0x1CD0, 0x1CD3, 0x1CD4, @@ -70395,7 +77239,7 @@ static const UV _Perl_SB_invlist[] = { /* for EBCDIC 037 */ 0x1D00, 0x1DC0, 0x1DF6, - 0x1DFC, + 0x1DFB, 0x1E00, 0x1E01, 0x1E02, @@ -71239,7 +78083,7 @@ static const UV _Perl_SB_invlist[] = { /* for EBCDIC 037 */ 0xA7A8, 0xA7A9, 0xA7AA, - 0xA7AE, + 0xA7AF, 0xA7B0, 0xA7B5, 0xA7B6, @@ -71263,7 +78107,7 @@ static const UV _Perl_SB_invlist[] = { /* for EBCDIC 037 */ 0xA880, 0xA882, 0xA8B4, - 0xA8C5, + 0xA8C6, 0xA8CE, 0xA8D0, 0xA8DA, @@ -71511,6 +78355,10 @@ static const UV _Perl_SB_invlist[] = { /* for EBCDIC 037 */ 0x1049E, 0x104A0, 0x104AA, + 0x104B0, + 0x104D4, + 0x104D8, + 0x104FC, 0x10500, 0x10528, 0x10530, @@ -71645,6 +78493,8 @@ static const UV _Perl_SB_invlist[] = { /* for EBCDIC 037 */ 0x1123A, 0x1123B, 0x1123D, + 0x1123E, + 0x1123F, 0x11280, 0x11287, 0x11288, @@ -71694,6 +78544,13 @@ static const UV _Perl_SB_invlist[] = { /* for EBCDIC 037 */ 0x1136D, 0x11370, 0x11375, + 0x11400, + 0x11435, + 0x11447, + 0x1144B, + 0x1144D, + 0x11450, + 0x1145A, 0x11480, 0x114B0, 0x114C4, @@ -71742,6 +78599,23 @@ static const UV _Perl_SB_invlist[] = { /* for EBCDIC 037 */ 0x11900, 0x11AC0, 0x11AF9, + 0x11C00, + 0x11C09, + 0x11C0A, + 0x11C2F, + 0x11C37, + 0x11C38, + 0x11C40, + 0x11C41, + 0x11C43, + 0x11C50, + 0x11C5A, + 0x11C72, + 0x11C90, + 0x11C92, + 0x11CA8, + 0x11CA9, + 0x11CB7, 0x12000, 0x1239A, 0x12400, @@ -71786,6 +78660,12 @@ static const UV _Perl_SB_invlist[] = { /* for EBCDIC 037 */ 0x16F8F, 0x16F93, 0x16FA0, + 0x16FE0, + 0x16FE1, + 0x17000, + 0x187ED, + 0x18800, + 0x18AF3, 0x1B000, 0x1B002, 0x1BC00, @@ -71917,10 +78797,26 @@ static const UV _Perl_SB_invlist[] = { /* for EBCDIC 037 */ 0x1DAA0, 0x1DAA1, 0x1DAB0, + 0x1E000, + 0x1E007, + 0x1E008, + 0x1E019, + 0x1E01B, + 0x1E022, + 0x1E023, + 0x1E025, + 0x1E026, + 0x1E02B, 0x1E800, 0x1E8C5, 0x1E8D0, 0x1E8D7, + 0x1E900, + 0x1E922, + 0x1E944, + 0x1E94B, + 0x1E950, + 0x1E95A, 0x1EE00, 0x1EE04, 0x1EE05, @@ -72762,6 +79658,10 @@ static const SB_enum _Perl_SB_invmap[] = { /* for EBCDIC 037 */ SB_Other, SB_OLetter, SB_Other, + SB_OLetter, + SB_Other, + SB_Extend, + SB_Format, SB_Extend, SB_OLetter, SB_Extend, @@ -72966,6 +79866,7 @@ static const SB_enum _Perl_SB_invmap[] = { /* for EBCDIC 037 */ SB_Other, SB_Numeric, SB_Other, + SB_OLetter, SB_Extend, SB_Other, SB_OLetter, @@ -73013,6 +79914,7 @@ static const SB_enum _Perl_SB_invmap[] = { /* for EBCDIC 037 */ SB_Extend, SB_OLetter, SB_Other, + SB_OLetter, SB_Extend, SB_Other, SB_OLetter, @@ -73254,6 +80156,8 @@ static const SB_enum _Perl_SB_invmap[] = { /* for EBCDIC 037 */ SB_OLetter, SB_Extend, SB_OLetter, + SB_Extend, + SB_OLetter, SB_Other, SB_OLetter, SB_Other, @@ -73324,6 +80228,7 @@ static const SB_enum _Perl_SB_invmap[] = { /* for EBCDIC 037 */ SB_Numeric, SB_OLetter, SB_STerm, + SB_Lower, SB_Other, SB_Extend, SB_Other, @@ -74455,6 +81360,10 @@ static const SB_enum _Perl_SB_invmap[] = { /* for EBCDIC 037 */ SB_Other, SB_Numeric, SB_Other, + SB_Upper, + SB_Other, + SB_Lower, + SB_Other, SB_OLetter, SB_Other, SB_OLetter, @@ -74589,6 +81498,8 @@ static const SB_enum _Perl_SB_invmap[] = { /* for EBCDIC 037 */ SB_Other, SB_STerm, SB_Other, + SB_Extend, + SB_Other, SB_OLetter, SB_Other, SB_OLetter, @@ -74641,6 +81552,13 @@ static const SB_enum _Perl_SB_invmap[] = { /* for EBCDIC 037 */ SB_OLetter, SB_Extend, SB_OLetter, + SB_STerm, + SB_Other, + SB_Numeric, + SB_Other, + SB_OLetter, + SB_Extend, + SB_OLetter, SB_Other, SB_OLetter, SB_Other, @@ -74689,6 +81607,23 @@ static const SB_enum _Perl_SB_invmap[] = { /* for EBCDIC 037 */ SB_OLetter, SB_Other, SB_OLetter, + SB_Extend, + SB_Other, + SB_Extend, + SB_OLetter, + SB_STerm, + SB_Other, + SB_Numeric, + SB_Other, + SB_OLetter, + SB_Other, + SB_Extend, + SB_Other, + SB_Extend, + SB_Other, + SB_OLetter, + SB_Other, + SB_OLetter, SB_Other, SB_OLetter, SB_Other, @@ -74740,6 +81675,12 @@ static const SB_enum _Perl_SB_invmap[] = { /* for EBCDIC 037 */ SB_Other, SB_OLetter, SB_Other, + SB_OLetter, + SB_Other, + SB_OLetter, + SB_Other, + SB_OLetter, + SB_Other, SB_Extend, SB_STerm, SB_Format, @@ -74861,10 +81802,26 @@ static const SB_enum _Perl_SB_invmap[] = { /* for EBCDIC 037 */ SB_Other, SB_Extend, SB_Other, + SB_Extend, + SB_Other, + SB_Extend, + SB_Other, + SB_Extend, + SB_Other, + SB_Extend, + SB_Other, + SB_Extend, + SB_Other, SB_OLetter, SB_Other, SB_Extend, SB_Other, + SB_Upper, + SB_Lower, + SB_Extend, + SB_Other, + SB_Numeric, + SB_Other, SB_OLetter, SB_Other, SB_OLetter, @@ -74951,7 +81908,7 @@ static const SB_enum _Perl_SB_invmap[] = { /* for EBCDIC 037 */ SB_Other, SB_Format, SB_Other, - SB_Format, + SB_Extend, SB_Other, SB_Extend, SB_Other @@ -74962,7 +81919,7 @@ static const SB_enum _Perl_SB_invmap[] = { /* for EBCDIC 037 */ #if defined(PERL_IN_PERL_C) static const UV _Perl_WB_invlist[] = { /* for EBCDIC 037 */ - 1554, /* Number of elements */ + 1676, /* Number of elements */ 148565664, /* Version and data structure type */ 0, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -75156,6 +82113,10 @@ static const UV _Perl_WB_invlist[] = { /* for EBCDIC 037 */ 0x85C, 0x8A0, 0x8B5, + 0x8B6, + 0x8BE, + 0x8D4, + 0x8E2, 0x8E3, 0x904, 0x93A, @@ -75360,6 +82321,7 @@ static const UV _Perl_WB_invlist[] = { /* for EBCDIC 037 */ 0xC64, 0xC66, 0xC70, + 0xC80, 0xC81, 0xC84, 0xC85, @@ -75407,6 +82369,7 @@ static const UV _Perl_WB_invlist[] = { /* for EBCDIC 037 */ 0xD4A, 0xD4E, 0xD4F, + 0xD54, 0xD57, 0xD58, 0xD5F, @@ -75594,6 +82557,8 @@ static const UV _Perl_WB_invlist[] = { /* for EBCDIC 037 */ 0x1820, 0x1878, 0x1880, + 0x1885, + 0x1887, 0x18A9, 0x18AA, 0x18AB, @@ -75649,6 +82614,8 @@ static const UV _Perl_WB_invlist[] = { /* for EBCDIC 037 */ 0x1C50, 0x1C5A, 0x1C7E, + 0x1C80, + 0x1C89, 0x1CD0, 0x1CD3, 0x1CD4, @@ -75663,7 +82630,7 @@ static const UV _Perl_WB_invlist[] = { /* for EBCDIC 037 */ 0x1D00, 0x1DC0, 0x1DF6, - 0x1DFC, + 0x1DFB, 0x1E00, 0x1F16, 0x1F18, @@ -75705,6 +82672,7 @@ static const UV _Perl_WB_invlist[] = { /* for EBCDIC 037 */ 0x2000, 0x200B, 0x200C, + 0x200D, 0x200E, 0x2010, 0x2018, @@ -75765,6 +82733,14 @@ static const UV _Perl_WB_invlist[] = { /* for EBCDIC 037 */ 0x2189, 0x24B6, 0x24EA, + 0x261D, + 0x261E, + 0x26F9, + 0x26FA, + 0x270A, + 0x270E, + 0x2764, + 0x2765, 0x2C00, 0x2C2F, 0x2C30, @@ -75862,7 +82838,7 @@ static const UV _Perl_WB_invlist[] = { /* for EBCDIC 037 */ 0xA722, 0xA789, 0xA78B, - 0xA7AE, + 0xA7AF, 0xA7B0, 0xA7B8, 0xA7F7, @@ -75879,7 +82855,7 @@ static const UV _Perl_WB_invlist[] = { /* for EBCDIC 037 */ 0xA880, 0xA882, 0xA8B4, - 0xA8C5, + 0xA8C6, 0xA8D0, 0xA8DA, 0xA8E0, @@ -76089,6 +83065,10 @@ static const UV _Perl_WB_invlist[] = { /* for EBCDIC 037 */ 0x1049E, 0x104A0, 0x104AA, + 0x104B0, + 0x104D4, + 0x104D8, + 0x104FC, 0x10500, 0x10528, 0x10530, @@ -76210,6 +83190,8 @@ static const UV _Perl_WB_invlist[] = { /* for EBCDIC 037 */ 0x11213, 0x1122C, 0x11238, + 0x1123E, + 0x1123F, 0x11280, 0x11287, 0x11288, @@ -76258,6 +83240,12 @@ static const UV _Perl_WB_invlist[] = { /* for EBCDIC 037 */ 0x1136D, 0x11370, 0x11375, + 0x11400, + 0x11435, + 0x11447, + 0x1144B, + 0x11450, + 0x1145A, 0x11480, 0x114B0, 0x114C4, @@ -76297,6 +83285,22 @@ static const UV _Perl_WB_invlist[] = { /* for EBCDIC 037 */ 0x11900, 0x11AC0, 0x11AF9, + 0x11C00, + 0x11C09, + 0x11C0A, + 0x11C2F, + 0x11C37, + 0x11C38, + 0x11C40, + 0x11C41, + 0x11C50, + 0x11C5A, + 0x11C72, + 0x11C90, + 0x11C92, + 0x11CA8, + 0x11CA9, + 0x11CB7, 0x12000, 0x1239A, 0x12400, @@ -76336,6 +83340,8 @@ static const UV _Perl_WB_invlist[] = { /* for EBCDIC 037 */ 0x16F8F, 0x16F93, 0x16FA0, + 0x16FE0, + 0x16FE1, 0x1B000, 0x1B001, 0x1BC00, @@ -76436,10 +83442,25 @@ static const UV _Perl_WB_invlist[] = { /* for EBCDIC 037 */ 0x1DAA0, 0x1DAA1, 0x1DAB0, + 0x1E000, + 0x1E007, + 0x1E008, + 0x1E019, + 0x1E01B, + 0x1E022, + 0x1E023, + 0x1E025, + 0x1E026, + 0x1E02B, 0x1E800, 0x1E8C5, 0x1E8D0, 0x1E8D7, + 0x1E900, + 0x1E944, + 0x1E94B, + 0x1E950, + 0x1E95A, 0x1EE00, 0x1EE04, 0x1EE05, @@ -76514,6 +83535,64 @@ static const UV _Perl_WB_invlist[] = { /* for EBCDIC 037 */ 0x1F18A, 0x1F1E6, 0x1F200, + 0x1F385, + 0x1F386, + 0x1F3C3, + 0x1F3C5, + 0x1F3CA, + 0x1F3CC, + 0x1F3FB, + 0x1F400, + 0x1F442, + 0x1F444, + 0x1F446, + 0x1F451, + 0x1F466, + 0x1F46A, + 0x1F46E, + 0x1F46F, + 0x1F470, + 0x1F479, + 0x1F47C, + 0x1F47D, + 0x1F481, + 0x1F484, + 0x1F485, + 0x1F488, + 0x1F48B, + 0x1F48C, + 0x1F4AA, + 0x1F4AB, + 0x1F575, + 0x1F576, + 0x1F57A, + 0x1F57B, + 0x1F590, + 0x1F591, + 0x1F595, + 0x1F597, + 0x1F5E8, + 0x1F5E9, + 0x1F645, + 0x1F648, + 0x1F64B, + 0x1F650, + 0x1F6A3, + 0x1F6A4, + 0x1F6B4, + 0x1F6B7, + 0x1F6C0, + 0x1F6C1, + 0x1F918, + 0x1F91F, + 0x1F926, + 0x1F927, + 0x1F930, + 0x1F931, + 0x1F933, + 0x1F93A, + 0x1F93C, + 0x1F93F, 0xE0001, 0xE0002, 0xE0020, @@ -76526,29 +83605,34 @@ static const UV _Perl_WB_invlist[] = { /* for EBCDIC 037 */ #if defined(PERL_IN_REGEXEC_C) -#define WB_ENUM_COUNT 20 +#define WB_ENUM_COUNT 25 typedef enum { WB_Other = 0, WB_ALetter = 1, WB_CR = 2, WB_Double_Quote = 3, - WB_Extend = 4, - WB_ExtendNumLet = 5, - WB_Format = 6, - WB_Hebrew_Letter = 7, - WB_Katakana = 8, - WB_LF = 9, - WB_MidLetter = 10, - WB_MidNum = 11, - WB_MidNumLet = 12, - WB_Newline = 13, - WB_Numeric = 14, - WB_Perl_Tailored_HSpace = 15, - WB_Regional_Indicator = 16, - WB_Single_Quote = 17, - WB_EDGE = 18, - WB_UNKNOWN = 19 + WB_E_Base = 4, + WB_E_Base_GAZ = 5, + WB_E_Modifier = 6, + WB_Extend = 7, + WB_ExtendNumLet = 8, + WB_Format = 9, + WB_Glue_After_Zwj = 10, + WB_Hebrew_Letter = 11, + WB_Katakana = 12, + WB_LF = 13, + WB_MidLetter = 14, + WB_MidNum = 15, + WB_MidNumLet = 16, + WB_Newline = 17, + WB_Numeric = 18, + WB_Perl_Tailored_HSpace = 19, + WB_Regional_Indicator = 20, + WB_Single_Quote = 21, + WB_ZWJ = 22, + WB_EDGE = 23, + WB_UNKNOWN = 24 } WB_enum; static const WB_enum _Perl_WB_invmap[] = { /* for EBCDIC 037 */ @@ -76742,6 +83826,10 @@ static const WB_enum _Perl_WB_invmap[] = { /* for EBCDIC 037 */ WB_Other, WB_ALetter, WB_Other, + WB_ALetter, + WB_Other, + WB_Extend, + WB_Format, WB_Extend, WB_ALetter, WB_Extend, @@ -76946,6 +84034,7 @@ static const WB_enum _Perl_WB_invmap[] = { /* for EBCDIC 037 */ WB_Other, WB_Numeric, WB_Other, + WB_ALetter, WB_Extend, WB_Other, WB_ALetter, @@ -76993,6 +84082,7 @@ static const WB_enum _Perl_WB_invmap[] = { /* for EBCDIC 037 */ WB_Extend, WB_ALetter, WB_Other, + WB_ALetter, WB_Extend, WB_Other, WB_ALetter, @@ -77182,6 +84272,8 @@ static const WB_enum _Perl_WB_invmap[] = { /* for EBCDIC 037 */ WB_ALetter, WB_Extend, WB_ALetter, + WB_Extend, + WB_ALetter, WB_Other, WB_ALetter, WB_Other, @@ -77235,6 +84327,8 @@ static const WB_enum _Perl_WB_invmap[] = { /* for EBCDIC 037 */ WB_Numeric, WB_ALetter, WB_Other, + WB_ALetter, + WB_Other, WB_Extend, WB_Other, WB_Extend, @@ -77291,6 +84385,7 @@ static const WB_enum _Perl_WB_invmap[] = { /* for EBCDIC 037 */ WB_Perl_Tailored_HSpace, WB_Other, WB_Extend, + WB_ZWJ, WB_Format, WB_Other, WB_MidNumLet, @@ -77300,7 +84395,7 @@ static const WB_enum _Perl_WB_invmap[] = { /* for EBCDIC 037 */ WB_MidLetter, WB_Newline, WB_Format, - WB_Perl_Tailored_HSpace, + WB_ExtendNumLet, WB_Other, WB_ExtendNumLet, WB_Other, @@ -77351,6 +84446,14 @@ static const WB_enum _Perl_WB_invmap[] = { /* for EBCDIC 037 */ WB_Other, WB_ALetter, WB_Other, + WB_E_Base, + WB_Other, + WB_E_Base, + WB_Other, + WB_E_Base, + WB_Other, + WB_Glue_After_Zwj, + WB_Other, WB_ALetter, WB_Other, WB_ALetter, @@ -77714,6 +84817,10 @@ static const WB_enum _Perl_WB_invmap[] = { /* for EBCDIC 037 */ WB_ALetter, WB_Other, WB_ALetter, + WB_Other, + WB_ALetter, + WB_Other, + WB_ALetter, WB_Extend, WB_Other, WB_Extend, @@ -77796,6 +84903,8 @@ static const WB_enum _Perl_WB_invmap[] = { /* for EBCDIC 037 */ WB_ALetter, WB_Extend, WB_Other, + WB_Extend, + WB_Other, WB_ALetter, WB_Other, WB_ALetter, @@ -77848,6 +84957,12 @@ static const WB_enum _Perl_WB_invmap[] = { /* for EBCDIC 037 */ WB_Extend, WB_ALetter, WB_Other, + WB_Numeric, + WB_Other, + WB_ALetter, + WB_Extend, + WB_ALetter, + WB_Other, WB_ALetter, WB_Other, WB_Numeric, @@ -77886,6 +85001,22 @@ static const WB_enum _Perl_WB_invmap[] = { /* for EBCDIC 037 */ WB_ALetter, WB_Other, WB_ALetter, + WB_Extend, + WB_Other, + WB_Extend, + WB_ALetter, + WB_Other, + WB_Numeric, + WB_Other, + WB_ALetter, + WB_Other, + WB_Extend, + WB_Other, + WB_Extend, + WB_Other, + WB_ALetter, + WB_Other, + WB_ALetter, WB_Other, WB_ALetter, WB_Other, @@ -77922,6 +85053,8 @@ static const WB_enum _Perl_WB_invmap[] = { /* for EBCDIC 037 */ WB_Extend, WB_ALetter, WB_Other, + WB_ALetter, + WB_Other, WB_Katakana, WB_Other, WB_ALetter, @@ -78022,11 +85155,26 @@ static const WB_enum _Perl_WB_invmap[] = { /* for EBCDIC 037 */ WB_Other, WB_Extend, WB_Other, + WB_Extend, + WB_Other, + WB_Extend, + WB_Other, + WB_Extend, + WB_Other, + WB_Extend, + WB_Other, + WB_Extend, + WB_Other, WB_ALetter, WB_Other, WB_Extend, WB_Other, WB_ALetter, + WB_Extend, + WB_Other, + WB_Numeric, + WB_Other, + WB_ALetter, WB_Other, WB_ALetter, WB_Other, @@ -78100,11 +85248,69 @@ static const WB_enum _Perl_WB_invmap[] = { /* for EBCDIC 037 */ WB_Other, WB_Regional_Indicator, WB_Other, - WB_Format, + WB_E_Base, + WB_Other, + WB_E_Base, + WB_Other, + WB_E_Base, + WB_Other, + WB_E_Modifier, + WB_Other, + WB_E_Base, + WB_Other, + WB_E_Base, + WB_Other, + WB_E_Base_GAZ, + WB_Other, + WB_E_Base, + WB_Other, + WB_E_Base, + WB_Other, + WB_E_Base, + WB_Other, + WB_E_Base, + WB_Other, + WB_E_Base, + WB_Other, + WB_Glue_After_Zwj, + WB_Other, + WB_E_Base, + WB_Other, + WB_E_Base, + WB_Other, + WB_E_Base, + WB_Other, + WB_E_Base, + WB_Other, + WB_E_Base, + WB_Other, + WB_Glue_After_Zwj, + WB_Other, + WB_E_Base, + WB_Other, + WB_E_Base, + WB_Other, + WB_E_Base, + WB_Other, + WB_E_Base, + WB_Other, + WB_E_Base, + WB_Other, + WB_E_Base, + WB_Other, + WB_E_Base, + WB_Other, + WB_E_Base, + WB_Other, + WB_E_Base, + WB_Other, + WB_E_Base, WB_Other, WB_Format, WB_Other, WB_Extend, + WB_Other, + WB_Extend, WB_Other }; @@ -78227,7 +85433,7 @@ static const UV XPerlSpace_invlist[] = { /* for EBCDIC 037 */ }; static const UV XPosixAlnum_invlist[] = { /* for EBCDIC 037 */ - 1317, /* Number of elements */ + 1377, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -78356,6 +85562,10 @@ static const UV XPosixAlnum_invlist[] = { /* for EBCDIC 037 */ 0x859, 0x8A0, 0x8B5, + 0x8B6, + 0x8BE, + 0x8D4, + 0x8E0, 0x8E3, 0x8EA, 0x8F0, @@ -78542,7 +85752,7 @@ static const UV XPosixAlnum_invlist[] = { /* for EBCDIC 037 */ 0xC64, 0xC66, 0xC70, - 0xC81, + 0xC80, 0xC84, 0xC85, 0xC8D, @@ -78586,7 +85796,7 @@ static const UV XPosixAlnum_invlist[] = { /* for EBCDIC 037 */ 0xD4D, 0xD4E, 0xD4F, - 0xD57, + 0xD54, 0xD58, 0xD5F, 0xD64, @@ -78830,6 +86040,8 @@ static const UV XPosixAlnum_invlist[] = { /* for EBCDIC 037 */ 0x1C4A, 0x1C4D, 0x1C7E, + 0x1C80, + 0x1C89, 0x1CE9, 0x1CED, 0x1CEE, @@ -79003,7 +86215,7 @@ static const UV XPosixAlnum_invlist[] = { /* for EBCDIC 037 */ 0xA722, 0xA789, 0xA78B, - 0xA7AE, + 0xA7AF, 0xA7B0, 0xA7B8, 0xA7F7, @@ -79018,6 +86230,8 @@ static const UV XPosixAlnum_invlist[] = { /* for EBCDIC 037 */ 0xA874, 0xA880, 0xA8C4, + 0xA8C5, + 0xA8C6, 0xA8D0, 0xA8DA, 0xA8F2, @@ -79176,6 +86390,10 @@ static const UV XPosixAlnum_invlist[] = { /* for EBCDIC 037 */ 0x1049E, 0x104A0, 0x104AA, + 0x104B0, + 0x104D4, + 0x104D8, + 0x104FC, 0x10500, 0x10528, 0x10530, @@ -79278,6 +86496,8 @@ static const UV XPosixAlnum_invlist[] = { /* for EBCDIC 037 */ 0x11235, 0x11237, 0x11238, + 0x1123E, + 0x1123F, 0x11280, 0x11287, 0x11288, @@ -79318,6 +86538,14 @@ static const UV XPosixAlnum_invlist[] = { /* for EBCDIC 037 */ 0x11358, 0x1135D, 0x11364, + 0x11400, + 0x11442, + 0x11443, + 0x11446, + 0x11447, + 0x1144B, + 0x11450, + 0x1145A, 0x11480, 0x114C2, 0x114C4, @@ -79356,6 +86584,22 @@ static const UV XPosixAlnum_invlist[] = { /* for EBCDIC 037 */ 0x11900, 0x11AC0, 0x11AF9, + 0x11C00, + 0x11C09, + 0x11C0A, + 0x11C37, + 0x11C38, + 0x11C3F, + 0x11C40, + 0x11C41, + 0x11C50, + 0x11C5A, + 0x11C72, + 0x11C90, + 0x11C92, + 0x11CA8, + 0x11CA9, + 0x11CB7, 0x12000, 0x1239A, 0x12400, @@ -79390,6 +86634,12 @@ static const UV XPosixAlnum_invlist[] = { /* for EBCDIC 037 */ 0x16F7F, 0x16F93, 0x16FA0, + 0x16FE0, + 0x16FE1, + 0x17000, + 0x187ED, + 0x18800, + 0x18AF3, 0x1B000, 0x1B002, 0x1BC00, @@ -79464,8 +86714,24 @@ static const UV XPosixAlnum_invlist[] = { /* for EBCDIC 037 */ 0x1D7CC, 0x1D7CE, 0x1D800, + 0x1E000, + 0x1E007, + 0x1E008, + 0x1E019, + 0x1E01B, + 0x1E022, + 0x1E023, + 0x1E025, + 0x1E026, + 0x1E02B, 0x1E800, 0x1E8C5, + 0x1E900, + 0x1E944, + 0x1E947, + 0x1E948, + 0x1E950, + 0x1E95A, 0x1EE00, 0x1EE04, 0x1EE05, @@ -79551,7 +86817,7 @@ static const UV XPosixAlnum_invlist[] = { /* for EBCDIC 037 */ }; static const UV XPosixAlpha_invlist[] = { /* for EBCDIC 037 */ - 1257, /* Number of elements */ + 1311, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -79682,6 +86948,10 @@ static const UV XPosixAlpha_invlist[] = { /* for EBCDIC 037 */ 0x859, 0x8A0, 0x8B5, + 0x8B6, + 0x8BE, + 0x8D4, + 0x8E0, 0x8E3, 0x8EA, 0x8F0, @@ -79858,7 +87128,7 @@ static const UV XPosixAlpha_invlist[] = { /* for EBCDIC 037 */ 0xC5B, 0xC60, 0xC64, - 0xC81, + 0xC80, 0xC84, 0xC85, 0xC8D, @@ -79900,7 +87170,7 @@ static const UV XPosixAlpha_invlist[] = { /* for EBCDIC 037 */ 0xD4D, 0xD4E, 0xD4F, - 0xD57, + 0xD54, 0xD58, 0xD5F, 0xD64, @@ -80122,6 +87392,8 @@ static const UV XPosixAlpha_invlist[] = { /* for EBCDIC 037 */ 0x1C50, 0x1C5A, 0x1C7E, + 0x1C80, + 0x1C89, 0x1CE9, 0x1CED, 0x1CEE, @@ -80297,7 +87569,7 @@ static const UV XPosixAlpha_invlist[] = { /* for EBCDIC 037 */ 0xA722, 0xA789, 0xA78B, - 0xA7AE, + 0xA7AF, 0xA7B0, 0xA7B8, 0xA7F7, @@ -80312,6 +87584,8 @@ static const UV XPosixAlpha_invlist[] = { /* for EBCDIC 037 */ 0xA874, 0xA880, 0xA8C4, + 0xA8C5, + 0xA8C6, 0xA8F2, 0xA8F8, 0xA8FB, @@ -80462,6 +87736,10 @@ static const UV XPosixAlpha_invlist[] = { /* for EBCDIC 037 */ 0x103D6, 0x10400, 0x1049E, + 0x104B0, + 0x104D4, + 0x104D8, + 0x104FC, 0x10500, 0x10528, 0x10530, @@ -80558,6 +87836,8 @@ static const UV XPosixAlpha_invlist[] = { /* for EBCDIC 037 */ 0x11235, 0x11237, 0x11238, + 0x1123E, + 0x1123F, 0x11280, 0x11287, 0x11288, @@ -80596,6 +87876,12 @@ static const UV XPosixAlpha_invlist[] = { /* for EBCDIC 037 */ 0x11358, 0x1135D, 0x11364, + 0x11400, + 0x11442, + 0x11443, + 0x11446, + 0x11447, + 0x1144B, 0x11480, 0x114C2, 0x114C4, @@ -80626,6 +87912,20 @@ static const UV XPosixAlpha_invlist[] = { /* for EBCDIC 037 */ 0x11900, 0x11AC0, 0x11AF9, + 0x11C00, + 0x11C09, + 0x11C0A, + 0x11C37, + 0x11C38, + 0x11C3F, + 0x11C40, + 0x11C41, + 0x11C72, + 0x11C90, + 0x11C92, + 0x11CA8, + 0x11CA9, + 0x11CB7, 0x12000, 0x1239A, 0x12400, @@ -80656,6 +87956,12 @@ static const UV XPosixAlpha_invlist[] = { /* for EBCDIC 037 */ 0x16F7F, 0x16F93, 0x16FA0, + 0x16FE0, + 0x16FE1, + 0x17000, + 0x187ED, + 0x18800, + 0x18AF3, 0x1B000, 0x1B002, 0x1BC00, @@ -80728,8 +88034,22 @@ static const UV XPosixAlpha_invlist[] = { /* for EBCDIC 037 */ 0x1D7C3, 0x1D7C4, 0x1D7CC, + 0x1E000, + 0x1E007, + 0x1E008, + 0x1E019, + 0x1E01B, + 0x1E022, + 0x1E023, + 0x1E025, + 0x1E026, + 0x1E02B, 0x1E800, 0x1E8C5, + 0x1E900, + 0x1E944, + 0x1E947, + 0x1E948, 0x1EE00, 0x1EE04, 0x1EE05, @@ -80848,7 +88168,7 @@ static const UV XPosixCntrl_invlist[] = { /* for EBCDIC 037 */ }; static const UV XPosixDigit_invlist[] = { /* for EBCDIC 037 */ - 103, /* Number of elements */ + 109, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -80939,6 +88259,8 @@ static const UV XPosixDigit_invlist[] = { /* for EBCDIC 037 */ 0x111DA, 0x112F0, 0x112FA, + 0x11450, + 0x1145A, 0x114D0, 0x114DA, 0x11650, @@ -80949,16 +88271,20 @@ static const UV XPosixDigit_invlist[] = { /* for EBCDIC 037 */ 0x1173A, 0x118E0, 0x118EA, + 0x11C50, + 0x11C5A, 0x16A60, 0x16A6A, 0x16B50, 0x16B5A, 0x1D7CE, - 0x1D800 + 0x1D800, + 0x1E950, + 0x1E95A }; static const UV XPosixGraph_invlist[] = { /* for EBCDIC 037 */ - 1237, /* Number of elements */ + 1287, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -81013,7 +88339,9 @@ static const UV XPosixGraph_invlist[] = { /* for EBCDIC 037 */ 0x85F, 0x8A0, 0x8B5, - 0x8E3, + 0x8B6, + 0x8BE, + 0x8D4, 0x984, 0x985, 0x98D, @@ -81186,8 +88514,6 @@ static const UV XPosixGraph_invlist[] = { /* for EBCDIC 037 */ 0xC66, 0xC70, 0xC78, - 0xC80, - 0xC81, 0xC84, 0xC85, 0xC8D, @@ -81228,14 +88554,10 @@ static const UV XPosixGraph_invlist[] = { /* for EBCDIC 037 */ 0xD46, 0xD49, 0xD4A, - 0xD4F, - 0xD57, - 0xD58, - 0xD5F, + 0xD50, + 0xD54, 0xD64, 0xD66, - 0xD76, - 0xD79, 0xD80, 0xD82, 0xD84, @@ -81438,7 +88760,7 @@ static const UV XPosixGraph_invlist[] = { /* for EBCDIC 037 */ 0x1C3B, 0x1C4A, 0x1C4D, - 0x1C80, + 0x1C89, 0x1CC0, 0x1CC8, 0x1CD0, @@ -81447,7 +88769,7 @@ static const UV XPosixGraph_invlist[] = { /* for EBCDIC 037 */ 0x1CFA, 0x1D00, 0x1DF6, - 0x1DFC, + 0x1DFB, 0x1F16, 0x1F18, 0x1F1E, @@ -81500,7 +88822,7 @@ static const UV XPosixGraph_invlist[] = { /* for EBCDIC 037 */ 0x2100, 0x218C, 0x2190, - 0x23FB, + 0x23FF, 0x2400, 0x2427, 0x2440, @@ -81552,7 +88874,7 @@ static const UV XPosixGraph_invlist[] = { /* for EBCDIC 037 */ 0x2DD8, 0x2DDF, 0x2DE0, - 0x2E43, + 0x2E45, 0x2E80, 0x2E9A, 0x2E9B, @@ -81592,7 +88914,7 @@ static const UV XPosixGraph_invlist[] = { /* for EBCDIC 037 */ 0xA640, 0xA6F8, 0xA700, - 0xA7AE, + 0xA7AF, 0xA7B0, 0xA7B8, 0xA7F7, @@ -81602,7 +88924,7 @@ static const UV XPosixGraph_invlist[] = { /* for EBCDIC 037 */ 0xA840, 0xA878, 0xA880, - 0xA8C5, + 0xA8C6, 0xA8CE, 0xA8DA, 0xA8E0, @@ -81726,7 +89048,7 @@ static const UV XPosixGraph_invlist[] = { /* for EBCDIC 037 */ 0x10107, 0x10134, 0x10137, - 0x1018D, + 0x1018F, 0x10190, 0x1019C, 0x101A0, @@ -81755,6 +89077,10 @@ static const UV XPosixGraph_invlist[] = { /* for EBCDIC 037 */ 0x1049E, 0x104A0, 0x104AA, + 0x104B0, + 0x104D4, + 0x104D8, + 0x104FC, 0x10500, 0x10528, 0x10530, @@ -81866,7 +89192,7 @@ static const UV XPosixGraph_invlist[] = { /* for EBCDIC 037 */ 0x11200, 0x11212, 0x11213, - 0x1123E, + 0x1123F, 0x11280, 0x11287, 0x11288, @@ -81911,6 +89237,12 @@ static const UV XPosixGraph_invlist[] = { /* for EBCDIC 037 */ 0x1136D, 0x11370, 0x11375, + 0x11400, + 0x1145A, + 0x1145B, + 0x1145C, + 0x1145D, + 0x1145E, 0x11480, 0x114C8, 0x114D0, @@ -81923,6 +89255,8 @@ static const UV XPosixGraph_invlist[] = { /* for EBCDIC 037 */ 0x11645, 0x11650, 0x1165A, + 0x11660, + 0x1166D, 0x11680, 0x116B8, 0x116C0, @@ -81939,6 +89273,20 @@ static const UV XPosixGraph_invlist[] = { /* for EBCDIC 037 */ 0x11900, 0x11AC0, 0x11AF9, + 0x11C00, + 0x11C09, + 0x11C0A, + 0x11C37, + 0x11C38, + 0x11C46, + 0x11C50, + 0x11C6D, + 0x11C70, + 0x11C90, + 0x11C92, + 0x11CA8, + 0x11CA9, + 0x11CB7, 0x12000, 0x1239A, 0x12400, @@ -81979,6 +89327,12 @@ static const UV XPosixGraph_invlist[] = { /* for EBCDIC 037 */ 0x16F7F, 0x16F8F, 0x16FA0, + 0x16FE0, + 0x16FE1, + 0x17000, + 0x187ED, + 0x18800, + 0x18AF3, 0x1B000, 0x1B002, 0x1BC00, @@ -82049,10 +89403,26 @@ static const UV XPosixGraph_invlist[] = { /* for EBCDIC 037 */ 0x1DAA0, 0x1DAA1, 0x1DAB0, + 0x1E000, + 0x1E007, + 0x1E008, + 0x1E019, + 0x1E01B, + 0x1E022, + 0x1E023, + 0x1E025, + 0x1E026, + 0x1E02B, 0x1E800, 0x1E8C5, 0x1E8C7, 0x1E8D7, + 0x1E900, + 0x1E94B, + 0x1E950, + 0x1E95A, + 0x1E95E, + 0x1E960, 0x1EE00, 0x1EE04, 0x1EE05, @@ -82140,25 +89510,21 @@ static const UV XPosixGraph_invlist[] = { /* for EBCDIC 037 */ 0x1F130, 0x1F16C, 0x1F170, - 0x1F19B, + 0x1F1AD, 0x1F1E6, 0x1F203, 0x1F210, - 0x1F23B, + 0x1F23C, 0x1F240, 0x1F249, 0x1F250, 0x1F252, 0x1F300, - 0x1F57A, - 0x1F57B, - 0x1F5A4, - 0x1F5A5, - 0x1F6D1, + 0x1F6D3, 0x1F6E0, 0x1F6ED, 0x1F6F0, - 0x1F6F4, + 0x1F6F7, 0x1F700, 0x1F774, 0x1F780, @@ -82174,9 +89540,19 @@ static const UV XPosixGraph_invlist[] = { /* for EBCDIC 037 */ 0x1F890, 0x1F8AE, 0x1F910, - 0x1F919, + 0x1F91F, + 0x1F920, + 0x1F928, + 0x1F930, + 0x1F931, + 0x1F933, + 0x1F93F, + 0x1F940, + 0x1F94C, + 0x1F950, + 0x1F95F, 0x1F980, - 0x1F985, + 0x1F992, 0x1F9C0, 0x1F9C1, 0x20000, @@ -82202,7 +89578,7 @@ static const UV XPosixGraph_invlist[] = { /* for EBCDIC 037 */ }; static const UV XPosixLower_invlist[] = { /* for EBCDIC 037 */ - 1283, /* Number of elements */ + 1289, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -82767,6 +90143,8 @@ static const UV XPosixLower_invlist[] = { /* for EBCDIC 037 */ 0x588, 0x13F8, 0x13FE, + 0x1C80, + 0x1C89, 0x1D00, 0x1DC0, 0x1E01, @@ -83429,6 +90807,8 @@ static const UV XPosixLower_invlist[] = { /* for EBCDIC 037 */ 0xFF5B, 0x10428, 0x10450, + 0x104D8, + 0x104FC, 0x10CC0, 0x10CF3, 0x118C0, @@ -83488,11 +90868,13 @@ static const UV XPosixLower_invlist[] = { /* for EBCDIC 037 */ 0x1D7C4, 0x1D7CA, 0x1D7CB, - 0x1D7CC + 0x1D7CC, + 0x1E922, + 0x1E944 }; static const UV XPosixPrint_invlist[] = { /* for EBCDIC 037 */ - 1231, /* Number of elements */ + 1281, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -83547,7 +90929,9 @@ static const UV XPosixPrint_invlist[] = { /* for EBCDIC 037 */ 0x85F, 0x8A0, 0x8B5, - 0x8E3, + 0x8B6, + 0x8BE, + 0x8D4, 0x984, 0x985, 0x98D, @@ -83720,8 +91104,6 @@ static const UV XPosixPrint_invlist[] = { /* for EBCDIC 037 */ 0xC66, 0xC70, 0xC78, - 0xC80, - 0xC81, 0xC84, 0xC85, 0xC8D, @@ -83762,14 +91144,10 @@ static const UV XPosixPrint_invlist[] = { /* for EBCDIC 037 */ 0xD46, 0xD49, 0xD4A, - 0xD4F, - 0xD57, - 0xD58, - 0xD5F, + 0xD50, + 0xD54, 0xD64, 0xD66, - 0xD76, - 0xD79, 0xD80, 0xD82, 0xD84, @@ -83970,7 +91348,7 @@ static const UV XPosixPrint_invlist[] = { /* for EBCDIC 037 */ 0x1C3B, 0x1C4A, 0x1C4D, - 0x1C80, + 0x1C89, 0x1CC0, 0x1CC8, 0x1CD0, @@ -83979,7 +91357,7 @@ static const UV XPosixPrint_invlist[] = { /* for EBCDIC 037 */ 0x1CFA, 0x1D00, 0x1DF6, - 0x1DFC, + 0x1DFB, 0x1F16, 0x1F18, 0x1F1E, @@ -84028,7 +91406,7 @@ static const UV XPosixPrint_invlist[] = { /* for EBCDIC 037 */ 0x2100, 0x218C, 0x2190, - 0x23FB, + 0x23FF, 0x2400, 0x2427, 0x2440, @@ -84080,7 +91458,7 @@ static const UV XPosixPrint_invlist[] = { /* for EBCDIC 037 */ 0x2DD8, 0x2DDF, 0x2DE0, - 0x2E43, + 0x2E45, 0x2E80, 0x2E9A, 0x2E9B, @@ -84120,7 +91498,7 @@ static const UV XPosixPrint_invlist[] = { /* for EBCDIC 037 */ 0xA640, 0xA6F8, 0xA700, - 0xA7AE, + 0xA7AF, 0xA7B0, 0xA7B8, 0xA7F7, @@ -84130,7 +91508,7 @@ static const UV XPosixPrint_invlist[] = { /* for EBCDIC 037 */ 0xA840, 0xA878, 0xA880, - 0xA8C5, + 0xA8C6, 0xA8CE, 0xA8DA, 0xA8E0, @@ -84254,7 +91632,7 @@ static const UV XPosixPrint_invlist[] = { /* for EBCDIC 037 */ 0x10107, 0x10134, 0x10137, - 0x1018D, + 0x1018F, 0x10190, 0x1019C, 0x101A0, @@ -84283,6 +91661,10 @@ static const UV XPosixPrint_invlist[] = { /* for EBCDIC 037 */ 0x1049E, 0x104A0, 0x104AA, + 0x104B0, + 0x104D4, + 0x104D8, + 0x104FC, 0x10500, 0x10528, 0x10530, @@ -84394,7 +91776,7 @@ static const UV XPosixPrint_invlist[] = { /* for EBCDIC 037 */ 0x11200, 0x11212, 0x11213, - 0x1123E, + 0x1123F, 0x11280, 0x11287, 0x11288, @@ -84439,6 +91821,12 @@ static const UV XPosixPrint_invlist[] = { /* for EBCDIC 037 */ 0x1136D, 0x11370, 0x11375, + 0x11400, + 0x1145A, + 0x1145B, + 0x1145C, + 0x1145D, + 0x1145E, 0x11480, 0x114C8, 0x114D0, @@ -84451,6 +91839,8 @@ static const UV XPosixPrint_invlist[] = { /* for EBCDIC 037 */ 0x11645, 0x11650, 0x1165A, + 0x11660, + 0x1166D, 0x11680, 0x116B8, 0x116C0, @@ -84467,6 +91857,20 @@ static const UV XPosixPrint_invlist[] = { /* for EBCDIC 037 */ 0x11900, 0x11AC0, 0x11AF9, + 0x11C00, + 0x11C09, + 0x11C0A, + 0x11C37, + 0x11C38, + 0x11C46, + 0x11C50, + 0x11C6D, + 0x11C70, + 0x11C90, + 0x11C92, + 0x11CA8, + 0x11CA9, + 0x11CB7, 0x12000, 0x1239A, 0x12400, @@ -84507,6 +91911,12 @@ static const UV XPosixPrint_invlist[] = { /* for EBCDIC 037 */ 0x16F7F, 0x16F8F, 0x16FA0, + 0x16FE0, + 0x16FE1, + 0x17000, + 0x187ED, + 0x18800, + 0x18AF3, 0x1B000, 0x1B002, 0x1BC00, @@ -84577,10 +91987,26 @@ static const UV XPosixPrint_invlist[] = { /* for EBCDIC 037 */ 0x1DAA0, 0x1DAA1, 0x1DAB0, + 0x1E000, + 0x1E007, + 0x1E008, + 0x1E019, + 0x1E01B, + 0x1E022, + 0x1E023, + 0x1E025, + 0x1E026, + 0x1E02B, 0x1E800, 0x1E8C5, 0x1E8C7, 0x1E8D7, + 0x1E900, + 0x1E94B, + 0x1E950, + 0x1E95A, + 0x1E95E, + 0x1E960, 0x1EE00, 0x1EE04, 0x1EE05, @@ -84668,25 +92094,21 @@ static const UV XPosixPrint_invlist[] = { /* for EBCDIC 037 */ 0x1F130, 0x1F16C, 0x1F170, - 0x1F19B, + 0x1F1AD, 0x1F1E6, 0x1F203, 0x1F210, - 0x1F23B, + 0x1F23C, 0x1F240, 0x1F249, 0x1F250, 0x1F252, 0x1F300, - 0x1F57A, - 0x1F57B, - 0x1F5A4, - 0x1F5A5, - 0x1F6D1, + 0x1F6D3, 0x1F6E0, 0x1F6ED, 0x1F6F0, - 0x1F6F4, + 0x1F6F7, 0x1F700, 0x1F774, 0x1F780, @@ -84702,9 +92124,19 @@ static const UV XPosixPrint_invlist[] = { /* for EBCDIC 037 */ 0x1F890, 0x1F8AE, 0x1F910, - 0x1F919, + 0x1F91F, + 0x1F920, + 0x1F928, + 0x1F930, + 0x1F931, + 0x1F933, + 0x1F93F, + 0x1F940, + 0x1F94C, + 0x1F950, + 0x1F95F, 0x1F980, - 0x1F985, + 0x1F992, 0x1F9C0, 0x1F9C1, 0x20000, @@ -84730,7 +92162,7 @@ static const UV XPosixPrint_invlist[] = { /* for EBCDIC 037 */ }; static const UV XPosixPunct_invlist[] = { /* for EBCDIC 037 */ - 323, /* Number of elements */ + 337, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -84906,7 +92338,7 @@ static const UV XPosixPunct_invlist[] = { /* for EBCDIC 037 */ 0x2E00, 0x2E2F, 0x2E30, - 0x2E43, + 0x2E45, 0x3001, 0x3004, 0x3008, @@ -85035,14 +92467,26 @@ static const UV XPosixPunct_invlist[] = { /* for EBCDIC 037 */ 0x1123E, 0x112A9, 0x112AA, + 0x1144B, + 0x11450, + 0x1145B, + 0x1145C, + 0x1145D, + 0x1145E, 0x114C6, 0x114C7, 0x115C1, 0x115D8, 0x11641, 0x11644, + 0x11660, + 0x1166D, 0x1173C, 0x1173F, + 0x11C41, + 0x11C46, + 0x11C70, + 0x11C72, 0x12470, 0x12475, 0x16A6E, @@ -85056,7 +92500,9 @@ static const UV XPosixPunct_invlist[] = { /* for EBCDIC 037 */ 0x1BC9F, 0x1BCA0, 0x1DA87, - 0x1DA8C + 0x1DA8C, + 0x1E95E, + 0x1E960 }; static const UV XPosixSpace_invlist[] = { /* for EBCDIC 037 */ @@ -85090,7 +92536,7 @@ static const UV XPosixSpace_invlist[] = { /* for EBCDIC 037 */ }; static const UV XPosixUpper_invlist[] = { /* for EBCDIC 037 */ - 1275, /* Number of elements */ + 1279, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -86288,7 +93734,7 @@ static const UV XPosixUpper_invlist[] = { /* for EBCDIC 037 */ 0xA7A8, 0xA7A9, 0xA7AA, - 0xA7AE, + 0xA7AF, 0xA7B0, 0xA7B5, 0xA7B6, @@ -86297,6 +93743,8 @@ static const UV XPosixUpper_invlist[] = { /* for EBCDIC 037 */ 0xFF3B, 0x10400, 0x10428, + 0x104B0, + 0x104D4, 0x10C80, 0x10CB3, 0x118A0, @@ -86363,6 +93811,8 @@ static const UV XPosixUpper_invlist[] = { /* for EBCDIC 037 */ 0x1D7A9, 0x1D7CA, 0x1D7CB, + 0x1E900, + 0x1E922, 0x1F130, 0x1F14A, 0x1F150, @@ -86372,7 +93822,7 @@ static const UV XPosixUpper_invlist[] = { /* for EBCDIC 037 */ }; static const UV XPosixWord_invlist[] = { /* for EBCDIC 037 */ - 1331, /* Number of elements */ + 1381, /* Number of elements */ 148565664, /* Version and data structure type */ 1, /* 0 if the list starts at 0; 1 if it starts at the element beyond 0 */ @@ -86495,6 +93945,10 @@ static const UV XPosixWord_invlist[] = { /* for EBCDIC 037 */ 0x85C, 0x8A0, 0x8B5, + 0x8B6, + 0x8BE, + 0x8D4, + 0x8E2, 0x8E3, 0x964, 0x966, @@ -86673,7 +94127,7 @@ static const UV XPosixWord_invlist[] = { /* for EBCDIC 037 */ 0xC64, 0xC66, 0xC70, - 0xC81, + 0xC80, 0xC84, 0xC85, 0xC8D, @@ -86715,7 +94169,7 @@ static const UV XPosixWord_invlist[] = { /* for EBCDIC 037 */ 0xD49, 0xD4A, 0xD4F, - 0xD57, + 0xD54, 0xD58, 0xD5F, 0xD64, @@ -86951,6 +94405,8 @@ static const UV XPosixWord_invlist[] = { /* for EBCDIC 037 */ 0x1C4A, 0x1C4D, 0x1C7E, + 0x1C80, + 0x1C89, 0x1CD0, 0x1CD3, 0x1CD4, @@ -86959,7 +94415,7 @@ static const UV XPosixWord_invlist[] = { /* for EBCDIC 037 */ 0x1CFA, 0x1D00, 0x1DF6, - 0x1DFC, + 0x1DFB, 0x1F16, 0x1F18, 0x1F1E, @@ -87130,7 +94586,7 @@ static const UV XPosixWord_invlist[] = { /* for EBCDIC 037 */ 0xA722, 0xA789, 0xA78B, - 0xA7AE, + 0xA7AF, 0xA7B0, 0xA7B8, 0xA7F7, @@ -87138,7 +94594,7 @@ static const UV XPosixWord_invlist[] = { /* for EBCDIC 037 */ 0xA840, 0xA874, 0xA880, - 0xA8C5, + 0xA8C6, 0xA8D0, 0xA8DA, 0xA8E0, @@ -87303,6 +94759,10 @@ static const UV XPosixWord_invlist[] = { /* for EBCDIC 037 */ 0x1049E, 0x104A0, 0x104AA, + 0x104B0, + 0x104D4, + 0x104D8, + 0x104FC, 0x10500, 0x10528, 0x10530, @@ -87407,6 +94867,8 @@ static const UV XPosixWord_invlist[] = { /* for EBCDIC 037 */ 0x11212, 0x11213, 0x11238, + 0x1123E, + 0x1123F, 0x11280, 0x11287, 0x11288, @@ -87451,6 +94913,10 @@ static const UV XPosixWord_invlist[] = { /* for EBCDIC 037 */ 0x1136D, 0x11370, 0x11375, + 0x11400, + 0x1144B, + 0x11450, + 0x1145A, 0x11480, 0x114C6, 0x114C7, @@ -87485,6 +94951,20 @@ static const UV XPosixWord_invlist[] = { /* for EBCDIC 037 */ 0x11900, 0x11AC0, 0x11AF9, + 0x11C00, + 0x11C09, + 0x11C0A, + 0x11C37, + 0x11C38, + 0x11C41, + 0x11C50, + 0x11C5A, + 0x11C72, + 0x11C90, + 0x11C92, + 0x11CA8, + 0x11CA9, + 0x11CB7, 0x12000, 0x1239A, 0x12400, @@ -87521,6 +95001,12 @@ static const UV XPosixWord_invlist[] = { /* for EBCDIC 037 */ 0x16F7F, 0x16F8F, 0x16FA0, + 0x16FE0, + 0x16FE1, + 0x17000, + 0x187ED, + 0x18800, + 0x18AF3, 0x1B000, 0x1B002, 0x1BC00, @@ -87619,10 +95105,24 @@ static const UV XPosixWord_invlist[] = { /* for EBCDIC 037 */ 0x1DAA0, 0x1DAA1, 0x1DAB0, + 0x1E000, + 0x1E007, + 0x1E008, + 0x1E019, + 0x1E01B, + 0x1E022, + 0x1E023, + 0x1E025, + 0x1E026, + 0x1E02B, 0x1E800, 0x1E8C5, 0x1E8D0, 0x1E8D7, + 0x1E900, + 0x1E94B, + 0x1E950, + 0x1E95A, 0x1EE00, 0x1EE04, 0x1EE05, @@ -87735,160 +95235,180 @@ static const UV XPosixXDigit_invlist[] = { /* for EBCDIC 037 */ #if defined(PERL_IN_REGEXEC_C) -static const bool GCB_table[14][14] = { +#define GCB_NOBREAK 0 +#define GCB_BREAKABLE 1 +#define GCB_RI_then_RI 2 +#define GCB_EX_then_EM 3 + +static const U8 GCB_table[19][19] = { /* 'edg' stands for 'EDGE' */ -/* XX CR CN EX L LF LV LVT PP RI SM T V edg */ -/* XX */ { 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1 }, -/* CR */ { 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1 }, -/* CN */ { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }, -/* EX */ { 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1 }, -/* L */ { 1, 1, 1, 0, 0, 1, 0, 0, 1, 1, 0, 1, 0, 1 }, -/* LF */ { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }, -/* LV */ { 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1 }, -/* LVT*/ { 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1 }, -/* PP */ { 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1 }, -/* RI */ { 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1 }, -/* SM */ { 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1 }, -/* T */ { 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1 }, -/* V */ { 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1 }, -/* edg*/ { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0 } +/* XX CR CN EB EBG EM EX GAZ L LF LV LVT PP RI SM T V ZWJ edg */ +/* XX */ { 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 1 }, +/* CR */ { 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1 }, +/* CN */ { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }, +/* EB */ { 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 1 }, +/* EBG*/ { 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 1 }, +/* EM */ { 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 1 }, +/* EX */ { 1, 1, 1, 1, 1, 3, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 1 }, +/* GAZ*/ { 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 1 }, +/* L */ { 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0, 0, 1, 1, 0, 1, 0, 0, 1 }, +/* LF */ { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }, +/* LV */ { 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1 }, +/* LVT*/ { 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 0, 1 }, +/* PP */ { 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1 }, +/* RI */ { 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 2, 0, 1, 1, 0, 1 }, +/* SM */ { 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 1 }, +/* T */ { 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 0, 1 }, +/* V */ { 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1 }, +/* ZWJ*/ { 1, 1, 1, 1, 0, 1, 0, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 1 }, +/* edg*/ { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0 } }; #define LB_NOBREAK 0 #define LB_BREAKABLE 1 #define LB_NOBREAK_EVEN_WITH_SP_BETWEEN 2 -#define LB_CM_foo 3 +#define LB_CM_ZWJ_foo 3 #define LB_SP_foo 6 #define LB_PR_or_PO_then_OP_or_HY 9 #define LB_SY_or_IS_then_various 11 #define LB_HY_or_BA_then_foo 13 -#define LB_various_then_PO_or_PR 16 +#define LB_RI_then_RI 15 +#define LB_various_then_PO_or_PR 32 -static const U8 LB_table[36][36] = { +static const U8 LB_table[39][39] = { /* 'edg' stands for 'EDGE' */ -/* AL BA BB B2 SY CR CP CL CM CB EX GL H2 H3 HL HY ID IS IN JL JT JV LF BK NL NS NU OP PO PR QU RI SP WJ ZW edg */ -/* AL */ { 0, 0, 1, 1, 2, 0, 2, 2, 0, 1, 2, 0, 1, 1, 0, 0, 1, 2, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 0, 0, 1 }, -/* BA */ {14, 0,14,14, 2, 0, 2, 2, 0, 1, 2,14,14,14,14, 0,14, 2,14,14,14,14, 0, 0, 0, 0,14,14,14,14, 0,14, 0, 0, 0, 1 }, -/* BB */ { 0, 0, 0, 0, 2, 0, 2, 2, 0, 1, 2, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 }, -/* B2 */ { 1, 0, 1, 2, 2, 0, 2, 2, 0, 1, 2, 0, 1, 1, 1, 0, 1, 2, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 1, 0, 0, 0, 1 }, -/* SY */ { 1, 0, 1, 1, 2, 0, 2, 2, 0, 1, 2, 0, 1, 1, 0, 0, 1, 2, 1, 1, 1, 1, 0, 0, 0, 0,12, 1,17,17, 0, 1, 0, 0, 0, 1 }, -/* CR */ { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }, -/* CP */ { 0, 0, 1, 1, 2, 0, 2, 2, 0, 1, 2, 0, 1, 1, 0, 0, 1, 2, 1, 1, 1, 1, 0, 0, 0, 2, 0, 1,17,17, 0, 1, 0, 0, 0, 1 }, -/* CL */ { 1, 0, 1, 1, 2, 0, 2, 2, 0, 1, 2, 0, 1, 1, 1, 0, 1, 2, 1, 1, 1, 1, 0, 0, 0, 2, 1, 1,17,17, 0, 1, 0, 0, 0, 1 }, -/* CM */ { 3, 3, 3, 3, 3, 0, 3, 3, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 3, 3, 3, 3, 3, 3, 3, 0, 3, 0, 1 }, -/* CB */ { 1, 1, 1, 1, 2, 0, 2, 2, 0, 1, 2, 0, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 0, 1, 0, 0, 0, 1 }, -/* EX */ { 1, 0, 1, 1, 2, 0, 2, 2, 0, 1, 2, 0, 1, 1, 1, 0, 1, 2, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 1, 0, 0, 0, 1 }, -/* GL */ { 0, 0, 0, 0, 2, 0, 2, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 }, -/* H2 */ { 1, 0, 1, 1, 2, 0, 2, 2, 0, 1, 2, 0, 1, 1, 1, 0, 1, 2, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 1, 0, 0, 0, 1 }, -/* H3 */ { 1, 0, 1, 1, 2, 0, 2, 2, 0, 1, 2, 0, 1, 1, 1, 0, 1, 2, 0, 1, 0, 1, 0, 0, 0, 0, 1, 1, 0, 1, 0, 1, 0, 0, 0, 1 }, -/* HL */ { 0, 0, 1, 1, 2, 0, 2, 2, 0, 1, 2, 0, 1, 1, 0, 0, 1, 2, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 0, 0, 1 }, -/* HY */ {14, 0,14,14, 2, 0, 2, 2, 0, 1, 2,14,14,14,14, 0,14, 2,14,14,14,14, 0, 0, 0, 0,13,14,14,14, 0,14, 0, 0, 0, 1 }, -/* ID */ { 1, 0, 1, 1, 2, 0, 2, 2, 0, 1, 2, 0, 1, 1, 1, 0, 1, 2, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 0, 1, 0, 0, 0, 1 }, -/* IS */ { 0, 0, 1, 1, 2, 0, 2, 2, 0, 1, 2, 0, 1, 1, 0, 0, 1, 2, 1, 1, 1, 1, 0, 0, 0, 0,12, 1,17,17, 0, 1, 0, 0, 0, 1 }, -/* IN */ { 1, 0, 1, 1, 2, 0, 2, 2, 0, 1, 2, 0, 1, 1, 1, 0, 1, 2, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 1, 0, 0, 0, 1 }, -/* JL */ { 1, 0, 1, 1, 2, 0, 2, 2, 0, 1, 2, 0, 0, 0, 1, 0, 1, 2, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 1, 0, 0, 0, 1 }, -/* JT */ { 1, 0, 1, 1, 2, 0, 2, 2, 0, 1, 2, 0, 1, 1, 1, 0, 1, 2, 0, 1, 0, 1, 0, 0, 0, 0, 1, 1, 0, 1, 0, 1, 0, 0, 0, 1 }, -/* JV */ { 1, 0, 1, 1, 2, 0, 2, 2, 0, 1, 2, 0, 1, 1, 1, 0, 1, 2, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 1, 0, 0, 0, 1 }, -/* LF */ { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }, -/* BK */ { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }, -/* NL */ { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }, -/* NS */ { 1, 0, 1, 1, 2, 0, 2, 2, 0, 1, 2, 0, 1, 1, 1, 0, 1, 2, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 1, 0, 0, 0, 1 }, -/* NU */ { 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 2, 0, 1, 1, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1 }, -/* OP */ { 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 0, 2, 0, 1 }, -/* PO */ { 0, 0, 1, 1, 2, 0, 2, 2, 0, 1, 2, 0, 1, 1, 0, 0, 1, 2, 1, 1, 1, 1, 0, 0, 0, 0, 0,10, 1, 1, 0, 1, 0, 0, 0, 1 }, -/* PR */ { 0, 0, 1, 1, 2, 0, 2, 2, 0, 1, 2, 0, 0, 0, 0, 0, 0, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0,10, 1, 1, 0, 1, 0, 0, 0, 1 }, -/* QU */ { 0, 0, 0, 0, 2, 0, 2, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 1 }, -/* RI */ { 1, 0, 1, 1, 2, 0, 2, 2, 0, 1, 2, 0, 1, 1, 1, 0, 1, 2, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1 }, -/* SP */ { 7, 7, 7, 7, 8, 0, 8, 8, 7, 7, 8, 7, 7, 7, 7, 7, 7, 8, 7, 7, 7, 7, 0, 0, 0, 7, 7, 7, 7, 7, 7, 7, 0, 8, 0, 1 }, -/* WJ */ { 0, 0, 0, 0, 2, 0, 2, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 }, -/* ZW */ { 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1 }, -/* edg*/ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } +/* AL BA BB B2 SY CR CP CL CM CB EB EM EX GL H2 H3 HL HY ID IS IN JL JT JV LF BK NL NS NU OP PO PR QU RI SP WJ ZWJ ZW edg */ +/* AL */ { 0, 0, 1, 1, 2, 0, 2, 2, 0, 1, 1, 1, 2, 0, 1, 1, 0, 0, 1, 2, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1 }, +/* BA */ {14, 0,14,14, 2, 0, 2, 2, 0, 1,14,14, 2,14,14,14,14, 0,14, 2,14,14,14,14, 0, 0, 0, 0,14,14,14,14, 0,14, 0, 0, 0, 0, 1 }, +/* BB */ { 0, 0, 0, 0, 2, 0, 2, 2, 0, 1, 0, 0, 2, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 }, +/* B2 */ { 1, 0, 1, 2, 2, 0, 2, 2, 0, 1, 1, 1, 2, 0, 1, 1, 1, 0, 1, 2, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 1 }, +/* SY */ { 1, 0, 1, 1, 2, 0, 2, 2, 0, 1, 1, 1, 2, 0, 1, 1, 0, 0, 1, 2, 1, 1, 1, 1, 0, 0, 0, 0,12, 1,33,33, 0, 1, 0, 0, 0, 0, 1 }, +/* CR */ { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }, +/* CP */ { 0, 0, 1, 1, 2, 0, 2, 2, 0, 1, 1, 1, 2, 0, 1, 1, 0, 0, 1, 2, 1, 1, 1, 1, 0, 0, 0, 2, 0, 1,33,33, 0, 1, 0, 0, 0, 0, 1 }, +/* CL */ { 1, 0, 1, 1, 2, 0, 2, 2, 0, 1, 1, 1, 2, 0, 1, 1, 1, 0, 1, 2, 1, 1, 1, 1, 0, 0, 0, 2, 1, 1,33,33, 0, 1, 0, 0, 0, 0, 1 }, +/* CM */ { 3, 3, 3, 3, 3, 0, 3, 3, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 3, 3, 3, 3, 3, 3, 3, 0, 3, 3, 0, 1 }, +/* CB */ { 1, 1, 1, 1, 2, 0, 2, 2, 0, 1, 1, 1, 2, 0, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 1 }, +/* EB */ { 1, 0, 1, 1, 2, 0, 2, 2, 0, 1, 1, 0, 2, 0, 1, 1, 1, 0, 1, 2, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 0, 1, 0, 0, 0, 0, 1 }, +/* EM */ { 1, 0, 1, 1, 2, 0, 2, 2, 0, 1, 1, 1, 2, 0, 1, 1, 1, 0, 1, 2, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 0, 1, 0, 0, 0, 0, 1 }, +/* EX */ { 1, 0, 1, 1, 2, 0, 2, 2, 0, 1, 1, 1, 2, 0, 1, 1, 1, 0, 1, 2, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 1 }, +/* GL */ { 0, 0, 0, 0, 2, 0, 2, 2, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 }, +/* H2 */ { 1, 0, 1, 1, 2, 0, 2, 2, 0, 1, 1, 1, 2, 0, 1, 1, 1, 0, 1, 2, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 1, 0, 0, 0, 0, 1 }, +/* H3 */ { 1, 0, 1, 1, 2, 0, 2, 2, 0, 1, 1, 1, 2, 0, 1, 1, 1, 0, 1, 2, 0, 1, 0, 1, 0, 0, 0, 0, 1, 1, 0, 1, 0, 1, 0, 0, 0, 0, 1 }, +/* HL */ { 0, 0, 1, 1, 2, 0, 2, 2, 0, 1, 1, 1, 2, 0, 1, 1, 0, 0, 1, 2, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1 }, +/* HY */ {14, 0,14,14, 2, 0, 2, 2, 0, 1,14,14, 2,14,14,14,14, 0,14, 2,14,14,14,14, 0, 0, 0, 0,13,14,14,14, 0,14, 0, 0, 0, 0, 1 }, +/* ID */ { 1, 0, 1, 1, 2, 0, 2, 2, 0, 1, 1, 1, 2, 0, 1, 1, 1, 0, 1, 2, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 0, 1, 0, 0, 0, 0, 1 }, +/* IS */ { 0, 0, 1, 1, 2, 0, 2, 2, 0, 1, 1, 1, 2, 0, 1, 1, 0, 0, 1, 2, 1, 1, 1, 1, 0, 0, 0, 0,12, 1,33,33, 0, 1, 0, 0, 0, 0, 1 }, +/* IN */ { 1, 0, 1, 1, 2, 0, 2, 2, 0, 1, 1, 1, 2, 0, 1, 1, 1, 0, 1, 2, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 1 }, +/* JL */ { 1, 0, 1, 1, 2, 0, 2, 2, 0, 1, 1, 1, 2, 0, 0, 0, 1, 0, 1, 2, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 1, 0, 0, 0, 0, 1 }, +/* JT */ { 1, 0, 1, 1, 2, 0, 2, 2, 0, 1, 1, 1, 2, 0, 1, 1, 1, 0, 1, 2, 0, 1, 0, 1, 0, 0, 0, 0, 1, 1, 0, 1, 0, 1, 0, 0, 0, 0, 1 }, +/* JV */ { 1, 0, 1, 1, 2, 0, 2, 2, 0, 1, 1, 1, 2, 0, 1, 1, 1, 0, 1, 2, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 1, 0, 0, 0, 0, 1 }, +/* LF */ { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }, +/* BK */ { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }, +/* NL */ { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }, +/* NS */ { 1, 0, 1, 1, 2, 0, 2, 2, 0, 1, 1, 1, 2, 0, 1, 1, 1, 0, 1, 2, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 1 }, +/* NU */ { 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 2, 0, 1, 1, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1 }, +/* OP */ { 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 0, 1 }, +/* PO */ { 0, 0, 1, 1, 2, 0, 2, 2, 0, 1, 1, 1, 2, 0, 1, 1, 0, 0, 1, 2, 1, 1, 1, 1, 0, 0, 0, 0, 0,10, 1, 1, 0, 1, 0, 0, 0, 0, 1 }, +/* PR */ { 0, 0, 1, 1, 2, 0, 2, 2, 0, 1, 0, 0, 2, 0, 0, 0, 0, 0, 0, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0,10, 1, 1, 0, 1, 0, 0, 0, 0, 1 }, +/* QU */ { 0, 0, 0, 0, 2, 0, 2, 2, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 1 }, +/* RI */ { 1, 0, 1, 1, 2, 0, 2, 2, 0, 1, 1, 1, 2, 0, 1, 1, 1, 0, 1, 2, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0,15, 0, 0, 0, 0, 1 }, +/* SP */ { 7, 7, 7, 7, 8, 0, 8, 8, 7, 7, 7, 7, 8, 7, 7, 7, 7, 7, 7, 8, 7, 7, 7, 7, 0, 0, 0, 7, 7, 7, 7, 7, 7, 7, 0, 8, 7, 0, 1 }, +/* WJ */ { 0, 0, 0, 0, 2, 0, 2, 2, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 }, +/* ZWJ*/ { 3, 3, 3, 3, 3, 0, 3, 3, 0, 3, 0, 0, 3, 3, 3, 3, 3, 3, 0, 3, 3, 3, 3, 3, 0, 0, 0, 3, 3, 3, 3, 3, 3, 3, 0, 3, 0, 0, 1 }, +/* ZW */ { 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 1 }, +/* edg*/ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }; #define WB_NOBREAK 0 #define WB_BREAKABLE 1 #define WB_hs_then_hs 2 -#define WB_Ex_or_FO_then_foo 3 +#define WB_Ex_or_FO_or_ZWJ_then_foo 3 #define WB_DQ_then_HL 4 #define WB_HL_then_DQ 6 #define WB_LE_or_HL_then_MB_or_ML_or_SQ 8 #define WB_MB_or_ML_or_SQ_then_LE_or_HL 10 #define WB_MB_or_MN_or_SQ_then_NU 12 #define WB_NU_then_MB_or_MN_or_SQ 14 +#define WB_RI_then_RI 16 -static const U8 WB_table[19][19] = { - /* 'Ext' stands for 'Extend'; 'edg' stands for 'EDGE'; 'hs' stands - * for 'Perl_Tailored_HSpace'; 'unk' stands for 'UNKNOWN' */ -/* XX LE CR DQ Ext EX FO HL KA LF ML MN MB NL NU hs RI SQ edg */ -/* XX */ { 1, 1, 1, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }, -/* LE */ { 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 9, 1, 9, 1, 0, 1, 1, 9, 1 }, -/* CR */ { 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 1, 0, 1, 1, 1 }, -/* DQ */ { 1, 1, 1, 1, 0, 1, 0, 5, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }, -/* Ext*/ { 3, 3, 1, 3, 0, 3, 0, 3, 3, 1, 3, 3, 3, 1, 3, 1, 3, 3, 1 }, -/* EX */ { 1, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1 }, -/* FO */ { 3, 3, 1, 3, 0, 3, 0, 3, 3, 1, 3, 3, 3, 1, 3, 1, 3, 3, 1 }, -/* HL */ { 1, 0, 1, 7, 0, 0, 0, 0, 1, 1, 9, 1, 9, 1, 0, 1, 1, 8, 1 }, -/* KA */ { 1, 1, 1, 1, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }, -/* LF */ { 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 1, 0, 1, 1, 1 }, -/* ML */ { 1,11, 1, 1, 0, 1, 0,11, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }, -/* MN */ { 1, 1, 1, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1,13, 1, 1, 1, 1 }, -/* MB */ { 1,11, 1, 1, 0, 1, 0,11, 1, 1, 1, 1, 1, 1,13, 1, 1, 1, 1 }, -/* NL */ { 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 1, 0, 1, 1, 1 }, -/* NU */ { 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 1,15,15, 1, 0, 1, 1,15, 1 }, -/* hs */ { 1, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 1, 1, 0, 1, 2, 1, 1, 1 }, -/* RI */ { 1, 1, 1, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1 }, -/* SQ */ { 1,11, 1, 1, 0, 1, 0,11, 1, 1, 1, 1, 1, 1,13, 1, 1, 1, 1 }, -/* edg*/ { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0 } +static const U8 WB_table[24][24] = { + /* 'Ext' stands for 'Extend'; 'edg' stands for 'EDGE'; 'hs' stands for + * 'Perl_Tailored_HSpace'; 'unk' stands for 'UNKNOWN' */ +/* XX LE CR DQ EB EBG EM Ext EX FO GAZ HL KA LF ML MN MB NL NU hs RI SQ ZWJ edg */ +/* XX */ { 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1 }, +/* LE */ { 1, 0, 1, 1, 1, 1, 1, 0, 0, 0, 1, 0, 1, 1, 9, 1, 9, 1, 0, 1, 1, 9, 0, 1 }, +/* CR */ { 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 1, 0, 1, 1, 1, 1 }, +/* DQ */ { 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 5, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1 }, +/* EB */ { 1, 1, 1, 1, 1, 1, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1 }, +/* EBG*/ { 1, 1, 1, 1, 1, 1, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1 }, +/* EM */ { 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1 }, +/* Ext*/ { 3, 3, 1, 3, 3, 3, 3, 0, 3, 0, 3, 3, 3, 1, 3, 3, 3, 1, 3, 1, 3, 3, 0, 1 }, +/* EX */ { 1, 0, 1, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 1 }, +/* FO */ { 3, 3, 1, 3, 3, 3, 3, 0, 3, 0, 3, 3, 3, 1, 3, 3, 3, 1, 3, 1, 3, 3, 0, 1 }, +/* GAZ*/ { 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1 }, +/* HL */ { 1, 0, 1, 7, 1, 1, 1, 0, 0, 0, 1, 0, 1, 1, 9, 1, 9, 1, 0, 1, 1, 8, 0, 1 }, +/* KA */ { 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1 }, +/* LF */ { 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 1, 0, 1, 1, 1, 1 }, +/* ML */ { 1,11, 1, 1, 1, 1, 1, 0, 1, 0, 1,11, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1 }, +/* MN */ { 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1,13, 1, 1, 1, 0, 1 }, +/* MB */ { 1,11, 1, 1, 1, 1, 1, 0, 1, 0, 1,11, 1, 1, 1, 1, 1, 1,13, 1, 1, 1, 0, 1 }, +/* NL */ { 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 1, 0, 1, 1, 1, 1 }, +/* NU */ { 1, 0, 1, 1, 1, 1, 1, 0, 0, 0, 1, 0, 1, 1, 1,15,15, 1, 0, 1, 1,15, 0, 1 }, +/* hs */ { 1, 1, 0, 1, 1, 1, 1, 0, 1, 0, 1, 1, 1, 0, 1, 1, 1, 0, 1, 2, 1, 1, 0, 1 }, +/* RI */ { 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,16, 1, 0, 1 }, +/* SQ */ { 1,11, 1, 1, 1, 1, 1, 0, 1, 0, 1,11, 1, 1, 1, 1, 1, 1,13, 1, 1, 1, 0, 1 }, +/* ZWJ*/ { 3, 3, 1, 3, 3, 0, 3, 0, 3, 0, 0, 3, 3, 1, 3, 3, 3, 1, 3, 1, 3, 3, 0, 1 }, +/* edg*/ { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0 } }; #endif /* defined(PERL_IN_REGEXEC_C) */ /* Generated from: - * cb3170dd603ad12ba0299440e99e8f50a8afde60ade2ffcbf1ff4a8a53854b90 lib/Unicode/UCD.pm - * ae98bec7e4f0564758eed81eca5015481ba32581f8a735a825b71b3bba714450 lib/unicore/ArabicShaping.txt - * 1687fe5994eb7e5c0dab8503fc2a1b3b479d91af9d3b8055941c9bd791f7d0b5 lib/unicore/BidiBrackets.txt - * 350d1302116194b0b21def287434b55c5088098fbc726e879f7420a391965643 lib/unicore/BidiMirroring.txt - * 288fc7b85c76bda296e296c8465f1f4baeb456cb814430dfaa0f546bfbe86b4a lib/unicore/Blocks.txt - * 86e075f2ede997b3fa5965516c75190b5a88bb82d302272d9c3179b7a57af03f lib/unicore/CaseFolding.txt - * 2fafee5be73bf2817ee669c53c504a6c4aa02ac7344194af18511aea2e05d750 lib/unicore/CompositionExclusions.txt - * 302f6d6171dc9c6165db86d0226b7923a64cea06c493d339d35436bf137606a3 lib/unicore/DAge.txt - * ff666dece87dfdbdbf04a2e26a0bfb52c4ba98db1f8965b0b01ddb9e15f97476 lib/unicore/DCoreProperties.txt - * 6cc76100d402d7dd12bd769ac61158b91e71aad58c8333abb848f1b9c9fdde2d lib/unicore/DNormalizationProps.txt - * ccc571829b384b8a2c24b7a62f8aa6a891a6e8c48f08513ef84fd6da26dba4bb lib/unicore/EastAsianWidth.txt - * 2320db06cf88c755ec7b9cfec96dd9e1d774173521dbc3ee7985377c2ab90d32 lib/unicore/HangulSyllableType.txt - * e52216b5fdb04910e06e94f01cabdf70656b0077c92b756c7b38822626d572f2 lib/unicore/IndicPositionalCategory.txt - * 4db71a39102e173095cb8bda8b4c35e78fe6b365e443c584b19f081d8c4894fc lib/unicore/IndicSyllabicCategory.txt - * eeb30346bb545bb45ff16486d9234397bfe1a195bb12b54fc1d9f48f87e8aa5e lib/unicore/Jamo.txt - * 13e2b7087bcca3163272e64e34e480534bd2f8353a0245c26e6642566f59a60d lib/unicore/LineBreak.txt - * 9bb54cd7b5509779f269fa60341bcbfca8da8f17d3c4999e44a5a51671d3c402 lib/unicore/NameAliases.txt - * e4c29d9ceefbe2382af819ac7646265a9e4ea599ce04a90d31bec97cfaa2848f lib/unicore/NamedSequences.txt - * 70d40297f1bf91397fbdab5a770c12100733e67c5c3398446c5e950715d5e535 lib/unicore/PropList.txt - * 03a440f2a4b9151043a6bb53d4a4e528b73238079f9d686dc2a5846e6895588a lib/unicore/PropValueAliases.txt - * 8e8b48c2080d31aa6713f5535aad94a1f7bc9a65cc52563724e5e69b0a3b4196 lib/unicore/PropertyAliases.txt - * 45d42b1ecbac2263c1c63c95104e63ea64313eb99be94542e040aea11c449f6c lib/unicore/ScriptExtensions.txt - * 79fbd73ad82c30fdb67d36a349d12667bd58d3e9da6a8ce7dd26383b637ba85f lib/unicore/Scripts.txt - * fb2025dae3b9b17649b6e379c1cdbddf50641267ca6d2446caeccf4a141fe167 lib/unicore/SpecialCasing.txt - * 38b17e1118206489a7e0ab5d29d7932212d38838df7d3ec025ecb58e8798ec20 lib/unicore/UnicodeData.txt - * 0cedd6e0f5cadf57ce9cfc96beccfd083b0faa0809a631a777cd25f0316bfabb lib/unicore/auxiliary/GCBTest.txt - * 230005412f9a47128e37bc52330766aaa0b5522a53737a89cff66e891e14527a lib/unicore/auxiliary/GraphemeBreakProperty.txt - * 149b14ab93b06c887a958fb16d0ad01193063ef69cc14f10338ae4d0accd6c28 lib/unicore/auxiliary/LBTest.txt - * 41bf82452d71ce15eda8c9bb1bb0c20b72205acaaf503e3cb84734ed8e85d33a lib/unicore/auxiliary/SBTest.txt - * d3b45cdb0a73eeb9d25158336583dfc1e6f64da59537acb0008988b40e6b3b63 lib/unicore/auxiliary/SentenceBreakProperty.txt - * a661f42a54f7cc4dded72a61c508be2b482f912d4b6cf140335010f0c684dbb9 lib/unicore/auxiliary/WBTest.txt - * c255bd2e1f163373510679bf4b272eee97b635bfce2a6550d6c10fe5c917f01a lib/unicore/auxiliary/WordBreakProperty.txt - * 16dac6f1c164a4f52741b71221a8aafb6acb52cd8a436af139da6e93d86efdfb lib/unicore/extracted/DBidiClass.txt - * c4e78efc041668548117f7462af03b28dfbb2caca5d46a1ae78ae0ce0bb26c4a lib/unicore/extracted/DBinaryProperties.txt - * 5886bb44aae8f2821663f742793cb91d4ed0923c6840f3bfb73530e37030abf8 lib/unicore/extracted/DCombiningClass.txt - * 9edba3785ed0e6e46e10f67e2dd0ec3cb0799b7f75f526fe918429576060352e lib/unicore/extracted/DDecompositionType.txt - * b774387f79b27ae4268ae89450f971408dc9bbbb523426482ab4375c962bd922 lib/unicore/extracted/DEastAsianWidth.txt - * ba4207d2464077e807b20caf063041142afc0a8a38c328c5c23b3417c9f2da33 lib/unicore/extracted/DGeneralCategory.txt - * 29fdd151266595eb1b37715937afe0727bb632a2bc1130f0d2314040175df82e lib/unicore/extracted/DJoinGroup.txt - * 7725fe247da06986e43e89fd316b8b22a0619546d0c1ed499a94b25e9164c150 lib/unicore/extracted/DJoinType.txt - * 1a0687fb9c6c4567e853913549df0944fe40821279a3e9cdaa6ab8679bc286fd lib/unicore/extracted/DLineBreak.txt - * 40bcfed3ca727c19e1331f6c33806231d5f7eeeabd2e6a9e06a3740c85d0c250 lib/unicore/extracted/DNumType.txt - * a18d502bad39d527ac5586d7bc93e29f565859e3bcc24ada627eff606d6f5fed lib/unicore/extracted/DNumValues.txt - * 285aef7ed2bf69724b1fa9bba177640636f666e1a5dd0ba5e538d4790129bbfe lib/unicore/mktables - * 462c9aaa608fb2014cd9649af1c5c009485c60b9c8b15b89401fdc10cf6161c6 lib/unicore/version + * 59e717586b720a821ee0d7397679d5322e38b49f6fb7840545aedf669c733b70 lib/Unicode/UCD.pm + * 47cb62a53beea6d0263e2147331c7e751853c9327225d95bbe2d9e1dc3e1aa44 lib/unicore/ArabicShaping.txt + * 153f0a100c315f9f3945e78f57137611d36c44b3a975919c499fd403413fede8 lib/unicore/BidiBrackets.txt + * fbe806975c1bf9fc9960bbaa39ff6290c42c7da8315f9cd459109b024cc1c485 lib/unicore/BidiMirroring.txt + * 612127d4889032e55d82522e4a0c19793bda8aa8da14ecb3c696d17c83e6be13 lib/unicore/Blocks.txt + * 37d40cf8c2c35637f4a04e746814e1fc4eb764c272bed9238a87ee96a4866857 lib/unicore/CaseFolding.txt + * 5623df16856ad4007c60bdfff6f054e087521becd24cb4006be69c3a1d851aee lib/unicore/CompositionExclusions.txt + * 5cb15b04693c43df16e0d304deca049e93b001445d163184e0ff1b7c8c852146 lib/unicore/DAge.txt + * 6662c7e30b572df5d948c092692f52bcc79ab36d49a063a73d6435042db6fb3b lib/unicore/DCoreProperties.txt + * 02d8e12cea7c61a9f3cc5fbf8eaceadf8da23fe83d60c64cf647088830b810cc lib/unicore/DNormalizationProps.txt + * 3382cb4980e0021e9d4312f2d099315cfab6100ce0ff63a22d6937bfa720bcb7 lib/unicore/EastAsianWidth.txt + * cb02ff25c375e78c82afffc852180eae7fc17c2f4434e697107720d05c52b26e lib/unicore/HangulSyllableType.txt + * 850043bc9db08eddb271e43ed9176b865df76745a5fb6e9a4a1d9e54e5036471 lib/unicore/IndicPositionalCategory.txt + * 90a3a00a5f5810850986c9279849b03c2f3133cfeeefb0554e851dd5ad7324dc lib/unicore/IndicSyllabicCategory.txt + * bbd36a8d27f76e0fe0f2b0ca2827ac80da4b4a8d5247f0b0670fcaaac68ae6e1 lib/unicore/Jamo.txt + * e2698584982ccd96e0c688bbcd4d2c48a23805baa0a0084388ef2e50ebd30aad lib/unicore/LineBreak.txt + * 9d5353b1d318e72a63a49aa6a6a051d350382ea44b2cf31fe925bb94ce7e129b lib/unicore/NameAliases.txt + * 009477f536f63016d901aeb1a4c820ad291e30e72ee9eb9ac1dfb6294a8a9bcc lib/unicore/NamedSequences.txt + * f413ea8dbd3858de72f3148b47dd0586019761357d1481e3b65f3a025bc27f82 lib/unicore/PropList.txt + * 56582d9875c1997876cf09305ccfc83448195de5d84d6374c78efaffeca4dfd7 lib/unicore/PropValueAliases.txt + * 047ab0f815b6d1b30a863d6fcbd49e6358e168a3bd6c7189e80ab9863957d222 lib/unicore/PropertyAliases.txt + * cde011921972dffe3e30dcbc7afbf069bf2eb01269097111dd7533b4c524caac lib/unicore/ScriptExtensions.txt + * fba415952f5654145acad220dc2b878f815c673474d2bb4928934e3ba6ccca1d lib/unicore/Scripts.txt + * dfc4f159c5c68328114ff17cd520451714a72ff48657287e5fe2f64344980695 lib/unicore/SpecialCasing.txt + * 68dfc414d28257b9b5d6ddbb8b466c768c00ebdf6cbf7784364a9b6cad55ee8f lib/unicore/UnicodeData.txt + * c76e7ed44a602f85161758ec54d2bcbcb7baf38f97720605a3e81ce02af47061 lib/unicore/auxiliary/GCBTest.txt + * 4bb8931857e0a698fd2ec4a51a84c6de33e48a50d8b4bf0b57d960c41d77a191 lib/unicore/auxiliary/GraphemeBreakProperty.txt + * 0c609ae4a32a89905c004010ef29885df3c60a941311a1a6e16003333d7fcdc8 lib/unicore/auxiliary/LBTest.txt + * 26afdd5f38561167807b0f191af55b05761029ae6be2b7fe85b88f28effc66b5 lib/unicore/auxiliary/SBTest.txt + * 53982766eeaf26674e7e2ec956c52846d52992ea9f4f1a202d488fb5cd76dd10 lib/unicore/auxiliary/SentenceBreakProperty.txt + * 7f60beacc5ec5671edb56db36defc90cfc0016de4fd2bdfde7a3e4ec209840ce lib/unicore/auxiliary/WBTest.txt + * cb2db065c77287e0f1d35b8c9b473d848b7566a1670439f67c357ca393084043 lib/unicore/auxiliary/WordBreakProperty.txt + * 73573a4bee7f7377d936bc1710cd578001d00ba516e72ee54e906ae51a8c1fcb lib/unicore/extracted/DBidiClass.txt + * ae8f55d8bb2bb69a63f70eef38cf5921fc3ba8e06d4d88f37950d32313a14754 lib/unicore/extracted/DBinaryProperties.txt + * cf263ac4848d47264300139f97ed15c2c22896d2cef411483cbe292098c08bea lib/unicore/extracted/DCombiningClass.txt + * 5bac89caf8d1fa23fcbbbf4d49ea0699b680ef1a73cbfa0daaac38c993906a74 lib/unicore/extracted/DDecompositionType.txt + * e17138d36cd91f0e0d16437780a887c5ac637bde0de370b96f08a3424fcc322f lib/unicore/extracted/DEastAsianWidth.txt + * fad25c183f4d439622c6be33c22ed709cdc4ac19feef0250527cf319a06952fe lib/unicore/extracted/DGeneralCategory.txt + * c0d080b188fbe67dead10a3897dd2ca23da862c7f0b03508a92dcf27cd7e1f41 lib/unicore/extracted/DJoinGroup.txt + * 3a8f8642084ed23b0de52af72dea0ff3d0b6928e6c7442832c663899e2b85e9d lib/unicore/extracted/DJoinType.txt + * 37f6186253da9824bdb27f4ad867bfe8c25d4dc6bdb2f05585e40a034675a348 lib/unicore/extracted/DLineBreak.txt + * ef24061b5a5dc93d7e90c2e34530ec757180ee75d872cba65ffc946e52624ae8 lib/unicore/extracted/DNumType.txt + * a197371fec9a1b517058b440841f60f9378d81682084eef8db22a88cb2f96e90 lib/unicore/extracted/DNumValues.txt + * 79a7216aceb1d291f2857085545fdda289518bc540a09bc0a15cde105d76028d lib/unicore/mktables + * cdecb300baad839a6f62791229f551a4fa33f3cbdca08e378dc976466354e778 lib/unicore/version * 913d2f93f3cb6cdf1664db888bf840bc4eb074eef824e082fceda24a9445e60c regen/charset_translations.pl - * 12bd58cb9d5a99f631ca95e269f7f9c90dacaf81020efa5d95a995f3cdc19200 regen/mk_invlists.pl + * 9534d0cc3914fa1f5d574332c3199605c3d14f8691a0729d68d8498ac2b36280 regen/mk_invlists.pl * ex: set ro: */ diff --git a/Master/tlpkg/tlperl/lib/CORE/config.h b/Master/tlpkg/tlperl/lib/CORE/config.h index 6e242f71fa1..35e03ab63a7 100644 --- a/Master/tlpkg/tlperl/lib/CORE/config.h +++ b/Master/tlpkg/tlperl/lib/CORE/config.h @@ -9,7 +9,7 @@ /* Package name : perl5 * Source directory : - * Configuration time: Tue Apr 11 15:40:25 2017 + * Configuration time: Sun Feb 18 10:08:38 2018 * Configured by : siepo * Target system : */ @@ -182,7 +182,7 @@ #define HAS_GETLOGIN /**/ /* HAS_GETPGID: - * This symbol, if defined, indicates to the C program that + * This symbol, if defined, indicates to the C program that * the getpgid(pid) function is available to get the * process group id. */ @@ -641,8 +641,8 @@ * This symbol holds the type used for the second argument to * getgroups() and setgroups(). Usually, this is the same as * gidtype (gid_t) , but sometimes it isn't. - * It can be int, ushort, gid_t, etc... - * It may be necessary to include <sys/types.h> to get any + * It can be int, ushort, gid_t, etc... + * It may be necessary to include <sys/types.h> to get any * typedef'ed information. This is only required if you have * getgroups() or setgroups().. */ @@ -1398,7 +1398,7 @@ * This symbol contains the ~name expanded version of ARCHLIB, to be used * in programs that are not prepared to deal with ~ expansion at run-time. */ -#define ARCHLIB "c:\\tlperl\\lib" /**/ +#define ARCHLIB "c:\\tlperl526\\lib" /**/ /*#define ARCHLIB_EXP "" / **/ /* BIN: @@ -1413,8 +1413,8 @@ * This symbol, if defined, indicates that we'd like to relocate entries * in @INC at run time based on the location of the perl binary. */ -#define BIN "c:\\tlperl\\bin" /**/ -#define BIN_EXP "c:\\tlperl\\bin" /**/ +#define BIN "c:\\tlperl526\\bin" /**/ +#define BIN_EXP "c:\\tlperl526\\bin" /**/ #define PERL_RELOCATABLE_INC "undef" /**/ /* PERL_INC_VERSION_LIST: @@ -1452,7 +1452,7 @@ * This symbol contains the ~name expanded version of PRIVLIB, to be used * in programs that are not prepared to deal with ~ expansion at run-time. */ -#define PRIVLIB "c:\\tlperl\\lib" /**/ +#define PRIVLIB "c:\\tlperl526\\lib" /**/ #define PRIVLIB_EXP (PerlEnv_lib_path(PERL_VERSION_STRING, NULL)) /**/ /* SITEARCH: @@ -1470,7 +1470,7 @@ * This symbol contains the ~name expanded version of SITEARCH, to be used * in programs that are not prepared to deal with ~ expansion at run-time. */ -#define SITEARCH "c:\\tlperl\\site\\lib" /**/ +#define SITEARCH "c:\\tlperl526\\site\\lib" /**/ /*#define SITEARCH_EXP "" / **/ /* SITELIB: @@ -1493,7 +1493,7 @@ * removed. The elements in inc_version_list (inc_version_list.U) can * be tacked onto this variable to generate a list of directories to search. */ -#define SITELIB "c:\\tlperl\\site\\lib" /**/ +#define SITELIB "c:\\tlperl526\\site\\lib" /**/ #define SITELIB_EXP (PerlEnv_sitelib_path(PERL_VERSION_STRING, NULL)) /**/ #define SITELIB_STEM "" /**/ @@ -1538,7 +1538,7 @@ * feature tests from Configure are generally more reliable. */ #define OSNAME "MSWin32" /**/ -#define OSVERS "6.1" /**/ +#define OSVERS "10.0" /**/ /* CAT2: * This macro concatenates 2 tokens together. @@ -1907,9 +1907,34 @@ * LONG_DOUBLE_IS_DOUBLEDOUBLE_128_BIT_BE_BE * LONG_DOUBLE_IS_DOUBLEDOUBLE_128_BIT_LE_BE * LONG_DOUBLE_IS_DOUBLEDOUBLE_128_BIT_BE_LE + * LONG_DOUBLE_IS_VAX_H_FLOAT * LONG_DOUBLE_IS_UNKNOWN_FORMAT * It is only defined if the system supports long doubles. */ +/* LONG_DOUBLE_STYLE_IEEE: + * This symbol, if defined, indicates that the long double + * is any of the IEEE 754 style long doubles: + * LONG_DOUBLE_STYLE_IEEE_STD, LONG_DOUBLE_STYLE_IEEE_EXTENDED, + * LONG_DOUBLE_STYLE_IEEE_DOUBLEDOUBLE. + */ +/* LONG_DOUBLE_STYLE_IEEE_DOUBLEDOUBLE: + * This symbol, if defined, indicates that the long double is + * the 128-bit double-double. + */ +/* LONG_DOUBLE_STYLE_IEEE_EXTENDED: + * This symbol, if defined, indicates that the long double is + * the 80-bit IEEE 754. Note that despite the 'extended' this + * is less than the 'std', since this is an extension of + * the double precision. + */ +/* LONG_DOUBLE_STYLE_IEEE_STD: + * This symbol, if defined, indicates that the long double is + * the 128-bit IEEE 754. + */ +/* LONG_DOUBLE_STYLE_VAX: + * This symbol, if defined, indicates that the long double is + * the 128-bit VAX format H. + */ /*#define HAS_LDEXPL / **/ #define HAS_LONG_DOUBLE /**/ #ifdef HAS_LONG_DOUBLE @@ -1924,9 +1949,15 @@ #define LONG_DOUBLE_IS_DOUBLEDOUBLE_128_BIT_BE_BE 6 #define LONG_DOUBLE_IS_DOUBLEDOUBLE_128_BIT_LE_BE 7 #define LONG_DOUBLE_IS_DOUBLEDOUBLE_128_BIT_BE_LE 8 +#define LONG_DOUBLE_IS_VAX_H_FLOAT 9 #define LONG_DOUBLE_IS_UNKNOWN_FORMAT -1 #define LONG_DOUBLE_IS_DOUBLEDOUBLE_128_BIT_LITTLE_ENDIAN LONG_DOUBLE_IS_DOUBLEDOUBLE_128_BIT_LE_LE /* back-compat */ #define LONG_DOUBLE_IS_DOUBLEDOUBLE_128_BIT_BIG_ENDIAN LONG_DOUBLE_IS_DOUBLEDOUBLE_128_BIT_BE_BE /* back-compat */ +#undef LONG_DOUBLE_STYLE_IEEE +#undef LONG_DOUBLE_STYLE_IEEE_DOUBLEDOUBLE +#define LONG_DOUBLE_STYLE_IEEE_EXTENDED +#undef LONG_DOUBLE_STYLE_IEEE_STD +#undef LONG_DOUBLE_STYLE_VAX #endif /* HAS_LONG_LONG: @@ -2845,6 +2876,13 @@ */ /*#define HAS_FUTIMES / **/ +/* HAS_GAI_STRERROR: + * This symbol, if defined, indicates that the gai_strerror routine + * is available to translate error codes returned by getaddrinfo() + * into human readable strings. + */ +/*#define HAS_GAI_STRERROR / **/ + /* HAS_GETADDRINFO: * This symbol, if defined, indicates that the getaddrinfo() function * is available for use. @@ -3211,9 +3249,19 @@ * This symbol, if defined, indicates that the uselocale routine is * available to set the current locale for the calling thread. */ +/* HAS_QUERYLOCALE: + * This symbol, if defined, indicates that the querylocale routine is + * available to return the name of the locale for a category mask. + */ +/* I_XLOCALE: + * This symbol, if defined, indicates to the C program that it should + * include <xlocale.h> to get uselocale() and its friends. + */ /*#define HAS_NEWLOCALE / **/ /*#define HAS_FREELOCALE / **/ /*#define HAS_USELOCALE / **/ +/*#define HAS_QUERYLOCALE / **/ +/*#define I_XLOCALE / **/ /* HAS_NEXTAFTER: * This symbol, if defined, indicates that the nextafter routine is @@ -3467,6 +3515,13 @@ */ /*#define HAS_FSTATVFS / **/ +/* HAS_STRERROR_L: + * This symbol, if defined, indicates that the strerror_l routine is + * available to return the error message for a given errno value in + * a particular locale (identified by a locale_t object). + */ +/*#define HAS_STRERROR_L / **/ + /* HAS_STRFTIME: * This symbol, if defined, indicates that the strftime routine is * available to do time formatting. @@ -3646,6 +3701,12 @@ */ /*#define HAS_WRITEV / **/ +/* DEFAULT_INC_EXCLUDES_DOT: + * This symbol, if defined, removes the legacy default behavior of + * including '.' at the end of @INC. + */ +#define DEFAULT_INC_EXCLUDES_DOT /**/ + /* USE_DYNAMIC_LOADING: * This symbol, if defined, indicates that dynamic loading of * some sort is available. @@ -3918,8 +3979,46 @@ * DOUBLE_IS_IEEE_754_128_BIT_BIG_ENDIAN * DOUBLE_IS_IEEE_754_64_BIT_MIXED_ENDIAN_LE_BE * DOUBLE_IS_IEEE_754_64_BIT_MIXED_ENDIAN_BE_LE + * DOUBLE_IS_VAX_F_FLOAT + * DOUBLE_IS_VAX_D_FLOAT + * DOUBLE_IS_VAX_G_FLOAT + * DOUBLE_IS_IBM_SINGLE_32_BIT + * DOUBLE_IS_IBM_DOUBLE_64_BIT + * DOUBLE_IS_CRAY_SINGLE_64_BIT * DOUBLE_IS_UNKNOWN_FORMAT */ +/* DOUBLE_HAS_INF: + * This symbol, if defined, indicates that the double has + * the infinity. + */ +/* DOUBLE_HAS_NAN: + * This symbol, if defined, indicates that the double has + * the not-a-number. + */ +/* DOUBLE_HAS_NEGATIVE_ZERO: + * This symbol, if defined, indicates that the double has + * the negative_zero. + */ +/* DOUBLE_HAS_SUBNORMALS: + * This symbol, if defined, indicates that the double has + * the subnormals (denormals). + */ +/* DOUBLE_STYLE_CRAY: + * This symbol, if defined, indicates that the double is + * the 64-bit CRAY mainframe format. + */ +/* DOUBLE_STYLE_IBM: + * This symbol, if defined, indicates that the double is + * the 64-bit IBM mainframe format. + */ +/* DOUBLE_STYLE_IEEE: + * This symbol, if defined, indicates that the double is + * the 64-bit IEEE 754. + */ +/* DOUBLE_STYLE_VAX: + * This symbol, if defined, indicates that the double is + * the 64-bit VAX format D or G. + */ #define DOUBLEKIND 3 /**/ #define DOUBLE_IS_IEEE_754_32_BIT_LITTLE_ENDIAN 1 #define DOUBLE_IS_IEEE_754_32_BIT_BIG_ENDIAN 2 @@ -3929,11 +4028,25 @@ #define DOUBLE_IS_IEEE_754_128_BIT_BIG_ENDIAN 6 #define DOUBLE_IS_IEEE_754_64_BIT_MIXED_ENDIAN_LE_BE 7 #define DOUBLE_IS_IEEE_754_64_BIT_MIXED_ENDIAN_BE_LE 8 +#define DOUBLE_IS_VAX_F_FLOAT 9 +#define DOUBLE_IS_VAX_D_FLOAT 10 +#define DOUBLE_IS_VAX_G_FLOAT 11 +#define DOUBLE_IS_IBM_SINGLE_32_BIT 12 +#define DOUBLE_IS_IBM_DOUBLE_64_BIT 13 +#define DOUBLE_IS_CRAY_SINGLE_64_BIT 14 #define DOUBLE_IS_UNKNOWN_FORMAT -1 /*#define PERL_PRIfldbl "Lf" / **/ /*#define PERL_PRIgldbl "Lg" / **/ /*#define PERL_PRIeldbl "Le" / **/ /*#define PERL_SCNfldbl "Lf" / **/ +#define DOUBLE_HAS_INF +#define DOUBLE_HAS_NAN +#define DOUBLE_HAS_NEGATIVE_ZERO +#define DOUBLE_HAS_SUBNORMALS +#undef DOUBLE_STYLE_CRAY +#undef DOUBLE_STYLE_IBM +#define DOUBLE_STYLE_IEEE +#undef DOUBLE_STYLE_VAX /* DOUBLEMANTBITS: * This symbol, if defined, tells how many mantissa bits diff --git a/Master/tlpkg/tlperl/lib/CORE/cop.h b/Master/tlpkg/tlperl/lib/CORE/cop.h index da295722c6d..0443e24c667 100644 --- a/Master/tlpkg/tlperl/lib/CORE/cop.h +++ b/Master/tlpkg/tlperl/lib/CORE/cop.h @@ -609,10 +609,10 @@ struct block_format { /* Restore old @_ */ #define CX_POP_SAVEARRAY(cx) \ STMT_START { \ - AV *av = GvAV(PL_defgv); \ + AV *cx_pop_savearray_av = GvAV(PL_defgv); \ GvAV(PL_defgv) = cx->blk_sub.savearray; \ cx->blk_sub.savearray = NULL; \ - SvREFCNT_dec(av); \ + SvREFCNT_dec(cx_pop_savearray_av); \ } STMT_END /* junk in @_ spells trouble when cloning CVs and in pp_caller(), so don't @@ -640,8 +640,11 @@ struct block_eval { blku_gimme is actually also only 2 bits, so could be merged with something. */ -#define CxOLD_IN_EVAL(cx) (((cx)->blk_u16) & 0x7F) -#define CxOLD_OP_TYPE(cx) (((cx)->blk_u16) >> 7) +/* blk_u16 bit usage for eval contexts: */ + +#define CxOLD_IN_EVAL(cx) (((cx)->blk_u16) & 0x3F) /* saved PL in_eval */ +#define CxEVAL_TXT_REFCNTED(cx) (((cx)->blk_u16) & 0x40) /* cur_text rc++ */ +#define CxOLD_OP_TYPE(cx) (((cx)->blk_u16) >> 7) /* type of eval op */ /* loop context */ struct block_loop { @@ -961,6 +964,7 @@ L<perlcall>. #define EVAL_KEEPERR 4 /* set by Perl_call_sv if G_KEEPERR */ #define EVAL_INREQUIRE 8 /* The code is being required. */ #define EVAL_RE_REPARSING 0x10 /* eval_sv() called with G_RE_REPARSING */ +/* if adding extra bits, make sure they can fit in CxOLD_OP_TYPE() */ /* Support for switching (stack and block) contexts. * This ensures magic doesn't invalidate local stack and cx pointers. diff --git a/Master/tlpkg/tlperl/lib/CORE/dosish.h b/Master/tlpkg/tlperl/lib/CORE/dosish.h index c1305cdc408..1dc932260a5 100644 --- a/Master/tlpkg/tlperl/lib/CORE/dosish.h +++ b/Master/tlpkg/tlperl/lib/CORE/dosish.h @@ -56,7 +56,7 @@ HINTS_REFCNT_TERM; OP_CHECK_MUTEX_TERM; \ OP_REFCNT_TERM; PERLIO_TERM; MALLOC_TERM; LOCALE_TERM; #endif -#define dXSUB_SYS +#define dXSUB_SYS dNOOP /* USEMYBINMODE * This symbol, if defined, indicates that the program should diff --git a/Master/tlpkg/tlperl/lib/CORE/embed.h b/Master/tlpkg/tlperl/lib/CORE/embed.h index 42c65b2eb04..5352f536f80 100644 --- a/Master/tlpkg/tlperl/lib/CORE/embed.h +++ b/Master/tlpkg/tlperl/lib/CORE/embed.h @@ -27,23 +27,26 @@ /* Hide global symbols */ #define Gv_AMupdate(a,b) Perl_Gv_AMupdate(aTHX_ a,b) +#define _force_out_malformed_utf8_message(a,b,c,d) Perl__force_out_malformed_utf8_message(aTHX_ a,b,c,d) #define _is_in_locale_category(a,b) Perl__is_in_locale_category(aTHX_ a,b) #define _is_uni_FOO(a,b) Perl__is_uni_FOO(aTHX_ a,b) #define _is_uni_perl_idcont(a) Perl__is_uni_perl_idcont(aTHX_ a) #define _is_uni_perl_idstart(a) Perl__is_uni_perl_idstart(aTHX_ a) -#define _is_utf8_FOO(a,b) Perl__is_utf8_FOO(aTHX_ a,b) +#define _is_utf8_FOO(a,b,c,d,e,f,g,h) Perl__is_utf8_FOO(aTHX_ a,b,c,d,e,f,g,h) +#define _is_utf8_FOO_with_len(a,b,c) Perl__is_utf8_FOO_with_len(aTHX_ a,b,c) +#define _is_utf8_char_helper Perl__is_utf8_char_helper #define _is_utf8_idcont(a) Perl__is_utf8_idcont(aTHX_ a) #define _is_utf8_idstart(a) Perl__is_utf8_idstart(aTHX_ a) #define _is_utf8_mark(a) Perl__is_utf8_mark(aTHX_ a) -#define _is_utf8_perl_idcont(a) Perl__is_utf8_perl_idcont(aTHX_ a) -#define _is_utf8_perl_idstart(a) Perl__is_utf8_perl_idstart(aTHX_ a) +#define _is_utf8_perl_idcont_with_len(a,b) Perl__is_utf8_perl_idcont_with_len(aTHX_ a,b) +#define _is_utf8_perl_idstart_with_len(a,b) Perl__is_utf8_perl_idstart_with_len(aTHX_ a,b) #define _is_utf8_xidcont(a) Perl__is_utf8_xidcont(aTHX_ a) #define _is_utf8_xidstart(a) Perl__is_utf8_xidstart(aTHX_ a) #define _to_uni_fold_flags(a,b,c,d) Perl__to_uni_fold_flags(aTHX_ a,b,c,d) -#define _to_utf8_fold_flags(a,b,c,d) Perl__to_utf8_fold_flags(aTHX_ a,b,c,d) -#define _to_utf8_lower_flags(a,b,c,d) Perl__to_utf8_lower_flags(aTHX_ a,b,c,d) -#define _to_utf8_title_flags(a,b,c,d) Perl__to_utf8_title_flags(aTHX_ a,b,c,d) -#define _to_utf8_upper_flags(a,b,c,d) Perl__to_utf8_upper_flags(aTHX_ a,b,c,d) +#define _to_utf8_fold_flags(a,b,c,d,e,f,g) Perl__to_utf8_fold_flags(aTHX_ a,b,c,d,e,f,g) +#define _to_utf8_lower_flags(a,b,c,d,e,f,g) Perl__to_utf8_lower_flags(aTHX_ a,b,c,d,e,f,g) +#define _to_utf8_title_flags(a,b,c,d,e,f,g) Perl__to_utf8_title_flags(aTHX_ a,b,c,d,e,f,g) +#define _to_utf8_upper_flags(a,b,c,d,e,f,g) Perl__to_utf8_upper_flags(aTHX_ a,b,c,d,e,f,g) #define amagic_call(a,b,c,d) Perl_amagic_call(aTHX_ a,b,c,d) #define amagic_deref_call(a,b) Perl_amagic_deref_call(aTHX_ a,b) #define apply_attrs_string(a,b,c,d) Perl_apply_attrs_string(aTHX_ a,b,c,d) @@ -61,6 +64,7 @@ #define av_push(a,b) Perl_av_push(aTHX_ a,b) #define av_shift(a) Perl_av_shift(aTHX_ a) #define av_store(a,b,c) Perl_av_store(aTHX_ a,b,c) +#define av_top_index(a) S_av_top_index(aTHX_ a) #define av_undef(a) Perl_av_undef(aTHX_ a) #define av_unshift(a,b) Perl_av_unshift(aTHX_ a,b) #define block_end(a,b) Perl_block_end(aTHX_ a,b) @@ -217,6 +221,7 @@ #define gv_stashpv(a,b) Perl_gv_stashpv(aTHX_ a,b) #define gv_stashpvn(a,b,c) Perl_gv_stashpvn(aTHX_ a,b,c) #define gv_stashsv(a,b) Perl_gv_stashsv(aTHX_ a,b) +#define hv_bucket_ratio(a) Perl_hv_bucket_ratio(aTHX_ a) #define hv_clear(a) Perl_hv_clear(aTHX_ a) #define hv_clear_placeholders(a) Perl_hv_clear_placeholders(aTHX_ a) #define hv_common(a,b,c,d,e,f,g,h) Perl_hv_common(aTHX_ a,b,c,d,e,f,g,h) @@ -238,12 +243,15 @@ #define init_i18nl14n(a) Perl_init_i18nl14n(aTHX_ a) #define init_stacks() Perl_init_stacks(aTHX) #define init_tm(a) Perl_init_tm(aTHX_ a) -#define instr Perl_instr #define intro_my() Perl_intro_my(aTHX) #define isALNUM_lazy(a) Perl_isALNUM_lazy(aTHX_ a) #define isIDFIRST_lazy(a) Perl_isIDFIRST_lazy(aTHX_ a) -#define is_invariant_string Perl_is_invariant_string +#define is_c9strict_utf8_string S_is_c9strict_utf8_string +#define is_c9strict_utf8_string_loclen S_is_c9strict_utf8_string_loclen #define is_lvalue_sub() Perl_is_lvalue_sub(aTHX) +#define is_safe_syscall(a,b,c,d) S_is_safe_syscall(aTHX_ a,b,c,d) +#define is_strict_utf8_string S_is_strict_utf8_string +#define is_strict_utf8_string_loclen S_is_strict_utf8_string_loclen #define is_uni_alnum(a) Perl_is_uni_alnum(aTHX_ a) #define is_uni_alnum_lc(a) Perl_is_uni_alnum_lc(aTHX_ a) #define is_uni_alnumc(a) Perl_is_uni_alnumc(aTHX_ a) @@ -282,9 +290,11 @@ #define is_utf8_char Perl_is_utf8_char #define is_utf8_cntrl(a) Perl_is_utf8_cntrl(aTHX_ a) #define is_utf8_digit(a) Perl_is_utf8_digit(aTHX_ a) +#define is_utf8_fixed_width_buf_loclen_flags S_is_utf8_fixed_width_buf_loclen_flags #define is_utf8_graph(a) Perl_is_utf8_graph(aTHX_ a) #define is_utf8_idcont(a) Perl_is_utf8_idcont(aTHX_ a) #define is_utf8_idfirst(a) Perl_is_utf8_idfirst(aTHX_ a) +#define is_utf8_invariant_string S_is_utf8_invariant_string #define is_utf8_lower(a) Perl_is_utf8_lower(aTHX_ a) #define is_utf8_mark(a) Perl_is_utf8_mark(aTHX_ a) #define is_utf8_perl_space(a) Perl_is_utf8_perl_space(aTHX_ a) @@ -294,8 +304,11 @@ #define is_utf8_punct(a) Perl_is_utf8_punct(aTHX_ a) #define is_utf8_space(a) Perl_is_utf8_space(aTHX_ a) #define is_utf8_string Perl_is_utf8_string +#define is_utf8_string_flags S_is_utf8_string_flags #define is_utf8_string_loclen Perl_is_utf8_string_loclen +#define is_utf8_string_loclen_flags S_is_utf8_string_loclen_flags #define is_utf8_upper(a) Perl_is_utf8_upper(aTHX_ a) +#define is_utf8_valid_partial_char_flags S_is_utf8_valid_partial_char_flags #define is_utf8_xdigit(a) Perl_is_utf8_xdigit(aTHX_ a) #define is_utf8_xidcont(a) Perl_is_utf8_xidcont(aTHX_ a) #define is_utf8_xidfirst(a) Perl_is_utf8_xidfirst(aTHX_ a) @@ -421,10 +434,10 @@ #define new_numeric(a) Perl_new_numeric(aTHX_ a) #define new_stackinfo(a,b) Perl_new_stackinfo(aTHX_ a,b) #define new_version(a) Perl_new_version(aTHX_ a) -#define ninstr Perl_ninstr #define nothreadhook() Perl_nothreadhook(aTHX) #define op_append_elem(a,b,c) Perl_op_append_elem(aTHX_ a,b,c) #define op_append_list(a,b,c) Perl_op_append_list(aTHX_ a,b,c) +#define op_class(a) Perl_op_class(aTHX_ a) #define op_contextualize(a,b) Perl_op_contextualize(aTHX_ a,b) #define op_convert_list(a,b,c) Perl_op_convert_list(aTHX_ a,b,c) #define op_dump(a) Perl_op_dump(aTHX_ a) @@ -443,7 +456,9 @@ #define pad_add_name_pvn(a,b,c,d,e) Perl_pad_add_name_pvn(aTHX_ a,b,c,d,e) #define pad_add_name_sv(a,b,c,d) Perl_pad_add_name_sv(aTHX_ a,b,c,d) #define pad_alloc(a,b) Perl_pad_alloc(aTHX_ a,b) +#ifndef NO_MATHOMS #define pad_compname_type(a) Perl_pad_compname_type(aTHX_ a) +#endif #define pad_findmy_pv(a,b) Perl_pad_findmy_pv(aTHX_ a,b) #define pad_findmy_pvn(a,b,c) Perl_pad_findmy_pvn(aTHX_ a,b,c) #define pad_findmy_sv(a,b) Perl_pad_findmy_sv(aTHX_ a,b) @@ -632,6 +647,9 @@ #define sv_newmortal() Perl_sv_newmortal(aTHX) #define sv_newref(a) Perl_sv_newref(aTHX_ a) #define sv_nosharing(a) Perl_sv_nosharing(aTHX_ a) +#ifndef NO_MATHOMS +#define sv_nounlocking(a) Perl_sv_nounlocking(aTHX_ a) +#endif #define sv_nv(a) Perl_sv_nv(aTHX_ a) #define sv_peek(a) Perl_sv_peek(aTHX_ a) #define sv_pos_b2u(a,b) Perl_sv_pos_b2u(aTHX_ a,b) @@ -652,18 +670,24 @@ #define sv_report_used() Perl_sv_report_used(aTHX) #define sv_reset(a,b) Perl_sv_reset(aTHX_ a,b) #define sv_rvweaken(a) Perl_sv_rvweaken(aTHX_ a) +#define sv_set_undef(a) Perl_sv_set_undef(aTHX_ a) #define sv_setiv(a,b) Perl_sv_setiv(aTHX_ a,b) #define sv_setiv_mg(a,b) Perl_sv_setiv_mg(aTHX_ a,b) #define sv_setnv(a,b) Perl_sv_setnv(aTHX_ a,b) #define sv_setnv_mg(a,b) Perl_sv_setnv_mg(aTHX_ a,b) #define sv_setpv(a,b) Perl_sv_setpv(aTHX_ a,b) +#define sv_setpv_bufsize(a,b,c) Perl_sv_setpv_bufsize(aTHX_ a,b,c) #define sv_setpv_mg(a,b) Perl_sv_setpv_mg(aTHX_ a,b) #ifndef PERL_IMPLICIT_CONTEXT #define sv_setpvf Perl_sv_setpvf #define sv_setpvf_mg Perl_sv_setpvf_mg #endif +#ifndef NO_MATHOMS #define sv_setpviv(a,b) Perl_sv_setpviv(aTHX_ a,b) +#endif +#ifndef NO_MATHOMS #define sv_setpviv_mg(a,b) Perl_sv_setpviv_mg(aTHX_ a,b) +#endif #define sv_setpvn(a,b,c) Perl_sv_setpvn(aTHX_ a,b,c) #define sv_setpvn_mg(a,b,c) Perl_sv_setpvn_mg(aTHX_ a,b,c) #define sv_setref_iv(a,b,c) Perl_sv_setref_iv(aTHX_ a,b,c) @@ -696,8 +720,6 @@ #define sv_vsetpvf(a,b,c) Perl_sv_vsetpvf(aTHX_ a,b,c) #define sv_vsetpvf_mg(a,b,c) Perl_sv_vsetpvf_mg(aTHX_ a,b,c) #define sv_vsetpvfn(a,b,c,d,e,f,g) Perl_sv_vsetpvfn(aTHX_ a,b,c,d,e,f,g) -#define swash_fetch(a,b,c) Perl_swash_fetch(aTHX_ a,b,c) -#define swash_init(a,b,c,d,e) Perl_swash_init(aTHX_ a,b,c,d,e) #define sync_locale() Perl_sync_locale(aTHX) #define taint_env() Perl_taint_env(aTHX) #define taint_proper(a,b) Perl_taint_proper(aTHX_ a,b) @@ -716,17 +738,20 @@ #define utf16_to_utf8_reversed(a,b,c,d) Perl_utf16_to_utf8_reversed(aTHX_ a,b,c,d) #define utf8_distance(a,b) Perl_utf8_distance(aTHX_ a,b) #define utf8_hop Perl_utf8_hop +#define utf8_hop_back Perl_utf8_hop_back +#define utf8_hop_forward Perl_utf8_hop_forward +#define utf8_hop_safe Perl_utf8_hop_safe #define utf8_length(a,b) Perl_utf8_length(aTHX_ a,b) #define utf8_to_bytes(a,b) Perl_utf8_to_bytes(aTHX_ a,b) #define utf8_to_uvchr(a,b) Perl_utf8_to_uvchr(aTHX_ a,b) #define utf8_to_uvuni(a,b) Perl_utf8_to_uvuni(aTHX_ a,b) #define utf8_to_uvuni_buf(a,b,c) Perl_utf8_to_uvuni_buf(aTHX_ a,b,c) -#define utf8n_to_uvchr(a,b,c,d) Perl_utf8n_to_uvchr(aTHX_ a,b,c,d) +#define utf8n_to_uvchr_error(a,b,c,d,e) Perl_utf8n_to_uvchr_error(aTHX_ a,b,c,d,e) #define utf8n_to_uvuni(a,b,c,d) Perl_utf8n_to_uvuni(aTHX_ a,b,c,d) #define uvoffuni_to_utf8_flags(a,b,c) Perl_uvoffuni_to_utf8_flags(aTHX_ a,b,c) #define uvuni_to_utf8(a,b) Perl_uvuni_to_utf8(aTHX_ a,b) #define uvuni_to_utf8_flags(a,b,c) Perl_uvuni_to_utf8_flags(aTHX_ a,b,c) -#define valid_utf8_to_uvchr(a,b) Perl_valid_utf8_to_uvchr(aTHX_ a,b) +#define valid_utf8_to_uvchr Perl_valid_utf8_to_uvchr #define valid_utf8_to_uvuni(a,b) Perl_valid_utf8_to_uvuni(aTHX_ a,b) #define vcmp(a,b) Perl_vcmp(aTHX_ a,b) #define vcroak(a,b) Perl_vcroak(aTHX_ a,b) @@ -752,12 +777,12 @@ #define whichsig_pvn(a,b) Perl_whichsig_pvn(aTHX_ a,b) #define whichsig_sv(a) Perl_whichsig_sv(aTHX_ a) #define wrap_op_checker(a,b,c) Perl_wrap_op_checker(aTHX_ a,b,c) +#if !(defined(HAS_MEMMEM)) +#define ninstr Perl_ninstr +#endif #if !(defined(HAS_SIGACTION) && defined(SA_SIGINFO)) #define csighandler Perl_csighandler #endif -#if !(defined(NO_MATHOMS)) -#define sv_nounlocking(a) Perl_sv_nounlocking(aTHX_ a) -#endif #if !defined(HAS_BZERO) && !defined(HAS_MEMSET) #define my_bzero Perl_my_bzero #endif @@ -778,9 +803,6 @@ #define my_popen(a,b) Perl_my_popen(aTHX_ a,b) #endif #if !defined(PERL_NO_INLINE_FUNCTIONS) -#define _is_utf8_char_slow S__is_utf8_char_slow -#define append_utf8_from_native_byte S_append_utf8_from_native_byte -#define av_top_index(a) S_av_top_index(aTHX_ a) #define cx_popblock(a) S_cx_popblock(aTHX_ a) #define cx_popeval(a) S_cx_popeval(aTHX_ a) #define cx_popformat(a) S_cx_popformat(aTHX_ a) @@ -799,7 +821,6 @@ #define cx_pushsub(a,b,c,d) S_cx_pushsub(aTHX_ a,b,c,d) #define cx_pushwhen(a) S_cx_pushwhen(aTHX_ a) #define cx_topblock(a) S_cx_topblock(aTHX_ a) -#define is_safe_syscall(a,b,c,d) S_is_safe_syscall(aTHX_ a,b,c,d) #endif #if defined(DEBUGGING) #define pad_setsv(a,b) Perl_pad_setsv(aTHX_ a,b) @@ -844,12 +865,6 @@ #define warn_nocontext Perl_warn_nocontext #define warner_nocontext Perl_warner_nocontext #endif -#if defined(PERL_IN_REGCOMP_C) || defined(PERL_IN_PERL_C) || defined(PERL_IN_UTF8_C) -#define _new_invlist_C_array(a) Perl__new_invlist_C_array(aTHX_ a) -#endif -#if defined(PERL_IN_REGCOMP_C) || defined(PERL_IN_REGEXEC_C) -#define _get_regclass_nonbitmap_data(a,b,c,d,e,f) Perl__get_regclass_nonbitmap_data(aTHX_ a,b,c,d,e,f) -#endif #if defined(PERL_OP_PARENT) #define op_parent Perl_op_parent #endif @@ -923,8 +938,8 @@ #define do_spawn_nowait(a) Perl_do_spawn_nowait(aTHX_ a) #endif #if defined(PERL_CORE) || defined(PERL_EXT) -#define _get_encoding() Perl__get_encoding(aTHX) #define _warn_problematic_locale Perl__warn_problematic_locale +#define append_utf8_from_native_byte S_append_utf8_from_native_byte #define av_reify(a) Perl_av_reify(aTHX_ a) #define current_re_engine() Perl_current_re_engine(aTHX) #define cv_ckproto_len_flags(a,b,c,d,e) Perl_cv_ckproto_len_flags(aTHX_ a,b,c,d,e) @@ -942,29 +957,33 @@ #define reg_temp_copy(a,b) Perl_reg_temp_copy(aTHX_ a,b) #define report_uninit(a) Perl_report_uninit(aTHX_ a) #define sv_magicext_mglob(a) Perl_sv_magicext_mglob(aTHX_ a) +#define sv_only_taint_gmagic S_sv_only_taint_gmagic +#define swash_fetch(a,b,c) Perl_swash_fetch(aTHX_ a,b,c) +#define swash_init(a,b,c,d,e) Perl_swash_init(aTHX_ a,b,c,d,e) #define validate_proto(a,b,c) Perl_validate_proto(aTHX_ a,b,c) #define vivify_defelem(a) Perl_vivify_defelem(aTHX_ a) #define yylex() Perl_yylex(aTHX) # if !defined(PERL_EXT_RE_BUILD) # if defined(PERL_IN_REGCOMP_C) +#define _append_range_to_invlist(a,b,c) S__append_range_to_invlist(aTHX_ a,b,c) +#define _invlist_array_init S__invlist_array_init #define get_invlist_previous_index_addr S_get_invlist_previous_index_addr #define invlist_clear(a) S_invlist_clear(aTHX_ a) +#define invlist_extend(a,b) S_invlist_extend(aTHX_ a,b) +#define invlist_max S_invlist_max #define invlist_previous_index S_invlist_previous_index #define invlist_replace_list_destroys_src(a,b) S_invlist_replace_list_destroys_src(aTHX_ a,b) #define invlist_set_previous_index S_invlist_set_previous_index #define invlist_trim S_invlist_trim # endif # endif -# if !defined(PERL_NO_INLINE_FUNCTIONS) -#define sv_only_taint_gmagic S_sv_only_taint_gmagic -# endif # if defined(DEBUGGING) # if defined(PERL_IN_REGCOMP_C) #define dump_trie(a,b,c,d) S_dump_trie(aTHX_ a,b,c,d) #define dump_trie_interim_list(a,b,c,d,e) S_dump_trie_interim_list(aTHX_ a,b,c,d,e) #define dump_trie_interim_table(a,b,c,d,e) S_dump_trie_interim_table(aTHX_ a,b,c,d,e) #define dumpuntil(a,b,c,d,e,f,g,h) S_dumpuntil(aTHX_ a,b,c,d,e,f,g,h) -#define put_charclass_bitmap_innards(a,b,c,d,e) S_put_charclass_bitmap_innards(aTHX_ a,b,c,d,e) +#define put_charclass_bitmap_innards(a,b,c,d,e,f) S_put_charclass_bitmap_innards(aTHX_ a,b,c,d,e,f) #define put_charclass_bitmap_innards_common(a,b,c,d,e,f) S_put_charclass_bitmap_innards_common(aTHX_ a,b,c,d,e,f) #define put_charclass_bitmap_innards_invlist(a,b) S_put_charclass_bitmap_innards_invlist(aTHX_ a,b) #define put_code_point(a,b) S_put_code_point(aTHX_ a,b) @@ -984,6 +1003,11 @@ #endif # endif # endif +# if defined(DEBUGGING) && defined(ENABLE_REGEX_SETS_DEBUGGING) +# if defined(PERL_IN_REGCOMP_C) +#define dump_regex_sets_structures(a,b,c,d) S_dump_regex_sets_structures(aTHX_ a,b,c,d) +# endif +# endif # if defined(PERL_ANY_COW) #define sv_setsv_cow(a,b) Perl_sv_setsv_cow(aTHX_ a,b) # endif @@ -991,8 +1015,6 @@ #define sv_or_pv_pos_u2b(a,b,c,d) S_sv_or_pv_pos_u2b(aTHX_ a,b,c,d) # endif # if defined(PERL_IN_REGCOMP_C) -#define _append_range_to_invlist(a,b,c) S__append_range_to_invlist(aTHX_ a,b,c) -#define _invlist_array_init S__invlist_array_init #define _make_exactf_invlist(a,b) S__make_exactf_invlist(aTHX_ a,b) #define add_above_Latin1_folds(a,b,c) S_add_above_Latin1_folds(aTHX_ a,b,c) #define add_cp_to_invlist(a,b) S_add_cp_to_invlist(aTHX_ a,b) @@ -1011,13 +1033,11 @@ #define handle_regex_sets(a,b,c,d,e) S_handle_regex_sets(aTHX_ a,b,c,d,e) #define invlist_clone(a) S_invlist_clone(aTHX_ a) #define invlist_contents(a,b) S_invlist_contents(aTHX_ a,b) -#define invlist_extend(a,b) S_invlist_extend(aTHX_ a,b) #define invlist_highest S_invlist_highest #define invlist_is_iterating S_invlist_is_iterating #define invlist_iterfinish S_invlist_iterfinish #define invlist_iterinit S_invlist_iterinit #define invlist_iternext S_invlist_iternext -#define invlist_max S_invlist_max #define invlist_set_len(a,b,c) S_invlist_set_len(aTHX_ a,b,c) #define is_ssc_worth_it S_is_ssc_worth_it #define join_exact(a,b,c,d,e,f,g) S_join_exact(aTHX_ a,b,c,d,e,f,g) @@ -1029,7 +1049,6 @@ #define reg(a,b,c,d) S_reg(aTHX_ a,b,c,d) #define reg2Lanode(a,b,c,d) S_reg2Lanode(aTHX_ a,b,c,d) #define reg_node(a,b) S_reg_node(aTHX_ a,b) -#define reg_recode(a,b) S_reg_recode(aTHX_ a,b) #define reg_scan_name(a,b) S_reg_scan_name(aTHX_ a,b) #define reg_skipcomment S_reg_skipcomment #define reganode(a,b,c) S_reganode(aTHX_ a,b,c) @@ -1063,8 +1082,10 @@ # endif # if defined(PERL_IN_REGCOMP_C) || defined(PERL_IN_PERL_C) || defined(PERL_IN_UTF8_C) #define _invlistEQ(a,b,c) Perl__invlistEQ(aTHX_ a,b,c) +#define _new_invlist_C_array(a) Perl__new_invlist_C_array(aTHX_ a) # endif # if defined(PERL_IN_REGCOMP_C) || defined(PERL_IN_REGEXEC_C) +#define _get_regclass_nonbitmap_data(a,b,c,d,e,f) Perl__get_regclass_nonbitmap_data(aTHX_ a,b,c,d,e,f) #define _load_PL_utf8_foldclosures() Perl__load_PL_utf8_foldclosures(aTHX) #ifndef PERL_IMPLICIT_CONTEXT #define re_printf Perl_re_printf @@ -1104,29 +1125,36 @@ #define advance_one_LB(a,b,c) S_advance_one_LB(aTHX_ a,b,c) #define advance_one_SB(a,b,c) S_advance_one_SB(aTHX_ a,b,c) #define advance_one_WB(a,b,c,d) S_advance_one_WB(aTHX_ a,b,c,d) +#define backup_one_GCB(a,b,c) S_backup_one_GCB(aTHX_ a,b,c) #define backup_one_LB(a,b,c) S_backup_one_LB(aTHX_ a,b,c) #define backup_one_SB(a,b,c) S_backup_one_SB(aTHX_ a,b,c) #define backup_one_WB(a,b,c,d) S_backup_one_WB(aTHX_ a,b,c,d) #define find_byclass(a,b,c,d,e) S_find_byclass(aTHX_ a,b,c,d,e) -#define isFOO_lc(a,b) S_isFOO_lc(aTHX_ a,b) #define isFOO_utf8_lc(a,b) S_isFOO_utf8_lc(aTHX_ a,b) -#define isGCB S_isGCB +#define isGCB(a,b,c,d,e) S_isGCB(aTHX_ a,b,c,d,e) #define isLB(a,b,c,d,e,f) S_isLB(aTHX_ a,b,c,d,e,f) #define isSB(a,b,c,d,e,f) S_isSB(aTHX_ a,b,c,d,e,f) #define isWB(a,b,c,d,e,f,g) S_isWB(aTHX_ a,b,c,d,e,f,g) #define reg_check_named_buff_matched S_reg_check_named_buff_matched -#define regcppop(a,b) S_regcppop(aTHX_ a,b) -#define regcppush(a,b,c) S_regcppush(aTHX_ a,b,c) +#define regcp_restore(a,b,c) S_regcp_restore(aTHX_ a,b,c _aDEPTH) +#define regcppop(a,b) S_regcppop(aTHX_ a,b _aDEPTH) +#define regcppush(a,b,c) S_regcppush(aTHX_ a,b,c _aDEPTH) #define reghop3 S_reghop3 #define reghop4 S_reghop4 #define reghopmaybe3 S_reghopmaybe3 #define reginclass(a,b,c,d,e) S_reginclass(aTHX_ a,b,c,d,e) #define regmatch(a,b,c) S_regmatch(aTHX_ a,b,c) -#define regrepeat(a,b,c,d,e,f) S_regrepeat(aTHX_ a,b,c,d,e,f) +#define regrepeat(a,b,c,d,e) S_regrepeat(aTHX_ a,b,c,d,e _aDEPTH) #define regtry(a,b) S_regtry(aTHX_ a,b) #define to_byte_substr(a) S_to_byte_substr(aTHX_ a) #define to_utf8_substr(a) S_to_utf8_substr(aTHX_ a) # endif +# if defined(PERL_IN_REGEXEC_C) || defined(PERL_IN_TOKE_C) +#define _is_grapheme(a,b,c,d) Perl__is_grapheme(aTHX_ a,b,c,d) +# endif +# if defined(PERL_IN_REGEXEC_C) || defined(PERL_IN_UTF8_C) +#define isFOO_lc(a,b) Perl_isFOO_lc(aTHX_ a,b) +# endif # if defined(PERL_IN_UTF8_C) || defined(PERL_IN_REGCOMP_C) || defined(PERL_IN_REGEXEC_C) #define _to_fold_latin1(a,b,c,d) Perl__to_fold_latin1(aTHX_ a,b,c,d) # endif @@ -1134,6 +1162,9 @@ #ifdef PERL_CORE #define Slab_Alloc(a) Perl_Slab_Alloc(aTHX_ a) #define Slab_Free(a) Perl_Slab_Free(aTHX_ a) +#define _byte_dump_string(a,b,c) Perl__byte_dump_string(aTHX_ a,b,c) +#define abort_execution(a,b) Perl_abort_execution(aTHX_ a,b) +#define alloc_LOGOP(a,b,c) Perl_alloc_LOGOP(aTHX_ a,b,c) #define allocmy(a,b,c) Perl_allocmy(aTHX_ a,b,c) #define amagic_is_enabled(a) Perl_amagic_is_enabled(aTHX_ a) #define apply(a,b,c) Perl_apply(aTHX_ a,b,c) @@ -1194,6 +1225,7 @@ #define core_prototype(a,b,c,d) Perl_core_prototype(aTHX_ a,b,c,d) #define coresub_op(a,b,c) Perl_coresub_op(aTHX_ a,b,c) #define create_eval_scope(a,b) Perl_create_eval_scope(aTHX_ a,b) +#define croak_caller Perl_croak_caller #define croak_no_mem Perl_croak_no_mem #define croak_popstack Perl_croak_popstack #define custom_op_get_field(a,b) Perl_custom_op_get_field(aTHX_ a,b) @@ -1206,6 +1238,7 @@ #define deb_stack_all() Perl_deb_stack_all(aTHX) #define defelem_target(a,b) Perl_defelem_target(aTHX_ a,b) #define delete_eval_scope() Perl_delete_eval_scope(aTHX) +#define delimcpy_no_escape Perl_delimcpy_no_escape #define die_unwind(a) Perl_die_unwind(aTHX_ a) #define do_aexec5(a,b,c,d,e) Perl_do_aexec5(aTHX_ a,b,c,d,e) #define do_dump_pad(a,b,c,d) Perl_do_dump_pad(aTHX_ a,b,c,d) @@ -1318,6 +1351,7 @@ #define newXS_len_flags(a,b,c,d,e,f,g) Perl_newXS_len_flags(aTHX_ a,b,c,d,e,f,g) #define nextargv(a,b) Perl_nextargv(aTHX_ a,b) #define noperl_die Perl_noperl_die +#define notify_parser_that_changed_to_utf8() Perl_notify_parser_that_changed_to_utf8(aTHX) #define oopsAV(a) Perl_oopsAV(aTHX_ a) #define oopsHV(a) Perl_oopsHV(aTHX_ a) #define op_unscope(a) Perl_op_unscope(aTHX_ a) @@ -1331,7 +1365,6 @@ #define pad_push(a,b) Perl_pad_push(aTHX_ a,b) #define pad_swipe(a,b) Perl_pad_swipe(aTHX_ a,b) #define padlist_store(a,b,c) Perl_padlist_store(aTHX_ a,b,c) -#define parse_subsignature() Perl_parse_subsignature(aTHX) #define parse_unicode_opts(a) Perl_parse_unicode_opts(aTHX_ a) #define parser_free(a) Perl_parser_free(aTHX_ a) #define peep(a) Perl_peep(aTHX_ a) @@ -1382,6 +1415,7 @@ #define yyerror_pv(a,b) Perl_yyerror_pv(aTHX_ a,b) #define yyerror_pvn(a,b,c) Perl_yyerror_pvn(aTHX_ a,b,c) #define yyparse(a) Perl_yyparse(aTHX_ a) +#define yyquit() Perl_yyquit(aTHX) #define yyunlex() Perl_yyunlex(aTHX) # if !(defined(DEBUGGING)) # if !defined(NV_PRESERVES_UV) @@ -1454,6 +1488,9 @@ #define printbuf(a,b) S_printbuf(aTHX_ a,b) #define tokereport(a,b) S_tokereport(aTHX_ a,b) # endif +# if defined(USE_LOCALE) && defined(PERL_IN_LOCALE_C) +#define print_collxfrm_input_and_return(a,b,c,d) S_print_collxfrm_input_and_return(aTHX_ a,b,c,d) +# endif # endif # if defined(DEBUG_LEAKING_SCALARS_FORK_DUMP) #define dump_sv_child(a) Perl_dump_sv_child(aTHX_ a) @@ -1527,7 +1564,7 @@ #define gv_fetchmeth_internal(a,b,c,d,e,f) S_gv_fetchmeth_internal(aTHX_ a,b,c,d,e,f) #define gv_init_svtype(a,b) S_gv_init_svtype(aTHX_ a,b) #define gv_is_in_main(a,b,c) S_gv_is_in_main(aTHX_ a,b,c) -#define gv_magicalize(a,b,c,d,e,f) S_gv_magicalize(aTHX_ a,b,c,d,e,f) +#define gv_magicalize(a,b,c,d,e) S_gv_magicalize(aTHX_ a,b,c,d,e) #define gv_magicalize_isa(a) S_gv_magicalize_isa(aTHX_ a) #define gv_stashpvn_internal(a,b,c) S_gv_stashpvn_internal(aTHX_ a,b,c) #define gv_stashsvpvn_cached(a,b,c,d) S_gv_stashsvpvn_cached(aTHX_ a,b,c,d) @@ -1552,6 +1589,11 @@ #define share_hek_flags(a,b,c,d) S_share_hek_flags(aTHX_ a,b,c,d) #define unshare_hek_or_pvn(a,b,c,d) S_unshare_hek_or_pvn(aTHX_ a,b,c,d) # endif +# if defined(PERL_IN_LOCALE_C) || defined(PERL_IN_SV_C) || defined(PERL_IN_MATHOMS_C) +# if defined(USE_LOCALE_COLLATE) +#define _mem_collxfrm(a,b,c,d) Perl__mem_collxfrm(aTHX_ a,b,c,d) +# endif +# endif # if defined(PERL_IN_MALLOC_C) #define adjust_size_and_find_bucket S_adjust_size_and_find_bucket # endif @@ -1770,7 +1812,7 @@ #define lop(a,b,c) S_lop(aTHX_ a,b,c) #define missingterm(a) S_missingterm(aTHX_ a) #define no_op(a,b) S_no_op(aTHX_ a,b) -#define parse_ident(a,b,c,d,e) S_parse_ident(aTHX_ a,b,c,d,e) +#define parse_ident(a,b,c,d,e,f) S_parse_ident(aTHX_ a,b,c,d,e,f) #define pending_ident() S_pending_ident(aTHX) #define scan_const(a) S_scan_const(aTHX_ a) #define scan_formline(a) S_scan_formline(aTHX_ a) @@ -1797,11 +1839,19 @@ # endif # if defined(PERL_IN_UTF8_C) #define _to_utf8_case(a,b,c,d,e,f,g) S__to_utf8_case(aTHX_ a,b,c,d,e,f,g) +#define check_and_deprecate(a,b,c,d,e,f) S_check_and_deprecate(aTHX_ a,b,c,d,e,f) #define check_locale_boundary_crossing(a,b,c,d) S_check_locale_boundary_crossing(aTHX_ a,b,c,d) +#define does_utf8_overflow S_does_utf8_overflow +#define isFF_OVERLONG S_isFF_OVERLONG #define is_utf8_common(a,b,c,d) S_is_utf8_common(aTHX_ a,b,c,d) +#define is_utf8_common_with_len(a,b,c,d,e) S_is_utf8_common_with_len(aTHX_ a,b,c,d,e) +#define is_utf8_cp_above_31_bits S_is_utf8_cp_above_31_bits +#define is_utf8_overlong_given_start_byte_ok S_is_utf8_overlong_given_start_byte_ok #define swash_scan_list_line(a,b,c,d,e,f,g) S_swash_scan_list_line(aTHX_ a,b,c,d,e,f,g) #define swatch_get(a,b,c) S_swatch_get(aTHX_ a,b,c) #define to_lower_latin1 S_to_lower_latin1 +#define unexpected_non_continuation_text(a,b,c,d) S_unexpected_non_continuation_text(aTHX_ a,b,c,d) +#define warn_on_first_deprecated_use(a,b,c,d,e) S_warn_on_first_deprecated_use(aTHX_ a,b,c,d,e) # endif # if defined(PERL_IN_UTF8_C) || defined(PERL_IN_PP_C) #define _to_upper_title_latin1(a,b,c,d) Perl__to_upper_title_latin1(aTHX_ a,b,c,d) @@ -1837,7 +1887,9 @@ # endif # if defined(USE_LOCALE_COLLATE) #define magic_setcollxfrm(a,b) Perl_magic_setcollxfrm(aTHX_ a,b) +#ifndef NO_MATHOMS #define mem_collxfrm(a,b,c) Perl_mem_collxfrm(aTHX_ a,b,c) +#endif # endif # if defined(USE_PERLIO) #define PerlIO_restore_errno(a) Perl_PerlIO_restore_errno(aTHX_ a) diff --git a/Master/tlpkg/tlperl/lib/CORE/embedvar.h b/Master/tlpkg/tlperl/lib/CORE/embedvar.h index 7e551be0215..a33f213efca 100644 --- a/Master/tlpkg/tlperl/lib/CORE/embedvar.h +++ b/Master/tlpkg/tlperl/lib/CORE/embedvar.h @@ -42,6 +42,7 @@ #define PL_AboveLatin1 (vTHX->IAboveLatin1) #define PL_Argv (vTHX->IArgv) +#define PL_Assigned_invlist (vTHX->IAssigned_invlist) #define PL_Cmd (vTHX->ICmd) #define PL_DBcontrol (vTHX->IDBcontrol) #define PL_DBcv (vTHX->IDBcv) @@ -109,6 +110,7 @@ #define PL_curcopdb (vTHX->Icurcopdb) #define PL_curpad (vTHX->Icurpad) #define PL_curpm (vTHX->Icurpm) +#define PL_curpm_under (vTHX->Icurpm_under) #define PL_curstack (vTHX->Icurstack) #define PL_curstackinfo (vTHX->Icurstackinfo) #define PL_curstash (vTHX->Icurstash) @@ -140,7 +142,6 @@ #define PL_e_script (vTHX->Ie_script) #define PL_efloatbuf (vTHX->Iefloatbuf) #define PL_efloatsize (vTHX->Iefloatsize) -#define PL_encoding (vTHX->Iencoding) #define PL_endav (vTHX->Iendav) #define PL_envgv (vTHX->Ienvgv) #define PL_errgv (vTHX->Ierrgv) @@ -168,6 +169,7 @@ #define PL_in_clean_objs (vTHX->Iin_clean_objs) #define PL_in_eval (vTHX->Iin_eval) #define PL_in_load_module (vTHX->Iin_load_module) +#define PL_in_utf8_COLLATE_locale (vTHX->Iin_utf8_COLLATE_locale) #define PL_in_utf8_CTYPE_locale (vTHX->Iin_utf8_CTYPE_locale) #define PL_incgv (vTHX->Iincgv) #define PL_initav (vTHX->Iinitav) @@ -184,7 +186,6 @@ #define PL_lastgotoprobe (vTHX->Ilastgotoprobe) #define PL_laststatval (vTHX->Ilaststatval) #define PL_laststype (vTHX->Ilaststype) -#define PL_lex_encoding (vTHX->Ilex_encoding) #define PL_localizing (vTHX->Ilocalizing) #define PL_localpatches (vTHX->Ilocalpatches) #define PL_lockhook (vTHX->Ilockhook) @@ -196,7 +197,6 @@ #define PL_markstack_max (vTHX->Imarkstack_max) #define PL_markstack_ptr (vTHX->Imarkstack_ptr) #define PL_max_intro_pending (vTHX->Imax_intro_pending) -#define PL_maxo (vTHX->Imaxo) #define PL_maxsysfd (vTHX->Imaxsysfd) #define PL_memory_debug_header (vTHX->Imemory_debug_header) #define PL_mess_sv (vTHX->Imess_sv) @@ -280,6 +280,7 @@ #define PL_scopestack_max (vTHX->Iscopestack_max) #define PL_scopestack_name (vTHX->Iscopestack_name) #define PL_secondgv (vTHX->Isecondgv) +#define PL_seen_deprecated_macro (vTHX->Iseen_deprecated_macro) #define PL_sharehook (vTHX->Isharehook) #define PL_sig_pending (vTHX->Isig_pending) #define PL_sighandlerp (vTHX->Isighandlerp) @@ -308,6 +309,9 @@ #define PL_stderrgv (vTHX->Istderrgv) #define PL_stdingv (vTHX->Istdingv) #define PL_strtab (vTHX->Istrtab) +#define PL_strxfrm_NUL_replacement (vTHX->Istrxfrm_NUL_replacement) +#define PL_strxfrm_is_behaved (vTHX->Istrxfrm_is_behaved) +#define PL_strxfrm_max_cp (vTHX->Istrxfrm_max_cp) #define PL_sub_generation (vTHX->Isub_generation) #define PL_subline (vTHX->Isubline) #define PL_subname (vTHX->Isubname) @@ -363,6 +367,8 @@ #if defined(PERL_GLOBAL_STRUCT) +#define PL_C_locale_obj (my_vars->GC_locale_obj) +#define PL_GC_locale_obj (my_vars->GC_locale_obj) #define PL_appctx (my_vars->Gappctx) #define PL_Gappctx (my_vars->Gappctx) #define PL_check (my_vars->Gcheck) @@ -411,6 +417,10 @@ #define PL_Gperlio_fd_refcnt_size (my_vars->Gperlio_fd_refcnt_size) #define PL_perlio_mutex (my_vars->Gperlio_mutex) #define PL_Gperlio_mutex (my_vars->Gperlio_mutex) +#ifdef __VMS +#define PL_perllib_sep (my_vars->Gperllib_sep) +#define PL_Gperllib_sep (my_vars->Gperllib_sep) +#endif #define PL_ppaddr (my_vars->Gppaddr) #define PL_Gppaddr (my_vars->Gppaddr) #ifdef OS2 diff --git a/Master/tlpkg/tlperl/lib/CORE/feature.h b/Master/tlpkg/tlperl/lib/CORE/feature.h index a527e06e841..838d64883b5 100644 --- a/Master/tlpkg/tlperl/lib/CORE/feature.h +++ b/Master/tlpkg/tlperl/lib/CORE/feature.h @@ -76,12 +76,6 @@ FEATURE_IS_ENABLED("evalbytes")) \ ) -#define FEATURE_POSTDEREF_IS_ENABLED \ - ( \ - CURRENT_FEATURE_BUNDLE == FEATURE_BUNDLE_CUSTOM && \ - FEATURE_IS_ENABLED("postderef") \ - ) - #define FEATURE_ARYBASE_IS_ENABLED \ ( \ CURRENT_FEATURE_BUNDLE <= FEATURE_BUNDLE_511 \ @@ -109,12 +103,6 @@ FEATURE_IS_ENABLED("refaliasing") \ ) -#define FEATURE_LEXSUBS_IS_ENABLED \ - ( \ - CURRENT_FEATURE_BUNDLE == FEATURE_BUNDLE_CUSTOM && \ - FEATURE_IS_ENABLED("lexsubs") \ - ) - #define FEATURE_POSTDEREF_QQ_IS_ENABLED \ ( \ CURRENT_FEATURE_BUNDLE == FEATURE_BUNDLE_523 \ @@ -130,6 +118,12 @@ FEATURE_IS_ENABLED("unieval")) \ ) +#define FEATURE_MYREF_IS_ENABLED \ + ( \ + CURRENT_FEATURE_BUNDLE == FEATURE_BUNDLE_CUSTOM && \ + FEATURE_IS_ENABLED("myref") \ + ) + #define FEATURE_UNICODE_IS_ENABLED \ ( \ (CURRENT_FEATURE_BUNDLE >= FEATURE_BUNDLE_511 && \ diff --git a/Master/tlpkg/tlperl/lib/CORE/gv.h b/Master/tlpkg/tlperl/lib/CORE/gv.h index e3357bc4de6..488f2cc87fe 100644 --- a/Master/tlpkg/tlperl/lib/CORE/gv.h +++ b/Master/tlpkg/tlperl/lib/CORE/gv.h @@ -52,7 +52,6 @@ struct gp { (*({ GV * const _gvname_hek = (GV *) (gv); \ assert(isGV_with_GP(_gvname_hek)); \ assert(SvTYPE(_gvname_hek) == SVt_PVGV || SvTYPE(_gvname_hek) >= SVt_PVLV); \ - assert(!SvVALID(_gvname_hek)); \ &(GvXPVGV(_gvname_hek)->xiv_u.xivu_namehek); \ })) # define GvNAME_get(gv) ({ assert(GvNAME_HEK(gv)); (char *)HEK_KEY(GvNAME_HEK(gv)); }) diff --git a/Master/tlpkg/tlperl/lib/CORE/handy.h b/Master/tlpkg/tlperl/lib/CORE/handy.h index 932a874c260..80f9cf4b764 100644 --- a/Master/tlpkg/tlperl/lib/CORE/handy.h +++ b/Master/tlpkg/tlperl/lib/CORE/handy.h @@ -277,6 +277,15 @@ typedef U64TYPE U64; /* Unused by core; should be deprecated */ #define Ctl(ch) ((ch) & 037) +#if defined(PERL_CORE) || defined(PERL_EXT) +# ifndef MIN +# define MIN(a,b) ((a) < (b) ? (a) : (b)) +# endif +# ifndef MAX +# define MAX(a,b) ((a) > (b) ? (a) : (b)) +# endif +#endif + /* This is a helper macro to avoid preprocessor issues, replaced by nothing * unless under DEBUGGING, where it expands to an assert of its argument, * followed by a comma (hence the comma operator). If we just used a straight @@ -408,14 +417,7 @@ a string/length pair. Perl_gv_fetchpvn_flags(aTHX_ namebeg, len, add, sv_type) #define sv_catxmlpvs(dsv, str, utf8) \ Perl_sv_catxmlpvn(aTHX_ dsv, STR_WITH_LEN(str), utf8) -#define hv_fetchs(hv,key,lval) \ - ((SV **)Perl_hv_common(aTHX_ (hv), NULL, STR_WITH_LEN(key), 0, \ - (lval) ? (HV_FETCH_JUST_SV | HV_FETCH_LVALUE) \ - : HV_FETCH_JUST_SV, NULL, 0)) -#define hv_stores(hv,key,val) \ - ((SV **)Perl_hv_common(aTHX_ (hv), NULL, STR_WITH_LEN(key), 0, \ - (HV_FETCH_ISSTORE|HV_FETCH_JUST_SV), (val), 0)) #define lex_stuff_pvs(pv,flags) Perl_lex_stuff_pvn(aTHX_ STR_WITH_LEN(pv), flags) @@ -472,15 +474,25 @@ Returns zero if non-equal, or non-zero if equal. =cut */ + #define strNE(s1,s2) (strcmp(s1,s2)) #define strEQ(s1,s2) (!strcmp(s1,s2)) #define strLT(s1,s2) (strcmp(s1,s2) < 0) #define strLE(s1,s2) (strcmp(s1,s2) <= 0) #define strGT(s1,s2) (strcmp(s1,s2) > 0) #define strGE(s1,s2) (strcmp(s1,s2) >= 0) + #define strnNE(s1,s2,l) (strncmp(s1,s2,l)) #define strnEQ(s1,s2,l) (!strncmp(s1,s2,l)) +/* These names are controversial, so guarding against their being used in more + * places than they already are. strBEGs and StrStartsWith are potential + * candidates */ +#if defined(PERL_IN_DOIO_C) || defined(PERL_IN_GV_C) || defined(PERL_IN_HV_C) || defined(PERL_IN_LOCALE_C) || defined(PERL_IN_PERL_C) || defined(PERL_IN_TOKE_C) || defined(PERL_EXT) +#define strNEs(s1,s2) (strncmp(s1,"" s2 "", sizeof(s2)-1)) +#define strEQs(s1,s2) (!strncmp(s1,"" s2 "", sizeof(s2)-1)) +#endif + #ifdef HAS_MEMCMP # define memNE(s1,s2,l) (memcmp(s1,s2,l)) # define memEQ(s1,s2,l) (!memcmp(s1,s2,l)) @@ -489,10 +501,22 @@ Returns zero if non-equal, or non-zero if equal. # define memEQ(s1,s2,l) (!bcmp(s1,s2,l)) #endif +/* memEQ and memNE where second comparand is a string constant */ #define memEQs(s1, l, s2) \ - (sizeof(s2)-1 == l && memEQ(s1, ("" s2 ""), (sizeof(s2)-1))) + (((sizeof(s2)-1) == (l)) && memEQ((s1), ("" s2 ""), (sizeof(s2)-1))) #define memNEs(s1, l, s2) !memEQs(s1, l, s2) +/* memEQ and memNE where second comparand is a string constant + * and we can assume the length of s1 is at least that of the string */ +#define _memEQs(s1, s2) \ + (memEQ((s1), ("" s2 ""), (sizeof(s2)-1))) +#define _memNEs(s1, s2) (memNE((s1),("" s2 ""),(sizeof(s2)-1))) + +#define memLT(s1,s2,l) (memcmp(s1,s2,l) < 0) +#define memLE(s1,s2,l) (memcmp(s1,s2,l) <= 0) +#define memGT(s1,s2,l) (memcmp(s1,s2,l) > 0) +#define memGE(s1,s2,l) (memcmp(s1,s2,l) >= 0) + /* * Character classes. * @@ -529,28 +553,50 @@ represented by that octet is (or on non-ASCII platforms, corresponds to) an ASCII character in the named class based on platform, Unicode, and Perl rules. If the input is a number that doesn't fit in an octet, FALSE is returned. -Variant C<isFOO_A> (e.g., C<isALPHA_A()>) is identical to the base function -with no suffix C<"_A">. +Variant C<isI<FOO>_A> (e.g., C<isALPHA_A()>) is identical to the base function +with no suffix C<"_A">. This variant is used to emphasize by its name that +only ASCII-range characters can return TRUE. -Variant C<isFOO_L1> imposes the Latin-1 (or EBCDIC equivlalent) character set +Variant C<isI<FOO>_L1> imposes the Latin-1 (or EBCDIC equivalent) character set onto the platform. That is, the code points that are ASCII are unaffected, since ASCII is a subset of Latin-1. But the non-ASCII code points are treated as if they are Latin-1 characters. For example, C<isWORDCHAR_L1()> will return true when called with the code point 0xDF, which is a word character in both ASCII and EBCDIC (though it represents different characters in each). -Variant C<isFOO_uvchr> is like the C<isFOO_L1> variant, but accepts any UV code +Variant C<isI<FOO>_uvchr> is like the C<isI<FOO>_L1> variant, but accepts any UV code point as input. If the code point is larger than 255, Unicode rules are used to determine if it is in the character class. For example, C<isWORDCHAR_uvchr(0x100)> returns TRUE, since 0x100 is LATIN CAPITAL LETTER A WITH MACRON in Unicode, and is a word character. -Variant C<isFOO_utf8> is like C<isFOO_uvchr>, but the input is a pointer to a -(known to be well-formed) UTF-8 encoded string (C<U8*> or C<char*>, and -possibly containing embedded C<NUL> characters). The classification of just -the first (possibly multi-byte) character in the string is tested. - -Variant C<isFOO_LC> is like the C<isFOO_A> and C<isFOO_L1> variants, but the +Variant C<isI<FOO>_utf8_safe> is like C<isI<FOO>_uvchr>, but is used for UTF-8 +encoded strings. Each call classifies one character, even if the string +contains many. This variant takes two parameters. The first, C<p>, is a +pointer to the first byte of the character to be classified. (Recall that it +may take more than one byte to represent a character in UTF-8 strings.) The +second parameter, C<e>, points to anywhere in the string beyond the first +character, up to one byte past the end of the entire string. The suffix +C<_safe> in the function's name indicates that it will not attempt to read +beyond S<C<e - 1>>, provided that the constraint S<C<s E<lt> e>> is true (this +is asserted for in C<-DDEBUGGING> builds). If the UTF-8 for the input +character is malformed in some way, the program may croak, or the function may +return FALSE, at the discretion of the implementation, and subject to change in +future releases. + +Variant C<isI<FOO>_utf8> is like C<isI<FOO>_utf8_safe>, but takes just a single +parameter, C<p>, which has the same meaning as the corresponding parameter does +in C<isI<FOO>_utf8_safe>. The function therefore can't check if it is reading +beyond the end of the string. Starting in Perl v5.30, it will take a second +parameter, becoming a synonym for C<isI<FOO>_utf8_safe>. At that time every +program that uses it will have to be changed to successfully compile. In the +meantime, the first runtime call to C<isI<FOO>_utf8> from each call point in the +program will raise a deprecation warning, enabled by default. You can convert +your program now to use C<isI<FOO>_utf8_safe>, and avoid the warnings, and get an +extra measure of protection, or you can wait until v5.30, when you'll be forced +to add the C<e> parameter. + +Variant C<isI<FOO>_LC> is like the C<isI<FOO>_A> and C<isI<FOO>_L1> variants, but the result is based on the current locale, which is what C<LC> in the name stands for. If Perl can determine that the current locale is a UTF-8 locale, it uses the published Unicode rules; otherwise, it uses the C library function that @@ -560,22 +606,43 @@ returned if the input won't fit into an octet. On some platforms where the C library function is known to be defective, Perl changes its result to follow the POSIX standard's rules. -Variant C<isFOO_LC_uvchr> is like C<isFOO_LC>, but is defined on any UV. It -returns the same as C<isFOO_LC> for input code points less than 256, and +Variant C<isI<FOO>_LC_uvchr> is like C<isI<FOO>_LC>, but is defined on any UV. It +returns the same as C<isI<FOO>_LC> for input code points less than 256, and returns the hard-coded, not-affected-by-locale, Unicode results for larger ones. -Variant C<isFOO_LC_utf8> is like C<isFOO_LC_uvchr>, but the input is a pointer -to a (known to be well-formed) UTF-8 encoded string (C<U8*> or C<char*>, and -possibly containing embedded C<NUL> characters). The classification of just -the first (possibly multi-byte) character in the string is tested. +Variant C<isI<FOO>_LC_utf8_safe> is like C<isI<FOO>_LC_uvchr>, but is used for UTF-8 +encoded strings. Each call classifies one character, even if the string +contains many. This variant takes two parameters. The first, C<p>, is a +pointer to the first byte of the character to be classified. (Recall that it +may take more than one byte to represent a character in UTF-8 strings.) The +second parameter, C<e>, points to anywhere in the string beyond the first +character, up to one byte past the end of the entire string. The suffix +C<_safe> in the function's name indicates that it will not attempt to read +beyond S<C<e - 1>>, provided that the constraint S<C<s E<lt> e>> is true (this +is asserted for in C<-DDEBUGGING> builds). If the UTF-8 for the input +character is malformed in some way, the program may croak, or the function may +return FALSE, at the discretion of the implementation, and subject to change in +future releases. + +Variant C<isI<FOO>_LC_utf8> is like C<isI<FOO>_LC_utf8_safe>, but takes just a single +parameter, C<p>, which has the same meaning as the corresponding parameter does +in C<isI<FOO>_LC_utf8_safe>. The function therefore can't check if it is reading +beyond the end of the string. Starting in Perl v5.30, it will take a second +parameter, becoming a synonym for C<isI<FOO>_LC_utf8_safe>. At that time every +program that uses it will have to be changed to successfully compile. In the +meantime, the first runtime call to C<isI<FOO>_LC_utf8> from each call point in +the program will raise a deprecation warning, enabled by default. You can +convert your program now to use C<isI<FOO>_LC_utf8_safe>, and avoid the warnings, +and get an extra measure of protection, or you can wait until v5.30, when +you'll be forced to add the C<e> parameter. =for apidoc Am|bool|isALPHA|char ch Returns a boolean indicating whether the specified character is an alphabetic character, analogous to C<m/[[:alpha:]]/>. See the L<top of this section|/Character classification> for an explanation of variants -C<isALPHA_A>, C<isALPHA_L1>, C<isALPHA_uvchr>, C<isALPHA_utf8>, C<isALPHA_LC>, -C<isALPHA_LC_uvchr>, and C<isALPHA_LC_utf8>. +C<isALPHA_A>, C<isALPHA_L1>, C<isALPHA_uvchr>, C<isALPHA_utf8_safe>, +C<isALPHA_LC>, C<isALPHA_LC_uvchr>, and C<isALPHA_LC_utf8_safe>. =for apidoc Am|bool|isALPHANUMERIC|char ch Returns a boolean indicating whether the specified character is a either an @@ -583,8 +650,8 @@ alphabetic character or decimal digit, analogous to C<m/[[:alnum:]]/>. See the L<top of this section|/Character classification> for an explanation of variants C<isALPHANUMERIC_A>, C<isALPHANUMERIC_L1>, C<isALPHANUMERIC_uvchr>, -C<isALPHANUMERIC_utf8>, C<isALPHANUMERIC_LC>, C<isALPHANUMERIC_LC_uvchr>, and -C<isALPHANUMERIC_LC_utf8>. +C<isALPHANUMERIC_utf8_safe>, C<isALPHANUMERIC_LC>, C<isALPHANUMERIC_LC_uvchr>, +and C<isALPHANUMERIC_LC_utf8_safe>. =for apidoc Am|bool|isASCII|char ch Returns a boolean indicating whether the specified character is one of the 128 @@ -594,36 +661,36 @@ character corresponds to an ASCII character. Variants C<isASCII_A()> and C<isASCII_L1()> are identical to C<isASCII()>. See the L<top of this section|/Character classification> for an explanation of variants -C<isASCII_uvchr>, C<isASCII_utf8>, C<isASCII_LC>, C<isASCII_LC_uvchr>, and -C<isASCII_LC_utf8>. Note, however, that some platforms do not have the C +C<isASCII_uvchr>, C<isASCII_utf8_safe>, C<isASCII_LC>, C<isASCII_LC_uvchr>, and +C<isASCII_LC_utf8_safe>. Note, however, that some platforms do not have the C library routine C<isascii()>. In these cases, the variants whose names contain C<LC> are the same as the corresponding ones without. Also note, that because all ASCII characters are UTF-8 invariant (meaning they have the exact same representation (always a single byte) whether encoded in UTF-8 or not), C<isASCII> will give the correct results when called with any -byte in any string encoded or not in UTF-8. And similarly C<isASCII_utf8> will -work properly on any string encoded or not in UTF-8. +byte in any string encoded or not in UTF-8. And similarly C<isASCII_utf8_safe> +will work properly on any string encoded or not in UTF-8. =for apidoc Am|bool|isBLANK|char ch Returns a boolean indicating whether the specified character is a character considered to be a blank, analogous to C<m/[[:blank:]]/>. See the L<top of this section|/Character classification> for an explanation of variants -C<isBLANK_A>, C<isBLANK_L1>, C<isBLANK_uvchr>, C<isBLANK_utf8>, C<isBLANK_LC>, -C<isBLANK_LC_uvchr>, and C<isBLANK_LC_utf8>. Note, however, that some -platforms do not have the C library routine C<isblank()>. In these cases, the -variants whose names contain C<LC> are the same as the corresponding ones -without. +C<isBLANK_A>, C<isBLANK_L1>, C<isBLANK_uvchr>, C<isBLANK_utf8_safe>, +C<isBLANK_LC>, C<isBLANK_LC_uvchr>, and C<isBLANK_LC_utf8_safe>. Note, +however, that some platforms do not have the C library routine +C<isblank()>. In these cases, the variants whose names contain C<LC> are +the same as the corresponding ones without. =for apidoc Am|bool|isCNTRL|char ch Returns a boolean indicating whether the specified character is a control character, analogous to C<m/[[:cntrl:]]/>. See the L<top of this section|/Character classification> for an explanation of variants -C<isCNTRL_A>, C<isCNTRL_L1>, C<isCNTRL_uvchr>, C<isCNTRL_utf8>, C<isCNTRL_LC>, -C<isCNTRL_LC_uvchr>, and C<isCNTRL_LC_utf8> -On EBCDIC platforms, you almost always want to use the C<isCNTRL_L1> variant. +C<isCNTRL_A>, C<isCNTRL_L1>, C<isCNTRL_uvchr>, C<isCNTRL_utf8_safe>, +C<isCNTRL_LC>, C<isCNTRL_LC_uvchr>, and C<isCNTRL_LC_utf8_safe> On EBCDIC +platforms, you almost always want to use the C<isCNTRL_L1> variant. =for apidoc Am|bool|isDIGIT|char ch Returns a boolean indicating whether the specified character is a @@ -631,24 +698,23 @@ digit, analogous to C<m/[[:digit:]]/>. Variants C<isDIGIT_A> and C<isDIGIT_L1> are identical to C<isDIGIT>. See the L<top of this section|/Character classification> for an explanation of variants -C<isDIGIT_uvchr>, C<isDIGIT_utf8>, C<isDIGIT_LC>, C<isDIGIT_LC_uvchr>, and -C<isDIGIT_LC_utf8>. +C<isDIGIT_uvchr>, C<isDIGIT_utf8_safe>, C<isDIGIT_LC>, C<isDIGIT_LC_uvchr>, and +C<isDIGIT_LC_utf8_safe>. =for apidoc Am|bool|isGRAPH|char ch Returns a boolean indicating whether the specified character is a graphic character, analogous to C<m/[[:graph:]]/>. See the L<top of this section|/Character classification> for an explanation of -variants -C<isGRAPH_A>, C<isGRAPH_L1>, C<isGRAPH_uvchr>, C<isGRAPH_utf8>, C<isGRAPH_LC>, -C<isGRAPH_LC_uvchr>, and C<isGRAPH_LC_utf8>. +variants C<isGRAPH_A>, C<isGRAPH_L1>, C<isGRAPH_uvchr>, C<isGRAPH_utf8_safe>, +C<isGRAPH_LC>, C<isGRAPH_LC_uvchr>, and C<isGRAPH_LC_utf8_safe>. =for apidoc Am|bool|isLOWER|char ch Returns a boolean indicating whether the specified character is a lowercase character, analogous to C<m/[[:lower:]]/>. See the L<top of this section|/Character classification> for an explanation of variants -C<isLOWER_A>, C<isLOWER_L1>, C<isLOWER_uvchr>, C<isLOWER_utf8>, C<isLOWER_LC>, -C<isLOWER_LC_uvchr>, and C<isLOWER_LC_utf8>. +C<isLOWER_A>, C<isLOWER_L1>, C<isLOWER_uvchr>, C<isLOWER_utf8_safe>, +C<isLOWER_LC>, C<isLOWER_LC_uvchr>, and C<isLOWER_LC_utf8_safe>. =for apidoc Am|bool|isOCTAL|char ch Returns a boolean indicating whether the specified character is an @@ -663,9 +729,8 @@ Note that the definition of what is punctuation isn't as straightforward as one might desire. See L<perlrecharclass/POSIX Character Classes> for details. See the L<top of this section|/Character classification> for an explanation of -variants -C<isPUNCT_A>, C<isPUNCT_L1>, C<isPUNCT_uvchr>, C<isPUNCT_utf8>, C<isPUNCT_LC>, -C<isPUNCT_LC_uvchr>, and C<isPUNCT_LC_utf8>. +variants C<isPUNCT_A>, C<isPUNCT_L1>, C<isPUNCT_uvchr>, C<isPUNCT_utf8_safe>, +C<isPUNCT_LC>, C<isPUNCT_LC_uvchr>, and C<isPUNCT_LC_utf8_safe>. =for apidoc Am|bool|isSPACE|char ch Returns a boolean indicating whether the specified character is a @@ -678,8 +743,8 @@ in the non-locale variants, was that C<isSPACE()> did not match a vertical tab. (See L</isPSXSPC> for a macro that matches a vertical tab in all releases.) See the L<top of this section|/Character classification> for an explanation of variants -C<isSPACE_A>, C<isSPACE_L1>, C<isSPACE_uvchr>, C<isSPACE_utf8>, C<isSPACE_LC>, -C<isSPACE_LC_uvchr>, and C<isSPACE_LC_utf8>. +C<isSPACE_A>, C<isSPACE_L1>, C<isSPACE_uvchr>, C<isSPACE_utf8_safe>, +C<isSPACE_LC>, C<isSPACE_LC_uvchr>, and C<isSPACE_LC_utf8_safe>. =for apidoc Am|bool|isPSXSPC|char ch (short for Posix Space) @@ -692,24 +757,23 @@ C<isSPACE()> forms don't match a Vertical Tab, and the C<isPSXSPC()> forms do. Otherwise they are identical. Thus this macro is analogous to what C<m/[[:space:]]/> matches in a regular expression. See the L<top of this section|/Character classification> for an explanation of -variants C<isPSXSPC_A>, C<isPSXSPC_L1>, C<isPSXSPC_uvchr>, C<isPSXSPC_utf8>, -C<isPSXSPC_LC>, C<isPSXSPC_LC_uvchr>, and C<isPSXSPC_LC_utf8>. +variants C<isPSXSPC_A>, C<isPSXSPC_L1>, C<isPSXSPC_uvchr>, C<isPSXSPC_utf8_safe>, +C<isPSXSPC_LC>, C<isPSXSPC_LC_uvchr>, and C<isPSXSPC_LC_utf8_safe>. =for apidoc Am|bool|isUPPER|char ch Returns a boolean indicating whether the specified character is an uppercase character, analogous to C<m/[[:upper:]]/>. See the L<top of this section|/Character classification> for an explanation of -variants -C<isUPPER_A>, C<isUPPER_L1>, C<isUPPER_uvchr>, C<isUPPER_utf8>, C<isUPPER_LC>, -C<isUPPER_LC_uvchr>, and C<isUPPER_LC_utf8>. +variants C<isUPPER_A>, C<isUPPER_L1>, C<isUPPER_uvchr>, C<isUPPER_utf8_safe>, +C<isUPPER_LC>, C<isUPPER_LC_uvchr>, and C<isUPPER_LC_utf8_safe>. =for apidoc Am|bool|isPRINT|char ch Returns a boolean indicating whether the specified character is a printable character, analogous to C<m/[[:print:]]/>. See the L<top of this section|/Character classification> for an explanation of variants -C<isPRINT_A>, C<isPRINT_L1>, C<isPRINT_uvchr>, C<isPRINT_utf8>, C<isPRINT_LC>, -C<isPRINT_LC_uvchr>, and C<isPRINT_LC_utf8>. +C<isPRINT_A>, C<isPRINT_L1>, C<isPRINT_uvchr>, C<isPRINT_utf8_safe>, +C<isPRINT_LC>, C<isPRINT_LC_uvchr>, and C<isPRINT_LC_utf8_safe>. =for apidoc Am|bool|isWORDCHAR|char ch Returns a boolean indicating whether the specified character is a character @@ -721,10 +785,10 @@ C<isALNUM()> is a synonym provided for backward compatibility, even though a word character includes more than the standard C language meaning of alphanumeric. See the L<top of this section|/Character classification> for an explanation of -variants -C<isWORDCHAR_A>, C<isWORDCHAR_L1>, C<isWORDCHAR_uvchr>, and C<isWORDCHAR_utf8>. -C<isWORDCHAR_LC>, C<isWORDCHAR_LC_uvchr>, and C<isWORDCHAR_LC_utf8> are also as -described there, but additionally include the platform's native underscore. +variants C<isWORDCHAR_A>, C<isWORDCHAR_L1>, C<isWORDCHAR_uvchr>, and +C<isWORDCHAR_utf8_safe>. C<isWORDCHAR_LC>, C<isWORDCHAR_LC_uvchr>, and +C<isWORDCHAR_LC_utf8_safe> are also as described there, but additionally +include the platform's native underscore. =for apidoc Am|bool|isXDIGIT|char ch Returns a boolean indicating whether the specified character is a hexadecimal @@ -732,8 +796,8 @@ digit. In the ASCII range these are C<[0-9A-Fa-f]>. Variants C<isXDIGIT_A()> and C<isXDIGIT_L1()> are identical to C<isXDIGIT()>. See the L<top of this section|/Character classification> for an explanation of variants -C<isXDIGIT_uvchr>, C<isXDIGIT_utf8>, C<isXDIGIT_LC>, C<isXDIGIT_LC_uvchr>, and -C<isXDIGIT_LC_utf8>. +C<isXDIGIT_uvchr>, C<isXDIGIT_utf8_safe>, C<isXDIGIT_LC>, C<isXDIGIT_LC_uvchr>, +and C<isXDIGIT_LC_utf8_safe>. =for apidoc Am|bool|isIDFIRST|char ch Returns a boolean indicating whether the specified character can be the first @@ -742,8 +806,8 @@ the official Unicode property C<XID_Start>. The difference is that this returns true only if the input character also matches L</isWORDCHAR>. See the L<top of this section|/Character classification> for an explanation of variants -C<isIDFIRST_A>, C<isIDFIRST_L1>, C<isIDFIRST_uvchr>, C<isIDFIRST_utf8>, -C<isIDFIRST_LC>, C<isIDFIRST_LC_uvchr>, and C<isIDFIRST_LC_utf8>. +C<isIDFIRST_A>, C<isIDFIRST_L1>, C<isIDFIRST_uvchr>, C<isIDFIRST_utf8_safe>, +C<isIDFIRST_LC>, C<isIDFIRST_LC_uvchr>, and C<isIDFIRST_LC_utf8_safe>. =for apidoc Am|bool|isIDCONT|char ch Returns a boolean indicating whether the specified character can be the @@ -753,8 +817,8 @@ difference is that this returns true only if the input character also matches L</isWORDCHAR>. See the L<top of this section|/Character classification> for an explanation of variants C<isIDCONT_A>, C<isIDCONT_L1>, C<isIDCONT_uvchr>, -C<isIDCONT_utf8>, C<isIDCONT_LC>, C<isIDCONT_LC_uvchr>, and -C<isIDCONT_LC_utf8>. +C<isIDCONT_utf8_safe>, C<isIDCONT_LC>, C<isIDCONT_LC_uvchr>, and +C<isIDCONT_LC_utf8_safe>. =head1 Miscellaneous Functions @@ -763,6 +827,16 @@ Returns the value of an ASCII-range hex digit and advances the string pointer. Behaviour is only well defined when isXDIGIT(*str) is true. =head1 Character case changing +Perl uses "full" Unicode case mappings. This means that converting a single +character to another case may result in a sequence of more than one character. +For example, the uppercase of C<E<223>> (LATIN SMALL LETTER SHARP S) is the two +character sequence C<SS>. This presents some complications The lowercase of +all characters in the range 0..255 is a single character, and thus +C<L</toLOWER_L1>> is furnished. But, C<toUPPER_L1> can't exist, as it couldn't +return a valid result for all legal inputs. Instead C<L</toUPPER_uvchr>> has +an API that does allow every possible legal result to be returned.) Likewise +no other function that is crippled by not being able to give the correct +results for the full range of possible inputs has been implemented here. =for apidoc Am|U8|toUPPER|U8 ch Converts the specified character to uppercase. If the input is anything but an @@ -777,18 +851,38 @@ that the buffer pointed to by C<s> needs to be at least C<UTF8_MAXBYTES_CASE+1> bytes since the uppercase version may be longer than the original character. The first code point of the uppercased version is returned -(but note, as explained just above, that there may be more.) +(but note, as explained at L<the top of this section|/Character case +changing>, that there may be more.) -=for apidoc Am|UV|toUPPER_utf8|U8* p|U8* s|STRLEN* lenp -Converts the UTF-8 encoded character at C<p> to its uppercase version, and +=for apidoc Am|UV|toUPPER_utf8_safe|U8* p|U8* e|U8* s|STRLEN* lenp +Converts the first UTF-8 encoded character in the sequence starting at C<p> and +extending no further than S<C<e - 1>> to its uppercase version, and stores that in UTF-8 in C<s>, and its length in bytes in C<lenp>. Note that the buffer pointed to by C<s> needs to be at least C<UTF8_MAXBYTES_CASE+1> bytes since the uppercase version may be longer than the original character. The first code point of the uppercased version is returned -(but note, as explained just above, that there may be more.) +(but note, as explained at L<the top of this section|/Character case +changing>, that there may be more). + +The suffix C<_safe> in the function's name indicates that it will not attempt +to read beyond S<C<e - 1>>, provided that the constraint S<C<s E<lt> e>> is +true (this is asserted for in C<-DDEBUGGING> builds). If the UTF-8 for the +input character is malformed in some way, the program may croak, or the +function may return the REPLACEMENT CHARACTER, at the discretion of the +implementation, and subject to change in future releases. -The input character at C<p> is assumed to be well-formed. +=for apidoc Am|UV|toUPPER_utf8|U8* p|U8* s|STRLEN* lenp +This is like C<L</toUPPER_utf8_safe>>, but doesn't have the C<e> +parameter The function therefore can't check if it is reading +beyond the end of the string. Starting in Perl v5.30, it will take the C<e> +parameter, becoming a synonym for C<toUPPER_utf8_safe>. At that time every +program that uses it will have to be changed to successfully compile. In the +meantime, the first runtime call to C<toUPPER_utf8> from each call point in the +program will raise a deprecation warning, enabled by default. You can convert +your program now to use C<toUPPER_utf8_safe>, and avoid the warnings, and get an +extra measure of protection, or you can wait until v5.30, when you'll be forced +to add the C<e> parameter. =for apidoc Am|U8|toFOLD|U8 ch Converts the specified character to foldcase. If the input is anything but an @@ -804,18 +898,38 @@ that the buffer pointed to by C<s> needs to be at least C<UTF8_MAXBYTES_CASE+1> bytes since the foldcase version may be longer than the original character. The first code point of the foldcased version is returned -(but note, as explained just above, that there may be more.) +(but note, as explained at L<the top of this section|/Character case +changing>, that there may be more). -=for apidoc Am|UV|toFOLD_utf8|U8* p|U8* s|STRLEN* lenp -Converts the UTF-8 encoded character at C<p> to its foldcase version, and +=for apidoc Am|UV|toFOLD_utf8_safe|U8* p|U8* e|U8* s|STRLEN* lenp +Converts the first UTF-8 encoded character in the sequence starting at C<p> and +extending no further than S<C<e - 1>> to its foldcase version, and stores that in UTF-8 in C<s>, and its length in bytes in C<lenp>. Note that the buffer pointed to by C<s> needs to be at least C<UTF8_MAXBYTES_CASE+1> bytes since the foldcase version may be longer than the original character. The first code point of the foldcased version is returned -(but note, as explained just above, that there may be more.) +(but note, as explained at L<the top of this section|/Character case +changing>, that there may be more). -The input character at C<p> is assumed to be well-formed. +The suffix C<_safe> in the function's name indicates that it will not attempt +to read beyond S<C<e - 1>>, provided that the constraint S<C<s E<lt> e>> is +true (this is asserted for in C<-DDEBUGGING> builds). If the UTF-8 for the +input character is malformed in some way, the program may croak, or the +function may return the REPLACEMENT CHARACTER, at the discretion of the +implementation, and subject to change in future releases. + +=for apidoc Am|UV|toFOLD_utf8|U8* p|U8* s|STRLEN* lenp +This is like C<L</toFOLD_utf8_safe>>, but doesn't have the C<e> +parameter The function therefore can't check if it is reading +beyond the end of the string. Starting in Perl v5.30, it will take the C<e> +parameter, becoming a synonym for C<toFOLD_utf8_safe>. At that time every +program that uses it will have to be changed to successfully compile. In the +meantime, the first runtime call to C<toFOLD_utf8> from each call point in the +program will raise a deprecation warning, enabled by default. You can convert +your program now to use C<toFOLD_utf8_safe>, and avoid the warnings, and get an +extra measure of protection, or you can wait until v5.30, when you'll be forced +to add the C<e> parameter. =for apidoc Am|U8|toLOWER|U8 ch Converts the specified character to lowercase. If the input is anything but an @@ -838,18 +952,39 @@ that the buffer pointed to by C<s> needs to be at least C<UTF8_MAXBYTES_CASE+1> bytes since the lowercase version may be longer than the original character. The first code point of the lowercased version is returned -(but note, as explained just above, that there may be more.) +(but note, as explained at L<the top of this section|/Character case +changing>, that there may be more). -=for apidoc Am|UV|toLOWER_utf8|U8* p|U8* s|STRLEN* lenp -Converts the UTF-8 encoded character at C<p> to its lowercase version, and + +=for apidoc Am|UV|toLOWER_utf8_safe|U8* p|U8* e|U8* s|STRLEN* lenp +Converts the first UTF-8 encoded character in the sequence starting at C<p> and +extending no further than S<C<e - 1>> to its lowercase version, and stores that in UTF-8 in C<s>, and its length in bytes in C<lenp>. Note that the buffer pointed to by C<s> needs to be at least C<UTF8_MAXBYTES_CASE+1> bytes since the lowercase version may be longer than the original character. The first code point of the lowercased version is returned -(but note, as explained just above, that there may be more.) +(but note, as explained at L<the top of this section|/Character case +changing>, that there may be more). -The input character at C<p> is assumed to be well-formed. +The suffix C<_safe> in the function's name indicates that it will not attempt +to read beyond S<C<e - 1>>, provided that the constraint S<C<s E<lt> e>> is +true (this is asserted for in C<-DDEBUGGING> builds). If the UTF-8 for the +input character is malformed in some way, the program may croak, or the +function may return the REPLACEMENT CHARACTER, at the discretion of the +implementation, and subject to change in future releases. + +=for apidoc Am|UV|toLOWER_utf8|U8* p|U8* s|STRLEN* lenp +This is like C<L</toLOWER_utf8_safe>>, but doesn't have the C<e> +parameter The function therefore can't check if it is reading +beyond the end of the string. Starting in Perl v5.30, it will take the C<e> +parameter, becoming a synonym for C<toLOWER_utf8_safe>. At that time every +program that uses it will have to be changed to successfully compile. In the +meantime, the first runtime call to C<toLOWER_utf8> from each call point in the +program will raise a deprecation warning, enabled by default. You can convert +your program now to use C<toLOWER_utf8_safe>, and avoid the warnings, and get an +extra measure of protection, or you can wait until v5.30, when you'll be forced +to add the C<e> parameter. =for apidoc Am|U8|toTITLE|U8 ch Converts the specified character to titlecase. If the input is anything but an @@ -866,23 +1001,44 @@ that the buffer pointed to by C<s> needs to be at least C<UTF8_MAXBYTES_CASE+1> bytes since the titlecase version may be longer than the original character. The first code point of the titlecased version is returned -(but note, as explained just above, that there may be more.) +(but note, as explained at L<the top of this section|/Character case +changing>, that there may be more). -=for apidoc Am|UV|toTITLE_utf8|U8* p|U8* s|STRLEN* lenp -Converts the UTF-8 encoded character at C<p> to its titlecase version, and +=for apidoc Am|UV|toTITLE_utf8_safe|U8* p|U8* e|U8* s|STRLEN* lenp +Converts the first UTF-8 encoded character in the sequence starting at C<p> and +extending no further than S<C<e - 1>> to its titlecase version, and stores that in UTF-8 in C<s>, and its length in bytes in C<lenp>. Note that the buffer pointed to by C<s> needs to be at least C<UTF8_MAXBYTES_CASE+1> bytes since the titlecase version may be longer than the original character. The first code point of the titlecased version is returned -(but note, as explained just above, that there may be more.) +(but note, as explained at L<the top of this section|/Character case +changing>, that there may be more). + +The suffix C<_safe> in the function's name indicates that it will not attempt +to read beyond S<C<e - 1>>, provided that the constraint S<C<s E<lt> e>> is +true (this is asserted for in C<-DDEBUGGING> builds). If the UTF-8 for the +input character is malformed in some way, the program may croak, or the +function may return the REPLACEMENT CHARACTER, at the discretion of the +implementation, and subject to change in future releases. -The input character at C<p> is assumed to be well-formed. +=for apidoc Am|UV|toTITLE_utf8|U8* p|U8* s|STRLEN* lenp +This is like C<L</toLOWER_utf8_safe>>, but doesn't have the C<e> +parameter The function therefore can't check if it is reading +beyond the end of the string. Starting in Perl v5.30, it will take the C<e> +parameter, becoming a synonym for C<toTITLE_utf8_safe>. At that time every +program that uses it will have to be changed to successfully compile. In the +meantime, the first runtime call to C<toTITLE_utf8> from each call point in the +program will raise a deprecation warning, enabled by default. You can convert +your program now to use C<toTITLE_utf8_safe>, and avoid the warnings, and get an +extra measure of protection, or you can wait until v5.30, when you'll be forced +to add the C<e> parameter. =cut XXX Still undocumented isVERTWS_uvchr and _utf8; it's unclear what their names -really should be. Also toUPPER_LC and toFOLD_LC, which are subject to change. +really should be. Also toUPPER_LC and toFOLD_LC, which are subject to change, +and aren't general purpose as they don't work on U+DF, and assert against that. Note that these macros are repeated in Devel::PPPort, so should also be patched there. The file as of this writing is cpan/Devel-PPPort/parts/inc/misc @@ -910,7 +1066,10 @@ patched there. The file as of this writing is cpan/Devel-PPPort/parts/inc/misc * of operands. Well, they are, but that is kind of the point. */ #ifndef __COVERITY__ -#define FITS_IN_8_BITS(c) ((sizeof(c) == 1) || !(((WIDEST_UTYPE)(c)) & ~0xFF)) + /* The '| 0' part ensures a compiler error if c is not integer (like e.g., a + * pointer) */ +#define FITS_IN_8_BITS(c) ( (sizeof(c) == 1) \ + || !(((WIDEST_UTYPE)((c) | 0)) & ~0xFF)) #else #define FITS_IN_8_BITS(c) (1) #endif @@ -925,14 +1084,23 @@ patched there. The file as of this writing is cpan/Devel-PPPort/parts/inc/misc /* There is a simple definition of ASCII for ASCII platforms. But the * EBCDIC one isn't so simple, so is defined using table look-up like the * other macros below. - * The '| 0' part ensures that c is an integer (and not e.g. a pointer) */ + * + * The cast here is used instead of '(c) >= 0', because some compilers emit + * a warning that that test is always true when the parameter is an + * unsigned type. khw supposes that it could be written as + * && ((c) == '\0' || (c) > 0) + * to avoid the message, but the cast will likely avoid extra branches even + * with stupid compilers. + * + * The '| 0' part ensures a compiler error if c is not integer (like e.g., + * a pointer) */ # define isASCII(c) ((WIDEST_UTYPE)((c) | 0) < 128) #endif -/* The lower 3 bits in both the ASCII and EBCDIC representations of '0' are 0, - * and the 8 possible permutations of those bits exactly comprise the 8 octal - * digits */ -#define isOCTAL_A(c) cBOOL(FITS_IN_8_BITS(c) && (0xF8 & (c)) == '0') +/* Take the eight possible bit patterns of the lower 3 bits and you get the + * lower 3 bits of the 8 octal digits, in both ASCII and EBCDIC, so those bits + * can be ignored. If the rest match '0', we have an octal */ +#define isOCTAL_A(c) (((WIDEST_UTYPE)((c) | 0) & ~7) == '0') #ifdef H_PERL /* If have access to perl.h, lookup in its table */ @@ -955,7 +1123,7 @@ patched there. The file as of this writing is cpan/Devel-PPPort/parts/inc/misc # define _CC_PRINT 6 /* [:print:] */ # define _CC_ALPHANUMERIC 7 /* [:alnum:] */ # define _CC_GRAPH 8 /* [:graph:] */ -# define _CC_CASED 9 /* [:lower:] and [:upper:] under /i */ +# define _CC_CASED 9 /* [:lower:] or [:upper:] under /i */ #define _FIRST_NON_SWASH_CC 10 /* The character classes above are implemented with swashes. The second group @@ -968,6 +1136,9 @@ patched there. The file as of this writing is cpan/Devel-PPPort/parts/inc/misc * above ASCII in the latter case) */ # define _CC_SPACE 10 /* \s, [:space:] */ +# define _CC_PSXSPC _CC_SPACE /* XXX Temporary, can be removed + when the deprecated isFOO_utf8() + functions are removed */ # define _CC_BLANK 11 /* [:blank:] */ # define _CC_XDIGIT 12 /* [:xdigit:] */ # define _CC_CNTRL 13 /* [:cntrl:] */ @@ -987,6 +1158,9 @@ patched there. The file as of this writing is cpan/Devel-PPPort/parts/inc/misc # define _CC_IS_IN_SOME_FOLD 22 # define _CC_MNEMONIC_CNTRL 23 +# define _CC_IDCONT 24 /* XXX Temporary, can be removed when the deprecated + isFOO_utf8() functions are removed */ + /* This next group is only used on EBCDIC platforms, so theoretically could be * shared with something entirely different that's only on ASCII platforms */ # define _CC_UTF8_START_BYTE_IS_FOR_AT_LEAST_SURROGATE 28 @@ -1141,82 +1315,75 @@ END_EXTERN_C /* If we don't have perl.h, we are compiling a utility program. Below we * hard-code various macro definitions that wouldn't otherwise be available - * to it. Most are coded based on first principals. First some ones common - * to both ASCII and EBCDIC */ + * to it. Most are coded based on first principles. These are written to + * avoid EBCDIC vs. ASCII #ifdef's as much as possible. */ # define isDIGIT_A(c) ((c) <= '9' && (c) >= '0') # define isBLANK_A(c) ((c) == ' ' || (c) == '\t') -# define isSPACE_A(c) (isBLANK_A(c) \ - || (c) == '\n' \ - || (c) == '\r' \ - || (c) == '\v' \ +# define isSPACE_A(c) (isBLANK_A(c) \ + || (c) == '\n' \ + || (c) == '\r' \ + || (c) == '\v' \ || (c) == '\f') -# ifdef EBCDIC /* There are gaps between 'i' and 'j'; 'r' and 's'. Same - for uppercase. This is ordered to exclude most things - early */ -# define isLOWER_A(c) ((c) >= 'a' && (c) <= 'z' \ - && ((c) <= 'i' \ - || ((c) >= 'j' && (c) <= 'r') \ - || (c) >= 's')) -# define isUPPER_A(c) ((c) >= 'A' && (c) <= 'Z' \ - && ((c) <= 'I' \ - || ((c) >= 'J' && (c) <= 'R') \ - || (c) >= 'S')) -# else /* ASCII platform. */ -# define isLOWER_A(c) ((c) >= 'a' && (c) <= 'z') -# define isUPPER_A(c) ((c) <= 'Z' && (c) >= 'A') -# endif - - /* Some more ASCII, non-ASCII common definitions */ + /* On EBCDIC, there are gaps between 'i' and 'j'; 'r' and 's'. Same for + * uppercase. The tests for those aren't necessary on ASCII, but hurt only + * performance (if optimization isn't on), and allow the same code to be + * used for both platform types */ +# define isLOWER_A(c) ((c) >= 'a' && (c) <= 'z' \ + && ( (c) <= 'i' \ + || ((c) >= 'j' && (c) <= 'r') \ + || (c) >= 's')) +# define isUPPER_A(c) ((c) >= 'A' && (c) <= 'Z' \ + && ( (c) <= 'I' \ + || ((c) >= 'J' && (c) <= 'R') \ + || (c) >= 'S')) # define isALPHA_A(c) (isUPPER_A(c) || isLOWER_A(c)) # define isALPHANUMERIC_A(c) (isALPHA_A(c) || isDIGIT_A(c)) # define isWORDCHAR_A(c) (isALPHANUMERIC_A(c) || (c) == '_') # define isIDFIRST_A(c) (isALPHA_A(c) || (c) == '_') -# define isXDIGIT_A(c) (isDIGIT_A(c) \ - || ((c) >= 'a' && (c) <= 'f') \ +# define isXDIGIT_A(c) (isDIGIT_A(c) \ + || ((c) >= 'a' && (c) <= 'f') \ || ((c) <= 'F' && (c) >= 'A')) +# define isPUNCT_A(c) ((c) == '-' || (c) == '!' || (c) == '"' \ + || (c) == '#' || (c) == '$' || (c) == '%' \ + || (c) == '&' || (c) == '\'' || (c) == '(' \ + || (c) == ')' || (c) == '*' || (c) == '+' \ + || (c) == ',' || (c) == '.' || (c) == '/' \ + || (c) == ':' || (c) == ';' || (c) == '<' \ + || (c) == '=' || (c) == '>' || (c) == '?' \ + || (c) == '@' || (c) == '[' || (c) == '\\' \ + || (c) == ']' || (c) == '^' || (c) == '_' \ + || (c) == '`' || (c) == '{' || (c) == '|' \ + || (c) == '}' || (c) == '~') +# define isGRAPH_A(c) (isALPHANUMERIC_A(c) || isPUNCT_A(c)) +# define isPRINT_A(c) (isGRAPH_A(c) || (c) == ' ') # ifdef EBCDIC -# define isPUNCT_A(c) ((c) == '-' || (c) == '!' || (c) == '"' \ - || (c) == '#' || (c) == '$' || (c) == '%' \ - || (c) == '&' || (c) == '\'' || (c) == '(' \ - || (c) == ')' || (c) == '*' || (c) == '+' \ - || (c) == ',' || (c) == '.' || (c) == '/' \ - || (c) == ':' || (c) == ';' || (c) == '<' \ - || (c) == '=' || (c) == '>' || (c) == '?' \ - || (c) == '@' || (c) == '[' || (c) == '\\' \ - || (c) == ']' || (c) == '^' || (c) == '_' \ - || (c) == '`' || (c) == '{' || (c) == '|' \ - || (c) == '}' || (c) == '~') -# define isGRAPH_A(c) (isALPHANUMERIC_A(c) || isPUNCT_A(c)) -# define isPRINT_A(c) (isGRAPH_A(c) || (c) == ' ') - -# ifdef QUESTION_MARK_CTRL -# define _isQMC(c) ((c) == QUESTION_MARK_CTRL) -# else -# define _isQMC(c) 0 -# endif - - /* I (khw) can't think of a way to define all the ASCII controls - * without resorting to a libc (locale-sensitive) call. But we know - * that all controls but the question-mark one are in the range 0-0x3f. - * This makes sure that all the controls that have names are included, - * and all controls that are also considered ASCII in the locale. This - * may include more or fewer than what it actually should, but the - * wrong ones are less-important controls, so likely won't impact - * things (keep in mind that this is compiled only if perl.h isn't - * available). The question mark control is included if available */ -# define isCNTRL_A(c) (((c) < 0x40 && isascii(c)) \ - || (c) == '\0' || (c) == '\a' || (c) == '\b' \ - || (c) == '\f' || (c) == '\n' || (c) == '\r' \ - || (c) == '\t' || (c) == '\v' || _isQMC(c)) - + /* The below is accurate for the 3 EBCDIC code pages traditionally + * supported by perl. The only difference between them in the controls + * is the position of \n, and that is represented symbolically below */ +# define isCNTRL_A(c) ((c) == '\0' || (c) == '\a' || (c) == '\b' \ + || (c) == '\f' || (c) == '\n' || (c) == '\r' \ + || (c) == '\t' || (c) == '\v' \ + || ((c) <= 3 && (c) >= 1) /* SOH, STX, ETX */ \ + || (c) == 7 /* U+7F DEL */ \ + || ((c) <= 0x13 && (c) >= 0x0E) /* SO, SI */ \ + /* DLE, DC[1-3] */ \ + || (c) == 0x18 /* U+18 CAN */ \ + || (c) == 0x19 /* U+19 EOM */ \ + || ((c) <= 0x1F && (c) >= 0x1C) /* [FGRU]S */ \ + || (c) == 0x26 /* U+17 ETB */ \ + || (c) == 0x27 /* U+1B ESC */ \ + || (c) == 0x2D /* U+05 ENQ */ \ + || (c) == 0x2E /* U+06 ACK */ \ + || (c) == 0x32 /* U+16 SYN */ \ + || (c) == 0x37 /* U+04 EOT */ \ + || (c) == 0x3C /* U+14 DC4 */ \ + || (c) == 0x3D /* U+15 NAK */ \ + || (c) == 0x3F)/* U+1A SUB */ # define isASCII(c) (isCNTRL_A(c) || isPRINT_A(c)) -# else /* ASCII platform; things are simpler, and isASCII has already - been defined */ -# define isGRAPH_A(c) (((c) > ' ' && (c) < 127)) -# define isPRINT_A(c) (isGRAPH_A(c) || (c) == ' ') -# define isPUNCT_A(c) (isGRAPH_A(c) && (! isALPHANUMERIC_A(c))) -# define isCNTRL_A(c) (isASCII(c) && (! isPRINT_A(c))) +# else /* isASCII is already defined for ASCII platforms, so can use that to + define isCNTRL */ +# define isCNTRL_A(c) (isASCII(c) && ! isPRINT_A(c)) # endif /* The _L1 macros may be unnecessary for the utilities; I (khw) added them @@ -1532,11 +1699,11 @@ END_EXTERN_C * don't, but experiments show that gcc optimizes them out anyway. */ /* Note that all ignore 'use bytes' */ -#define _generic_uvchr(classnum, above_latin1, c) ((c) < 256 \ - ? _generic_isCC(c, classnum) \ +#define _generic_uvchr(classnum, above_latin1, c) ((c) < 256 \ + ? _generic_isCC(c, classnum) \ : above_latin1(c)) -#define _generic_swash_uvchr(classnum, c) ((c) < 256 \ - ? _generic_isCC(c, classnum) \ +#define _generic_swash_uvchr(classnum, c) ((c) < 256 \ + ? _generic_isCC(c, classnum) \ : _is_uni_FOO(classnum, c)) #define isALPHA_uvchr(c) _generic_swash_uvchr(_CC_ALPHA, c) #define isALPHANUMERIC_uvchr(c) _generic_swash_uvchr(_CC_ALPHANUMERIC, c) @@ -1545,8 +1712,10 @@ END_EXTERN_C #define isCNTRL_uvchr(c) isCNTRL_L1(c) /* All controls are in Latin1 */ #define isDIGIT_uvchr(c) _generic_swash_uvchr(_CC_DIGIT, c) #define isGRAPH_uvchr(c) _generic_swash_uvchr(_CC_GRAPH, c) -#define isIDCONT_uvchr(c) _generic_uvchr(_CC_WORDCHAR, _is_uni_perl_idcont, c) -#define isIDFIRST_uvchr(c) _generic_uvchr(_CC_IDFIRST, _is_uni_perl_idstart, c) +#define isIDCONT_uvchr(c) \ + _generic_uvchr(_CC_WORDCHAR, _is_uni_perl_idcont, c) +#define isIDFIRST_uvchr(c) \ + _generic_uvchr(_CC_IDFIRST, _is_uni_perl_idstart, c) #define isLOWER_uvchr(c) _generic_swash_uvchr(_CC_LOWER, c) #define isPRINT_uvchr(c) _generic_swash_uvchr(_CC_PRINT, c) @@ -1633,33 +1802,75 @@ END_EXTERN_C * 'utf8' parameter. This relies on the fact that ASCII characters have the * same representation whether utf8 or not. Note that it assumes that the utf8 * has been validated, and ignores 'use bytes' */ -#define _generic_utf8(classnum, p, utf8) (UTF8_IS_INVARIANT(*(p)) \ - ? _generic_isCC(*(p), classnum) \ - : (UTF8_IS_DOWNGRADEABLE_START(*(p))) \ - ? _generic_isCC( \ - EIGHT_BIT_UTF8_TO_NATIVE(*(p), \ - *((p)+1 )), \ - classnum) \ - : utf8) +#define _base_generic_utf8(enum_name, name, p, use_locale ) \ + _is_utf8_FOO(CAT2(_CC_, enum_name), \ + (const U8 *) p, \ + "is" STRINGIFY(name) "_utf8", \ + "is" STRINGIFY(name) "_utf8_safe", \ + 1, use_locale, __FILE__,__LINE__) + +#define _generic_utf8(name, p) _base_generic_utf8(name, name, p, 0) + +/* The "_safe" macros make sure that we don't attempt to read beyond 'e', but + * they don't otherwise go out of their way to look for malformed UTF-8. If + * they can return accurate results without knowing if the input is otherwise + * malformed, they do so. For example isASCII is accurate in spite of any + * non-length malformations because it looks only at a single byte. Likewise + * isDIGIT looks just at the first byte for code points 0-255, as all UTF-8 + * variant ones return FALSE. But, if the input has to be well-formed in order + * for the results to be accurate, the macros will test and if malformed will + * call a routine to die + * + * Except for toke.c, the macros do assume that e > p, asserting that on + * DEBUGGING builds. Much code that calls these depends on this being true, + * for other reasons. toke.c is treated specially as using the regular + * assertion breaks it in many ways. All strings that these operate on there + * are supposed to have an extra NUL character at the end, so that *e = \0. A + * bunch of code in toke.c assumes that this is true, so the assertion allows + * for that */ +#ifdef PERL_IN_TOKE_C +# define _utf8_safe_assert(p,e) ((e) > (p) || ((e) == (p) && *(p) == '\0')) +#else +# define _utf8_safe_assert(p,e) ((e) > (p)) +#endif + +#define _generic_utf8_safe(classnum, p, e, above_latin1) \ + (__ASSERT_(_utf8_safe_assert(p, e)) \ + (UTF8_IS_INVARIANT(*(p))) \ + ? _generic_isCC(*(p), classnum) \ + : (UTF8_IS_DOWNGRADEABLE_START(*(p)) \ + ? ((LIKELY((e) - (p) > 1 && UTF8_IS_CONTINUATION(*((p)+1)))) \ + ? _generic_isCC(EIGHT_BIT_UTF8_TO_NATIVE(*(p), *((p)+1 )), \ + classnum) \ + : (_force_out_malformed_utf8_message( \ + (U8 *) (p), (U8 *) (e), 0, 1), 0)) \ + : above_latin1)) /* Like the above, but calls 'above_latin1(p)' to get the utf8 value. * 'above_latin1' can be a macro */ -#define _generic_func_utf8(classnum, above_latin1, p) \ - _generic_utf8(classnum, p, above_latin1(p)) +#define _generic_func_utf8_safe(classnum, above_latin1, p, e) \ + _generic_utf8_safe(classnum, p, e, above_latin1(p, e)) +#define _generic_non_swash_utf8_safe(classnum, above_latin1, p, e) \ + _generic_utf8_safe(classnum, p, e, \ + (UNLIKELY((e) - (p) < UTF8SKIP(p)) \ + ? (_force_out_malformed_utf8_message( \ + (U8 *) (p), (U8 *) (e), 0, 1), 0) \ + : above_latin1(p))) /* Like the above, but passes classnum to _isFOO_utf8(), instead of having an * 'above_latin1' parameter */ -#define _generic_swash_utf8(classnum, p) \ - _generic_utf8(classnum, p, _is_utf8_FOO(classnum, p)) +#define _generic_swash_utf8_safe(classnum, p, e) \ +_generic_utf8_safe(classnum, p, e, _is_utf8_FOO_with_len(classnum, p, e)) /* Like the above, but should be used only when it is known that there are no * characters in the upper-Latin1 range (128-255 on ASCII platforms) which the * class is TRUE for. Hence it can skip the tests for this range. * 'above_latin1' should include its arguments */ -#define _generic_utf8_no_upper_latin1(classnum, p, above_latin1) \ - (UTF8_IS_INVARIANT(*(p)) \ - ? _generic_isCC(*(p), classnum) \ - : (UTF8_IS_ABOVE_LATIN1(*(p))) \ - ? above_latin1 \ - : 0) +#define _generic_utf8_safe_no_upper_latin1(classnum, p, e, above_latin1) \ + (__ASSERT_(_utf8_safe_assert(p, e)) \ + (UTF8_IS_INVARIANT(*(p))) \ + ? _generic_isCC(*(p), classnum) \ + : (UTF8_IS_DOWNGRADEABLE_START(*(p))) \ + ? 0 /* Note that doesn't check validity for latin1 */ \ + : above_latin1) /* NOTE that some of these macros have very similar ones in regcharclass.h. * For example, there is (at the time of this writing) an 'is_SPACE_utf8()' @@ -1669,26 +1880,50 @@ END_EXTERN_C * points; the regcharclass.h ones are implemented as a series of * "if-else-if-else ..." */ -#define isALPHA_utf8(p) _generic_swash_utf8(_CC_ALPHA, p) -#define isALPHANUMERIC_utf8(p) _generic_swash_utf8(_CC_ALPHANUMERIC, p) -#define isASCII_utf8(p) isASCII(*p) /* Because ASCII is invariant under - utf8, the non-utf8 macro works - */ -#define isBLANK_utf8(p) _generic_func_utf8(_CC_BLANK, is_HORIZWS_high, p) +#define isALPHA_utf8(p) _generic_utf8(ALPHA, p) +#define isALPHANUMERIC_utf8(p) _generic_utf8(ALPHANUMERIC, p) +#define isASCII_utf8(p) _generic_utf8(ASCII, p) +#define isBLANK_utf8(p) _generic_utf8(BLANK, p) +#define isCNTRL_utf8(p) _generic_utf8(CNTRL, p) +#define isDIGIT_utf8(p) _generic_utf8(DIGIT, p) +#define isGRAPH_utf8(p) _generic_utf8(GRAPH, p) +#define isIDCONT_utf8(p) _generic_utf8(IDCONT, p) +#define isIDFIRST_utf8(p) _generic_utf8(IDFIRST, p) +#define isLOWER_utf8(p) _generic_utf8(LOWER, p) +#define isPRINT_utf8(p) _generic_utf8(PRINT, p) +#define isPSXSPC_utf8(p) _generic_utf8(PSXSPC, p) +#define isPUNCT_utf8(p) _generic_utf8(PUNCT, p) +#define isSPACE_utf8(p) _generic_utf8(SPACE, p) +#define isUPPER_utf8(p) _generic_utf8(UPPER, p) +#define isVERTWS_utf8(p) _generic_utf8(VERTSPACE, p) +#define isWORDCHAR_utf8(p) _generic_utf8(WORDCHAR, p) +#define isXDIGIT_utf8(p) _generic_utf8(XDIGIT, p) + +#define isALPHA_utf8_safe(p, e) _generic_swash_utf8_safe(_CC_ALPHA, p, e) +#define isALPHANUMERIC_utf8_safe(p, e) \ + _generic_swash_utf8_safe(_CC_ALPHANUMERIC, p, e) +#define isASCII_utf8_safe(p, e) \ + /* Because ASCII is invariant under utf8, the non-utf8 macro \ + * works */ \ + (__ASSERT_(_utf8_safe_assert(p, e)) isASCII(*(p))) +#define isBLANK_utf8_safe(p, e) \ + _generic_non_swash_utf8_safe(_CC_BLANK, is_HORIZWS_high, p, e) #ifdef EBCDIC /* Because all controls are UTF-8 invariants in EBCDIC, we can use this * more efficient macro instead of the more general one */ -# define isCNTRL_utf8(p) isCNTRL_L1(*(p)) +# define isCNTRL_utf8_safe(p, e) \ + (__ASSERT_(_utf8_safe_assert(p, e)) isCNTRL_L1(*(p))) #else -# define isCNTRL_utf8(p) _generic_utf8(_CC_CNTRL, p, 0) +# define isCNTRL_utf8_safe(p, e) _generic_utf8_safe(_CC_CNTRL, p, e, 0) #endif -#define isDIGIT_utf8(p) _generic_utf8_no_upper_latin1(_CC_DIGIT, p, \ - _is_utf8_FOO(_CC_DIGIT, p)) -#define isGRAPH_utf8(p) _generic_swash_utf8(_CC_GRAPH, p) -#define isIDCONT_utf8(p) _generic_func_utf8(_CC_WORDCHAR, \ - _is_utf8_perl_idcont, p) +#define isDIGIT_utf8_safe(p, e) \ + _generic_utf8_safe_no_upper_latin1(_CC_DIGIT, p, e, \ + _is_utf8_FOO_with_len(_CC_DIGIT, p, e)) +#define isGRAPH_utf8_safe(p, e) _generic_swash_utf8_safe(_CC_GRAPH, p, e) +#define isIDCONT_utf8_safe(p, e) _generic_func_utf8_safe(_CC_WORDCHAR, \ + _is_utf8_perl_idcont_with_len, p, e) /* To prevent S_scan_word in toke.c from hanging, we have to make sure that * IDFIRST is an alnum. See @@ -1696,65 +1931,133 @@ END_EXTERN_C * ever wanted to know about. (In the ASCII range, there isn't a difference.) * This used to be not the XID version, but we decided to go with the more * modern Unicode definition */ -#define isIDFIRST_utf8(p) _generic_func_utf8(_CC_IDFIRST, \ - _is_utf8_perl_idstart, p) - -#define isLOWER_utf8(p) _generic_swash_utf8(_CC_LOWER, p) -#define isPRINT_utf8(p) _generic_swash_utf8(_CC_PRINT, p) -#define isPSXSPC_utf8(p) isSPACE_utf8(p) -#define isPUNCT_utf8(p) _generic_swash_utf8(_CC_PUNCT, p) -#define isSPACE_utf8(p) _generic_func_utf8(_CC_SPACE, is_XPERLSPACE_high, p) -#define isUPPER_utf8(p) _generic_swash_utf8(_CC_UPPER, p) -#define isVERTWS_utf8(p) _generic_func_utf8(_CC_VERTSPACE, is_VERTWS_high, p) -#define isWORDCHAR_utf8(p) _generic_swash_utf8(_CC_WORDCHAR, p) -#define isXDIGIT_utf8(p) _generic_utf8_no_upper_latin1(_CC_XDIGIT, p, \ - is_XDIGIT_high(p)) +#define isIDFIRST_utf8_safe(p, e) \ + _generic_func_utf8_safe(_CC_IDFIRST, \ + _is_utf8_perl_idstart_with_len, (U8 *) (p), (U8 *) (e)) + +#define isLOWER_utf8_safe(p, e) _generic_swash_utf8_safe(_CC_LOWER, p, e) +#define isPRINT_utf8_safe(p, e) _generic_swash_utf8_safe(_CC_PRINT, p, e) +#define isPSXSPC_utf8_safe(p, e) isSPACE_utf8_safe(p, e) +#define isPUNCT_utf8_safe(p, e) _generic_swash_utf8_safe(_CC_PUNCT, p, e) +#define isSPACE_utf8_safe(p, e) \ + _generic_non_swash_utf8_safe(_CC_SPACE, is_XPERLSPACE_high, p, e) +#define isUPPER_utf8_safe(p, e) _generic_swash_utf8_safe(_CC_UPPER, p, e) +#define isVERTWS_utf8_safe(p, e) \ + _generic_non_swash_utf8_safe(_CC_VERTSPACE, is_VERTWS_high, p, e) +#define isWORDCHAR_utf8_safe(p, e) \ + _generic_swash_utf8_safe(_CC_WORDCHAR, p, e) +#define isXDIGIT_utf8_safe(p, e) \ + _generic_utf8_safe_no_upper_latin1(_CC_XDIGIT, p, e, \ + (UNLIKELY((e) - (p) < UTF8SKIP(p)) \ + ? (_force_out_malformed_utf8_message( \ + (U8 *) (p), (U8 *) (e), 0, 1), 0) \ + : is_XDIGIT_high(p))) #define toFOLD_utf8(p,s,l) to_utf8_fold(p,s,l) #define toLOWER_utf8(p,s,l) to_utf8_lower(p,s,l) #define toTITLE_utf8(p,s,l) to_utf8_title(p,s,l) #define toUPPER_utf8(p,s,l) to_utf8_upper(p,s,l) +/* For internal core use only, subject to change */ +#define _toFOLD_utf8_flags(p,e,s,l,f) _to_utf8_fold_flags (p,e,s,l,f, "", 0) +#define _toLOWER_utf8_flags(p,e,s,l,f) _to_utf8_lower_flags(p,e,s,l,f, "", 0) +#define _toTITLE_utf8_flags(p,e,s,l,f) _to_utf8_title_flags(p,e,s,l,f, "", 0) +#define _toUPPER_utf8_flags(p,e,s,l,f) _to_utf8_upper_flags(p,e,s,l,f, "", 0) + +#define toFOLD_utf8_safe(p,e,s,l) _toFOLD_utf8_flags(p,e,s,l, FOLD_FLAGS_FULL) +#define toLOWER_utf8_safe(p,e,s,l) _toLOWER_utf8_flags(p,e,s,l, 0) +#define toTITLE_utf8_safe(p,e,s,l) _toTITLE_utf8_flags(p,e,s,l, 0) +#define toUPPER_utf8_safe(p,e,s,l) _toUPPER_utf8_flags(p,e,s,l, 0) + /* For internal core Perl use only: the base macros for defining macros like * isALPHA_LC_utf8. These are like _generic_utf8, but if the first code point * in 'p' is within the 0-255 range, it uses locale rules from the passed-in * 'macro' parameter */ -#define _generic_LC_utf8(macro, p, utf8) \ - (UTF8_IS_INVARIANT(*(p)) \ - ? macro(*(p)) \ - : (UTF8_IS_DOWNGRADEABLE_START(*(p))) \ - ? macro(EIGHT_BIT_UTF8_TO_NATIVE(*(p), *((p)+1)))\ - : utf8) - -#define _generic_LC_swash_utf8(macro, classnum, p) \ - _generic_LC_utf8(macro, p, _is_utf8_FOO(classnum, p)) -#define _generic_LC_func_utf8(macro, above_latin1, p) \ - _generic_LC_utf8(macro, p, above_latin1(p)) - -#define isALPHANUMERIC_LC_utf8(p) _generic_LC_swash_utf8(isALPHANUMERIC_LC, \ - _CC_ALPHANUMERIC, p) -#define isALPHA_LC_utf8(p) _generic_LC_swash_utf8(isALPHA_LC, _CC_ALPHA, p) -#define isASCII_LC_utf8(p) isASCII_LC(*p) -#define isBLANK_LC_utf8(p) _generic_LC_func_utf8(isBLANK_LC, \ - is_HORIZWS_high, p) -#define isCNTRL_LC_utf8(p) _generic_LC_utf8(isCNTRL_LC, p, 0) -#define isDIGIT_LC_utf8(p) _generic_LC_swash_utf8(isDIGIT_LC, _CC_DIGIT, p) -#define isGRAPH_LC_utf8(p) _generic_LC_swash_utf8(isGRAPH_LC, _CC_GRAPH, p) -#define isIDCONT_LC_utf8(p) _generic_LC_func_utf8(isIDCONT_LC, \ - _is_utf8_perl_idcont, p) -#define isIDFIRST_LC_utf8(p) _generic_LC_func_utf8(isIDFIRST_LC, \ - _is_utf8_perl_idstart, p) -#define isLOWER_LC_utf8(p) _generic_LC_swash_utf8(isLOWER_LC, _CC_LOWER, p) -#define isPRINT_LC_utf8(p) _generic_LC_swash_utf8(isPRINT_LC, _CC_PRINT, p) -#define isPSXSPC_LC_utf8(p) isSPACE_LC_utf8(p) -#define isPUNCT_LC_utf8(p) _generic_LC_swash_utf8(isPUNCT_LC, _CC_PUNCT, p) -#define isSPACE_LC_utf8(p) _generic_LC_func_utf8(isSPACE_LC, \ - is_XPERLSPACE_high, p) -#define isUPPER_LC_utf8(p) _generic_LC_swash_utf8(isUPPER_LC, _CC_UPPER, p) -#define isWORDCHAR_LC_utf8(p) _generic_LC_swash_utf8(isWORDCHAR_LC, \ - _CC_WORDCHAR, p) -#define isXDIGIT_LC_utf8(p) _generic_LC_func_utf8(isXDIGIT_LC, \ - is_XDIGIT_high, p) +#define _generic_LC_utf8(name, p) _base_generic_utf8(name, name, p, 1) + +#define isALPHA_LC_utf8(p) _generic_LC_utf8(ALPHA, p) +#define isALPHANUMERIC_LC_utf8(p) _generic_LC_utf8(ALPHANUMERIC, p) +#define isASCII_LC_utf8(p) _generic_LC_utf8(ASCII, p) +#define isBLANK_LC_utf8(p) _generic_LC_utf8(BLANK, p) +#define isCNTRL_LC_utf8(p) _generic_LC_utf8(CNTRL, p) +#define isDIGIT_LC_utf8(p) _generic_LC_utf8(DIGIT, p) +#define isGRAPH_LC_utf8(p) _generic_LC_utf8(GRAPH, p) +#define isIDCONT_LC_utf8(p) _generic_LC_utf8(IDCONT, p) +#define isIDFIRST_LC_utf8(p) _generic_LC_utf8(IDFIRST, p) +#define isLOWER_LC_utf8(p) _generic_LC_utf8(LOWER, p) +#define isPRINT_LC_utf8(p) _generic_LC_utf8(PRINT, p) +#define isPSXSPC_LC_utf8(p) _generic_LC_utf8(PSXSPC, p) +#define isPUNCT_LC_utf8(p) _generic_LC_utf8(PUNCT, p) +#define isSPACE_LC_utf8(p) _generic_LC_utf8(SPACE, p) +#define isUPPER_LC_utf8(p) _generic_LC_utf8(UPPER, p) +#define isWORDCHAR_LC_utf8(p) _generic_LC_utf8(WORDCHAR, p) +#define isXDIGIT_LC_utf8(p) _generic_LC_utf8(XDIGIT, p) + +/* For internal core Perl use only: the base macros for defining macros like + * isALPHA_LC_utf8_safe. These are like _generic_utf8, but if the first code + * point in 'p' is within the 0-255 range, it uses locale rules from the + * passed-in 'macro' parameter */ +#define _generic_LC_utf8_safe(macro, p, e, above_latin1) \ + (__ASSERT_(_utf8_safe_assert(p, e)) \ + (UTF8_IS_INVARIANT(*(p))) \ + ? macro(*(p)) \ + : (UTF8_IS_DOWNGRADEABLE_START(*(p)) \ + ? ((LIKELY((e) - (p) > 1 && UTF8_IS_CONTINUATION(*((p)+1)))) \ + ? macro(EIGHT_BIT_UTF8_TO_NATIVE(*(p), *((p)+1))) \ + : (_force_out_malformed_utf8_message( \ + (U8 *) (p), (U8 *) (e), 0, 1), 0)) \ + : above_latin1)) + +#define _generic_LC_swash_utf8_safe(macro, classnum, p, e) \ + _generic_LC_utf8_safe(macro, p, e, \ + _is_utf8_FOO_with_len(classnum, p, e)) + +#define _generic_LC_func_utf8_safe(macro, above_latin1, p, e) \ + _generic_LC_utf8_safe(macro, p, e, above_latin1(p, e)) + +#define _generic_LC_non_swash_utf8_safe(classnum, above_latin1, p, e) \ + _generic_LC_utf8_safe(classnum, p, e, \ + (UNLIKELY((e) - (p) < UTF8SKIP(p)) \ + ? (_force_out_malformed_utf8_message( \ + (U8 *) (p), (U8 *) (e), 0, 1), 0) \ + : above_latin1(p))) + +#define isALPHANUMERIC_LC_utf8_safe(p, e) \ + _generic_LC_swash_utf8_safe(isALPHANUMERIC_LC, \ + _CC_ALPHANUMERIC, p, e) +#define isALPHA_LC_utf8_safe(p, e) \ + _generic_LC_swash_utf8_safe(isALPHA_LC, _CC_ALPHA, p, e) +#define isASCII_LC_utf8_safe(p, e) \ + (__ASSERT_(_utf8_safe_assert(p, e)) isASCII_LC(*(p))) +#define isBLANK_LC_utf8_safe(p, e) \ + _generic_LC_non_swash_utf8_safe(isBLANK_LC, is_HORIZWS_high, p, e) +#define isCNTRL_LC_utf8_safe(p, e) \ + _generic_LC_utf8_safe(isCNTRL_LC, p, e, 0) +#define isDIGIT_LC_utf8_safe(p, e) \ + _generic_LC_swash_utf8_safe(isDIGIT_LC, _CC_DIGIT, p, e) +#define isGRAPH_LC_utf8_safe(p, e) \ + _generic_LC_swash_utf8_safe(isGRAPH_LC, _CC_GRAPH, p, e) +#define isIDCONT_LC_utf8_safe(p, e) \ + _generic_LC_func_utf8_safe(isIDCONT_LC, \ + _is_utf8_perl_idcont_with_len, p, e) +#define isIDFIRST_LC_utf8_safe(p, e) \ + _generic_LC_func_utf8_safe(isIDFIRST_LC, \ + _is_utf8_perl_idstart_with_len, p, e) +#define isLOWER_LC_utf8_safe(p, e) \ + _generic_LC_swash_utf8_safe(isLOWER_LC, _CC_LOWER, p, e) +#define isPRINT_LC_utf8_safe(p, e) \ + _generic_LC_swash_utf8_safe(isPRINT_LC, _CC_PRINT, p, e) +#define isPSXSPC_LC_utf8_safe(p, e) isSPACE_LC_utf8_safe(p, e) +#define isPUNCT_LC_utf8_safe(p, e) \ + _generic_LC_swash_utf8_safe(isPUNCT_LC, _CC_PUNCT, p, e) +#define isSPACE_LC_utf8_safe(p, e) \ + _generic_LC_non_swash_utf8_safe(isSPACE_LC, is_XPERLSPACE_high, p, e) +#define isUPPER_LC_utf8_safe(p, e) \ + _generic_LC_swash_utf8_safe(isUPPER_LC, _CC_UPPER, p, e) +#define isWORDCHAR_LC_utf8_safe(p, e) \ + _generic_LC_swash_utf8_safe(isWORDCHAR_LC, _CC_WORDCHAR, p, e) +#define isXDIGIT_LC_utf8_safe(p, e) \ + _generic_LC_non_swash_utf8_safe(isXDIGIT_LC, is_XDIGIT_high, p, e) /* Macros for backwards compatibility and for completeness when the ASCII and * Latin1 values are identical */ @@ -1860,7 +2163,7 @@ typedef U32 line_t; =for apidoc Am|void|Newx|void* ptr|int nitems|type The XSUB-writer's interface to the C C<malloc> function. -Memory obtained by this should B<ONLY> be freed with L<"Safefree">. +Memory obtained by this should B<ONLY> be freed with L</"Safefree">. In 5.9.3, Newx() and friends replace the older New() API, and drops the first parameter, I<x>, a debug aid which allowed callers to identify @@ -1872,29 +2175,29 @@ there for use in XS modules supporting older perls. The XSUB-writer's interface to the C C<malloc> function, with cast. See also C<L</Newx>>. -Memory obtained by this should B<ONLY> be freed with L<"Safefree">. +Memory obtained by this should B<ONLY> be freed with L</"Safefree">. =for apidoc Am|void|Newxz|void* ptr|int nitems|type The XSUB-writer's interface to the C C<malloc> function. The allocated memory is zeroed with C<memzero>. See also C<L</Newx>>. -Memory obtained by this should B<ONLY> be freed with L<"Safefree">. +Memory obtained by this should B<ONLY> be freed with L</"Safefree">. =for apidoc Am|void|Renew|void* ptr|int nitems|type The XSUB-writer's interface to the C C<realloc> function. -Memory obtained by this should B<ONLY> be freed with L<"Safefree">. +Memory obtained by this should B<ONLY> be freed with L</"Safefree">. =for apidoc Am|void|Renewc|void* ptr|int nitems|type|cast The XSUB-writer's interface to the C C<realloc> function, with cast. -Memory obtained by this should B<ONLY> be freed with L<"Safefree">. +Memory obtained by this should B<ONLY> be freed with L</"Safefree">. =for apidoc Am|void|Safefree|void* ptr The XSUB-writer's interface to the C C<free> function. -This should B<ONLY> be used on memory obtained using L<"Newx"> and friends. +This should B<ONLY> be used on memory obtained using L</"Newx"> and friends. =for apidoc Am|void|Move|void* src|void* dest|int nitems|type The XSUB-writer's interface to the C C<memmove> function. The C<src> is the @@ -2179,6 +2482,12 @@ void Perl_mem_log_del_sv(const SV *sv, const char *filename, const int linenumbe #ifdef PERL_CORE # define deprecate(s) Perl_ck_warner_d(aTHX_ packWARN(WARN_DEPRECATED), \ "Use of " s " is deprecated") +# define deprecate_disappears_in(when,message) \ + Perl_ck_warner_d(aTHX_ packWARN(WARN_DEPRECATED), \ + message ", and will disappear in Perl " when) +# define deprecate_fatal_in(when,message) \ + Perl_ck_warner_d(aTHX_ packWARN(WARN_DEPRECATED), \ + message ". Its use will be fatal in Perl " when) #endif /* Internal macros to deal with gids and uids */ diff --git a/Master/tlpkg/tlperl/lib/CORE/hv.h b/Master/tlpkg/tlperl/lib/CORE/hv.h index b97b22425e9..8411b5d31fe 100644 --- a/Master/tlpkg/tlperl/lib/CORE/hv.h +++ b/Master/tlpkg/tlperl/lib/CORE/hv.h @@ -43,12 +43,17 @@ struct he { /* hash key -- defined separately for use as shared pointer */ struct hek { - U32 hek_hash; /* hash of key */ - I32 hek_len; /* length of hash key */ - char hek_key[1]; /* variable-length hash key */ + U32 hek_hash; /* computed hash of key */ + I32 hek_len; /* length of the hash key */ + /* Be careful! Sometimes we store a pointer in the hek_key + * buffer, which means it must be 8 byte aligned or things + * dont work on aligned platforms like HPUX + * Also beware, the last byte of the hek_key buffer is a + * hidden flags byte about the key. */ + char hek_key[1]; /* variable-length hash key */ /* the hash-key is \0-terminated */ /* after the \0 there is a byte for flags, such as whether the key - is UTF-8 */ + is UTF-8 or WAS-UTF-8, or an SV */ }; struct shared_he { @@ -119,7 +124,6 @@ struct xpvhv_aux { U32 xhv_last_rand; /* last random value for hash traversal, used to detect each() after insert for warnings */ #endif - U32 xhv_fill_lazy; U32 xhv_aux_flags; /* assorted extra flags */ }; @@ -321,7 +325,7 @@ C<SV*>. ((SvOOK(hv) && HvAUX(hv)->xhv_name_u.xhvnameu_name && HvAUX(hv)->xhv_name_count != -1) \ ? HEK_UTF8(HvENAME_HEK_NN(hv)) : 0) -/* the number of keys (including any placeholders) */ +/* the number of keys (including any placeholders) - NOT PART OF THE API */ #define XHvTOTALKEYS(xhv) ((xhv)->xhv_keys) /* @@ -457,8 +461,7 @@ C<SV*>. (val), (hash))) #define hv_exists_ent(hv, keysv, hash) \ - (hv_common((hv), (keysv), NULL, 0, 0, HV_FETCH_ISEXISTS, 0, (hash)) \ - ? TRUE : FALSE) + cBOOL(hv_common((hv), (keysv), NULL, 0, 0, HV_FETCH_ISEXISTS, 0, (hash))) #define hv_fetch_ent(hv, keysv, lval, hash) \ ((HE *) hv_common((hv), (keysv), NULL, 0, 0, \ ((lval) ? HV_FETCH_LVALUE : 0), NULL, (hash))) @@ -476,9 +479,10 @@ C<SV*>. (HV_FETCH_ISSTORE|HV_FETCH_JUST_SV), \ (val), (hash))) + + #define hv_exists(hv, key, klen) \ - (hv_common_key_len((hv), (key), (klen), HV_FETCH_ISEXISTS, NULL, 0) \ - ? TRUE : FALSE) + cBOOL(hv_common_key_len((hv), (key), (klen), HV_FETCH_ISEXISTS, NULL, 0)) #define hv_fetch(hv, key, klen, lval) \ ((SV**) hv_common_key_len((hv), (key), (klen), (lval) \ @@ -489,6 +493,24 @@ C<SV*>. (MUTABLE_SV(hv_common_key_len((hv), (key), (klen), \ (flags) | HV_DELETE, NULL, 0))) +/* Provide 's' suffix subs for constant strings (and avoid needing to count + * chars). See STR_WITH_LEN in handy.h - because these are macros we cant use + * STR_WITH_LEN to do the work, we have to unroll it. */ +#define hv_existss(hv, key) \ + hv_exists((hv), ("" key ""), (sizeof(key)-1)) + +#define hv_fetchs(hv, key, lval) \ + hv_fetch((hv), ("" key ""), (sizeof(key)-1), (lval)) + +#define hv_deletes(hv, key, flags) \ + hv_delete((hv), ("" key ""), (sizeof(key)-1), (flags)) + +#define hv_name_sets(hv, name, flags) \ + hv_name_set((hv),("" name ""),(sizeof(name)-1), flags) + +#define hv_stores(hv, key, val) \ + hv_store((hv), ("" key ""), (sizeof(key)-1), (val), 0) + #ifdef PERL_CORE # define hv_storehek(hv, hek, val) \ hv_common((hv), NULL, HEK_KEY(hek), HEK_LEN(hek), HEK_UTF8(hek), \ diff --git a/Master/tlpkg/tlperl/lib/CORE/hv_func.h b/Master/tlpkg/tlperl/lib/CORE/hv_func.h index 8866db909f3..d10b5e1d5ef 100755 --- a/Master/tlpkg/tlperl/lib/CORE/hv_func.h +++ b/Master/tlpkg/tlperl/lib/CORE/hv_func.h @@ -14,59 +14,33 @@ #if !( 0 \ || defined(PERL_HASH_FUNC_SIPHASH) \ - || defined(PERL_HASH_FUNC_SDBM) \ - || defined(PERL_HASH_FUNC_DJB2) \ - || defined(PERL_HASH_FUNC_SUPERFAST) \ - || defined(PERL_HASH_FUNC_MURMUR3) \ - || defined(PERL_HASH_FUNC_ONE_AT_A_TIME) \ + || defined(PERL_HASH_FUNC_SIPHASH13) \ + || defined(PERL_HASH_FUNC_HYBRID_OAATHU_SIPHASH13) \ || defined(PERL_HASH_FUNC_ONE_AT_A_TIME_HARD) \ - || defined(PERL_HASH_FUNC_ONE_AT_A_TIME_OLD) \ - || defined(PERL_HASH_FUNC_MURMUR_HASH_64A) \ - || defined(PERL_HASH_FUNC_MURMUR_HASH_64B) \ ) +#if IVSIZE == 8 +#define PERL_HASH_FUNC_HYBRID_OAATHU_SIPHASH13 +#else #define PERL_HASH_FUNC_ONE_AT_A_TIME_HARD #endif +#endif #if defined(PERL_HASH_FUNC_SIPHASH) # define PERL_HASH_FUNC "SIPHASH_2_4" # define PERL_HASH_SEED_BYTES 16 # define PERL_HASH_WITH_SEED(seed,hash,str,len) (hash)= S_perl_hash_siphash_2_4((seed),(U8*)(str),(len)) -#elif defined(PERL_HASH_FUNC_SUPERFAST) -# define PERL_HASH_FUNC "SUPERFAST" -# define PERL_HASH_SEED_BYTES 4 -# define PERL_HASH_WITH_SEED(seed,hash,str,len) (hash)= S_perl_hash_superfast((seed),(U8*)(str),(len)) -#elif defined(PERL_HASH_FUNC_MURMUR3) -# define PERL_HASH_FUNC "MURMUR3" -# define PERL_HASH_SEED_BYTES 4 -# define PERL_HASH_WITH_SEED(seed,hash,str,len) (hash)= S_perl_hash_murmur3((seed),(U8*)(str),(len)) -#elif defined(PERL_HASH_FUNC_DJB2) -# define PERL_HASH_FUNC "DJB2" -# define PERL_HASH_SEED_BYTES 4 -# define PERL_HASH_WITH_SEED(seed,hash,str,len) (hash)= S_perl_hash_djb2((seed),(U8*)(str),(len)) -#elif defined(PERL_HASH_FUNC_SDBM) -# define PERL_HASH_FUNC "SDBM" -# define PERL_HASH_SEED_BYTES 4 -# define PERL_HASH_WITH_SEED(seed,hash,str,len) (hash)= S_perl_hash_sdbm((seed),(U8*)(str),(len)) +#elif defined(PERL_HASH_FUNC_SIPHASH13) +# define PERL_HASH_FUNC "SIPHASH_1_3" +# define PERL_HASH_SEED_BYTES 16 +# define PERL_HASH_WITH_SEED(seed,hash,str,len) (hash)= S_perl_hash_siphash_1_3((seed),(U8*)(str),(len)) +#elif defined(PERL_HASH_FUNC_HYBRID_OAATHU_SIPHASH13) +# define PERL_HASH_FUNC "HYBRID_OAATHU_SIPHASH_1_3" +# define PERL_HASH_SEED_BYTES 24 +# define PERL_HASH_WITH_SEED(seed,hash,str,len) (hash)= S_perl_hash_oaathu_siphash_1_3((seed),(U8*)(str),(len)) #elif defined(PERL_HASH_FUNC_ONE_AT_A_TIME_HARD) # define PERL_HASH_FUNC "ONE_AT_A_TIME_HARD" # define PERL_HASH_SEED_BYTES 8 # define PERL_HASH_WITH_SEED(seed,hash,str,len) (hash)= S_perl_hash_one_at_a_time_hard((seed),(U8*)(str),(len)) -#elif defined(PERL_HASH_FUNC_ONE_AT_A_TIME) -# define PERL_HASH_FUNC "ONE_AT_A_TIME" -# define PERL_HASH_SEED_BYTES 4 -# define PERL_HASH_WITH_SEED(seed,hash,str,len) (hash)= S_perl_hash_one_at_a_time((seed),(U8*)(str),(len)) -#elif defined(PERL_HASH_FUNC_ONE_AT_A_TIME_OLD) -# define PERL_HASH_FUNC "ONE_AT_A_TIME_OLD" -# define PERL_HASH_SEED_BYTES 4 -# define PERL_HASH_WITH_SEED(seed,hash,str,len) (hash)= S_perl_hash_old_one_at_a_time((seed),(U8*)(str),(len)) -#elif defined(PERL_HASH_FUNC_MURMUR_HASH_64A) -# define PERL_HASH_FUNC "MURMUR_HASH_64A" -# define PERL_HASH_SEED_BYTES 8 -# define PERL_HASH_WITH_SEED(seed,hash,str,len) (hash)= S_perl_hash_murmur_hash_64a((seed),(U8*)(str),(len)) -#elif defined(PERL_HASH_FUNC_MURMUR_HASH_64B) -# define PERL_HASH_FUNC "MURMUR_HASH_64B" -# define PERL_HASH_SEED_BYTES 8 -# define PERL_HASH_WITH_SEED(seed,hash,str,len) (hash)= S_perl_hash_murmur_hash_64b((seed),(U8*)(str),(len)) #endif #ifndef PERL_HASH_WITH_SEED @@ -95,6 +69,11 @@ #define PERL_HASH(hash,str,len) PERL_HASH_WITH_SEED(PERL_HASH_SEED,hash,str,len) +/* legacy - only mod_perl should be doing this. */ +#ifdef PERL_HASH_INTERNAL_ACCESS +#define PERL_HASH_INTERNAL(hash,str,len) PERL_HASH(hash,str,len) +#endif + /*----------------------------------------------------------------------------- * Endianess, misalignment capabilities and util macros * @@ -118,7 +97,7 @@ #if (BYTEORDER == 0x1234 || BYTEORDER == 0x12345678) && U32SIZE == 4 /* CPU endian matches murmurhash algorithm, so read 32-bit word directly */ - #define U8TO32_LE(ptr) (*((U32*)(ptr))) + #define U8TO32_LE(ptr) (*((const U32*)(ptr))) #elif BYTEORDER == 0x4321 || BYTEORDER == 0x87654321 /* TODO: Add additional cases below where a compiler provided bswap32 is available */ #if defined(__GNUC__) && (__GNUC__>4 || (__GNUC__==4 && __GNUC_MINOR__>=3)) @@ -192,333 +171,99 @@ ((U64)((p)[7]) << 56)) #define SIPROUND \ - do { \ + STMT_START { \ v0 += v1; v1=ROTL64(v1,13); v1 ^= v0; v0=ROTL64(v0,32); \ v2 += v3; v3=ROTL64(v3,16); v3 ^= v2; \ v0 += v3; v3=ROTL64(v3,21); v3 ^= v0; \ v2 += v1; v1=ROTL64(v1,17); v1 ^= v2; v2=ROTL64(v2,32); \ - } while(0) + } STMT_END /* SipHash-2-4 */ -PERL_STATIC_INLINE U32 -S_perl_hash_siphash_2_4(const unsigned char * const seed, const unsigned char *in, const STRLEN inlen) { - /* "somepseudorandomlygeneratedbytes" */ - U64 v0 = UINT64_C(0x736f6d6570736575); - U64 v1 = UINT64_C(0x646f72616e646f6d); - U64 v2 = UINT64_C(0x6c7967656e657261); - U64 v3 = UINT64_C(0x7465646279746573); - - U64 b; - U64 k0 = ((U64*)seed)[0]; - U64 k1 = ((U64*)seed)[1]; - U64 m; - const int left = inlen & 7; - const U8 *end = in + inlen - left; - - b = ( ( U64 )(inlen) ) << 56; - v3 ^= k1; - v2 ^= k0; - v1 ^= k1; - v0 ^= k0; - - for ( ; in != end; in += 8 ) - { - m = U8TO64_LE( in ); - v3 ^= m; - SIPROUND; - SIPROUND; - v0 ^= m; - } - - switch( left ) - { - case 7: b |= ( ( U64 )in[ 6] ) << 48; - case 6: b |= ( ( U64 )in[ 5] ) << 40; - case 5: b |= ( ( U64 )in[ 4] ) << 32; - case 4: b |= ( ( U64 )in[ 3] ) << 24; - case 3: b |= ( ( U64 )in[ 2] ) << 16; - case 2: b |= ( ( U64 )in[ 1] ) << 8; - case 1: b |= ( ( U64 )in[ 0] ); break; - case 0: break; - } - - v3 ^= b; - SIPROUND; - SIPROUND; - v0 ^= b; - - v2 ^= 0xff; - SIPROUND; - SIPROUND; - SIPROUND; - SIPROUND; - b = v0 ^ v1 ^ v2 ^ v3; - return (U32)(b & U32_MAX); -} -#endif /* defined(HAS_QUAD) */ - -/* FYI: This is the "Super-Fast" algorithm mentioned by Bob Jenkins in - * (http://burtleburtle.net/bob/hash/doobs.html) - * It is by Paul Hsieh (c) 2004 and is analysed here - * http://www.azillionmonkeys.com/qed/hash.html - * license terms are here: - * http://www.azillionmonkeys.com/qed/weblicense.html - */ - - -PERL_STATIC_INLINE U32 -S_perl_hash_superfast(const unsigned char * const seed, const unsigned char *str, STRLEN len) { - U32 hash = *((U32*)seed) + (U32)len; - U32 tmp; - int rem= len & 3; - len >>= 2; - - for (;len > 0; len--) { - hash += U8TO16_LE (str); - tmp = (U8TO16_LE (str+2) << 11) ^ hash; - hash = (hash << 16) ^ tmp; - str += 2 * sizeof (U16); - hash += hash >> 11; - } - - /* Handle end cases */ - switch (rem) { \ - case 3: hash += U8TO16_LE (str); - hash ^= hash << 16; - hash ^= str[sizeof (U16)] << 18; - hash += hash >> 11; - break; - case 2: hash += U8TO16_LE (str); - hash ^= hash << 11; - hash += hash >> 17; - break; - case 1: hash += *str; - hash ^= hash << 10; - hash += hash >> 1; - } - /* Force "avalanching" of final 127 bits */ - hash ^= hash << 3; - hash += hash >> 5; - hash ^= hash << 4; - hash += hash >> 17; - hash ^= hash << 25; - return (hash + (hash >> 6)); -} - - -/*----------------------------------------------------------------------------- - * MurmurHash3 was written by Austin Appleby, and is placed in the public - * domain. - * - * This implementation was originally written by Shane Day, and is also public domain, - * and was modified to function as a macro similar to other perl hash functions by - * Yves Orton. - * - * This is a portable ANSI C implementation of MurmurHash3_x86_32 (Murmur3A) - * with support for progressive processing. - * - * If you want to understand the MurmurHash algorithm you would be much better - * off reading the original source. Just point your browser at: - * http://code.google.com/p/smhasher/source/browse/trunk/MurmurHash3.cpp - * - * How does it work? - * - * We can only process entire 32 bit chunks of input, except for the very end - * that may be shorter. - * - * To handle endianess I simply use a macro that reads a U32 and define - * that macro to be a direct read on little endian machines, a read and swap - * on big endian machines, or a byte-by-byte read if the endianess is unknown. - */ - - -/*----------------------------------------------------------------------------- - * Core murmurhash algorithm macros */ - -#define MURMUR_C1 (0xcc9e2d51) -#define MURMUR_C2 (0x1b873593) -#define MURMUR_C3 (0xe6546b64) -#define MURMUR_C4 (0x85ebca6b) -#define MURMUR_C5 (0xc2b2ae35) - -/* This is the main processing body of the algorithm. It operates - * on each full 32-bits of input. */ -#define MURMUR_DOBLOCK(h1, k1) STMT_START { \ - k1 *= MURMUR_C1; \ - k1 = ROTL32(k1,15); \ - k1 *= MURMUR_C2; \ - \ - h1 ^= k1; \ - h1 = ROTL32(h1,13); \ - h1 = h1 * 5 + MURMUR_C3; \ -} STMT_END - - -/* Append unaligned bytes to carry, forcing hash churn if we have 4 bytes */ -/* cnt=bytes to process, h1=name of h1 var, c=carry, n=bytes in c, ptr/len=payload */ -#define MURMUR_DOBYTES(cnt, h1, c, n, ptr, len) STMT_START { \ - int MURMUR_DOBYTES_i = cnt; \ - while(MURMUR_DOBYTES_i--) { \ - c = c>>8 | *ptr++<<24; \ - n++; len--; \ - if(n==4) { \ - MURMUR_DOBLOCK(h1, c); \ - n = 0; \ - } \ - } \ -} STMT_END - - -/* now we create the hash function */ -PERL_STATIC_INLINE U32 -S_perl_hash_murmur3(const unsigned char * const seed, const unsigned char *ptr, STRLEN len) { - U32 h1 = *((U32*)seed); - U32 k1; - U32 carry = 0; - - const unsigned char *end; - int bytes_in_carry = 0; /* bytes in carry */ - I32 total_length= (I32)len; - -#if defined(UNALIGNED_SAFE) - /* Handle carry: commented out as its only used in incremental mode - it never fires for us - int i = (4-n) & 3; - if(i && i <= len) { - MURMUR_DOBYTES(i, h1, carry, bytes_in_carry, ptr, len); - } - */ - - /* This CPU handles unaligned word access */ - /* Process 32-bit chunks */ - end = ptr + len/4*4; - for( ; ptr < end ; ptr+=4) { - k1 = U8TO32_LE(ptr); - MURMUR_DOBLOCK(h1, k1); - } -#else - /* This CPU does not handle unaligned word access */ - - /* Consume enough so that the next data byte is word aligned */ - STRLEN i = -PTR2IV(ptr) & 3; - if(i && i <= len) { - MURMUR_DOBYTES((int)i, h1, carry, bytes_in_carry, ptr, len); - } - /* We're now aligned. Process in aligned blocks. Specialise for each possible carry count */ - end = ptr + len/4*4; - switch(bytes_in_carry) { /* how many bytes in carry */ - case 0: /* c=[----] w=[3210] b=[3210]=w c'=[----] */ - for( ; ptr < end ; ptr+=4) { - k1 = U8TO32_LE(ptr); - MURMUR_DOBLOCK(h1, k1); - } - break; - case 1: /* c=[0---] w=[4321] b=[3210]=c>>24|w<<8 c'=[4---] */ - for( ; ptr < end ; ptr+=4) { - k1 = carry>>24; - carry = U8TO32_LE(ptr); - k1 |= carry<<8; - MURMUR_DOBLOCK(h1, k1); - } - break; - case 2: /* c=[10--] w=[5432] b=[3210]=c>>16|w<<16 c'=[54--] */ - for( ; ptr < end ; ptr+=4) { - k1 = carry>>16; - carry = U8TO32_LE(ptr); - k1 |= carry<<16; - MURMUR_DOBLOCK(h1, k1); - } - break; - case 3: /* c=[210-] w=[6543] b=[3210]=c>>8|w<<24 c'=[654-] */ - for( ; ptr < end ; ptr+=4) { - k1 = carry>>8; - carry = U8TO32_LE(ptr); - k1 |= carry<<24; - MURMUR_DOBLOCK(h1, k1); - } - } -#endif - /* Advance over whole 32-bit chunks, possibly leaving 1..3 bytes */ - len -= len/4*4; - - /* Append any remaining bytes into carry */ - MURMUR_DOBYTES((int)len, h1, carry, bytes_in_carry, ptr, len); - - if (bytes_in_carry) { - k1 = carry >> ( 4 - bytes_in_carry ) * 8; - k1 *= MURMUR_C1; - k1 = ROTL32(k1,15); - k1 *= MURMUR_C2; - h1 ^= k1; - } - h1 ^= total_length; - - /* fmix */ - h1 ^= h1 >> 16; - h1 *= MURMUR_C4; - h1 ^= h1 >> 13; - h1 *= MURMUR_C5; - h1 ^= h1 >> 16; - return h1; +#define PERL_SIPHASH_FNC(FNC,SIP_ROUNDS,SIP_FINAL_ROUNDS) \ +PERL_STATIC_INLINE U32 \ +FNC(const unsigned char * const seed, const unsigned char *in, const STRLEN inlen) { \ + /* "somepseudorandomlygeneratedbytes" */ \ + U64 v0 = UINT64_C(0x736f6d6570736575); \ + U64 v1 = UINT64_C(0x646f72616e646f6d); \ + U64 v2 = UINT64_C(0x6c7967656e657261); \ + U64 v3 = UINT64_C(0x7465646279746573); \ + \ + U64 b; \ + U64 k0 = ((const U64*)seed)[0]; \ + U64 k1 = ((const U64*)seed)[1]; \ + U64 m; \ + const int left = inlen & 7; \ + const U8 *end = in + inlen - left; \ + \ + b = ( ( U64 )(inlen) ) << 56; \ + v3 ^= k1; \ + v2 ^= k0; \ + v1 ^= k1; \ + v0 ^= k0; \ + \ + for ( ; in != end; in += 8 ) \ + { \ + m = U8TO64_LE( in ); \ + v3 ^= m; \ + \ + SIP_ROUNDS; \ + \ + v0 ^= m; \ + } \ + \ + switch( left ) \ + { \ + case 7: b |= ( ( U64 )in[ 6] ) << 48; \ + case 6: b |= ( ( U64 )in[ 5] ) << 40; \ + case 5: b |= ( ( U64 )in[ 4] ) << 32; \ + case 4: b |= ( ( U64 )in[ 3] ) << 24; \ + case 3: b |= ( ( U64 )in[ 2] ) << 16; \ + case 2: b |= ( ( U64 )in[ 1] ) << 8; \ + case 1: b |= ( ( U64 )in[ 0] ); break; \ + case 0: break; \ + } \ + \ + v3 ^= b; \ + \ + SIP_ROUNDS; \ + \ + v0 ^= b; \ + \ + v2 ^= 0xff; \ + \ + SIP_FINAL_ROUNDS \ + \ + b = v0 ^ v1 ^ v2 ^ v3; \ + return (U32)(b & U32_MAX); \ } +PERL_SIPHASH_FNC( + S_perl_hash_siphash_1_3 + ,SIPROUND; + ,SIPROUND;SIPROUND;SIPROUND; +) -PERL_STATIC_INLINE U32 -S_perl_hash_djb2(const unsigned char * const seed, const unsigned char *str, const STRLEN len) { - const unsigned char * const end = (const unsigned char *)str + len; - U32 hash = *((U32*)seed) + (U32)len; - while (str < end) { - hash = ((hash << 5) + hash) + *str++; - } - return hash; -} +PERL_SIPHASH_FNC( + S_perl_hash_siphash_2_4 + ,SIPROUND;SIPROUND; + ,SIPROUND;SIPROUND;SIPROUND;SIPROUND; +) -PERL_STATIC_INLINE U32 -S_perl_hash_sdbm(const unsigned char * const seed, const unsigned char *str, const STRLEN len) { - const unsigned char * const end = (const unsigned char *)str + len; - U32 hash = *((U32*)seed) + (U32)len; - while (str < end) { - hash = (hash << 6) + (hash << 16) - hash + *str++; - } - return hash; -} +#endif /* defined(HAS_QUAD) */ -/* - ONE_AT_A_TIME_HARD is the 5.17+ recommend ONE_AT_A_TIME algorithm - * - ONE_AT_A_TIME_OLD is the unmodified 5.16 and older algorithm - * - ONE_AT_A_TIME is a 5.17+ tweak of ONE_AT_A_TIME_OLD to - * prevent strings of only \0 but different lengths from colliding - * - * Security-wise, from best to worst, - * ONE_AT_A_TIME_HARD > ONE_AT_A_TIME > ONE_AT_A_TIME_OLD - * There is a big drop-off in security between ONE_AT_A_TIME_HARD and - * ONE_AT_A_TIME - * */ +/* - ONE_AT_A_TIME_HARD is the 5.17+ recommend ONE_AT_A_TIME variant */ -/* This is the "One-at-a-Time" algorithm by Bob Jenkins +/* This is derived from the "One-at-a-Time" algorithm by Bob Jenkins * from requirements by Colin Plumb. * (http://burtleburtle.net/bob/hash/doobs.html) - * With seed/len tweak. - * */ -PERL_STATIC_INLINE U32 -S_perl_hash_one_at_a_time(const unsigned char * const seed, const unsigned char *str, const STRLEN len) { - const unsigned char * const end = (const unsigned char *)str + len; - U32 hash = *((U32*)seed) + (U32)len; - while (str < end) { - hash += *str++; - hash += (hash << 10); - hash ^= (hash >> 6); - } - hash += (hash << 3); - hash ^= (hash >> 11); - return (hash + (hash << 15)); -} - -/* Derived from "One-at-a-Time" algorithm by Bob Jenkins */ + * Modified by Yves Orton to increase security for Perl 5.17 and later. + */ PERL_STATIC_INLINE U32 S_perl_hash_one_at_a_time_hard(const unsigned char * const seed, const unsigned char *str, const STRLEN len) { const unsigned char * const end = (const unsigned char *)str + len; - U32 hash = *((U32*)seed) + (U32)len; + U32 hash = *((const U32*)seed) + (U32)len; while (str < end) { hash += (hash << 10); @@ -550,152 +295,108 @@ S_perl_hash_one_at_a_time_hard(const unsigned char * const seed, const unsigned return (hash + (hash << 15)); } -PERL_STATIC_INLINE U32 -S_perl_hash_old_one_at_a_time(const unsigned char * const seed, const unsigned char *str, const STRLEN len) { - const unsigned char * const end = (const unsigned char *)str + len; - U32 hash = *((U32*)seed); - while (str < end) { - hash += *str++; - hash += (hash << 10); - hash ^= (hash >> 6); - } - hash += (hash << 3); - hash ^= (hash >> 11); - return (hash + (hash << 15)); -} - -#ifdef PERL_HASH_FUNC_MURMUR_HASH_64A -/* This code is from Austin Appleby and is in the public domain. - Altered by Yves Orton to match Perl's hash interface, and to - return a 32 bit hash. - - Note uses unaligned 64 bit loads - will NOT work on machines with - strict alignment requirements. - - Also this code may not be suitable for big-endian machines. -*/ - -/* a 64 bit hash where we only use the low 32 bits */ -PERL_STATIC_INLINE U32 -S_perl_hash_murmur_hash_64a (const unsigned char * const seed, const unsigned char *str, const STRLEN len) -{ - const U64 m = UINT64_C(0xc6a4a7935bd1e995); - const int r = 47; - U64 h = *((U64*)seed) ^ len; - const U64 * data = (const U64 *)str; - const U64 * end = data + (len/8); - const unsigned char * data2; - - while(data != end) - { - U64 k = *data++; - - k *= m; - k ^= k >> r; - k *= m; - - h ^= k; - h *= m; - } - - data2 = (const unsigned char *)data; - - switch(len & 7) - { - case 7: h ^= (U64)(data2[6]) << 48; /* fallthrough */ - case 6: h ^= (U64)(data2[5]) << 40; /* fallthrough */ - case 5: h ^= (U64)(data2[4]) << 32; /* fallthrough */ - case 4: h ^= (U64)(data2[3]) << 24; /* fallthrough */ - case 3: h ^= (U64)(data2[2]) << 16; /* fallthrough */ - case 2: h ^= (U64)(data2[1]) << 8; /* fallthrough */ - case 1: h ^= (U64)(data2[0]); /* fallthrough */ - h *= m; - }; - - h ^= h >> r; - h *= m; - h ^= h >> r; - - /* was: return h; */ - return h & 0xFFFFFFFF; -} - -#endif - -#ifdef PERL_HASH_FUNC_MURMUR_HASH_64B -/* This code is from Austin Appleby and is in the public domain. - Altered by Yves Orton to match Perl's hash interface and return - a 32 bit value - - Note uses unaligned 32 bit loads - will NOT work on machines with - strict alignment requirements. - - Also this code may not be suitable for big-endian machines. -*/ +#ifdef HAS_QUAD -/* a 64-bit hash for 32-bit platforms where we only use the low 32 bits */ +/* Hybrid hash function + * + * For short strings, 16 bytes or shorter, we use an optimised variant + * of One At A Time Hard, and for longer strings, we use siphash_1_3. + * + * The optimisation of One At A Time Hard means we read the key in + * reverse from normal, but by doing so we avoid the loop overhead. + */ PERL_STATIC_INLINE U32 -S_perl_hash_murmur_hash_64b (const unsigned char * const seed, const unsigned char *str, STRLEN len) -{ - const U32 m = 0x5bd1e995; - const int r = 24; - - U32 h1 = ((U32 *)seed)[0] ^ len; - U32 h2 = ((U32 *)seed)[1]; - - const U32 * data = (const U32 *)str; - - while(len >= 8) - { - U32 k1, k2; - k1 = *data++; - k1 *= m; k1 ^= k1 >> r; k1 *= m; - h1 *= m; h1 ^= k1; - len -= 4; - - k2 = *data++; - k2 *= m; k2 ^= k2 >> r; k2 *= m; - h2 *= m; h2 ^= k2; - len -= 4; - } - - if(len >= 4) - { - U32 k1 = *data++; - k1 *= m; k1 ^= k1 >> r; k1 *= m; - h1 *= m; h1 ^= k1; - len -= 4; - } - - switch(len) - { - case 3: h2 ^= ((unsigned char*)data)[2] << 16; /* fallthrough */ - case 2: h2 ^= ((unsigned char*)data)[1] << 8; /* fallthrough */ - case 1: h2 ^= ((unsigned char*)data)[0]; /* fallthrough */ - h2 *= m; - }; - - h1 ^= h2 >> 18; h1 *= m; - h2 ^= h1 >> 22; h2 *= m; - /* - The following code has been removed as it is unused - when only the low 32 bits are used. -- Yves - - h1 ^= h2 >> 17; h1 *= m; - - U64 h = h1; - - h = (h << 32) | h2; - */ - - return h2; +S_perl_hash_oaathu_siphash_1_3(const unsigned char * const seed, const unsigned char *str, const STRLEN len) { + U32 hash = *((const U32*)seed) + (U32)len; + switch (len) { + case 16: + hash += (hash << 10); + hash ^= (hash >> 6); + hash += str[15]; + case 15: + hash += (hash << 10); + hash ^= (hash >> 6); + hash += str[14]; + case 14: + hash += (hash << 10); + hash ^= (hash >> 6); + hash += str[13]; + case 13: + hash += (hash << 10); + hash ^= (hash >> 6); + hash += str[12]; + case 12: + hash += (hash << 10); + hash ^= (hash >> 6); + hash += str[11]; + case 11: + hash += (hash << 10); + hash ^= (hash >> 6); + hash += str[10]; + case 10: + hash += (hash << 10); + hash ^= (hash >> 6); + hash += str[9]; + case 9: + hash += (hash << 10); + hash ^= (hash >> 6); + hash += str[8]; + case 8: + hash += (hash << 10); + hash ^= (hash >> 6); + hash += str[7]; + case 7: + hash += (hash << 10); + hash ^= (hash >> 6); + hash += str[6]; + case 6: + hash += (hash << 10); + hash ^= (hash >> 6); + hash += str[5]; + case 5: + hash += (hash << 10); + hash ^= (hash >> 6); + hash += str[4]; + case 4: + hash += (hash << 10); + hash ^= (hash >> 6); + hash += str[3]; + case 3: + hash += (hash << 10); + hash ^= (hash >> 6); + hash += str[2]; + case 2: + hash += (hash << 10); + hash ^= (hash >> 6); + hash += str[1]; + case 1: + hash += (hash << 10); + hash ^= (hash >> 6); + hash += str[0]; + case 0: + hash += (hash << 10); + hash ^= (hash >> 6); + hash += seed[4]; + hash += (hash << 10); + hash ^= (hash >> 6); + hash += seed[5]; + hash += (hash << 10); + hash ^= (hash >> 6); + hash += seed[6]; + hash += (hash << 10); + hash ^= (hash >> 6); + hash += seed[7]; + hash += (hash << 10); + hash ^= (hash >> 6); + + hash += (hash << 3); + hash ^= (hash >> 11); + return (hash + (hash << 15)); + } + return S_perl_hash_siphash_1_3(seed+8, str, len); } -#endif +#endif /* defined(HAS_QUAD) */ -/* legacy - only mod_perl should be doing this. */ -#ifdef PERL_HASH_INTERNAL_ACCESS -#define PERL_HASH_INTERNAL(hash,str,len) PERL_HASH(hash,str,len) -#endif #endif /*compile once*/ diff --git a/Master/tlpkg/tlperl/lib/CORE/inline.h b/Master/tlpkg/tlperl/lib/CORE/inline.h index 35983d8caeb..12633a36fae 100755 --- a/Master/tlpkg/tlperl/lib/CORE/inline.h +++ b/Master/tlpkg/tlperl/lib/CORE/inline.h @@ -125,6 +125,29 @@ PadnameIN_SCOPE(const PADNAME * const pn, const U32 seq) } #endif +/* ------------------------------- pp.h ------------------------------- */ + +PERL_STATIC_INLINE I32 +S_TOPMARK(pTHX) +{ + DEBUG_s(DEBUG_v(PerlIO_printf(Perl_debug_log, + "MARK top %p %" IVdf "\n", + PL_markstack_ptr, + (IV)*PL_markstack_ptr))); + return *PL_markstack_ptr; +} + +PERL_STATIC_INLINE I32 +S_POPMARK(pTHX) +{ + DEBUG_s(DEBUG_v(PerlIO_printf(Perl_debug_log, + "MARK pop %p %" IVdf "\n", + (PL_markstack_ptr-1), + (IV)*(PL_markstack_ptr-1)))); + assert((PL_markstack_ptr > PL_markstack) || !"MARK underflow"); + return *PL_markstack_ptr--; +} + /* ----------------------------- regexp.h ----------------------------- */ PERL_STATIC_INLINE struct regexp * @@ -233,6 +256,10 @@ GCC_DIAG_RESTORE /* Intentionally left semicolonless. */ /* ------------------------------- utf8.h ------------------------------- */ +/* +=head1 Unicode Support +*/ + PERL_STATIC_INLINE void S_append_utf8_from_native_byte(const U8 byte, U8** dest) { @@ -242,41 +269,912 @@ S_append_utf8_from_native_byte(const U8 byte, U8** dest) PERL_ARGS_ASSERT_APPEND_UTF8_FROM_NATIVE_BYTE; if (NATIVE_BYTE_IS_INVARIANT(byte)) - *(*dest)++ = byte; + *((*dest)++) = byte; else { - *(*dest)++ = UTF8_EIGHT_BIT_HI(byte); - *(*dest)++ = UTF8_EIGHT_BIT_LO(byte); + *((*dest)++) = UTF8_EIGHT_BIT_HI(byte); + *((*dest)++) = UTF8_EIGHT_BIT_LO(byte); } } /* +=for apidoc valid_utf8_to_uvchr +Like C<L</utf8_to_uvchr_buf>>, but should only be called when it is known that +the next character in the input UTF-8 string C<s> is well-formed (I<e.g.>, +it passes C<L</isUTF8_CHAR>>. Surrogates, non-character code points, and +non-Unicode code points are allowed. + +=cut + + */ -A helper function for the macro isUTF8_CHAR(), which should be used instead of -this function. The macro will handle smaller code points directly saving time, -using this function as a fall-back for higher code points. +PERL_STATIC_INLINE UV +Perl_valid_utf8_to_uvchr(const U8 *s, STRLEN *retlen) +{ + const UV expectlen = UTF8SKIP(s); + const U8* send = s + expectlen; + UV uv = *s; -Tests if the first bytes of string C<s> form a valid UTF-8 character. 0 is -returned if the bytes starting at C<s> up to but not including C<e> do not form a -complete well-formed UTF-8 character; otherwise the number of bytes in the -character is returned. + PERL_ARGS_ASSERT_VALID_UTF8_TO_UVCHR; -Note that an INVARIANT (i.e. ASCII on non-EBCDIC) character is a valid UTF-8 -character. + if (retlen) { + *retlen = expectlen; + } -=cut */ -PERL_STATIC_INLINE STRLEN -S__is_utf8_char_slow(const U8 *s, const U8 *e) + /* An invariant is trivially returned */ + if (expectlen == 1) { + return uv; + } + + /* Remove the leading bits that indicate the number of bytes, leaving just + * the bits that are part of the value */ + uv = NATIVE_UTF8_TO_I8(uv) & UTF_START_MASK(expectlen); + + /* Now, loop through the remaining bytes, accumulating each into the + * working total as we go. (I khw tried unrolling the loop for up to 4 + * bytes, but there was no performance improvement) */ + for (++s; s < send; s++) { + uv = UTF8_ACCUMULATE(uv, *s); + } + + return UNI_TO_NATIVE(uv); + +} + +/* +=for apidoc is_utf8_invariant_string + +Returns TRUE if the first C<len> bytes of the string C<s> are the same +regardless of the UTF-8 encoding of the string (or UTF-EBCDIC encoding on +EBCDIC machines); otherwise it returns FALSE. That is, it returns TRUE if they +are UTF-8 invariant. On ASCII-ish machines, all the ASCII characters and only +the ASCII characters fit this definition. On EBCDIC machines, the ASCII-range +characters are invariant, but so also are the C1 controls. + +If C<len> is 0, it will be calculated using C<strlen(s)>, (which means if you +use this option, that C<s> can't have embedded C<NUL> characters and has to +have a terminating C<NUL> byte). + +See also +C<L</is_utf8_string>>, +C<L</is_utf8_string_flags>>, +C<L</is_utf8_string_loc>>, +C<L</is_utf8_string_loc_flags>>, +C<L</is_utf8_string_loclen>>, +C<L</is_utf8_string_loclen_flags>>, +C<L</is_utf8_fixed_width_buf_flags>>, +C<L</is_utf8_fixed_width_buf_loc_flags>>, +C<L</is_utf8_fixed_width_buf_loclen_flags>>, +C<L</is_strict_utf8_string>>, +C<L</is_strict_utf8_string_loc>>, +C<L</is_strict_utf8_string_loclen>>, +C<L</is_c9strict_utf8_string>>, +C<L</is_c9strict_utf8_string_loc>>, +and +C<L</is_c9strict_utf8_string_loclen>>. + +=cut +*/ + +PERL_STATIC_INLINE bool +S_is_utf8_invariant_string(const U8* const s, const STRLEN len) +{ + const U8* const send = s + (len ? len : strlen((const char *)s)); + const U8* x = s; + + PERL_ARGS_ASSERT_IS_UTF8_INVARIANT_STRING; + + for (; x < send; ++x) { + if (!UTF8_IS_INVARIANT(*x)) + return FALSE; + } + + return TRUE; +} + +/* +=for apidoc is_utf8_string + +Returns TRUE if the first C<len> bytes of string C<s> form a valid +Perl-extended-UTF-8 string; returns FALSE otherwise. If C<len> is 0, it will +be calculated using C<strlen(s)> (which means if you use this option, that C<s> +can't have embedded C<NUL> characters and has to have a terminating C<NUL> +byte). Note that all characters being ASCII constitute 'a valid UTF-8 string'. + +This function considers Perl's extended UTF-8 to be valid. That means that +code points above Unicode, surrogates, and non-character code points are +considered valid by this function. Use C<L</is_strict_utf8_string>>, +C<L</is_c9strict_utf8_string>>, or C<L</is_utf8_string_flags>> to restrict what +code points are considered valid. + +See also +C<L</is_utf8_invariant_string>>, +C<L</is_utf8_string_loc>>, +C<L</is_utf8_string_loclen>>, +C<L</is_utf8_fixed_width_buf_flags>>, +C<L</is_utf8_fixed_width_buf_loc_flags>>, +C<L</is_utf8_fixed_width_buf_loclen_flags>>, + +=cut +*/ + +PERL_STATIC_INLINE bool +Perl_is_utf8_string(const U8 *s, const STRLEN len) +{ + /* This is now marked pure in embed.fnc, because isUTF8_CHAR now is pure. + * Be aware of possible changes to that */ + + const U8* const send = s + (len ? len : strlen((const char *)s)); + const U8* x = s; + + PERL_ARGS_ASSERT_IS_UTF8_STRING; + + while (x < send) { + const STRLEN cur_len = isUTF8_CHAR(x, send); + if (UNLIKELY(! cur_len)) { + return FALSE; + } + x += cur_len; + } + + return TRUE; +} + +/* +=for apidoc is_strict_utf8_string + +Returns TRUE if the first C<len> bytes of string C<s> form a valid +UTF-8-encoded string that is fully interchangeable by any application using +Unicode rules; otherwise it returns FALSE. If C<len> is 0, it will be +calculated using C<strlen(s)> (which means if you use this option, that C<s> +can't have embedded C<NUL> characters and has to have a terminating C<NUL> +byte). Note that all characters being ASCII constitute 'a valid UTF-8 string'. + +This function returns FALSE for strings containing any +code points above the Unicode max of 0x10FFFF, surrogate code points, or +non-character code points. + +See also +C<L</is_utf8_invariant_string>>, +C<L</is_utf8_string>>, +C<L</is_utf8_string_flags>>, +C<L</is_utf8_string_loc>>, +C<L</is_utf8_string_loc_flags>>, +C<L</is_utf8_string_loclen>>, +C<L</is_utf8_string_loclen_flags>>, +C<L</is_utf8_fixed_width_buf_flags>>, +C<L</is_utf8_fixed_width_buf_loc_flags>>, +C<L</is_utf8_fixed_width_buf_loclen_flags>>, +C<L</is_strict_utf8_string_loc>>, +C<L</is_strict_utf8_string_loclen>>, +C<L</is_c9strict_utf8_string>>, +C<L</is_c9strict_utf8_string_loc>>, +and +C<L</is_c9strict_utf8_string_loclen>>. + +=cut +*/ + +PERL_STATIC_INLINE bool +S_is_strict_utf8_string(const U8 *s, const STRLEN len) +{ + const U8* const send = s + (len ? len : strlen((const char *)s)); + const U8* x = s; + + PERL_ARGS_ASSERT_IS_STRICT_UTF8_STRING; + + while (x < send) { + const STRLEN cur_len = isSTRICT_UTF8_CHAR(x, send); + if (UNLIKELY(! cur_len)) { + return FALSE; + } + x += cur_len; + } + + return TRUE; +} + +/* +=for apidoc is_c9strict_utf8_string + +Returns TRUE if the first C<len> bytes of string C<s> form a valid +UTF-8-encoded string that conforms to +L<Unicode Corrigendum #9|http://www.unicode.org/versions/corrigendum9.html>; +otherwise it returns FALSE. If C<len> is 0, it will be calculated using +C<strlen(s)> (which means if you use this option, that C<s> can't have embedded +C<NUL> characters and has to have a terminating C<NUL> byte). Note that all +characters being ASCII constitute 'a valid UTF-8 string'. + +This function returns FALSE for strings containing any code points above the +Unicode max of 0x10FFFF or surrogate code points, but accepts non-character +code points per +L<Corrigendum #9|http://www.unicode.org/versions/corrigendum9.html>. + +See also +C<L</is_utf8_invariant_string>>, +C<L</is_utf8_string>>, +C<L</is_utf8_string_flags>>, +C<L</is_utf8_string_loc>>, +C<L</is_utf8_string_loc_flags>>, +C<L</is_utf8_string_loclen>>, +C<L</is_utf8_string_loclen_flags>>, +C<L</is_utf8_fixed_width_buf_flags>>, +C<L</is_utf8_fixed_width_buf_loc_flags>>, +C<L</is_utf8_fixed_width_buf_loclen_flags>>, +C<L</is_strict_utf8_string>>, +C<L</is_strict_utf8_string_loc>>, +C<L</is_strict_utf8_string_loclen>>, +C<L</is_c9strict_utf8_string_loc>>, +and +C<L</is_c9strict_utf8_string_loclen>>. + +=cut +*/ + +PERL_STATIC_INLINE bool +S_is_c9strict_utf8_string(const U8 *s, const STRLEN len) +{ + const U8* const send = s + (len ? len : strlen((const char *)s)); + const U8* x = s; + + PERL_ARGS_ASSERT_IS_C9STRICT_UTF8_STRING; + + while (x < send) { + const STRLEN cur_len = isC9_STRICT_UTF8_CHAR(x, send); + if (UNLIKELY(! cur_len)) { + return FALSE; + } + x += cur_len; + } + + return TRUE; +} + +/* The above 3 functions could have been moved into the more general one just + * below, and made #defines that call it with the right 'flags'. They are + * currently kept separate to increase their chances of getting inlined */ + +/* +=for apidoc is_utf8_string_flags + +Returns TRUE if the first C<len> bytes of string C<s> form a valid +UTF-8 string, subject to the restrictions imposed by C<flags>; +returns FALSE otherwise. If C<len> is 0, it will be calculated +using C<strlen(s)> (which means if you use this option, that C<s> can't have +embedded C<NUL> characters and has to have a terminating C<NUL> byte). Note +that all characters being ASCII constitute 'a valid UTF-8 string'. + +If C<flags> is 0, this gives the same results as C<L</is_utf8_string>>; if +C<flags> is C<UTF8_DISALLOW_ILLEGAL_INTERCHANGE>, this gives the same results +as C<L</is_strict_utf8_string>>; and if C<flags> is +C<UTF8_DISALLOW_ILLEGAL_C9_INTERCHANGE>, this gives the same results as +C<L</is_c9strict_utf8_string>>. Otherwise C<flags> may be any +combination of the C<UTF8_DISALLOW_I<foo>> flags understood by +C<L</utf8n_to_uvchr>>, with the same meanings. + +See also +C<L</is_utf8_invariant_string>>, +C<L</is_utf8_string>>, +C<L</is_utf8_string_loc>>, +C<L</is_utf8_string_loc_flags>>, +C<L</is_utf8_string_loclen>>, +C<L</is_utf8_string_loclen_flags>>, +C<L</is_utf8_fixed_width_buf_flags>>, +C<L</is_utf8_fixed_width_buf_loc_flags>>, +C<L</is_utf8_fixed_width_buf_loclen_flags>>, +C<L</is_strict_utf8_string>>, +C<L</is_strict_utf8_string_loc>>, +C<L</is_strict_utf8_string_loclen>>, +C<L</is_c9strict_utf8_string>>, +C<L</is_c9strict_utf8_string_loc>>, +and +C<L</is_c9strict_utf8_string_loclen>>. + +=cut +*/ + +PERL_STATIC_INLINE bool +S_is_utf8_string_flags(const U8 *s, const STRLEN len, const U32 flags) +{ + const U8* const send = s + (len ? len : strlen((const char *)s)); + const U8* x = s; + + PERL_ARGS_ASSERT_IS_UTF8_STRING_FLAGS; + assert(0 == (flags & ~(UTF8_DISALLOW_ILLEGAL_INTERCHANGE + |UTF8_DISALLOW_ABOVE_31_BIT))); + + if (flags == 0) { + return is_utf8_string(s, len); + } + + if ((flags & ~UTF8_DISALLOW_ABOVE_31_BIT) + == UTF8_DISALLOW_ILLEGAL_INTERCHANGE) + { + return is_strict_utf8_string(s, len); + } + + if ((flags & ~UTF8_DISALLOW_ABOVE_31_BIT) + == UTF8_DISALLOW_ILLEGAL_C9_INTERCHANGE) + { + return is_c9strict_utf8_string(s, len); + } + + while (x < send) { + STRLEN cur_len = isUTF8_CHAR_flags(x, send, flags); + if (UNLIKELY(! cur_len)) { + return FALSE; + } + x += cur_len; + } + + return TRUE; +} + +/* + +=for apidoc is_utf8_string_loc + +Like C<L</is_utf8_string>> but stores the location of the failure (in the +case of "utf8ness failure") or the location C<s>+C<len> (in the case of +"utf8ness success") in the C<ep> pointer. + +See also C<L</is_utf8_string_loclen>>. + +=cut +*/ + +#define is_utf8_string_loc(s, len, ep) is_utf8_string_loclen(s, len, ep, 0) + +/* + +=for apidoc is_utf8_string_loclen + +Like C<L</is_utf8_string>> but stores the location of the failure (in the +case of "utf8ness failure") or the location C<s>+C<len> (in the case of +"utf8ness success") in the C<ep> pointer, and the number of UTF-8 +encoded characters in the C<el> pointer. + +See also C<L</is_utf8_string_loc>>. + +=cut +*/ + +PERL_STATIC_INLINE bool +Perl_is_utf8_string_loclen(const U8 *s, const STRLEN len, const U8 **ep, STRLEN *el) +{ + const U8* const send = s + (len ? len : strlen((const char *)s)); + const U8* x = s; + STRLEN outlen = 0; + + PERL_ARGS_ASSERT_IS_UTF8_STRING_LOCLEN; + + while (x < send) { + const STRLEN cur_len = isUTF8_CHAR(x, send); + if (UNLIKELY(! cur_len)) { + break; + } + x += cur_len; + outlen++; + } + + if (el) + *el = outlen; + + if (ep) { + *ep = x; + } + + return (x == send); +} + +/* + +=for apidoc is_strict_utf8_string_loc + +Like C<L</is_strict_utf8_string>> but stores the location of the failure (in the +case of "utf8ness failure") or the location C<s>+C<len> (in the case of +"utf8ness success") in the C<ep> pointer. + +See also C<L</is_strict_utf8_string_loclen>>. + +=cut +*/ + +#define is_strict_utf8_string_loc(s, len, ep) \ + is_strict_utf8_string_loclen(s, len, ep, 0) + +/* + +=for apidoc is_strict_utf8_string_loclen + +Like C<L</is_strict_utf8_string>> but stores the location of the failure (in the +case of "utf8ness failure") or the location C<s>+C<len> (in the case of +"utf8ness success") in the C<ep> pointer, and the number of UTF-8 +encoded characters in the C<el> pointer. + +See also C<L</is_strict_utf8_string_loc>>. + +=cut +*/ + +PERL_STATIC_INLINE bool +S_is_strict_utf8_string_loclen(const U8 *s, const STRLEN len, const U8 **ep, STRLEN *el) { - dTHX; /* The function called below requires thread context */ + const U8* const send = s + (len ? len : strlen((const char *)s)); + const U8* x = s; + STRLEN outlen = 0; - STRLEN actual_len; + PERL_ARGS_ASSERT_IS_STRICT_UTF8_STRING_LOCLEN; - PERL_ARGS_ASSERT__IS_UTF8_CHAR_SLOW; + while (x < send) { + const STRLEN cur_len = isSTRICT_UTF8_CHAR(x, send); + if (UNLIKELY(! cur_len)) { + break; + } + x += cur_len; + outlen++; + } + + if (el) + *el = outlen; - assert(e >= s); - utf8n_to_uvchr(s, e - s, &actual_len, UTF8_CHECK_ONLY); + if (ep) { + *ep = x; + } - return (actual_len == (STRLEN) -1) ? 0 : actual_len; + return (x == send); +} + +/* + +=for apidoc is_c9strict_utf8_string_loc + +Like C<L</is_c9strict_utf8_string>> but stores the location of the failure (in +the case of "utf8ness failure") or the location C<s>+C<len> (in the case of +"utf8ness success") in the C<ep> pointer. + +See also C<L</is_c9strict_utf8_string_loclen>>. + +=cut +*/ + +#define is_c9strict_utf8_string_loc(s, len, ep) \ + is_c9strict_utf8_string_loclen(s, len, ep, 0) + +/* + +=for apidoc is_c9strict_utf8_string_loclen + +Like C<L</is_c9strict_utf8_string>> but stores the location of the failure (in +the case of "utf8ness failure") or the location C<s>+C<len> (in the case of +"utf8ness success") in the C<ep> pointer, and the number of UTF-8 encoded +characters in the C<el> pointer. + +See also C<L</is_c9strict_utf8_string_loc>>. + +=cut +*/ + +PERL_STATIC_INLINE bool +S_is_c9strict_utf8_string_loclen(const U8 *s, const STRLEN len, const U8 **ep, STRLEN *el) +{ + const U8* const send = s + (len ? len : strlen((const char *)s)); + const U8* x = s; + STRLEN outlen = 0; + + PERL_ARGS_ASSERT_IS_C9STRICT_UTF8_STRING_LOCLEN; + + while (x < send) { + const STRLEN cur_len = isC9_STRICT_UTF8_CHAR(x, send); + if (UNLIKELY(! cur_len)) { + break; + } + x += cur_len; + outlen++; + } + + if (el) + *el = outlen; + + if (ep) { + *ep = x; + } + + return (x == send); +} + +/* + +=for apidoc is_utf8_string_loc_flags + +Like C<L</is_utf8_string_flags>> but stores the location of the failure (in the +case of "utf8ness failure") or the location C<s>+C<len> (in the case of +"utf8ness success") in the C<ep> pointer. + +See also C<L</is_utf8_string_loclen_flags>>. + +=cut +*/ + +#define is_utf8_string_loc_flags(s, len, ep, flags) \ + is_utf8_string_loclen_flags(s, len, ep, 0, flags) + + +/* The above 3 actual functions could have been moved into the more general one + * just below, and made #defines that call it with the right 'flags'. They are + * currently kept separate to increase their chances of getting inlined */ + +/* + +=for apidoc is_utf8_string_loclen_flags + +Like C<L</is_utf8_string_flags>> but stores the location of the failure (in the +case of "utf8ness failure") or the location C<s>+C<len> (in the case of +"utf8ness success") in the C<ep> pointer, and the number of UTF-8 +encoded characters in the C<el> pointer. + +See also C<L</is_utf8_string_loc_flags>>. + +=cut +*/ + +PERL_STATIC_INLINE bool +S_is_utf8_string_loclen_flags(const U8 *s, const STRLEN len, const U8 **ep, STRLEN *el, const U32 flags) +{ + const U8* const send = s + (len ? len : strlen((const char *)s)); + const U8* x = s; + STRLEN outlen = 0; + + PERL_ARGS_ASSERT_IS_UTF8_STRING_LOCLEN_FLAGS; + assert(0 == (flags & ~(UTF8_DISALLOW_ILLEGAL_INTERCHANGE + |UTF8_DISALLOW_ABOVE_31_BIT))); + + if (flags == 0) { + return is_utf8_string_loclen(s, len, ep, el); + } + + if ((flags & ~UTF8_DISALLOW_ABOVE_31_BIT) + == UTF8_DISALLOW_ILLEGAL_INTERCHANGE) + { + return is_strict_utf8_string_loclen(s, len, ep, el); + } + + if ((flags & ~UTF8_DISALLOW_ABOVE_31_BIT) + == UTF8_DISALLOW_ILLEGAL_C9_INTERCHANGE) + { + return is_c9strict_utf8_string_loclen(s, len, ep, el); + } + + while (x < send) { + const STRLEN cur_len = isUTF8_CHAR_flags(x, send, flags); + if (UNLIKELY(! cur_len)) { + break; + } + x += cur_len; + outlen++; + } + + if (el) + *el = outlen; + + if (ep) { + *ep = x; + } + + return (x == send); +} + +/* +=for apidoc utf8_distance + +Returns the number of UTF-8 characters between the UTF-8 pointers C<a> +and C<b>. + +WARNING: use only if you *know* that the pointers point inside the +same UTF-8 buffer. + +=cut +*/ + +PERL_STATIC_INLINE IV +Perl_utf8_distance(pTHX_ const U8 *a, const U8 *b) +{ + PERL_ARGS_ASSERT_UTF8_DISTANCE; + + return (a < b) ? -1 * (IV) utf8_length(a, b) : (IV) utf8_length(b, a); +} + +/* +=for apidoc utf8_hop + +Return the UTF-8 pointer C<s> displaced by C<off> characters, either +forward or backward. + +WARNING: do not use the following unless you *know* C<off> is within +the UTF-8 data pointed to by C<s> *and* that on entry C<s> is aligned +on the first byte of character or just after the last byte of a character. + +=cut +*/ + +PERL_STATIC_INLINE U8 * +Perl_utf8_hop(const U8 *s, SSize_t off) +{ + PERL_ARGS_ASSERT_UTF8_HOP; + + /* Note: cannot use UTF8_IS_...() too eagerly here since e.g + * the bitops (especially ~) can create illegal UTF-8. + * In other words: in Perl UTF-8 is not just for Unicode. */ + + if (off >= 0) { + while (off--) + s += UTF8SKIP(s); + } + else { + while (off++) { + s--; + while (UTF8_IS_CONTINUATION(*s)) + s--; + } + } + GCC_DIAG_IGNORE(-Wcast-qual); + return (U8 *)s; + GCC_DIAG_RESTORE; +} + +/* +=for apidoc utf8_hop_forward + +Return the UTF-8 pointer C<s> displaced by up to C<off> characters, +forward. + +C<off> must be non-negative. + +C<s> must be before or equal to C<end>. + +When moving forward it will not move beyond C<end>. + +Will not exceed this limit even if the string is not valid "UTF-8". + +=cut +*/ + +PERL_STATIC_INLINE U8 * +Perl_utf8_hop_forward(const U8 *s, SSize_t off, const U8 *end) +{ + PERL_ARGS_ASSERT_UTF8_HOP_FORWARD; + + /* Note: cannot use UTF8_IS_...() too eagerly here since e.g + * the bitops (especially ~) can create illegal UTF-8. + * In other words: in Perl UTF-8 is not just for Unicode. */ + + assert(s <= end); + assert(off >= 0); + + while (off--) { + STRLEN skip = UTF8SKIP(s); + if ((STRLEN)(end - s) <= skip) { + GCC_DIAG_IGNORE(-Wcast-qual); + return (U8 *)end; + GCC_DIAG_RESTORE; + } + s += skip; + } + + GCC_DIAG_IGNORE(-Wcast-qual); + return (U8 *)s; + GCC_DIAG_RESTORE; +} + +/* +=for apidoc utf8_hop_back + +Return the UTF-8 pointer C<s> displaced by up to C<off> characters, +backward. + +C<off> must be non-positive. + +C<s> must be after or equal to C<start>. + +When moving backward it will not move before C<start>. + +Will not exceed this limit even if the string is not valid "UTF-8". + +=cut +*/ + +PERL_STATIC_INLINE U8 * +Perl_utf8_hop_back(const U8 *s, SSize_t off, const U8 *start) +{ + PERL_ARGS_ASSERT_UTF8_HOP_BACK; + + /* Note: cannot use UTF8_IS_...() too eagerly here since e.g + * the bitops (especially ~) can create illegal UTF-8. + * In other words: in Perl UTF-8 is not just for Unicode. */ + + assert(start <= s); + assert(off <= 0); + + while (off++ && s > start) { + s--; + while (UTF8_IS_CONTINUATION(*s) && s > start) + s--; + } + + GCC_DIAG_IGNORE(-Wcast-qual); + return (U8 *)s; + GCC_DIAG_RESTORE; +} + +/* +=for apidoc utf8_hop_safe + +Return the UTF-8 pointer C<s> displaced by up to C<off> characters, +either forward or backward. + +When moving backward it will not move before C<start>. + +When moving forward it will not move beyond C<end>. + +Will not exceed those limits even if the string is not valid "UTF-8". + +=cut +*/ + +PERL_STATIC_INLINE U8 * +Perl_utf8_hop_safe(const U8 *s, SSize_t off, const U8 *start, const U8 *end) +{ + PERL_ARGS_ASSERT_UTF8_HOP_SAFE; + + /* Note: cannot use UTF8_IS_...() too eagerly here since e.g + * the bitops (especially ~) can create illegal UTF-8. + * In other words: in Perl UTF-8 is not just for Unicode. */ + + assert(start <= s && s <= end); + + if (off >= 0) { + return utf8_hop_forward(s, off, end); + } + else { + return utf8_hop_back(s, off, start); + } +} + +/* + +=for apidoc is_utf8_valid_partial_char + +Returns 0 if the sequence of bytes starting at C<s> and looking no further than +S<C<e - 1>> is the UTF-8 encoding, as extended by Perl, for one or more code +points. Otherwise, it returns 1 if there exists at least one non-empty +sequence of bytes that when appended to sequence C<s>, starting at position +C<e> causes the entire sequence to be the well-formed UTF-8 of some code point; +otherwise returns 0. + +In other words this returns TRUE if C<s> points to a partial UTF-8-encoded code +point. + +This is useful when a fixed-length buffer is being tested for being well-formed +UTF-8, but the final few bytes in it don't comprise a full character; that is, +it is split somewhere in the middle of the final code point's UTF-8 +representation. (Presumably when the buffer is refreshed with the next chunk +of data, the new first bytes will complete the partial code point.) This +function is used to verify that the final bytes in the current buffer are in +fact the legal beginning of some code point, so that if they aren't, the +failure can be signalled without having to wait for the next read. + +=cut +*/ +#define is_utf8_valid_partial_char(s, e) \ + is_utf8_valid_partial_char_flags(s, e, 0) + +/* + +=for apidoc is_utf8_valid_partial_char_flags + +Like C<L</is_utf8_valid_partial_char>>, it returns a boolean giving whether +or not the input is a valid UTF-8 encoded partial character, but it takes an +extra parameter, C<flags>, which can further restrict which code points are +considered valid. + +If C<flags> is 0, this behaves identically to +C<L</is_utf8_valid_partial_char>>. Otherwise C<flags> can be any combination +of the C<UTF8_DISALLOW_I<foo>> flags accepted by C<L</utf8n_to_uvchr>>. If +there is any sequence of bytes that can complete the input partial character in +such a way that a non-prohibited character is formed, the function returns +TRUE; otherwise FALSE. Non character code points cannot be determined based on +partial character input. But many of the other possible excluded types can be +determined from just the first one or two bytes. + +=cut + */ + +PERL_STATIC_INLINE bool +S_is_utf8_valid_partial_char_flags(const U8 * const s, const U8 * const e, const U32 flags) +{ + PERL_ARGS_ASSERT_IS_UTF8_VALID_PARTIAL_CHAR_FLAGS; + + assert(0 == (flags & ~(UTF8_DISALLOW_ILLEGAL_INTERCHANGE + |UTF8_DISALLOW_ABOVE_31_BIT))); + + if (s >= e || s + UTF8SKIP(s) <= e) { + return FALSE; + } + + return cBOOL(_is_utf8_char_helper(s, e, flags)); +} + +/* + +=for apidoc is_utf8_fixed_width_buf_flags + +Returns TRUE if the fixed-width buffer starting at C<s> with length C<len> +is entirely valid UTF-8, subject to the restrictions given by C<flags>; +otherwise it returns FALSE. + +If C<flags> is 0, any well-formed UTF-8, as extended by Perl, is accepted +without restriction. If the final few bytes of the buffer do not form a +complete code point, this will return TRUE anyway, provided that +C<L</is_utf8_valid_partial_char_flags>> returns TRUE for them. + +If C<flags> in non-zero, it can be any combination of the +C<UTF8_DISALLOW_I<foo>> flags accepted by C<L</utf8n_to_uvchr>>, and with the +same meanings. + +This function differs from C<L</is_utf8_string_flags>> only in that the latter +returns FALSE if the final few bytes of the string don't form a complete code +point. + +=cut + */ +#define is_utf8_fixed_width_buf_flags(s, len, flags) \ + is_utf8_fixed_width_buf_loclen_flags(s, len, 0, 0, flags) + +/* + +=for apidoc is_utf8_fixed_width_buf_loc_flags + +Like C<L</is_utf8_fixed_width_buf_flags>> but stores the location of the +failure in the C<ep> pointer. If the function returns TRUE, C<*ep> will point +to the beginning of any partial character at the end of the buffer; if there is +no partial character C<*ep> will contain C<s>+C<len>. + +See also C<L</is_utf8_fixed_width_buf_loclen_flags>>. + +=cut +*/ + +#define is_utf8_fixed_width_buf_loc_flags(s, len, loc, flags) \ + is_utf8_fixed_width_buf_loclen_flags(s, len, loc, 0, flags) + +/* + +=for apidoc is_utf8_fixed_width_buf_loclen_flags + +Like C<L</is_utf8_fixed_width_buf_loc_flags>> but stores the number of +complete, valid characters found in the C<el> pointer. + +=cut +*/ + +PERL_STATIC_INLINE bool +S_is_utf8_fixed_width_buf_loclen_flags(const U8 * const s, + const STRLEN len, + const U8 **ep, + STRLEN *el, + const U32 flags) +{ + const U8 * maybe_partial; + + PERL_ARGS_ASSERT_IS_UTF8_FIXED_WIDTH_BUF_LOCLEN_FLAGS; + + if (! ep) { + ep = &maybe_partial; + } + + /* If it's entirely valid, return that; otherwise see if the only error is + * that the final few bytes are for a partial character */ + return is_utf8_string_loclen_flags(s, len, ep, el, flags) + || is_utf8_valid_partial_char_flags(*ep, s + len, flags); } /* ------------------------------- perl.h ----------------------------- */ @@ -601,9 +1499,9 @@ S_cx_pusheval(pTHX_ PERL_CONTEXT *cx, OP *retop, SV *namesv) cx->blk_eval.cv = NULL; /* later set by doeval_compile() */ cx->blk_eval.cur_top_env = PL_top_env; - assert(!(PL_in_eval & ~ 0x7F)); + assert(!(PL_in_eval & ~ 0x3F)); assert(!(PL_op->op_type & ~0x1FF)); - cx->blk_u16 = (PL_in_eval & 0x7F) | ((U16)PL_op->op_type << 7); + cx->blk_u16 = (PL_in_eval & 0x3F) | ((U16)PL_op->op_type << 7); } @@ -616,16 +1514,19 @@ S_cx_popeval(pTHX_ PERL_CONTEXT *cx) assert(CxTYPE(cx) == CXt_EVAL); PL_in_eval = CxOLD_IN_EVAL(cx); + assert(!(PL_in_eval & 0xc0)); PL_eval_root = cx->blk_eval.old_eval_root; sv = cx->blk_eval.cur_text; - if (sv && SvSCREAM(sv)) { + if (sv && CxEVAL_TXT_REFCNTED(cx)) { cx->blk_eval.cur_text = NULL; SvREFCNT_dec_NN(sv); } sv = cx->blk_eval.old_namesv; - if (sv && !SvTEMP(sv))/* TEMP implies cx_popeval() re-entrantly called */ - sv_2mortal(sv); + if (sv) { + cx->blk_eval.old_namesv = NULL; + SvREFCNT_dec_NN(sv); + } } @@ -715,6 +1616,7 @@ S_cx_popwhen(pTHX_ PERL_CONTEXT *cx) assert(CxTYPE(cx) == CXt_WHEN); PERL_UNUSED_ARG(cx); + PERL_UNUSED_CONTEXT; /* currently NOOP */ } @@ -743,8 +1645,91 @@ S_cx_popgiven(pTHX_ PERL_CONTEXT *cx) SvREFCNT_dec(sv); } +/* ------------------ util.h ------------------------------------------- */ + +/* +=head1 Miscellaneous Functions + +=for apidoc foldEQ + +Returns true if the leading C<len> bytes of the strings C<s1> and C<s2> are the +same +case-insensitively; false otherwise. Uppercase and lowercase ASCII range bytes +match themselves and their opposite case counterparts. Non-cased and non-ASCII +range bytes match only themselves. + +=cut +*/ + +PERL_STATIC_INLINE I32 +Perl_foldEQ(const char *s1, const char *s2, I32 len) +{ + const U8 *a = (const U8 *)s1; + const U8 *b = (const U8 *)s2; + + PERL_ARGS_ASSERT_FOLDEQ; + + assert(len >= 0); + + while (len--) { + if (*a != *b && *a != PL_fold[*b]) + return 0; + a++,b++; + } + return 1; +} + +PERL_STATIC_INLINE I32 +Perl_foldEQ_latin1(const char *s1, const char *s2, I32 len) +{ + /* Compare non-utf8 using Unicode (Latin1) semantics. Does not work on + * MICRO_SIGN, LATIN_SMALL_LETTER_SHARP_S, nor + * LATIN_SMALL_LETTER_Y_WITH_DIAERESIS, and does not check for these. Nor + * does it check that the strings each have at least 'len' characters */ + + const U8 *a = (const U8 *)s1; + const U8 *b = (const U8 *)s2; + + PERL_ARGS_ASSERT_FOLDEQ_LATIN1; + assert(len >= 0); + + while (len--) { + if (*a != *b && *a != PL_fold_latin1[*b]) { + return 0; + } + a++, b++; + } + return 1; +} +/* +=for apidoc foldEQ_locale + +Returns true if the leading C<len> bytes of the strings C<s1> and C<s2> are the +same case-insensitively in the current locale; false otherwise. + +=cut +*/ + +PERL_STATIC_INLINE I32 +Perl_foldEQ_locale(const char *s1, const char *s2, I32 len) +{ + dVAR; + const U8 *a = (const U8 *)s1; + const U8 *b = (const U8 *)s2; + + PERL_ARGS_ASSERT_FOLDEQ_LOCALE; + + assert(len >= 0); + + while (len--) { + if (*a != *b && *a != PL_fold_locale[*b]) + return 0; + a++,b++; + } + return 1; +} /* * ex: set ts=8 sts=4 sw=4 et: diff --git a/Master/tlpkg/tlperl/lib/CORE/intrpvar.h b/Master/tlpkg/tlperl/lib/CORE/intrpvar.h index 50a9ee0a9eb..d203855314d 100644 --- a/Master/tlpkg/tlperl/lib/CORE/intrpvar.h +++ b/Master/tlpkg/tlperl/lib/CORE/intrpvar.h @@ -73,6 +73,7 @@ PERLVAR(I, multideref_pc, UNOP_AUX_item *) /* Fields used by magic variables such as $@, $/ and so on */ PERLVAR(I, curpm, PMOP *) /* what to do \ interps in REs from */ +PERLVAR(I, curpm_under, PMOP *) /* what to do \ interps in REs from */ PERLVAR(I, tainting, bool) /* doing taint checks */ PERLVARI(I, tainted, bool, FALSE) /* using variables controlled by $< */ @@ -97,9 +98,11 @@ PERLVAR(I, in_eval, U8) /* trap "fatal" errors? */ PERLVAR(I, defgv, GV *) /* the *_ glob */ /* -=for apidoc mn|bool|PL_dowarn +=for apidoc mn|U8|PL_dowarn -The C variable which corresponds to Perl's C<$^W> warning variable. +The C variable that roughly corresponds to Perl's C<$^W> warning variable. +However, C<$^W> is treated as a boolean, whereas C<PL_dowarn> is a +collection of flag bits. =cut */ @@ -245,6 +248,7 @@ PERLVAR(I, exit_flags, U8) /* was exit() unexpected, etc. */ PERLVAR(I, utf8locale, bool) /* utf8 locale detected */ PERLVAR(I, in_utf8_CTYPE_locale, bool) +PERLVAR(I, in_utf8_COLLATE_locale, bool) #ifdef USE_LOCALE_CTYPE PERLVAR(I, warn_locale, SV *) #endif @@ -489,8 +493,8 @@ PERLVAR(I, compiling, COP) /* compiling/done executing marker */ PERLVAR(I, compcv, CV *) /* currently compiling subroutine */ PERLVAR(I, comppad_name, PADNAMELIST *) /* variable names for "my" variables */ -PERLVAR(I, comppad_name_fill, I32) /* last "introduced" variable offset */ -PERLVAR(I, comppad_name_floor, I32) /* start of vars in innermost block */ +PERLVAR(I, comppad_name_fill, PADOFFSET)/* last "introduced" variable offset */ +PERLVAR(I, comppad_name_floor, PADOFFSET)/* start of vars in innermost block */ #ifdef HAVE_INTERP_INTERN PERLVAR(I, sys_intern, struct interp_intern) @@ -542,27 +546,31 @@ PERLVARA(I, body_roots, PERL_ARENA_ROOTS_SIZE, void*) /* array of body roots */ PERLVAR(I, debug, VOL U32) /* flags given to -D switch */ -PERLVARI(I, maxo, int, MAXO) /* maximum number of ops */ +PERLVARI(I, padlist_generation, U32, 1) /* id to identify padlist clones */ PERLVARI(I, runops, runops_proc_t, RUNOPS_DEFAULT) PERLVAR(I, subname, SV *) /* name of current subroutine */ PERLVAR(I, subline, I32) /* line this subroutine began on */ -PERLVAR(I, min_intro_pending, I32) /* start of vars to introduce */ +PERLVAR(I, min_intro_pending, PADOFFSET)/* start of vars to introduce */ -PERLVAR(I, max_intro_pending, I32) /* end of vars to introduce */ -PERLVAR(I, padix, I32) /* lowest unused index - 1 +PERLVAR(I, max_intro_pending, PADOFFSET)/* end of vars to introduce */ +PERLVAR(I, padix, PADOFFSET) /* lowest unused index - 1 in current "register" pad */ -PERLVAR(I, constpadix, I32) /* lowest unused for constants */ +PERLVAR(I, constpadix, PADOFFSET) /* lowest unused for constants */ -PERLVAR(I, padix_floor, I32) /* how low may inner block reset padix */ +PERLVAR(I, padix_floor, PADOFFSET) /* how low may inner block reset padix */ #ifdef USE_LOCALE_COLLATE PERLVAR(I, collation_name, char *) /* Name of current collation */ PERLVAR(I, collxfrm_base, Size_t) /* Basic overhead in *xfrm() */ PERLVARI(I, collxfrm_mult,Size_t, 2) /* Expansion factor in *xfrm() */ PERLVARI(I, collation_ix, U32, 0) /* Collation generation index */ +PERLVARI(I, strxfrm_NUL_replacement, U8, 0) /* Code point to replace NULs */ +PERLVARI(I, strxfrm_is_behaved, bool, TRUE) + /* Assume until proven otherwise that it works */ +PERLVARI(I, strxfrm_max_cp, U8, 0) /* Highest collating cp in locale */ PERLVARI(I, collation_standard, bool, TRUE) /* Assume simple collation */ #endif /* USE_LOCALE_COLLATE */ @@ -622,6 +630,8 @@ PERLVAR(I, GCB_invlist, SV *) PERLVAR(I, LB_invlist, SV *) PERLVAR(I, SB_invlist, SV *) PERLVAR(I, WB_invlist, SV *) +PERLVAR(I, Assigned_invlist, SV *) +PERLVAR(I, seen_deprecated_macro, HV *) PERLVAR(I, last_swash_hv, HV *) PERLVAR(I, last_swash_tmps, U8 *) @@ -690,9 +700,6 @@ PERLVARI(I, known_layers, PerlIO_list_t *, NULL) PERLVARI(I, def_layerlist, PerlIO_list_t *, NULL) #endif -PERLVARI(I, encoding, SV *, NULL) /* $^ENCODING */ -PERLVARI(I, lex_encoding, SV *, NULL) /* encoding pragma */ - PERLVAR(I, utf8_idstart, SV *) PERLVAR(I, utf8_idcont, SV *) PERLVAR(I, utf8_xidstart, SV *) @@ -760,8 +767,6 @@ PERLVAR(I, debug_pad, struct perl_debug_pad) /* always needed because of the re /* Hook for File::Glob */ PERLVARI(I, globhook, globhook_t, NULL) -PERLVARI(I, padlist_generation, U32, 1) /* id to identify padlist clones */ - /* The last unconditional member of the interpreter structure when 5.18.0 was released. The offset of the end of this is baked into a global variable in any shared perl library which will allow a sanity test in future perl diff --git a/Master/tlpkg/tlperl/lib/CORE/keywords.h b/Master/tlpkg/tlperl/lib/CORE/keywords.h index eaa41209df4..2b1d598a4e7 100644 --- a/Master/tlpkg/tlperl/lib/CORE/keywords.h +++ b/Master/tlpkg/tlperl/lib/CORE/keywords.h @@ -270,5 +270,5 @@ #define KEY_y 254 /* Generated from: - * 7e3d76a333c5f9b77d47dd7d423450356b63853a1c2313d3e805042caaa4bc2c regen/keywords.pl + * db0472e0ad4f44bd0816cad799d63b60d1bbd7e11cef40ea15bf0d00f69669f6 regen/keywords.pl * ex: set ro: */ diff --git a/Master/tlpkg/tlperl/lib/CORE/l1_char_class_tab.h b/Master/tlpkg/tlperl/lib/CORE/l1_char_class_tab.h index 7602a781b71..df736642f72 100644 --- a/Master/tlpkg/tlperl/lib/CORE/l1_char_class_tab.h +++ b/Master/tlpkg/tlperl/lib/CORE/l1_char_class_tab.h @@ -168,7 +168,7 @@ /* U+9D OSC */ (1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA), /* U+9E PM */ (1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA), /* U+9F APC */ (1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA), -/* U+A0 NBSP */ (1U<<_CC_BLANK)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_PRINT)|(1U<<_CC_QUOTEMETA)|(1U<<_CC_SPACE), +/* U+A0 NBSP */ (1U<<_CC_BLANK)|(1U<<_CC_PRINT)|(1U<<_CC_QUOTEMETA)|(1U<<_CC_SPACE), /* U+A1 INVERTED '!' */ (1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_PUNCT)|(1U<<_CC_QUOTEMETA), /* U+A2 CENT */ (1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_QUOTEMETA), /* U+A3 POUND */ (1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_QUOTEMETA), @@ -336,7 +336,7 @@ /* 0x3E U+9E PM */ (1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA), /* 0x3F U+1A SUB */ (1U<<_CC_ASCII)|(1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA), /* 0x40 U+20 SP */ (1U<<_CC_ASCII)|(1U<<_CC_BLANK)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_PRINT)|(1U<<_CC_QUOTEMETA)|(1U<<_CC_SPACE), -/* 0x41 U+A0 NBSP */ (1U<<_CC_BLANK)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_PRINT)|(1U<<_CC_QUOTEMETA)|(1U<<_CC_SPACE)|(1U<<_CC_UTF8_IS_CONTINUATION), +/* 0x41 U+A0 NBSP */ (1U<<_CC_BLANK)|(1U<<_CC_PRINT)|(1U<<_CC_QUOTEMETA)|(1U<<_CC_SPACE)|(1U<<_CC_UTF8_IS_CONTINUATION), /* 0x42 U+E2 I8=A1 a with '^' */ (1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ALPHA)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_UTF8_IS_CONTINUATION), /* 0x43 U+E4 I8=A2 a with diaeresis */ (1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ALPHA)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_UTF8_IS_CONTINUATION), /* 0x44 U+E0 I8=A3 a with grave */ (1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ALPHA)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_UTF8_IS_CONTINUATION), @@ -599,7 +599,7 @@ /* 0x3E U+9E PM */ (1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA), /* 0x3F U+1A SUB */ (1U<<_CC_ASCII)|(1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA), /* 0x40 U+20 SP */ (1U<<_CC_ASCII)|(1U<<_CC_BLANK)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_PRINT)|(1U<<_CC_QUOTEMETA)|(1U<<_CC_SPACE), -/* 0x41 U+A0 NBSP */ (1U<<_CC_BLANK)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_PRINT)|(1U<<_CC_QUOTEMETA)|(1U<<_CC_SPACE)|(1U<<_CC_UTF8_IS_CONTINUATION), +/* 0x41 U+A0 NBSP */ (1U<<_CC_BLANK)|(1U<<_CC_PRINT)|(1U<<_CC_QUOTEMETA)|(1U<<_CC_SPACE)|(1U<<_CC_UTF8_IS_CONTINUATION), /* 0x42 U+E2 I8=A1 a with '^' */ (1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ALPHA)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_UTF8_IS_CONTINUATION), /* 0x43 U+E4 I8=A2 a with diaeresis */ (1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ALPHA)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_UTF8_IS_CONTINUATION), /* 0x44 U+E0 I8=A3 a with grave */ (1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ALPHA)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_UTF8_IS_CONTINUATION), diff --git a/Master/tlpkg/tlperl/lib/CORE/libperl524.a b/Master/tlpkg/tlperl/lib/CORE/libperl526.a Binary files differindex 772447f261d..950815ab2d4 100644..100755 --- a/Master/tlpkg/tlperl/lib/CORE/libperl524.a +++ b/Master/tlpkg/tlperl/lib/CORE/libperl526.a diff --git a/Master/tlpkg/tlperl/lib/CORE/metaconfig.h b/Master/tlpkg/tlperl/lib/CORE/metaconfig.h index 84580f59f0a..f19eee88839 100644 --- a/Master/tlpkg/tlperl/lib/CORE/metaconfig.h +++ b/Master/tlpkg/tlperl/lib/CORE/metaconfig.h @@ -10,34 +10,6 @@ * they won't be available unless used. When new symbols are probed * in Configure, this is the way to force them into availability. * - * BOOTSTRAP_CHARSET - * DOUBLEKIND - * HAS_ACOSH - * HAS_ASCTIME64 - * HAS_CTIME64 - * HAS_DIFFTIME64 - * HAS_DLADDR - * HAS_FEGETROUND - * HAS_FPCLASSIFY - * HAS_FREELOCALE - * HAS_GMTIME64 - * HAS_ISFINITEL - * HAS_ISINFL - * HAS_ISLESS - * HAS_J0 - * HAS_LOCALTIME64 - * HAS_MEMMEM - * HAS_MKTIME64 - * HAS_NEWLOCALE - * HAS_PRCTL - * HAS_PSEUDOFORK - * HAS_TIMEGM - * HAS_USELOCALE - * I16SIZE - * I64SIZE - * I8SIZE - * LOCALTIME_R_NEEDS_TZSET - * LONG_DOUBLEKIND - * U8SIZE - * USE_CBACKTRACE + * Symbols should only be here temporarily. Once they are actually used, + * they should be removed from here. */ diff --git a/Master/tlpkg/tlperl/lib/CORE/op.h b/Master/tlpkg/tlperl/lib/CORE/op.h index 3ded4bb318e..5a29bfbe2c4 100644 --- a/Master/tlpkg/tlperl/lib/CORE/op.h +++ b/Master/tlpkg/tlperl/lib/CORE/op.h @@ -123,7 +123,6 @@ Deprecated. Use C<GIMME_V> instead. /* On OP_NULL, saw a "do". */ /* On OP_EXISTS, treat av as av, not avhv. */ /* On OP_(ENTER|LEAVE)EVAL, don't clear $@ */ - /* On pushre, rx is used as part of split, e.g. split " " */ /* On regcomp, "use re 'eval'" was in scope */ /* On RV2[ACGHS]V, don't create GV--in defined()*/ @@ -154,7 +153,7 @@ Deprecated. Use C<GIMME_V> instead. /* There is no room in op_flags for this one, so it has its own bit- field member (op_folded) instead. The flag is only used to tell op_convert_list to set op_folded. */ -#define OPf_FOLDED 1<<16 +#define OPf_FOLDED (1<<16) /* old names; don't use in new code, but don't break them, either */ #define OPf_LIST OPf_WANT_LIST @@ -261,11 +260,8 @@ struct pmop { U32 op_pmflags; union { OP * op_pmreplroot; /* For OP_SUBST */ -#ifdef USE_ITHREADS - PADOFFSET op_pmtargetoff; /* For OP_PUSHRE */ -#else - GV * op_pmtargetgv; -#endif + PADOFFSET op_pmtargetoff; /* For OP_SPLIT lex ary or thr GV */ + GV * op_pmtargetgv; /* For OP_SPLIT non-threaded GV */ } op_pmreplrootu; union { OP * op_pmreplstart; /* Only used in OP_SUBST */ @@ -331,6 +327,10 @@ struct pmop { * other end instead; this preserves binary compatibility. */ #define PMf_BASE_SHIFT (_RXf_PMf_SHIFT_NEXT+2) +/* Set by the parser if it discovers an error, so the regex shouldn't be + * compiled */ +#define PMf_HAS_ERROR (1U<<(PMf_BASE_SHIFT+4)) + /* 'use re "taint"' in scope: taint $1 etc. if target tainted */ #define PMf_RETAINT (1U<<(PMf_BASE_SHIFT+5)) @@ -479,6 +479,24 @@ struct loop { #define kLOOP cLOOPx(kid) +typedef enum { + OPclass_NULL, /* 0 */ + OPclass_BASEOP, /* 1 */ + OPclass_UNOP, /* 2 */ + OPclass_BINOP, /* 3 */ + OPclass_LOGOP, /* 4 */ + OPclass_LISTOP, /* 5 */ + OPclass_PMOP, /* 6 */ + OPclass_SVOP, /* 7 */ + OPclass_PADOP, /* 8 */ + OPclass_PVOP, /* 9 */ + OPclass_LOOP, /* 10 */ + OPclass_COP, /* 11 */ + OPclass_METHOP, /* 12 */ + OPclass_UNOP_AUX /* 13 */ +} OPclass; + + #ifdef USE_ITHREADS # define cGVOPx_gv(o) ((GV*)PAD_SVl(cPADOPx(o)->op_padix)) # ifndef PERL_CORE @@ -913,7 +931,10 @@ Return a short description of the provided OP. =for apidoc Am|U32|OP_CLASS|OP *o Return the class of the provided OP: that is, which of the *OP structures it uses. For core ops this currently gets the information out -of C<PL_opargs>, which does not always accurately reflect the type used. +of C<PL_opargs>, which does not always accurately reflect the type used; +in v5.26 onwards, see also the function C<L</op_class>> which can do a better +job of determining the used type. + For custom ops the type is returned from the registration, and it is up to the registree to ensure it is accurate. The value returned will be one of the C<OA_>* constants from F<op.h>. @@ -1079,7 +1100,8 @@ C<sib> is non-null. For a higher-level interface, see C<L</op_sibling_splice>>. #if defined(PERL_IN_DOOP_C) || defined(PERL_IN_PP_C) static const char * const deprecated_above_ff_msg = "Use of strings with code points over 0xFF as arguments to " - "%s operator is deprecated"; + "%s operator is deprecated. This will be a fatal error in " + "Perl 5.28"; #endif diff --git a/Master/tlpkg/tlperl/lib/CORE/opcode.h b/Master/tlpkg/tlperl/lib/CORE/opcode.h index 5ec8f58e702..5aec1a8ea3d 100644 --- a/Master/tlpkg/tlperl/lib/CORE/opcode.h +++ b/Master/tlpkg/tlperl/lib/CORE/opcode.h @@ -159,7 +159,6 @@ EXTCONST char* const PL_op_name[] = { "padav", "padhv", "padany", - "pushre", "rv2gv", "rv2sv", "av2arylen", @@ -288,8 +287,8 @@ EXTCONST char* const PL_op_name[] = { "aslice", "kvaslice", "aeach", - "akeys", "avalues", + "akeys", "each", "values", "keys", @@ -334,6 +333,9 @@ EXTCONST char* const PL_op_name[] = { "entersub", "leavesub", "leavesublv", + "argcheck", + "argelem", + "argdefelem", "caller", "warn", "die", @@ -528,6 +530,7 @@ EXTCONST char* const PL_op_name[] = { "once", "custom", "coreargs", + "avhvswitch", "runcv", "fc", "padcv", @@ -560,7 +563,6 @@ EXTCONST char* const PL_op_desc[] = { "private array", "private hash", "private value", - "push regexp", "ref-to-glob cast", "scalar dereference", "array length", @@ -642,12 +644,12 @@ EXTCONST char* const PL_op_desc[] = { "bitwise and (&)", "bitwise xor (^)", "bitwise or (|)", - "numeric bitiwse and (&)", + "numeric bitwise and (&)", "numeric bitwise xor (^)", "numeric bitwise or (|)", - "string bitiwse and (&)", - "string bitwise xor (^)", - "string bitwise or (|)", + "string bitwise and (&.)", + "string bitwise xor (^.)", + "string bitwise or (|.)", "negation (-)", "integer negation (-)", "not", @@ -689,8 +691,8 @@ EXTCONST char* const PL_op_desc[] = { "array slice", "index/value array slice", "each on array", - "keys on array", "values on array", + "keys on array", "each", "values", "keys", @@ -735,6 +737,9 @@ EXTCONST char* const PL_op_desc[] = { "subroutine entry", "subroutine exit", "lvalue subroutine return", + "check subroutine arguments", + "subroutine argument", + "subroutine argument default value", "caller", "warn", "die", @@ -929,6 +934,7 @@ EXTCONST char* const PL_op_desc[] = { "once", "unknown custom operator", "CORE:: subroutine", + "Array/hash switch", "__SUB__", "fc", "private subroutine", @@ -975,7 +981,6 @@ EXT Perl_ppaddr_t PL_ppaddr[] /* or perlvars.h */ Perl_pp_padav, Perl_pp_padhv, Perl_pp_padany, /* implemented by Perl_unimplemented_op */ - Perl_pp_pushre, Perl_pp_rv2gv, Perl_pp_rv2sv, Perl_pp_av2arylen, @@ -1104,8 +1109,8 @@ EXT Perl_ppaddr_t PL_ppaddr[] /* or perlvars.h */ Perl_pp_aslice, Perl_pp_kvaslice, Perl_pp_aeach, - Perl_pp_akeys, Perl_pp_avalues, /* implemented by Perl_pp_akeys */ + Perl_pp_akeys, Perl_pp_each, Perl_pp_values, /* implemented by Perl_do_kv */ Perl_pp_keys, /* implemented by Perl_do_kv */ @@ -1150,6 +1155,9 @@ EXT Perl_ppaddr_t PL_ppaddr[] /* or perlvars.h */ Perl_pp_entersub, Perl_pp_leavesub, Perl_pp_leavesublv, + Perl_pp_argcheck, + Perl_pp_argelem, + Perl_pp_argdefelem, Perl_pp_caller, Perl_pp_warn, Perl_pp_die, @@ -1344,6 +1352,7 @@ EXT Perl_ppaddr_t PL_ppaddr[] /* or perlvars.h */ Perl_pp_once, Perl_pp_custom, /* implemented by Perl_unimplemented_op */ Perl_pp_coreargs, + Perl_pp_avhvswitch, Perl_pp_runcv, Perl_pp_fc, Perl_pp_padcv, @@ -1386,7 +1395,6 @@ EXT Perl_check_t PL_check[] /* or perlvars.h */ Perl_ck_null, /* padav */ Perl_ck_null, /* padhv */ Perl_ck_null, /* padany */ - Perl_ck_null, /* pushre */ Perl_ck_rvconst, /* rv2gv */ Perl_ck_rvconst, /* rv2sv */ Perl_ck_null, /* av2arylen */ @@ -1515,8 +1523,8 @@ EXT Perl_check_t PL_check[] /* or perlvars.h */ Perl_ck_null, /* aslice */ Perl_ck_null, /* kvaslice */ Perl_ck_each, /* aeach */ - Perl_ck_each, /* akeys */ Perl_ck_each, /* avalues */ + Perl_ck_each, /* akeys */ Perl_ck_each, /* each */ Perl_ck_each, /* values */ Perl_ck_each, /* keys */ @@ -1561,6 +1569,9 @@ EXT Perl_check_t PL_check[] /* or perlvars.h */ Perl_ck_subr, /* entersub */ Perl_ck_null, /* leavesub */ Perl_ck_null, /* leavesublv */ + Perl_ck_null, /* argcheck */ + Perl_ck_null, /* argelem */ + Perl_ck_null, /* argdefelem */ Perl_ck_fun, /* caller */ Perl_ck_fun, /* warn */ Perl_ck_fun, /* die */ @@ -1755,6 +1766,7 @@ EXT Perl_check_t PL_check[] /* or perlvars.h */ Perl_ck_null, /* once */ Perl_ck_null, /* custom */ Perl_ck_null, /* coreargs */ + Perl_ck_null, /* avhvswitch */ Perl_ck_null, /* runcv */ Perl_ck_fun, /* fc */ Perl_ck_null, /* padcv */ @@ -1791,7 +1803,6 @@ EXTCONST U32 PL_opargs[] = { 0x00000040, /* padav */ 0x00000040, /* padhv */ 0x00000040, /* padany */ - 0x00000540, /* pushre */ 0x00000144, /* rv2gv */ 0x00000144, /* rv2sv */ 0x00000104, /* av2arylen */ @@ -1815,7 +1826,7 @@ EXTCONST U32 PL_opargs[] = { 0x00000304, /* substcont */ 0x00001804, /* trans */ 0x00001804, /* transr */ - 0x00000004, /* sassign */ + 0x00011204, /* sassign */ 0x00022208, /* aassign */ 0x00002b0d, /* chop */ 0x00009b8c, /* schop */ @@ -1920,8 +1931,8 @@ EXTCONST U32 PL_opargs[] = { 0x00023401, /* aslice */ 0x00023401, /* kvaslice */ 0x00003b40, /* aeach */ - 0x00003b08, /* akeys */ 0x00003b48, /* avalues */ + 0x00003b08, /* akeys */ 0x00004b40, /* each */ 0x00004b48, /* values */ 0x00004b08, /* keys */ @@ -1934,7 +1945,7 @@ EXTCONST U32 PL_opargs[] = { 0x00000f44, /* multideref */ 0x00091480, /* unpack */ 0x0002140f, /* pack */ - 0x00111408, /* split */ + 0x00111508, /* split */ 0x0002140f, /* join */ 0x00002401, /* list */ 0x00224200, /* lslice */ @@ -1966,6 +1977,9 @@ EXTCONST U32 PL_opargs[] = { 0x00002141, /* entersub */ 0x00000100, /* leavesub */ 0x00000100, /* leavesublv */ + 0x00000f00, /* argcheck */ + 0x00000f00, /* argelem */ + 0x00000300, /* argdefelem */ 0x00009b08, /* caller */ 0x0000240d, /* warn */ 0x0000240d, /* die */ @@ -2160,6 +2174,7 @@ EXTCONST U32 PL_opargs[] = { 0x00000300, /* once */ 0x00000000, /* custom */ 0x00000600, /* coreargs */ + 0x00000108, /* avhvswitch */ 0x00000004, /* runcv */ 0x00009b8e, /* fc */ 0x00000040, /* padcv */ @@ -2179,12 +2194,14 @@ EXTCONST U32 PL_opargs[] = { END_EXTERN_C +#define OPpARGELEM_SV 0x00 #define OPpLVREF_SV 0x00 #define OPpARG1_MASK 0x01 #define OPpCOREARGS_DEREF1 0x01 #define OPpENTERSUB_INARGS 0x01 #define OPpSORT_NUMERIC 0x01 #define OPpTRANS_FROM_UTF 0x01 +#define OPpARGELEM_AV 0x02 #define OPpCONST_NOVER 0x02 #define OPpCOREARGS_DEREF2 0x02 #define OPpEVAL_HAS_HH 0x02 @@ -2194,6 +2211,8 @@ END_EXTERN_C #define OPpSORT_INTEGER 0x02 #define OPpTRANS_TO_UTF 0x02 #define OPpARG2_MASK 0x03 +#define OPpAVHVSWITCH_MASK 0x03 +#define OPpARGELEM_HV 0x04 #define OPpCONST_SHORTCIRCUIT 0x04 #define OPpDONT_INIT_GV 0x04 #define OPpENTERSUB_HASTARG 0x04 @@ -2202,7 +2221,9 @@ END_EXTERN_C #define OPpLVREF_ELEM 0x04 #define OPpSLICEWARNING 0x04 #define OPpSORT_REVERSE 0x04 +#define OPpSPLIT_IMPLIM 0x04 #define OPpTRANS_IDENTICAL 0x04 +#define OPpARGELEM_MASK 0x06 #define OPpARG3_MASK 0x07 #define OPpPADRANGE_COUNTSHIFT 0x07 #define OPpCONST_STRICT 0x08 @@ -2214,6 +2235,7 @@ END_EXTERN_C #define OPpMAYBE_LVSUB 0x08 #define OPpREVERSE_INPLACE 0x08 #define OPpSORT_INPLACE 0x08 +#define OPpSPLIT_LEX 0x08 #define OPpTRANS_SQUASH 0x08 #define OPpARG4_MASK 0x0f #define OPpASSIGN_COMMON_AGG 0x10 @@ -2226,6 +2248,7 @@ END_EXTERN_C #define OPpMULTIDEREF_EXISTS 0x10 #define OPpOPEN_IN_RAW 0x10 #define OPpSORT_DESCEND 0x10 +#define OPpSPLIT_ASSIGN 0x10 #define OPpSUBSTR_REPL_FIRST 0x10 #define OPpTARGET_MY 0x10 #define OPpASSIGN_COMMON_RC1 0x20 @@ -2259,7 +2282,6 @@ END_EXTERN_C #define OPpPAD_STATE 0x40 #define OPpREFCOUNTED 0x40 #define OPpREPEAT_DOLIST 0x40 -#define OPpRUNTIME 0x40 #define OPpSLICE 0x40 #define OPpSORT_STABLE 0x40 #define OPpTRANS_GROWS 0x40 @@ -2272,7 +2294,6 @@ END_EXTERN_C #define OPpOFFBYONE 0x80 #define OPpOPEN_OUT_CRLF 0x80 #define OPpPV_IS_UTF8 0x80 -#define OPpSPLIT_IMPLIM 0x80 #define OPpTRANS_DELETE 0x80 START_EXTERN_C @@ -2303,6 +2324,7 @@ EXTCONST char PL_op_private_labels[] = { '<','U','T','F','\0', '>','U','T','F','\0', 'A','M','P','E','R','\0', + 'A','S','S','I','G','N','\0', 'A','V','\0', 'B','A','R','E','\0', 'B','K','W','A','R','D','\0', @@ -2350,6 +2372,7 @@ EXTCONST char PL_op_private_labels[] = { 'I','N','P','L','A','C','E','\0', 'I','N','T','\0', 'I','T','E','R','\0', + 'L','E','X','\0', 'L','I','N','E','N','U','M','\0', 'L','V','\0', 'L','V','D','E','F','E','R','\0', @@ -2369,7 +2392,6 @@ EXTCONST char PL_op_private_labels[] = { 'R','E','P','L','1','S','T','\0', 'R','E','V','\0', 'R','E','V','E','R','S','E','D','\0', - 'R','T','I','M','E','\0', 'S','H','O','R','T','\0', 'S','L','I','C','E','\0', 'S','L','I','C','E','W','A','R','N','\0', @@ -2383,6 +2405,9 @@ EXTCONST char PL_op_private_labels[] = { 'T','A','R','G','M','Y','\0', 'U','N','I','\0', 'U','T','F','\0', + 'k','e','y','\0', + 'o','f','f','s','e','t','\0', + 'r','a','n','g','e','\0', }; @@ -2401,12 +2426,14 @@ EXTCONST char PL_op_private_labels[] = { EXTCONST I16 PL_op_private_bitfields[] = { 0, 8, -1, 0, 8, -1, + 0, 539, -1, 0, 8, -1, 0, 8, -1, - 0, 8, -1, - 0, 8, -1, - 4, -1, 1, 157, 2, 164, 3, 171, -1, - 4, -1, 0, 507, 1, 26, 2, 276, 3, 103, -1, + 0, 546, -1, + 0, 535, -1, + 1, -1, 0, 512, 1, 33, 2, 283, -1, + 4, -1, 1, 164, 2, 171, 3, 178, -1, + 4, -1, 0, 512, 1, 33, 2, 283, 3, 110, -1, }; @@ -2428,40 +2455,39 @@ EXTCONST I16 PL_op_private_bitdef_ix[] = { 16, /* padav */ 20, /* padhv */ -1, /* padany */ - 26, /* pushre */ - 27, /* rv2gv */ - 34, /* rv2sv */ - 39, /* av2arylen */ - 41, /* rv2cv */ + 26, /* rv2gv */ + 33, /* rv2sv */ + 38, /* av2arylen */ + 40, /* rv2cv */ -1, /* anoncode */ 0, /* prototype */ 0, /* refgen */ 0, /* srefgen */ 0, /* ref */ - 48, /* bless */ - 49, /* backtick */ - 48, /* glob */ + 47, /* bless */ + 48, /* backtick */ + 47, /* glob */ 0, /* readline */ -1, /* rcatline */ 0, /* regcmaybe */ 0, /* regcreset */ 0, /* regcomp */ - 26, /* match */ - 26, /* qr */ - 26, /* subst */ - 54, /* substcont */ - 56, /* trans */ - 56, /* transr */ - 63, /* sassign */ - 66, /* aassign */ + -1, /* match */ + -1, /* qr */ + -1, /* subst */ + 0, /* substcont */ + 53, /* trans */ + 53, /* transr */ + 60, /* sassign */ + 63, /* aassign */ 0, /* chop */ 0, /* schop */ - 71, /* chomp */ - 71, /* schomp */ + 68, /* chomp */ + 68, /* schomp */ 0, /* defined */ 0, /* undef */ 0, /* study */ - 39, /* pos */ + 38, /* pos */ 0, /* preinc */ 0, /* i_preinc */ 0, /* predec */ @@ -2470,22 +2496,22 @@ EXTCONST I16 PL_op_private_bitdef_ix[] = { 0, /* i_postinc */ 0, /* postdec */ 0, /* i_postdec */ - 73, /* pow */ - 73, /* multiply */ - 73, /* i_multiply */ - 73, /* divide */ - 73, /* i_divide */ - 73, /* modulo */ - 73, /* i_modulo */ - 75, /* repeat */ - 73, /* add */ - 73, /* i_add */ - 73, /* subtract */ - 73, /* i_subtract */ - 73, /* concat */ - 77, /* stringify */ - 73, /* left_shift */ - 73, /* right_shift */ + 70, /* pow */ + 70, /* multiply */ + 70, /* i_multiply */ + 70, /* divide */ + 70, /* i_divide */ + 70, /* modulo */ + 70, /* i_modulo */ + 72, /* repeat */ + 70, /* add */ + 70, /* i_add */ + 70, /* subtract */ + 70, /* i_subtract */ + 70, /* concat */ + 74, /* stringify */ + 70, /* left_shift */ + 70, /* right_shift */ 12, /* lt */ 12, /* i_lt */ 12, /* gt */ @@ -2510,9 +2536,9 @@ EXTCONST I16 PL_op_private_bitdef_ix[] = { 12, /* bit_and */ 12, /* bit_xor */ 12, /* bit_or */ - 73, /* nbit_and */ - 73, /* nbit_xor */ - 73, /* nbit_or */ + 70, /* nbit_and */ + 70, /* nbit_xor */ + 70, /* nbit_or */ 12, /* sbit_and */ 12, /* sbit_xor */ 12, /* sbit_or */ @@ -2520,68 +2546,68 @@ EXTCONST I16 PL_op_private_bitdef_ix[] = { 0, /* i_negate */ 0, /* not */ 0, /* complement */ - 71, /* ncomplement */ - 71, /* scomplement */ + 68, /* ncomplement */ + 68, /* scomplement */ 12, /* smartmatch */ - 77, /* atan2 */ - 71, /* sin */ - 71, /* cos */ - 77, /* rand */ - 77, /* srand */ - 71, /* exp */ - 71, /* log */ - 71, /* sqrt */ - 71, /* int */ - 71, /* hex */ - 71, /* oct */ - 71, /* abs */ - 71, /* length */ - 79, /* substr */ - 82, /* vec */ - 77, /* index */ - 77, /* rindex */ - 48, /* sprintf */ - 48, /* formline */ - 71, /* ord */ - 71, /* chr */ - 77, /* crypt */ + 74, /* atan2 */ + 68, /* sin */ + 68, /* cos */ + 74, /* rand */ + 74, /* srand */ + 68, /* exp */ + 68, /* log */ + 68, /* sqrt */ + 68, /* int */ + 68, /* hex */ + 68, /* oct */ + 68, /* abs */ + 68, /* length */ + 76, /* substr */ + 79, /* vec */ + 74, /* index */ + 74, /* rindex */ + 47, /* sprintf */ + 47, /* formline */ + 68, /* ord */ + 68, /* chr */ + 74, /* crypt */ 0, /* ucfirst */ 0, /* lcfirst */ 0, /* uc */ 0, /* lc */ 0, /* quotemeta */ - 84, /* rv2av */ - 90, /* aelemfast */ - 90, /* aelemfast_lex */ - 91, /* aelem */ - 96, /* aslice */ - 99, /* kvaslice */ + 81, /* rv2av */ + 87, /* aelemfast */ + 87, /* aelemfast_lex */ + 88, /* aelem */ + 93, /* aslice */ + 96, /* kvaslice */ 0, /* aeach */ - 0, /* akeys */ 0, /* avalues */ + 38, /* akeys */ 0, /* each */ 0, /* values */ - 39, /* keys */ - 100, /* delete */ - 103, /* exists */ - 105, /* rv2hv */ - 91, /* helem */ - 96, /* hslice */ - 99, /* kvhslice */ - 113, /* multideref */ - 48, /* unpack */ - 48, /* pack */ - 120, /* split */ - 48, /* join */ + 38, /* keys */ + 97, /* delete */ + 100, /* exists */ + 102, /* rv2hv */ + 88, /* helem */ + 93, /* hslice */ + 96, /* kvhslice */ + 110, /* multideref */ + 47, /* unpack */ + 47, /* pack */ + 117, /* split */ + 47, /* join */ 122, /* list */ 12, /* lslice */ - 48, /* anonlist */ - 48, /* anonhash */ - 48, /* splice */ - 77, /* push */ + 47, /* anonlist */ + 47, /* anonhash */ + 47, /* splice */ + 74, /* push */ 0, /* pop */ 0, /* shift */ - 77, /* unshift */ + 74, /* unshift */ 124, /* sort */ 131, /* reverse */ 0, /* grepstart */ @@ -2603,28 +2629,31 @@ EXTCONST I16 PL_op_private_bitdef_ix[] = { 137, /* entersub */ 144, /* leavesub */ 144, /* leavesublv */ - 146, /* caller */ - 48, /* warn */ - 48, /* die */ - 48, /* reset */ + 0, /* argcheck */ + 146, /* argelem */ + 0, /* argdefelem */ + 148, /* caller */ + 47, /* warn */ + 47, /* die */ + 47, /* reset */ -1, /* lineseq */ - 148, /* nextstate */ - 148, /* dbstate */ + 150, /* nextstate */ + 150, /* dbstate */ -1, /* unstack */ -1, /* enter */ - 149, /* leave */ + 151, /* leave */ -1, /* scope */ - 151, /* enteriter */ - 155, /* iter */ + 153, /* enteriter */ + 157, /* iter */ -1, /* enterloop */ - 156, /* leaveloop */ + 158, /* leaveloop */ -1, /* return */ - 158, /* last */ - 158, /* next */ - 158, /* redo */ - 158, /* dump */ - 158, /* goto */ - 48, /* exit */ + 160, /* last */ + 160, /* next */ + 160, /* redo */ + 160, /* dump */ + 160, /* goto */ + 47, /* exit */ 0, /* method_named */ 0, /* method_super */ 0, /* method_redir */ @@ -2635,143 +2664,143 @@ EXTCONST I16 PL_op_private_bitdef_ix[] = { 0, /* leavewhen */ -1, /* break */ -1, /* continue */ - 160, /* open */ - 48, /* close */ - 48, /* pipe_op */ - 48, /* fileno */ - 48, /* umask */ - 48, /* binmode */ - 48, /* tie */ + 162, /* open */ + 47, /* close */ + 47, /* pipe_op */ + 47, /* fileno */ + 47, /* umask */ + 47, /* binmode */ + 47, /* tie */ 0, /* untie */ 0, /* tied */ - 48, /* dbmopen */ + 47, /* dbmopen */ 0, /* dbmclose */ - 48, /* sselect */ - 48, /* select */ - 48, /* getc */ - 48, /* read */ - 48, /* enterwrite */ + 47, /* sselect */ + 47, /* select */ + 47, /* getc */ + 47, /* read */ + 47, /* enterwrite */ 144, /* leavewrite */ -1, /* prtf */ -1, /* print */ -1, /* say */ - 48, /* sysopen */ - 48, /* sysseek */ - 48, /* sysread */ - 48, /* syswrite */ - 48, /* eof */ - 48, /* tell */ - 48, /* seek */ - 48, /* truncate */ - 48, /* fcntl */ - 48, /* ioctl */ - 77, /* flock */ - 48, /* send */ - 48, /* recv */ - 48, /* socket */ - 48, /* sockpair */ - 48, /* bind */ - 48, /* connect */ - 48, /* listen */ - 48, /* accept */ - 48, /* shutdown */ - 48, /* gsockopt */ - 48, /* ssockopt */ + 47, /* sysopen */ + 47, /* sysseek */ + 47, /* sysread */ + 47, /* syswrite */ + 47, /* eof */ + 47, /* tell */ + 47, /* seek */ + 47, /* truncate */ + 47, /* fcntl */ + 47, /* ioctl */ + 74, /* flock */ + 47, /* send */ + 47, /* recv */ + 47, /* socket */ + 47, /* sockpair */ + 47, /* bind */ + 47, /* connect */ + 47, /* listen */ + 47, /* accept */ + 47, /* shutdown */ + 47, /* gsockopt */ + 47, /* ssockopt */ 0, /* getsockname */ 0, /* getpeername */ 0, /* lstat */ 0, /* stat */ - 165, /* ftrread */ - 165, /* ftrwrite */ - 165, /* ftrexec */ - 165, /* fteread */ - 165, /* ftewrite */ - 165, /* fteexec */ - 170, /* ftis */ - 170, /* ftsize */ - 170, /* ftmtime */ - 170, /* ftatime */ - 170, /* ftctime */ - 170, /* ftrowned */ - 170, /* fteowned */ - 170, /* ftzero */ - 170, /* ftsock */ - 170, /* ftchr */ - 170, /* ftblk */ - 170, /* ftfile */ - 170, /* ftdir */ - 170, /* ftpipe */ - 170, /* ftsuid */ - 170, /* ftsgid */ - 170, /* ftsvtx */ - 170, /* ftlink */ - 170, /* fttty */ - 170, /* fttext */ - 170, /* ftbinary */ - 77, /* chdir */ - 77, /* chown */ - 71, /* chroot */ - 77, /* unlink */ - 77, /* chmod */ - 77, /* utime */ - 77, /* rename */ - 77, /* link */ - 77, /* symlink */ + 167, /* ftrread */ + 167, /* ftrwrite */ + 167, /* ftrexec */ + 167, /* fteread */ + 167, /* ftewrite */ + 167, /* fteexec */ + 172, /* ftis */ + 172, /* ftsize */ + 172, /* ftmtime */ + 172, /* ftatime */ + 172, /* ftctime */ + 172, /* ftrowned */ + 172, /* fteowned */ + 172, /* ftzero */ + 172, /* ftsock */ + 172, /* ftchr */ + 172, /* ftblk */ + 172, /* ftfile */ + 172, /* ftdir */ + 172, /* ftpipe */ + 172, /* ftsuid */ + 172, /* ftsgid */ + 172, /* ftsvtx */ + 172, /* ftlink */ + 172, /* fttty */ + 172, /* fttext */ + 172, /* ftbinary */ + 74, /* chdir */ + 74, /* chown */ + 68, /* chroot */ + 74, /* unlink */ + 74, /* chmod */ + 74, /* utime */ + 74, /* rename */ + 74, /* link */ + 74, /* symlink */ 0, /* readlink */ - 77, /* mkdir */ - 71, /* rmdir */ - 48, /* open_dir */ + 74, /* mkdir */ + 68, /* rmdir */ + 47, /* open_dir */ 0, /* readdir */ 0, /* telldir */ - 48, /* seekdir */ + 47, /* seekdir */ 0, /* rewinddir */ 0, /* closedir */ -1, /* fork */ - 174, /* wait */ - 77, /* waitpid */ - 77, /* system */ - 77, /* exec */ - 77, /* kill */ - 174, /* getppid */ - 77, /* getpgrp */ - 77, /* setpgrp */ - 77, /* getpriority */ - 77, /* setpriority */ - 174, /* time */ + 176, /* wait */ + 74, /* waitpid */ + 74, /* system */ + 74, /* exec */ + 74, /* kill */ + 176, /* getppid */ + 74, /* getpgrp */ + 74, /* setpgrp */ + 74, /* getpriority */ + 74, /* setpriority */ + 176, /* time */ -1, /* tms */ 0, /* localtime */ - 48, /* gmtime */ + 47, /* gmtime */ 0, /* alarm */ - 77, /* sleep */ - 48, /* shmget */ - 48, /* shmctl */ - 48, /* shmread */ - 48, /* shmwrite */ - 48, /* msgget */ - 48, /* msgctl */ - 48, /* msgsnd */ - 48, /* msgrcv */ - 48, /* semop */ - 48, /* semget */ - 48, /* semctl */ + 74, /* sleep */ + 47, /* shmget */ + 47, /* shmctl */ + 47, /* shmread */ + 47, /* shmwrite */ + 47, /* msgget */ + 47, /* msgctl */ + 47, /* msgsnd */ + 47, /* msgrcv */ + 47, /* semop */ + 47, /* semget */ + 47, /* semctl */ 0, /* require */ 0, /* dofile */ -1, /* hintseval */ - 175, /* entereval */ + 177, /* entereval */ 144, /* leaveeval */ 0, /* entertry */ -1, /* leavetry */ 0, /* ghbyname */ - 48, /* ghbyaddr */ + 47, /* ghbyaddr */ -1, /* ghostent */ 0, /* gnbyname */ - 48, /* gnbyaddr */ + 47, /* gnbyaddr */ -1, /* gnetent */ 0, /* gpbyname */ - 48, /* gpbynumber */ + 47, /* gpbynumber */ -1, /* gprotoent */ - 48, /* gsbyname */ - 48, /* gsbyport */ + 47, /* gsbyname */ + 47, /* gsbyport */ -1, /* gservent */ 0, /* shostent */ 0, /* snetent */ @@ -2792,21 +2821,22 @@ EXTCONST I16 PL_op_private_bitdef_ix[] = { -1, /* sgrent */ -1, /* egrent */ -1, /* getlogin */ - 48, /* syscall */ + 47, /* syscall */ 0, /* lock */ 0, /* once */ -1, /* custom */ - 181, /* coreargs */ + 183, /* coreargs */ + 187, /* avhvswitch */ 3, /* runcv */ 0, /* fc */ -1, /* padcv */ -1, /* introcv */ -1, /* clonecv */ - 185, /* padrange */ - 187, /* refassign */ - 193, /* lvref */ - 199, /* lvrefslice */ - 200, /* lvavref */ + 189, /* padrange */ + 191, /* refassign */ + 197, /* lvref */ + 203, /* lvrefslice */ + 204, /* lvavref */ 0, /* anonconst */ }; @@ -2826,68 +2856,68 @@ EXTCONST I16 PL_op_private_bitdef_ix[] = { */ EXTCONST U16 PL_op_private_bitdefs[] = { - 0x0003, /* scalar, prototype, refgen, srefgen, ref, readline, regcmaybe, regcreset, regcomp, chop, schop, defined, undef, study, preinc, i_preinc, predec, i_predec, postinc, i_postinc, postdec, i_postdec, negate, i_negate, not, complement, ucfirst, lcfirst, uc, lc, quotemeta, aeach, akeys, avalues, each, values, pop, shift, grepstart, grepwhile, mapstart, mapwhile, range, and, or, dor, andassign, orassign, dorassign, method, method_named, method_super, method_redir, method_redir_super, entergiven, leavegiven, enterwhen, leavewhen, untie, tied, dbmclose, getsockname, getpeername, lstat, stat, readlink, readdir, telldir, rewinddir, closedir, localtime, alarm, require, dofile, entertry, ghbyname, gnbyname, gpbyname, shostent, snetent, sprotoent, sservent, gpwnam, gpwuid, ggrnam, ggrgid, lock, once, fc, anonconst */ - 0x2b5c, 0x3d59, /* pushmark */ + 0x0003, /* scalar, prototype, refgen, srefgen, ref, readline, regcmaybe, regcreset, regcomp, substcont, chop, schop, defined, undef, study, preinc, i_preinc, predec, i_predec, postinc, i_postinc, postdec, i_postdec, negate, i_negate, not, complement, ucfirst, lcfirst, uc, lc, quotemeta, aeach, avalues, each, values, pop, shift, grepstart, grepwhile, mapstart, mapwhile, range, and, or, dor, andassign, orassign, dorassign, method, argcheck, argdefelem, method_named, method_super, method_redir, method_redir_super, entergiven, leavegiven, enterwhen, leavewhen, untie, tied, dbmclose, getsockname, getpeername, lstat, stat, readlink, readdir, telldir, rewinddir, closedir, localtime, alarm, require, dofile, entertry, ghbyname, gnbyname, gpbyname, shostent, snetent, sprotoent, sservent, gpwnam, gpwuid, ggrnam, ggrgid, lock, once, fc, anonconst */ + 0x2cbc, 0x3df9, /* pushmark */ 0x00bd, /* wantarray, runcv */ - 0x03b8, 0x17f0, 0x3e0c, 0x38c8, 0x2f25, /* const */ - 0x2b5c, 0x3079, /* gvsv */ - 0x1655, /* gv */ + 0x0498, 0x18d0, 0x3eac, 0x3968, 0x3085, /* const */ + 0x2cbc, 0x31d9, /* gvsv */ + 0x1735, /* gv */ 0x0067, /* gelem, lt, i_lt, gt, i_gt, le, i_le, ge, i_ge, eq, i_eq, ne, i_ne, ncmp, i_ncmp, slt, sgt, sle, sge, seq, sne, scmp, bit_and, bit_xor, bit_or, sbit_and, sbit_xor, sbit_or, smartmatch, lslice, xor */ - 0x2b5c, 0x3d58, 0x0257, /* padsv */ - 0x2b5c, 0x3d58, 0x2c4c, 0x3a49, /* padav */ - 0x2b5c, 0x3d58, 0x0534, 0x05d0, 0x2c4c, 0x3a49, /* padhv */ - 0x3819, /* pushre, match, qr, subst */ - 0x2b5c, 0x19d8, 0x0256, 0x2c4c, 0x2e48, 0x3e04, 0x0003, /* rv2gv */ - 0x2b5c, 0x3078, 0x0256, 0x3e04, 0x0003, /* rv2sv */ - 0x2c4c, 0x0003, /* av2arylen, pos, keys */ - 0x2dbc, 0x0e18, 0x0b74, 0x028c, 0x3fc8, 0x3e04, 0x0003, /* rv2cv */ - 0x012f, /* bless, glob, sprintf, formline, unpack, pack, join, anonlist, anonhash, splice, warn, die, reset, exit, close, pipe_op, fileno, umask, binmode, tie, dbmopen, sselect, select, getc, read, enterwrite, sysopen, sysseek, sysread, syswrite, eof, tell, seek, truncate, fcntl, ioctl, send, recv, socket, sockpair, bind, connect, listen, accept, shutdown, gsockopt, ssockopt, open_dir, seekdir, gmtime, shmget, shmctl, shmread, shmwrite, msgget, msgctl, msgsnd, msgrcv, semop, semget, semctl, ghbyaddr, gnbyaddr, gpbynumber, gsbyname, gsbyport, syscall */ - 0x325c, 0x3178, 0x2634, 0x2570, 0x0003, /* backtick */ - 0x3818, 0x0003, /* substcont */ - 0x0f1c, 0x1f58, 0x0754, 0x3b8c, 0x22e8, 0x01e4, 0x0141, /* trans, transr */ - 0x0d5c, 0x0458, 0x0067, /* sassign */ - 0x0a18, 0x0914, 0x0810, 0x2c4c, 0x0067, /* aassign */ - 0x4070, 0x0003, /* chomp, schomp, ncomplement, scomplement, sin, cos, exp, log, sqrt, int, hex, oct, abs, length, ord, chr, chroot, rmdir */ - 0x4070, 0x0067, /* pow, multiply, i_multiply, divide, i_divide, modulo, i_modulo, add, i_add, subtract, i_subtract, concat, left_shift, right_shift, nbit_and, nbit_xor, nbit_or */ - 0x12d8, 0x0067, /* repeat */ - 0x4070, 0x012f, /* stringify, atan2, rand, srand, index, rindex, crypt, push, unshift, flock, chdir, chown, unlink, chmod, utime, rename, link, symlink, mkdir, waitpid, system, exec, kill, getpgrp, setpgrp, getpriority, setpriority, sleep */ - 0x3570, 0x2c4c, 0x00cb, /* substr */ - 0x2c4c, 0x0067, /* vec */ - 0x2b5c, 0x3078, 0x2c4c, 0x3a48, 0x3e04, 0x0003, /* rv2av */ - 0x01ff, /* aelemfast, aelemfast_lex */ - 0x2b5c, 0x2a58, 0x0256, 0x2c4c, 0x0067, /* aelem, helem */ - 0x2b5c, 0x2c4c, 0x3a49, /* aslice, hslice */ - 0x2c4d, /* kvaslice, kvhslice */ - 0x2b5c, 0x3998, 0x0003, /* delete */ - 0x3ef8, 0x0003, /* exists */ - 0x2b5c, 0x3078, 0x0534, 0x05d0, 0x2c4c, 0x3a48, 0x3e04, 0x0003, /* rv2hv */ - 0x2b5c, 0x2a58, 0x0f94, 0x18f0, 0x2c4c, 0x3e04, 0x0003, /* multideref */ - 0x23bc, 0x3079, /* split */ - 0x2b5c, 0x2019, /* list */ - 0x3c78, 0x3314, 0x1230, 0x26cc, 0x3668, 0x27c4, 0x2fe1, /* sort */ - 0x26cc, 0x0003, /* reverse */ - 0x28f8, 0x0003, /* flip, flop */ - 0x2b5c, 0x0003, /* cond_expr */ - 0x2b5c, 0x0e18, 0x0256, 0x028c, 0x3fc8, 0x3e04, 0x2481, /* entersub */ - 0x33d8, 0x0003, /* leavesub, leavesublv, leavewrite, leaveeval */ - 0x00bc, 0x012f, /* caller */ - 0x21f5, /* nextstate, dbstate */ - 0x29fc, 0x33d9, /* leave */ - 0x2b5c, 0x3078, 0x0e8c, 0x36e5, /* enteriter */ - 0x36e5, /* iter */ - 0x29fc, 0x0067, /* leaveloop */ - 0x41dc, 0x0003, /* last, next, redo, dump, goto */ - 0x325c, 0x3178, 0x2634, 0x2570, 0x012f, /* open */ - 0x1b90, 0x1dec, 0x1ca8, 0x1a64, 0x0003, /* ftrread, ftrwrite, ftrexec, fteread, ftewrite, fteexec */ - 0x1b90, 0x1dec, 0x1ca8, 0x0003, /* ftis, ftsize, ftmtime, ftatime, ftctime, ftrowned, fteowned, ftzero, ftsock, ftchr, ftblk, ftfile, ftdir, ftpipe, ftsuid, ftsgid, ftsvtx, ftlink, fttty, fttext, ftbinary */ - 0x4071, /* wait, getppid, time */ - 0x3474, 0x0c30, 0x068c, 0x4148, 0x2104, 0x0003, /* entereval */ - 0x2d1c, 0x0018, 0x1144, 0x1061, /* coreargs */ - 0x2b5c, 0x019b, /* padrange */ - 0x2b5c, 0x3d58, 0x0376, 0x284c, 0x1748, 0x0067, /* refassign */ - 0x2b5c, 0x3d58, 0x0376, 0x284c, 0x1748, 0x0003, /* lvref */ - 0x2b5d, /* lvrefslice */ - 0x2b5c, 0x3d58, 0x0003, /* lvavref */ + 0x2cbc, 0x3df8, 0x03d7, /* padsv */ + 0x2cbc, 0x3df8, 0x2dac, 0x3ae9, /* padav */ + 0x2cbc, 0x3df8, 0x0614, 0x06b0, 0x2dac, 0x3ae9, /* padhv */ + 0x2cbc, 0x1ab8, 0x03d6, 0x2dac, 0x2fa8, 0x3ea4, 0x0003, /* rv2gv */ + 0x2cbc, 0x31d8, 0x03d6, 0x3ea4, 0x0003, /* rv2sv */ + 0x2dac, 0x0003, /* av2arylen, pos, akeys, keys */ + 0x2f1c, 0x0ef8, 0x0c54, 0x028c, 0x4068, 0x3ea4, 0x0003, /* rv2cv */ + 0x018f, /* bless, glob, sprintf, formline, unpack, pack, join, anonlist, anonhash, splice, warn, die, reset, exit, close, pipe_op, fileno, umask, binmode, tie, dbmopen, sselect, select, getc, read, enterwrite, sysopen, sysseek, sysread, syswrite, eof, tell, seek, truncate, fcntl, ioctl, send, recv, socket, sockpair, bind, connect, listen, accept, shutdown, gsockopt, ssockopt, open_dir, seekdir, gmtime, shmget, shmctl, shmread, shmwrite, msgget, msgctl, msgsnd, msgrcv, semop, semget, semctl, ghbyaddr, gnbyaddr, gpbynumber, gsbyname, gsbyport, syscall */ + 0x33bc, 0x32d8, 0x2714, 0x2650, 0x0003, /* backtick */ + 0x0ffc, 0x2038, 0x0834, 0x3c2c, 0x23c8, 0x01e4, 0x0141, /* trans, transr */ + 0x0e3c, 0x0538, 0x0067, /* sassign */ + 0x0af8, 0x09f4, 0x08f0, 0x2dac, 0x0067, /* aassign */ + 0x4110, 0x0003, /* chomp, schomp, ncomplement, scomplement, sin, cos, exp, log, sqrt, int, hex, oct, abs, length, ord, chr, chroot, rmdir */ + 0x4110, 0x0067, /* pow, multiply, i_multiply, divide, i_divide, modulo, i_modulo, add, i_add, subtract, i_subtract, concat, left_shift, right_shift, nbit_and, nbit_xor, nbit_or */ + 0x13b8, 0x0067, /* repeat */ + 0x4110, 0x018f, /* stringify, atan2, rand, srand, index, rindex, crypt, push, unshift, flock, chdir, chown, unlink, chmod, utime, rename, link, symlink, mkdir, waitpid, system, exec, kill, getpgrp, setpgrp, getpriority, setpriority, sleep */ + 0x36d0, 0x2dac, 0x012b, /* substr */ + 0x2dac, 0x0067, /* vec */ + 0x2cbc, 0x31d8, 0x2dac, 0x3ae8, 0x3ea4, 0x0003, /* rv2av */ + 0x025f, /* aelemfast, aelemfast_lex */ + 0x2cbc, 0x2bb8, 0x03d6, 0x2dac, 0x0067, /* aelem, helem */ + 0x2cbc, 0x2dac, 0x3ae9, /* aslice, hslice */ + 0x2dad, /* kvaslice, kvhslice */ + 0x2cbc, 0x3a38, 0x0003, /* delete */ + 0x3f98, 0x0003, /* exists */ + 0x2cbc, 0x31d8, 0x0614, 0x06b0, 0x2dac, 0x3ae8, 0x3ea4, 0x0003, /* rv2hv */ + 0x2cbc, 0x2bb8, 0x1074, 0x19d0, 0x2dac, 0x3ea4, 0x0003, /* multideref */ + 0x2cbc, 0x31d8, 0x0350, 0x29cc, 0x2489, /* split */ + 0x2cbc, 0x20f9, /* list */ + 0x3d18, 0x3474, 0x1310, 0x27ac, 0x37c8, 0x28a4, 0x3141, /* sort */ + 0x27ac, 0x0003, /* reverse */ + 0x2a58, 0x0003, /* flip, flop */ + 0x2cbc, 0x0003, /* cond_expr */ + 0x2cbc, 0x0ef8, 0x03d6, 0x028c, 0x4068, 0x3ea4, 0x2561, /* entersub */ + 0x3538, 0x0003, /* leavesub, leavesublv, leavewrite, leaveeval */ + 0x02aa, 0x0003, /* argelem */ + 0x00bc, 0x018f, /* caller */ + 0x22d5, /* nextstate, dbstate */ + 0x2b5c, 0x3539, /* leave */ + 0x2cbc, 0x31d8, 0x0f6c, 0x3845, /* enteriter */ + 0x3845, /* iter */ + 0x2b5c, 0x0067, /* leaveloop */ + 0x427c, 0x0003, /* last, next, redo, dump, goto */ + 0x33bc, 0x32d8, 0x2714, 0x2650, 0x018f, /* open */ + 0x1c70, 0x1ecc, 0x1d88, 0x1b44, 0x0003, /* ftrread, ftrwrite, ftrexec, fteread, ftewrite, fteexec */ + 0x1c70, 0x1ecc, 0x1d88, 0x0003, /* ftis, ftsize, ftmtime, ftatime, ftctime, ftrowned, fteowned, ftzero, ftsock, ftchr, ftblk, ftfile, ftdir, ftpipe, ftsuid, ftsgid, ftsvtx, ftlink, fttty, fttext, ftbinary */ + 0x4111, /* wait, getppid, time */ + 0x35d4, 0x0d10, 0x076c, 0x41e8, 0x21e4, 0x0003, /* entereval */ + 0x2e7c, 0x0018, 0x1224, 0x1141, /* coreargs */ + 0x2dac, 0x00c7, /* avhvswitch */ + 0x2cbc, 0x01fb, /* padrange */ + 0x2cbc, 0x3df8, 0x04f6, 0x292c, 0x1828, 0x0067, /* refassign */ + 0x2cbc, 0x3df8, 0x04f6, 0x292c, 0x1828, 0x0003, /* lvref */ + 0x2cbd, /* lvrefslice */ + 0x2cbc, 0x3df8, 0x0003, /* lvavref */ }; @@ -2909,7 +2939,6 @@ EXTCONST U8 PL_op_private_valid[] = { /* PADAV */ (OPpSLICEWARNING|OPpMAYBE_LVSUB|OPpPAD_STATE|OPpLVAL_INTRO), /* PADHV */ (OPpSLICEWARNING|OPpMAYBE_LVSUB|OPpMAYBE_TRUEBOOL|OPpTRUEBOOL|OPpPAD_STATE|OPpLVAL_INTRO), /* PADANY */ (0), - /* PUSHRE */ (OPpRUNTIME), /* RV2GV */ (OPpARG1_MASK|OPpHINT_STRICT_REFS|OPpDONT_INIT_GV|OPpMAYBE_LVSUB|OPpDEREF|OPpALLOW_FAKE|OPpLVAL_INTRO), /* RV2SV */ (OPpARG1_MASK|OPpHINT_STRICT_REFS|OPpDEREF|OPpOUR_INTRO|OPpLVAL_INTRO), /* AV2ARYLEN */ (OPpARG1_MASK|OPpMAYBE_LVSUB), @@ -2927,10 +2956,10 @@ EXTCONST U8 PL_op_private_valid[] = { /* REGCMAYBE */ (OPpARG1_MASK), /* REGCRESET */ (OPpARG1_MASK), /* REGCOMP */ (OPpARG1_MASK), - /* MATCH */ (OPpRUNTIME), - /* QR */ (OPpRUNTIME), - /* SUBST */ (OPpRUNTIME), - /* SUBSTCONT */ (OPpARG1_MASK|OPpRUNTIME), + /* MATCH */ (0), + /* QR */ (0), + /* SUBST */ (0), + /* SUBSTCONT */ (OPpARG1_MASK), /* TRANS */ (OPpTRANS_FROM_UTF|OPpTRANS_TO_UTF|OPpTRANS_IDENTICAL|OPpTRANS_SQUASH|OPpTRANS_COMPLEMENT|OPpTRANS_GROWS|OPpTRANS_DELETE), /* TRANSR */ (OPpTRANS_FROM_UTF|OPpTRANS_TO_UTF|OPpTRANS_IDENTICAL|OPpTRANS_SQUASH|OPpTRANS_COMPLEMENT|OPpTRANS_GROWS|OPpTRANS_DELETE), /* SASSIGN */ (OPpARG2_MASK|OPpASSIGN_BACKWARDS|OPpASSIGN_CV_TO_GV), @@ -3038,8 +3067,8 @@ EXTCONST U8 PL_op_private_valid[] = { /* ASLICE */ (OPpSLICEWARNING|OPpMAYBE_LVSUB|OPpLVAL_INTRO), /* KVASLICE */ (OPpMAYBE_LVSUB), /* AEACH */ (OPpARG1_MASK), - /* AKEYS */ (OPpARG1_MASK), /* AVALUES */ (OPpARG1_MASK), + /* AKEYS */ (OPpARG1_MASK|OPpMAYBE_LVSUB), /* EACH */ (OPpARG1_MASK), /* VALUES */ (OPpARG1_MASK), /* KEYS */ (OPpARG1_MASK|OPpMAYBE_LVSUB), @@ -3052,7 +3081,7 @@ EXTCONST U8 PL_op_private_valid[] = { /* MULTIDEREF */ (OPpARG1_MASK|OPpHINT_STRICT_REFS|OPpMAYBE_LVSUB|OPpMULTIDEREF_EXISTS|OPpMULTIDEREF_DELETE|OPpLVAL_DEFER|OPpLVAL_INTRO), /* UNPACK */ (OPpARG4_MASK), /* PACK */ (OPpARG4_MASK), - /* SPLIT */ (OPpOUR_INTRO|OPpSPLIT_IMPLIM), + /* SPLIT */ (OPpSPLIT_IMPLIM|OPpSPLIT_LEX|OPpSPLIT_ASSIGN|OPpOUR_INTRO|OPpLVAL_INTRO), /* JOIN */ (OPpARG4_MASK), /* LIST */ (OPpLIST_GUESSED|OPpLVAL_INTRO), /* LSLICE */ (OPpARG2_MASK), @@ -3084,6 +3113,9 @@ EXTCONST U8 PL_op_private_valid[] = { /* ENTERSUB */ (OPpENTERSUB_INARGS|OPpHINT_STRICT_REFS|OPpENTERSUB_HASTARG|OPpENTERSUB_AMPER|OPpDEREF|OPpENTERSUB_DB|OPpLVAL_INTRO), /* LEAVESUB */ (OPpARG1_MASK|OPpREFCOUNTED), /* LEAVESUBLV */ (OPpARG1_MASK|OPpREFCOUNTED), + /* ARGCHECK */ (OPpARG1_MASK), + /* ARGELEM */ (OPpARG1_MASK|OPpARGELEM_MASK), + /* ARGDEFELEM */ (OPpARG1_MASK), /* CALLER */ (OPpARG4_MASK|OPpOFFBYONE), /* WARN */ (OPpARG4_MASK), /* DIE */ (OPpARG4_MASK), @@ -3278,6 +3310,7 @@ EXTCONST U8 PL_op_private_valid[] = { /* ONCE */ (OPpARG1_MASK), /* CUSTOM */ (0xff), /* COREARGS */ (OPpCOREARGS_DEREF1|OPpCOREARGS_DEREF2|OPpCOREARGS_SCALARMOD|OPpCOREARGS_PUSHMARK), + /* AVHVSWITCH */ (OPpAVHVSWITCH_MASK|OPpMAYBE_LVSUB), /* RUNCV */ (OPpOFFBYONE), /* FC */ (OPpARG1_MASK), /* PADCV */ (0), diff --git a/Master/tlpkg/tlperl/lib/CORE/opnames.h b/Master/tlpkg/tlperl/lib/CORE/opnames.h index 065c1a858f3..62bed505deb 100644 --- a/Master/tlpkg/tlperl/lib/CORE/opnames.h +++ b/Master/tlpkg/tlperl/lib/CORE/opnames.h @@ -27,390 +27,393 @@ typedef enum opcode { OP_PADAV = 10, OP_PADHV = 11, OP_PADANY = 12, - OP_PUSHRE = 13, - OP_RV2GV = 14, - OP_RV2SV = 15, - OP_AV2ARYLEN = 16, - OP_RV2CV = 17, - OP_ANONCODE = 18, - OP_PROTOTYPE = 19, - OP_REFGEN = 20, - OP_SREFGEN = 21, - OP_REF = 22, - OP_BLESS = 23, - OP_BACKTICK = 24, - OP_GLOB = 25, - OP_READLINE = 26, - OP_RCATLINE = 27, - OP_REGCMAYBE = 28, - OP_REGCRESET = 29, - OP_REGCOMP = 30, - OP_MATCH = 31, - OP_QR = 32, - OP_SUBST = 33, - OP_SUBSTCONT = 34, - OP_TRANS = 35, - OP_TRANSR = 36, - OP_SASSIGN = 37, - OP_AASSIGN = 38, - OP_CHOP = 39, - OP_SCHOP = 40, - OP_CHOMP = 41, - OP_SCHOMP = 42, - OP_DEFINED = 43, - OP_UNDEF = 44, - OP_STUDY = 45, - OP_POS = 46, - OP_PREINC = 47, - OP_I_PREINC = 48, - OP_PREDEC = 49, - OP_I_PREDEC = 50, - OP_POSTINC = 51, - OP_I_POSTINC = 52, - OP_POSTDEC = 53, - OP_I_POSTDEC = 54, - OP_POW = 55, - OP_MULTIPLY = 56, - OP_I_MULTIPLY = 57, - OP_DIVIDE = 58, - OP_I_DIVIDE = 59, - OP_MODULO = 60, - OP_I_MODULO = 61, - OP_REPEAT = 62, - OP_ADD = 63, - OP_I_ADD = 64, - OP_SUBTRACT = 65, - OP_I_SUBTRACT = 66, - OP_CONCAT = 67, - OP_STRINGIFY = 68, - OP_LEFT_SHIFT = 69, - OP_RIGHT_SHIFT = 70, - OP_LT = 71, - OP_I_LT = 72, - OP_GT = 73, - OP_I_GT = 74, - OP_LE = 75, - OP_I_LE = 76, - OP_GE = 77, - OP_I_GE = 78, - OP_EQ = 79, - OP_I_EQ = 80, - OP_NE = 81, - OP_I_NE = 82, - OP_NCMP = 83, - OP_I_NCMP = 84, - OP_SLT = 85, - OP_SGT = 86, - OP_SLE = 87, - OP_SGE = 88, - OP_SEQ = 89, - OP_SNE = 90, - OP_SCMP = 91, - OP_BIT_AND = 92, - OP_BIT_XOR = 93, - OP_BIT_OR = 94, - OP_NBIT_AND = 95, - OP_NBIT_XOR = 96, - OP_NBIT_OR = 97, - OP_SBIT_AND = 98, - OP_SBIT_XOR = 99, - OP_SBIT_OR = 100, - OP_NEGATE = 101, - OP_I_NEGATE = 102, - OP_NOT = 103, - OP_COMPLEMENT = 104, - OP_NCOMPLEMENT = 105, - OP_SCOMPLEMENT = 106, - OP_SMARTMATCH = 107, - OP_ATAN2 = 108, - OP_SIN = 109, - OP_COS = 110, - OP_RAND = 111, - OP_SRAND = 112, - OP_EXP = 113, - OP_LOG = 114, - OP_SQRT = 115, - OP_INT = 116, - OP_HEX = 117, - OP_OCT = 118, - OP_ABS = 119, - OP_LENGTH = 120, - OP_SUBSTR = 121, - OP_VEC = 122, - OP_INDEX = 123, - OP_RINDEX = 124, - OP_SPRINTF = 125, - OP_FORMLINE = 126, - OP_ORD = 127, - OP_CHR = 128, - OP_CRYPT = 129, - OP_UCFIRST = 130, - OP_LCFIRST = 131, - OP_UC = 132, - OP_LC = 133, - OP_QUOTEMETA = 134, - OP_RV2AV = 135, - OP_AELEMFAST = 136, - OP_AELEMFAST_LEX = 137, - OP_AELEM = 138, - OP_ASLICE = 139, - OP_KVASLICE = 140, - OP_AEACH = 141, + OP_RV2GV = 13, + OP_RV2SV = 14, + OP_AV2ARYLEN = 15, + OP_RV2CV = 16, + OP_ANONCODE = 17, + OP_PROTOTYPE = 18, + OP_REFGEN = 19, + OP_SREFGEN = 20, + OP_REF = 21, + OP_BLESS = 22, + OP_BACKTICK = 23, + OP_GLOB = 24, + OP_READLINE = 25, + OP_RCATLINE = 26, + OP_REGCMAYBE = 27, + OP_REGCRESET = 28, + OP_REGCOMP = 29, + OP_MATCH = 30, + OP_QR = 31, + OP_SUBST = 32, + OP_SUBSTCONT = 33, + OP_TRANS = 34, + OP_TRANSR = 35, + OP_SASSIGN = 36, + OP_AASSIGN = 37, + OP_CHOP = 38, + OP_SCHOP = 39, + OP_CHOMP = 40, + OP_SCHOMP = 41, + OP_DEFINED = 42, + OP_UNDEF = 43, + OP_STUDY = 44, + OP_POS = 45, + OP_PREINC = 46, + OP_I_PREINC = 47, + OP_PREDEC = 48, + OP_I_PREDEC = 49, + OP_POSTINC = 50, + OP_I_POSTINC = 51, + OP_POSTDEC = 52, + OP_I_POSTDEC = 53, + OP_POW = 54, + OP_MULTIPLY = 55, + OP_I_MULTIPLY = 56, + OP_DIVIDE = 57, + OP_I_DIVIDE = 58, + OP_MODULO = 59, + OP_I_MODULO = 60, + OP_REPEAT = 61, + OP_ADD = 62, + OP_I_ADD = 63, + OP_SUBTRACT = 64, + OP_I_SUBTRACT = 65, + OP_CONCAT = 66, + OP_STRINGIFY = 67, + OP_LEFT_SHIFT = 68, + OP_RIGHT_SHIFT = 69, + OP_LT = 70, + OP_I_LT = 71, + OP_GT = 72, + OP_I_GT = 73, + OP_LE = 74, + OP_I_LE = 75, + OP_GE = 76, + OP_I_GE = 77, + OP_EQ = 78, + OP_I_EQ = 79, + OP_NE = 80, + OP_I_NE = 81, + OP_NCMP = 82, + OP_I_NCMP = 83, + OP_SLT = 84, + OP_SGT = 85, + OP_SLE = 86, + OP_SGE = 87, + OP_SEQ = 88, + OP_SNE = 89, + OP_SCMP = 90, + OP_BIT_AND = 91, + OP_BIT_XOR = 92, + OP_BIT_OR = 93, + OP_NBIT_AND = 94, + OP_NBIT_XOR = 95, + OP_NBIT_OR = 96, + OP_SBIT_AND = 97, + OP_SBIT_XOR = 98, + OP_SBIT_OR = 99, + OP_NEGATE = 100, + OP_I_NEGATE = 101, + OP_NOT = 102, + OP_COMPLEMENT = 103, + OP_NCOMPLEMENT = 104, + OP_SCOMPLEMENT = 105, + OP_SMARTMATCH = 106, + OP_ATAN2 = 107, + OP_SIN = 108, + OP_COS = 109, + OP_RAND = 110, + OP_SRAND = 111, + OP_EXP = 112, + OP_LOG = 113, + OP_SQRT = 114, + OP_INT = 115, + OP_HEX = 116, + OP_OCT = 117, + OP_ABS = 118, + OP_LENGTH = 119, + OP_SUBSTR = 120, + OP_VEC = 121, + OP_INDEX = 122, + OP_RINDEX = 123, + OP_SPRINTF = 124, + OP_FORMLINE = 125, + OP_ORD = 126, + OP_CHR = 127, + OP_CRYPT = 128, + OP_UCFIRST = 129, + OP_LCFIRST = 130, + OP_UC = 131, + OP_LC = 132, + OP_QUOTEMETA = 133, + OP_RV2AV = 134, + OP_AELEMFAST = 135, + OP_AELEMFAST_LEX = 136, + OP_AELEM = 137, + OP_ASLICE = 138, + OP_KVASLICE = 139, + OP_AEACH = 140, + OP_AVALUES = 141, OP_AKEYS = 142, - OP_AVALUES = 143, - OP_EACH = 144, - OP_VALUES = 145, - OP_KEYS = 146, - OP_DELETE = 147, - OP_EXISTS = 148, - OP_RV2HV = 149, - OP_HELEM = 150, - OP_HSLICE = 151, - OP_KVHSLICE = 152, - OP_MULTIDEREF = 153, - OP_UNPACK = 154, - OP_PACK = 155, - OP_SPLIT = 156, - OP_JOIN = 157, - OP_LIST = 158, - OP_LSLICE = 159, - OP_ANONLIST = 160, - OP_ANONHASH = 161, - OP_SPLICE = 162, - OP_PUSH = 163, - OP_POP = 164, - OP_SHIFT = 165, - OP_UNSHIFT = 166, - OP_SORT = 167, - OP_REVERSE = 168, - OP_GREPSTART = 169, - OP_GREPWHILE = 170, - OP_MAPSTART = 171, - OP_MAPWHILE = 172, - OP_RANGE = 173, - OP_FLIP = 174, - OP_FLOP = 175, - OP_AND = 176, - OP_OR = 177, - OP_XOR = 178, - OP_DOR = 179, - OP_COND_EXPR = 180, - OP_ANDASSIGN = 181, - OP_ORASSIGN = 182, - OP_DORASSIGN = 183, - OP_METHOD = 184, - OP_ENTERSUB = 185, - OP_LEAVESUB = 186, - OP_LEAVESUBLV = 187, - OP_CALLER = 188, - OP_WARN = 189, - OP_DIE = 190, - OP_RESET = 191, - OP_LINESEQ = 192, - OP_NEXTSTATE = 193, - OP_DBSTATE = 194, - OP_UNSTACK = 195, - OP_ENTER = 196, - OP_LEAVE = 197, - OP_SCOPE = 198, - OP_ENTERITER = 199, - OP_ITER = 200, - OP_ENTERLOOP = 201, - OP_LEAVELOOP = 202, - OP_RETURN = 203, - OP_LAST = 204, - OP_NEXT = 205, - OP_REDO = 206, - OP_DUMP = 207, - OP_GOTO = 208, - OP_EXIT = 209, - OP_METHOD_NAMED = 210, - OP_METHOD_SUPER = 211, - OP_METHOD_REDIR = 212, - OP_METHOD_REDIR_SUPER = 213, - OP_ENTERGIVEN = 214, - OP_LEAVEGIVEN = 215, - OP_ENTERWHEN = 216, - OP_LEAVEWHEN = 217, - OP_BREAK = 218, - OP_CONTINUE = 219, - OP_OPEN = 220, - OP_CLOSE = 221, - OP_PIPE_OP = 222, - OP_FILENO = 223, - OP_UMASK = 224, - OP_BINMODE = 225, - OP_TIE = 226, - OP_UNTIE = 227, - OP_TIED = 228, - OP_DBMOPEN = 229, - OP_DBMCLOSE = 230, - OP_SSELECT = 231, - OP_SELECT = 232, - OP_GETC = 233, - OP_READ = 234, - OP_ENTERWRITE = 235, - OP_LEAVEWRITE = 236, - OP_PRTF = 237, - OP_PRINT = 238, - OP_SAY = 239, - OP_SYSOPEN = 240, - OP_SYSSEEK = 241, - OP_SYSREAD = 242, - OP_SYSWRITE = 243, - OP_EOF = 244, - OP_TELL = 245, - OP_SEEK = 246, - OP_TRUNCATE = 247, - OP_FCNTL = 248, - OP_IOCTL = 249, - OP_FLOCK = 250, - OP_SEND = 251, - OP_RECV = 252, - OP_SOCKET = 253, - OP_SOCKPAIR = 254, - OP_BIND = 255, - OP_CONNECT = 256, - OP_LISTEN = 257, - OP_ACCEPT = 258, - OP_SHUTDOWN = 259, - OP_GSOCKOPT = 260, - OP_SSOCKOPT = 261, - OP_GETSOCKNAME = 262, - OP_GETPEERNAME = 263, - OP_LSTAT = 264, - OP_STAT = 265, - OP_FTRREAD = 266, - OP_FTRWRITE = 267, - OP_FTREXEC = 268, - OP_FTEREAD = 269, - OP_FTEWRITE = 270, - OP_FTEEXEC = 271, - OP_FTIS = 272, - OP_FTSIZE = 273, - OP_FTMTIME = 274, - OP_FTATIME = 275, - OP_FTCTIME = 276, - OP_FTROWNED = 277, - OP_FTEOWNED = 278, - OP_FTZERO = 279, - OP_FTSOCK = 280, - OP_FTCHR = 281, - OP_FTBLK = 282, - OP_FTFILE = 283, - OP_FTDIR = 284, - OP_FTPIPE = 285, - OP_FTSUID = 286, - OP_FTSGID = 287, - OP_FTSVTX = 288, - OP_FTLINK = 289, - OP_FTTTY = 290, - OP_FTTEXT = 291, - OP_FTBINARY = 292, - OP_CHDIR = 293, - OP_CHOWN = 294, - OP_CHROOT = 295, - OP_UNLINK = 296, - OP_CHMOD = 297, - OP_UTIME = 298, - OP_RENAME = 299, - OP_LINK = 300, - OP_SYMLINK = 301, - OP_READLINK = 302, - OP_MKDIR = 303, - OP_RMDIR = 304, - OP_OPEN_DIR = 305, - OP_READDIR = 306, - OP_TELLDIR = 307, - OP_SEEKDIR = 308, - OP_REWINDDIR = 309, - OP_CLOSEDIR = 310, - OP_FORK = 311, - OP_WAIT = 312, - OP_WAITPID = 313, - OP_SYSTEM = 314, - OP_EXEC = 315, - OP_KILL = 316, - OP_GETPPID = 317, - OP_GETPGRP = 318, - OP_SETPGRP = 319, - OP_GETPRIORITY = 320, - OP_SETPRIORITY = 321, - OP_TIME = 322, - OP_TMS = 323, - OP_LOCALTIME = 324, - OP_GMTIME = 325, - OP_ALARM = 326, - OP_SLEEP = 327, - OP_SHMGET = 328, - OP_SHMCTL = 329, - OP_SHMREAD = 330, - OP_SHMWRITE = 331, - OP_MSGGET = 332, - OP_MSGCTL = 333, - OP_MSGSND = 334, - OP_MSGRCV = 335, - OP_SEMOP = 336, - OP_SEMGET = 337, - OP_SEMCTL = 338, - OP_REQUIRE = 339, - OP_DOFILE = 340, - OP_HINTSEVAL = 341, - OP_ENTEREVAL = 342, - OP_LEAVEEVAL = 343, - OP_ENTERTRY = 344, - OP_LEAVETRY = 345, - OP_GHBYNAME = 346, - OP_GHBYADDR = 347, - OP_GHOSTENT = 348, - OP_GNBYNAME = 349, - OP_GNBYADDR = 350, - OP_GNETENT = 351, - OP_GPBYNAME = 352, - OP_GPBYNUMBER = 353, - OP_GPROTOENT = 354, - OP_GSBYNAME = 355, - OP_GSBYPORT = 356, - OP_GSERVENT = 357, - OP_SHOSTENT = 358, - OP_SNETENT = 359, - OP_SPROTOENT = 360, - OP_SSERVENT = 361, - OP_EHOSTENT = 362, - OP_ENETENT = 363, - OP_EPROTOENT = 364, - OP_ESERVENT = 365, - OP_GPWNAM = 366, - OP_GPWUID = 367, - OP_GPWENT = 368, - OP_SPWENT = 369, - OP_EPWENT = 370, - OP_GGRNAM = 371, - OP_GGRGID = 372, - OP_GGRENT = 373, - OP_SGRENT = 374, - OP_EGRENT = 375, - OP_GETLOGIN = 376, - OP_SYSCALL = 377, - OP_LOCK = 378, - OP_ONCE = 379, - OP_CUSTOM = 380, - OP_COREARGS = 381, - OP_RUNCV = 382, - OP_FC = 383, - OP_PADCV = 384, - OP_INTROCV = 385, - OP_CLONECV = 386, - OP_PADRANGE = 387, - OP_REFASSIGN = 388, - OP_LVREF = 389, - OP_LVREFSLICE = 390, - OP_LVAVREF = 391, - OP_ANONCONST = 392, + OP_EACH = 143, + OP_VALUES = 144, + OP_KEYS = 145, + OP_DELETE = 146, + OP_EXISTS = 147, + OP_RV2HV = 148, + OP_HELEM = 149, + OP_HSLICE = 150, + OP_KVHSLICE = 151, + OP_MULTIDEREF = 152, + OP_UNPACK = 153, + OP_PACK = 154, + OP_SPLIT = 155, + OP_JOIN = 156, + OP_LIST = 157, + OP_LSLICE = 158, + OP_ANONLIST = 159, + OP_ANONHASH = 160, + OP_SPLICE = 161, + OP_PUSH = 162, + OP_POP = 163, + OP_SHIFT = 164, + OP_UNSHIFT = 165, + OP_SORT = 166, + OP_REVERSE = 167, + OP_GREPSTART = 168, + OP_GREPWHILE = 169, + OP_MAPSTART = 170, + OP_MAPWHILE = 171, + OP_RANGE = 172, + OP_FLIP = 173, + OP_FLOP = 174, + OP_AND = 175, + OP_OR = 176, + OP_XOR = 177, + OP_DOR = 178, + OP_COND_EXPR = 179, + OP_ANDASSIGN = 180, + OP_ORASSIGN = 181, + OP_DORASSIGN = 182, + OP_METHOD = 183, + OP_ENTERSUB = 184, + OP_LEAVESUB = 185, + OP_LEAVESUBLV = 186, + OP_ARGCHECK = 187, + OP_ARGELEM = 188, + OP_ARGDEFELEM = 189, + OP_CALLER = 190, + OP_WARN = 191, + OP_DIE = 192, + OP_RESET = 193, + OP_LINESEQ = 194, + OP_NEXTSTATE = 195, + OP_DBSTATE = 196, + OP_UNSTACK = 197, + OP_ENTER = 198, + OP_LEAVE = 199, + OP_SCOPE = 200, + OP_ENTERITER = 201, + OP_ITER = 202, + OP_ENTERLOOP = 203, + OP_LEAVELOOP = 204, + OP_RETURN = 205, + OP_LAST = 206, + OP_NEXT = 207, + OP_REDO = 208, + OP_DUMP = 209, + OP_GOTO = 210, + OP_EXIT = 211, + OP_METHOD_NAMED = 212, + OP_METHOD_SUPER = 213, + OP_METHOD_REDIR = 214, + OP_METHOD_REDIR_SUPER = 215, + OP_ENTERGIVEN = 216, + OP_LEAVEGIVEN = 217, + OP_ENTERWHEN = 218, + OP_LEAVEWHEN = 219, + OP_BREAK = 220, + OP_CONTINUE = 221, + OP_OPEN = 222, + OP_CLOSE = 223, + OP_PIPE_OP = 224, + OP_FILENO = 225, + OP_UMASK = 226, + OP_BINMODE = 227, + OP_TIE = 228, + OP_UNTIE = 229, + OP_TIED = 230, + OP_DBMOPEN = 231, + OP_DBMCLOSE = 232, + OP_SSELECT = 233, + OP_SELECT = 234, + OP_GETC = 235, + OP_READ = 236, + OP_ENTERWRITE = 237, + OP_LEAVEWRITE = 238, + OP_PRTF = 239, + OP_PRINT = 240, + OP_SAY = 241, + OP_SYSOPEN = 242, + OP_SYSSEEK = 243, + OP_SYSREAD = 244, + OP_SYSWRITE = 245, + OP_EOF = 246, + OP_TELL = 247, + OP_SEEK = 248, + OP_TRUNCATE = 249, + OP_FCNTL = 250, + OP_IOCTL = 251, + OP_FLOCK = 252, + OP_SEND = 253, + OP_RECV = 254, + OP_SOCKET = 255, + OP_SOCKPAIR = 256, + OP_BIND = 257, + OP_CONNECT = 258, + OP_LISTEN = 259, + OP_ACCEPT = 260, + OP_SHUTDOWN = 261, + OP_GSOCKOPT = 262, + OP_SSOCKOPT = 263, + OP_GETSOCKNAME = 264, + OP_GETPEERNAME = 265, + OP_LSTAT = 266, + OP_STAT = 267, + OP_FTRREAD = 268, + OP_FTRWRITE = 269, + OP_FTREXEC = 270, + OP_FTEREAD = 271, + OP_FTEWRITE = 272, + OP_FTEEXEC = 273, + OP_FTIS = 274, + OP_FTSIZE = 275, + OP_FTMTIME = 276, + OP_FTATIME = 277, + OP_FTCTIME = 278, + OP_FTROWNED = 279, + OP_FTEOWNED = 280, + OP_FTZERO = 281, + OP_FTSOCK = 282, + OP_FTCHR = 283, + OP_FTBLK = 284, + OP_FTFILE = 285, + OP_FTDIR = 286, + OP_FTPIPE = 287, + OP_FTSUID = 288, + OP_FTSGID = 289, + OP_FTSVTX = 290, + OP_FTLINK = 291, + OP_FTTTY = 292, + OP_FTTEXT = 293, + OP_FTBINARY = 294, + OP_CHDIR = 295, + OP_CHOWN = 296, + OP_CHROOT = 297, + OP_UNLINK = 298, + OP_CHMOD = 299, + OP_UTIME = 300, + OP_RENAME = 301, + OP_LINK = 302, + OP_SYMLINK = 303, + OP_READLINK = 304, + OP_MKDIR = 305, + OP_RMDIR = 306, + OP_OPEN_DIR = 307, + OP_READDIR = 308, + OP_TELLDIR = 309, + OP_SEEKDIR = 310, + OP_REWINDDIR = 311, + OP_CLOSEDIR = 312, + OP_FORK = 313, + OP_WAIT = 314, + OP_WAITPID = 315, + OP_SYSTEM = 316, + OP_EXEC = 317, + OP_KILL = 318, + OP_GETPPID = 319, + OP_GETPGRP = 320, + OP_SETPGRP = 321, + OP_GETPRIORITY = 322, + OP_SETPRIORITY = 323, + OP_TIME = 324, + OP_TMS = 325, + OP_LOCALTIME = 326, + OP_GMTIME = 327, + OP_ALARM = 328, + OP_SLEEP = 329, + OP_SHMGET = 330, + OP_SHMCTL = 331, + OP_SHMREAD = 332, + OP_SHMWRITE = 333, + OP_MSGGET = 334, + OP_MSGCTL = 335, + OP_MSGSND = 336, + OP_MSGRCV = 337, + OP_SEMOP = 338, + OP_SEMGET = 339, + OP_SEMCTL = 340, + OP_REQUIRE = 341, + OP_DOFILE = 342, + OP_HINTSEVAL = 343, + OP_ENTEREVAL = 344, + OP_LEAVEEVAL = 345, + OP_ENTERTRY = 346, + OP_LEAVETRY = 347, + OP_GHBYNAME = 348, + OP_GHBYADDR = 349, + OP_GHOSTENT = 350, + OP_GNBYNAME = 351, + OP_GNBYADDR = 352, + OP_GNETENT = 353, + OP_GPBYNAME = 354, + OP_GPBYNUMBER = 355, + OP_GPROTOENT = 356, + OP_GSBYNAME = 357, + OP_GSBYPORT = 358, + OP_GSERVENT = 359, + OP_SHOSTENT = 360, + OP_SNETENT = 361, + OP_SPROTOENT = 362, + OP_SSERVENT = 363, + OP_EHOSTENT = 364, + OP_ENETENT = 365, + OP_EPROTOENT = 366, + OP_ESERVENT = 367, + OP_GPWNAM = 368, + OP_GPWUID = 369, + OP_GPWENT = 370, + OP_SPWENT = 371, + OP_EPWENT = 372, + OP_GGRNAM = 373, + OP_GGRGID = 374, + OP_GGRENT = 375, + OP_SGRENT = 376, + OP_EGRENT = 377, + OP_GETLOGIN = 378, + OP_SYSCALL = 379, + OP_LOCK = 380, + OP_ONCE = 381, + OP_CUSTOM = 382, + OP_COREARGS = 383, + OP_AVHVSWITCH = 384, + OP_RUNCV = 385, + OP_FC = 386, + OP_PADCV = 387, + OP_INTROCV = 388, + OP_CLONECV = 389, + OP_PADRANGE = 390, + OP_REFASSIGN = 391, + OP_LVREF = 392, + OP_LVREFSLICE = 393, + OP_LVAVREF = 394, + OP_ANONCONST = 395, OP_max } opcode; -#define MAXO 393 +#define MAXO 396 #define OP_FREED MAXO /* the OP_IS_* macros are optimized to a simple range check because diff --git a/Master/tlpkg/tlperl/lib/CORE/pad.h b/Master/tlpkg/tlperl/lib/CORE/pad.h index 7ed10333f20..56d88abc8dc 100644 --- a/Master/tlpkg/tlperl/lib/CORE/pad.h +++ b/Master/tlpkg/tlperl/lib/CORE/pad.h @@ -18,13 +18,7 @@ /* offsets within a pad */ -#if PTRSIZE == 4 -typedef U32TYPE PADOFFSET; -#else -# if PTRSIZE == 8 -typedef U64TYPE PADOFFSET; -# endif -#endif +typedef SSize_t PADOFFSET; /* signed so that -1 is a valid value */ #define NOT_IN_PAD ((PADOFFSET) -1) /* B.xs expects the first members of these two structs to line up diff --git a/Master/tlpkg/tlperl/lib/CORE/parser.h b/Master/tlpkg/tlperl/lib/CORE/parser.h index 96ab4f5ff57..4187e0a93db 100644 --- a/Master/tlpkg/tlperl/lib/CORE/parser.h +++ b/Master/tlpkg/tlperl/lib/CORE/parser.h @@ -42,9 +42,9 @@ typedef struct yy_parser { /* Number of tokens to shift before error messages enabled. */ int yyerrstatus; - int stack_size; int yylen; /* length of active reduction */ yy_stack_frame *stack; /* base of stack */ + yy_stack_frame *stack_max1;/* (top-1)th element of allocated stack */ yy_stack_frame *ps; /* current stack frame */ /* lexer state */ @@ -56,8 +56,8 @@ typedef struct yy_parser { U8 lex_defer; /* state after determined token */ U8 lex_dojoin; /* doing an array interpolation 1 = @{...} 2 = ->@ */ - U8 lex_expect; /* UNUSED */ U8 expect; /* how to interpret ambiguous tokens */ + bool preambled; I32 lex_formbrack; /* bracket count at outer format level */ OP *lex_inpat; /* in pattern $) and $| are special */ OP *lex_op; /* extra info to pass back on op */ @@ -68,12 +68,14 @@ typedef struct yy_parser { SV *lex_stuff; /* runtime pattern from m// or s/// */ I32 multi_start; /* 1st line of multi-line string */ I32 multi_end; /* last line of multi-line string */ - char multi_open; /* delimiter of said string */ - char multi_close; /* delimiter of said string */ - bool preambled; + UV multi_open; /* delimiter of said string */ + UV multi_close; /* delimiter of said string */ bool lex_re_reparsing; /* we're doing G_RE_REPARSING */ + U8 lex_super_state;/* lexer state to save */ + U16 lex_sub_inwhat; /* "lex_inwhat" to use in sublex_push */ I32 lex_allbrackets;/* (), [], {}, ?: bracket count */ - SUBLEXINFO sublex_info; + OP *lex_sub_op; /* current op in y/// or pattern */ + SV *lex_sub_repl; /* repl of s/// used in sublex_push */ LEXSHARED *lex_shared; SV *linestr; /* current chunk of src text */ char *bufptr; /* carries the cursor (current parsing @@ -96,18 +98,25 @@ typedef struct yy_parser { HV *in_my_stash; /* declared class of this "my" declaration */ PerlIO *rsfp; /* current source file pointer */ AV *rsfp_filters; /* holds chain of active source filters */ - U8 form_lex_state; /* remember lex_state when parsing fmt */ YYSTYPE nextval[5]; /* value of next token, if any */ I32 nexttype[5]; /* type of next token */ - U32 nexttoke; - + U8 nexttoke; + U8 form_lex_state; /* remember lex_state when parsing fmt */ + U8 lex_fakeeof; /* precedence at which to fake EOF */ + U8 lex_flags; COP *saved_curcop; /* the previous PL_curcop */ char tokenbuf[256]; line_t herelines; /* number of lines in here-doc */ line_t preambling; /* line # when processing $ENV{PERL5DB} */ - U8 lex_fakeeof; /* precedence at which to fake EOF */ - U8 lex_flags; + + /* these are valid while parsing a subroutine signature */ + IV sig_elems; /* number of signature elements seen so far */ + IV sig_optelems; /* number of optional signature elems seen */ + char sig_slurpy; /* the sigil of the slurpy var (or null) */ + + bool recheck_utf8_validity; + PERL_BITFIELD16 in_pod:1; /* lexer is within a =pod section */ PERL_BITFIELD16 filtered:1; /* source filters in evalbytes */ PERL_BITFIELD16 saw_infix_sigil:1; /* saw & or * or % operator */ diff --git a/Master/tlpkg/tlperl/lib/CORE/patchlevel.h b/Master/tlpkg/tlperl/lib/CORE/patchlevel.h index 0d8ab183f39..a0625032987 100644 --- a/Master/tlpkg/tlperl/lib/CORE/patchlevel.h +++ b/Master/tlpkg/tlperl/lib/CORE/patchlevel.h @@ -14,7 +14,7 @@ * exactly on the third column */ #define PERL_REVISION 5 /* age */ -#define PERL_VERSION 24 /* epoch */ +#define PERL_VERSION 26 /* epoch */ #define PERL_SUBVERSION 1 /* generation */ /* The following numbers describe the earliest compatible version of @@ -35,7 +35,7 @@ changing them should not be necessary. */ #define PERL_API_REVISION 5 -#define PERL_API_VERSION 24 +#define PERL_API_VERSION 26 #define PERL_API_SUBVERSION 0 /* XXX Note: The selection of non-default Configure options, such @@ -90,8 +90,8 @@ #!perl die "Usage: perl -x patchlevel.h comment ..." unless @ARGV; -open PLIN, "patchlevel.h" or die "Couldn't open patchlevel.h : $!"; -open PLOUT, ">patchlevel.new" or die "Couldn't write on patchlevel.new : $!"; +open PLIN, "<", "patchlevel.h" or die "Couldn't open patchlevel.h : $!"; +open PLOUT, ">", "patchlevel.new" or die "Couldn't write on patchlevel.new : $!"; my $seen=0; while (<PLIN>) { if (/\t,NULL/ and $seen) { diff --git a/Master/tlpkg/tlperl/lib/CORE/perl.h b/Master/tlpkg/tlperl/lib/CORE/perl.h index f8f0069dfa5..7c07afd6c75 100644 --- a/Master/tlpkg/tlperl/lib/CORE/perl.h +++ b/Master/tlpkg/tlperl/lib/CORE/perl.h @@ -28,6 +28,16 @@ # include "config.h" #endif +/* this is used for functions which take a depth trailing + * argument under debugging */ +#ifdef DEBUGGING +#define _pDEPTH ,U32 depth +#define _aDEPTH ,depth +#else +#define _pDEPTH +#define _aDEPTH +#endif + /* NOTE 1: that with gcc -std=c89 the __STDC_VERSION__ is *not* defined * because the __STDC_VERSION__ became a thing only with C90. Therefore, * with gcc, HAS_C99 will never become true as long as we use -std=c89. @@ -322,12 +332,7 @@ * or variables/arguments that are used only in certain configurations. */ #ifndef PERL_UNUSED_ARG -# if defined(lint) && defined(S_SPLINT_S) /* www.splint.org */ -# include <note.h> -# define PERL_UNUSED_ARG(x) NOTE(ARGUNUSED(x)) -# else -# define PERL_UNUSED_ARG(x) ((void)sizeof(x)) -# endif +# define PERL_UNUSED_ARG(x) ((void)sizeof(x)) #endif #ifndef PERL_UNUSED_VAR # define PERL_UNUSED_VAR(x) ((void)sizeof(x)) @@ -729,6 +734,10 @@ # include <locale.h> #endif +#ifdef I_XLOCALE +# include <xlocale.h> +#endif + #if !defined(NO_LOCALE) && defined(HAS_SETLOCALE) # define USE_LOCALE # define HAS_SKIP_LOCALE_INIT /* Solely for XS code to test for this @@ -757,10 +766,6 @@ # endif #endif /* !NO_LOCALE && HAS_SETLOCALE */ -/* Is $^ENCODING set, or are we under the encoding pragma? */ -#define IN_ENCODING UNLIKELY(PL_encoding \ - || (PL_lex_encoding && _get_encoding() != NULL)) - #include <setjmp.h> #ifdef I_SYS_PARAM @@ -1041,9 +1046,8 @@ EXTERN_C int usleep(unsigned int); # endif # endif #else -# ifndef memcmp -# define memcmp my_memcmp -# endif +# undef memcmp +# define memcmp my_memcmp #endif /* HAS_MEMCMP && HAS_SANE_MEMCMP */ #ifndef memzero @@ -1271,14 +1275,13 @@ EXTERN_C char *crypt(const char *, const char *); #define CLEAR_ERRSV() STMT_START { \ SV ** const svp = &GvSV(PL_errgv); \ if (!*svp) { \ - goto clresv_newemptypv; \ + *svp = newSVpvs(""); \ } else if (SvREADONLY(*svp)) { \ SvREFCNT_dec_NN(*svp); \ - clresv_newemptypv: \ *svp = newSVpvs(""); \ } else { \ SV *const errsv = *svp; \ - sv_setpvs(errsv, ""); \ + SvPVCLEAR(errsv); \ SvPOK_only(errsv); \ if (SvMAGICAL(errsv)) { \ mg_free(errsv); \ @@ -2022,6 +2025,12 @@ extern long double Perl_my_frexpl(long double x, int *e); # define Perl_isinf(x) isinfq(x) # define Perl_isnan(x) isnanq(x) # define Perl_isfinite(x) !(isnanq(x) || isinfq(x)) +# define Perl_fp_class(x) ((x) == 0.0Q ? 0 : isinfq(x) ? 3 : isnanq(x) ? 4 : PERL_ABS(x) < FLT128_MIN ? 2 : 1) +# define Perl_fp_class_inf(x) (Perl_fp_class(x) == 3) +# define Perl_fp_class_nan(x) (Perl_fp_class(x) == 4) +# define Perl_fp_class_norm(x) (Perl_fp_class(x) == 1) +# define Perl_fp_class_denorm(x) (Perl_fp_class(x) == 2) +# define Perl_fp_class_zero(x) (Perl_fp_class(x) == 0) #else # define NV_DIG DBL_DIG # ifdef DBL_MANT_DIG @@ -2666,6 +2675,11 @@ typedef AV PAD; typedef struct padnamelist PADNAMELIST; typedef struct padname PADNAME; +/* enable PERL_OP_PARENT by default */ +#if !defined(PERL_OP_PARENT) && !defined(PERL_NO_OP_PARENT) +# define PERL_OP_PARENT +#endif + /* enable PERL_COPY_ON_WRITE by default */ #if !defined(PERL_COPY_ON_WRITE) && !defined(PERL_NO_COW) # define PERL_COPY_ON_WRITE @@ -3064,6 +3078,8 @@ freeing any remaining Perl interpreters. */ #if defined(USE_ITHREADS) && defined(I_PTHREAD) && \ defined(__clang__) && \ + !defined(PERL_GLOBAL_STRUCT) && \ + !defined(PERL_GLOBAL_STRUCT_PRIVATE) && \ !defined(SWIG) && \ ((!defined(__apple_build_version__) && \ ((__clang_major__ == 3 && __clang_minor__ >= 6) || \ @@ -3777,7 +3793,7 @@ EXTERN_C int perl_tsa_mutex_unlock(perl_mutex* mutex) # define USEMYBINMODE /**/ # include <io.h> /* for setmode() prototype */ # define my_binmode(fp, iotype, mode) \ - (PerlLIO_setmode(fileno(fp), mode) != -1 ? TRUE : FALSE) + cBOOL(PerlLIO_setmode(fileno(fp), mode) != -1) #endif #ifdef __CYGWIN__ @@ -3789,6 +3805,14 @@ UNION_ANY_DEFINITION; #else union any { void* any_ptr; + SV* any_sv; + SV** any_svp; + GV* any_gv; + AV* any_av; + HV* any_hv; + OP* any_op; + char* any_pv; + char** any_pvp; I32 any_i32; U32 any_u32; IV any_iv; @@ -3872,12 +3896,6 @@ typedef struct crypt_data { /* straight from /usr/include/crypt.h */ # define USE_HASH_SEED #endif -/* Win32 defines a type 'WORD' in windef.h, and AmigaOS in exec/types.h. - * This conflicts with the enumerator 'WORD' defined in perly.h. - * The yytokentype enum is only a debugging aid, so it's not really needed. */ -#if defined(WIN32) || defined(__amigaos4__) -# define YYTOKENTYPE -#endif #include "perly.h" @@ -3918,14 +3936,6 @@ typedef struct crypt_data { /* straight from /usr/include/crypt.h */ #undef _XPVMG_HEAD #undef _XPVCV_COMMON -typedef struct _sublex_info SUBLEXINFO; -struct _sublex_info { - U8 super_state; /* lexer state to save */ - U16 sub_inwhat; /* "lex_inwhat" to use */ - OP *sub_op; /* "lex_op" to use */ - SV *repl; /* replacement of s/// or y/// */ -}; - #include "parser.h" typedef struct magic_state MGS; /* struct magic_state defined in mg.c */ @@ -4177,34 +4187,34 @@ Gid_t getegid (void); #define DEBUG_DB_RECURSE_FLAG 0x40000000 #define DEBUG_TOP_FLAG 0x80000000 /* -D was given --> PL_debug |= FLAG */ -# define DEBUG_p_TEST_ (PL_debug & DEBUG_p_FLAG) -# define DEBUG_s_TEST_ (PL_debug & DEBUG_s_FLAG) -# define DEBUG_l_TEST_ (PL_debug & DEBUG_l_FLAG) -# define DEBUG_t_TEST_ (PL_debug & DEBUG_t_FLAG) -# define DEBUG_o_TEST_ (PL_debug & DEBUG_o_FLAG) -# define DEBUG_c_TEST_ (PL_debug & DEBUG_c_FLAG) -# define DEBUG_P_TEST_ (PL_debug & DEBUG_P_FLAG) -# define DEBUG_m_TEST_ (PL_debug & DEBUG_m_FLAG) -# define DEBUG_f_TEST_ (PL_debug & DEBUG_f_FLAG) -# define DEBUG_r_TEST_ (PL_debug & DEBUG_r_FLAG) -# define DEBUG_x_TEST_ (PL_debug & DEBUG_x_FLAG) -# define DEBUG_u_TEST_ (PL_debug & DEBUG_u_FLAG) -# define DEBUG_U_TEST_ (PL_debug & DEBUG_U_FLAG) -# define DEBUG_H_TEST_ (PL_debug & DEBUG_H_FLAG) -# define DEBUG_X_TEST_ (PL_debug & DEBUG_X_FLAG) -# define DEBUG_D_TEST_ (PL_debug & DEBUG_D_FLAG) -# define DEBUG_S_TEST_ (PL_debug & DEBUG_S_FLAG) -# define DEBUG_T_TEST_ (PL_debug & DEBUG_T_FLAG) -# define DEBUG_R_TEST_ (PL_debug & DEBUG_R_FLAG) -# define DEBUG_J_TEST_ (PL_debug & DEBUG_J_FLAG) -# define DEBUG_v_TEST_ (PL_debug & DEBUG_v_FLAG) -# define DEBUG_C_TEST_ (PL_debug & DEBUG_C_FLAG) -# define DEBUG_A_TEST_ (PL_debug & DEBUG_A_FLAG) -# define DEBUG_q_TEST_ (PL_debug & DEBUG_q_FLAG) -# define DEBUG_M_TEST_ (PL_debug & DEBUG_M_FLAG) -# define DEBUG_B_TEST_ (PL_debug & DEBUG_B_FLAG) -# define DEBUG_L_TEST_ (PL_debug & DEBUG_L_FLAG) -# define DEBUG_i_TEST_ (PL_debug & DEBUG_i_FLAG) +# define DEBUG_p_TEST_ UNLIKELY(PL_debug & DEBUG_p_FLAG) +# define DEBUG_s_TEST_ UNLIKELY(PL_debug & DEBUG_s_FLAG) +# define DEBUG_l_TEST_ UNLIKELY(PL_debug & DEBUG_l_FLAG) +# define DEBUG_t_TEST_ UNLIKELY(PL_debug & DEBUG_t_FLAG) +# define DEBUG_o_TEST_ UNLIKELY(PL_debug & DEBUG_o_FLAG) +# define DEBUG_c_TEST_ UNLIKELY(PL_debug & DEBUG_c_FLAG) +# define DEBUG_P_TEST_ UNLIKELY(PL_debug & DEBUG_P_FLAG) +# define DEBUG_m_TEST_ UNLIKELY(PL_debug & DEBUG_m_FLAG) +# define DEBUG_f_TEST_ UNLIKELY(PL_debug & DEBUG_f_FLAG) +# define DEBUG_r_TEST_ UNLIKELY(PL_debug & DEBUG_r_FLAG) +# define DEBUG_x_TEST_ UNLIKELY(PL_debug & DEBUG_x_FLAG) +# define DEBUG_u_TEST_ UNLIKELY(PL_debug & DEBUG_u_FLAG) +# define DEBUG_U_TEST_ UNLIKELY(PL_debug & DEBUG_U_FLAG) +# define DEBUG_H_TEST_ UNLIKELY(PL_debug & DEBUG_H_FLAG) +# define DEBUG_X_TEST_ UNLIKELY(PL_debug & DEBUG_X_FLAG) +# define DEBUG_D_TEST_ UNLIKELY(PL_debug & DEBUG_D_FLAG) +# define DEBUG_S_TEST_ UNLIKELY(PL_debug & DEBUG_S_FLAG) +# define DEBUG_T_TEST_ UNLIKELY(PL_debug & DEBUG_T_FLAG) +# define DEBUG_R_TEST_ UNLIKELY(PL_debug & DEBUG_R_FLAG) +# define DEBUG_J_TEST_ UNLIKELY(PL_debug & DEBUG_J_FLAG) +# define DEBUG_v_TEST_ UNLIKELY(PL_debug & DEBUG_v_FLAG) +# define DEBUG_C_TEST_ UNLIKELY(PL_debug & DEBUG_C_FLAG) +# define DEBUG_A_TEST_ UNLIKELY(PL_debug & DEBUG_A_FLAG) +# define DEBUG_q_TEST_ UNLIKELY(PL_debug & DEBUG_q_FLAG) +# define DEBUG_M_TEST_ UNLIKELY(PL_debug & DEBUG_M_FLAG) +# define DEBUG_B_TEST_ UNLIKELY(PL_debug & DEBUG_B_FLAG) +# define DEBUG_L_TEST_ UNLIKELY(PL_debug & DEBUG_L_FLAG) +# define DEBUG_i_TEST_ UNLIKELY(PL_debug & DEBUG_i_FLAG) # define DEBUG_Xv_TEST_ (DEBUG_X_TEST_ && DEBUG_v_TEST_) # define DEBUG_Uv_TEST_ (DEBUG_U_TEST_ && DEBUG_v_TEST_) # define DEBUG_Pv_TEST_ (DEBUG_P_TEST_ && DEBUG_v_TEST_) @@ -4259,21 +4269,30 @@ Gid_t getegid (void); /* Temporarily turn off memory debugging in case the a * does memory allocation, either directly or indirectly. */ # define DEBUG_m(a) \ - STMT_START { \ - if (PERL_GET_INTERP) { dTHX; if (DEBUG_m_TEST) {PL_debug&=~DEBUG_m_FLAG; a; PL_debug|=DEBUG_m_FLAG;} } \ + STMT_START { \ + if (PERL_GET_INTERP) { \ + dTHX; \ + if (DEBUG_m_TEST) { \ + PL_debug &= ~DEBUG_m_FLAG; \ + a; \ + PL_debug |= DEBUG_m_FLAG; \ + } \ + } \ } STMT_END -# define DEBUG__(t, a) \ - STMT_START { \ - if (t) STMT_START {a;} STMT_END; \ - } STMT_END +# define DEBUG__(t, a) \ + STMT_START { \ + if (t) STMT_START {a;} STMT_END; \ + } STMT_END # define DEBUG_f(a) DEBUG__(DEBUG_f_TEST, a) + #ifndef PERL_EXT_RE_BUILD # define DEBUG_r(a) DEBUG__(DEBUG_r_TEST, a) #else # define DEBUG_r(a) STMT_START {a;} STMT_END #endif /* PERL_EXT_RE_BUILD */ + # define DEBUG_x(a) DEBUG__(DEBUG_x_TEST, a) # define DEBUG_u(a) DEBUG__(DEBUG_u_TEST, a) # define DEBUG_U(a) DEBUG__(DEBUG_U_TEST, a) @@ -4780,6 +4799,12 @@ EXTCONST U8 PL_subversion EXTCONST char PL_uuemap[65] INIT("`!\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_"); +/* a special string address whose value is "isa", but which perl knows + * to treat as if it were really "DOES" when printing the method name in + * the "Can't call method '%s'" error message */ +EXTCONST char PL_isa_DOES[] + INIT("isa"); + #ifdef DOINIT EXTCONST char PL_uudmap[256] = # ifdef PERL_MICRO @@ -5124,7 +5149,7 @@ EXTCONST char* PL_block_type[]; /* These are all the compile time options that affect binary compatibility. Other compile time options that are binary compatible are in perl.c - Both are combined for the output of perl -V + (in S_Internals_V()). Both are combined for the output of perl -V However, this string will be embedded in any shared perl library, which will allow us add a comparison check in perlmain.c in the near future. */ #ifdef DOINIT @@ -5284,9 +5309,11 @@ EXTCONST char *const PL_phase_names[]; # define PL_dirty cBOOL(PL_phase == PERL_PHASE_DESTRUCT) # define PL_amagic_generation PL_na +# define PL_encoding ((SV *)NULL) #endif /* !PERL_CORE */ #define PL_hints PL_compiling.cop_hints +#define PL_maxo MAXO END_EXTERN_C @@ -5322,6 +5349,8 @@ typedef enum { /* update exp_name[] in toke.c if adding to this enum */ } expectation; +#define KEY_sigvar 0xFFFF /* fake keyword representing a signature var */ + /* Hints are now stored in a dedicated U32, so the bottom 8 bits are no longer special and there is no need for HINT_PRIVATE_MASK for COPs However, bitops store HINT_INTEGER in their op_private. @@ -5709,120 +5738,17 @@ EXTCONST bool PL_valid_types_NV_set[]; /* In C99 we could use designated (named field) union initializers. * In C89 we need to initialize the member declared first. + * In C++ we need extern C initializers. * * With the U8_NV version you will want to have inner braces, - * while with the NV_U8 use just the NV.*/ -#define INFNAN_U8_NV_DECL EXTCONST union { U8 u8[NVSIZE]; NV nv; } -#define INFNAN_NV_U8_DECL EXTCONST union { NV nv; U8 u8[NVSIZE]; } - -#ifdef DOINIT - -/* PL_inf and PL_nan initialization. - * - * For inf and nan initialization the ultimate fallback is dividing - * one or zero by zero: however, some compilers will warn or even fail - * on divide-by-zero, but hopefully something earlier will work. - * - * If you are thinking of using HUGE_VAL for infinity, or using - * <math.h> functions to generate NV_INF (e.g. exp(1e9), log(-1.0)), - * stop. Neither will work portably: HUGE_VAL can be just DBL_MAX, - * and the math functions might be just generating DBL_MAX, or even zero. - * - * Also, do NOT try doing NV_NAN based on NV_INF and trying (NV_INF-NV_INF). - * Though logically correct, some compilers (like Visual C 2003) - * falsely misoptimize that to zero (x-x is always zero, right?) - */ - -/* The quadmath literals are anon structs which -Wc++-compat doesn't like. */ -GCC_DIAG_IGNORE(-Wc++-compat) - -# ifdef USE_QUADMATH -/* Cannot use HUGE_VALQ for PL_inf because not a compile-time - * constant. */ -INFNAN_NV_U8_DECL PL_inf = { 1.0Q/0.0Q }; -# elif NVSIZE == LONG_DOUBLESIZE && defined(LONGDBLINFBYTES) -INFNAN_U8_NV_DECL PL_inf = { { LONGDBLINFBYTES } }; -# elif NVSIZE == DOUBLESIZE && defined(DOUBLEINFBYTES) -INFNAN_U8_NV_DECL PL_inf = { { DOUBLEINFBYTES } }; -# else -# if NVSIZE == LONG_DOUBLESIZE && defined(USE_LONG_DOUBLE) -# if defined(LDBL_INFINITY) -INFNAN_NV_U8_DECL PL_inf = { LDBL_INFINITY }; -# elif defined(LDBL_INF) -INFNAN_NV_U8_DECL PL_inf = { LDBL_INF }; -# elif defined(INFINITY) -INFNAN_NV_U8_DECL PL_inf = { (NV)INFINITY }; -# elif defined(INF) -INFNAN_NV_U8_DECL PL_inf = { (NV)INF }; -# else -INFNAN_NV_U8_DECL PL_inf = { 1.0L/0.0L }; /* keep last */ -# endif -# else -# if defined(DBL_INFINITY) -INFNAN_NV_U8_DECL PL_inf = { DBL_INFINITY }; -# elif defined(DBL_INF) -INFNAN_NV_U8_DECL PL_inf = { DBL_INF }; -# elif defined(INFINITY) /* C99 */ -INFNAN_NV_U8_DECL PL_inf = { (NV)INFINITY }; -# elif defined(INF) -INFNAN_NV_U8_DECL PL_inf = { (NV)INF }; -# else -INFNAN_NV_U8_DECL PL_inf = { 1.0/0.0 }; /* keep last */ -# endif -# endif -# endif - -# ifdef USE_QUADMATH -/* Cannot use nanq("0") for PL_nan because not a compile-time - * constant. */ -INFNAN_NV_U8_DECL PL_nan = { 0.0Q/0.0Q }; -# elif NVSIZE == LONG_DOUBLESIZE && defined(LONGDBLNANBYTES) -INFNAN_U8_NV_DECL PL_nan = { { LONGDBLNANBYTES } }; -# elif NVSIZE == DOUBLESIZE && defined(DOUBLENANBYTES) -INFNAN_U8_NV_DECL PL_nan = { { DOUBLENANBYTES } }; -# else -# if NVSIZE == LONG_DOUBLESIZE && defined(USE_LONG_DOUBLE) -# if defined(LDBL_NAN) -INFNAN_NV_U8_DECL PL_nan = { LDBL_NAN }; -# elif defined(LDBL_QNAN) -INFNAN_NV_U8_DECL PL_nan = { LDBL_QNAN }; -# elif defined(NAN) -INFNAN_NV_U8_DECL PL_nan = { (NV)NAN }; -# else -INFNAN_NV_U8_DECL PL_nan = { 0.0L/0.0L }; /* keep last */ -# endif -# else -# if defined(DBL_NAN) -INFNAN_NV_U8_DECL PL_nan = { DBL_NAN }; -# elif defined(DBL_QNAN) -INFNAN_NV_U8_DECL PL_nan = { DBL_QNAN }; -# elif defined(NAN) /* C99 */ -INFNAN_NV_U8_DECL PL_nan = { (NV)NAN }; -# else -INFNAN_NV_U8_DECL PL_nan = { 0.0/0.0 }; /* keep last */ -# endif -# endif -# endif - -GCC_DIAG_RESTORE + * while with the NV_U8 use just the NV. */ +#ifdef __cplusplus +#define INFNAN_U8_NV_DECL EXTERN_C const union { U8 u8[NVSIZE]; NV nv; } +#define INFNAN_NV_U8_DECL EXTERN_C const union { NV nv; U8 u8[NVSIZE]; } #else - -INFNAN_NV_U8_DECL PL_inf; -INFNAN_NV_U8_DECL PL_nan; - -#endif - -/* If you have not defined NV_INF/NV_NAN (like for example win32/win32.h), - * we will define NV_INF/NV_NAN as the nv part of the global const - * PL_inf/PL_nan. Note, however, that the preexisting NV_INF/NV_NAN - * might not be a compile-time constant, in which case it cannot be - * used to initialize PL_inf/PL_nan above. */ -#ifndef NV_INF -# define NV_INF PL_inf.nv -#endif -#ifndef NV_NAN -# define NV_NAN PL_nan.nv +#define INFNAN_U8_NV_DECL EXTCONST union { U8 u8[NVSIZE]; NV nv; } +#define INFNAN_NV_U8_DECL EXTCONST union { NV nv; U8 u8[NVSIZE]; } #endif /* if these never got defined, they need defaults */ @@ -5962,14 +5888,31 @@ typedef struct am_table_short AMTS; /* These locale things are all subject to change */ # define LOCALE_INIT MUTEX_INIT(&PL_locale_mutex) -# define LOCALE_TERM MUTEX_DESTROY(&PL_locale_mutex) + +# ifdef USE_THREAD_SAFE_LOCALE +# define LOCALE_TERM \ + STMT_START { \ + MUTEX_DESTROY(&PL_locale_mutex); \ + if (PL_C_locale_obj) { \ + /* Make sure we aren't using the locale \ + * space we are about to free */ \ + uselocale(LC_GLOBAL_LOCALE); \ + freelocale(PL_C_locale_obj); \ + PL_C_locale_obj = (locale_t) NULL; \ + } \ + } STMT_END + } +# else +# define LOCALE_TERM MUTEX_DESTROY(&PL_locale_mutex) +# endif # define LOCALE_LOCK MUTEX_LOCK(&PL_locale_mutex) # define LOCALE_UNLOCK MUTEX_UNLOCK(&PL_locale_mutex) /* Returns TRUE if the plain locale pragma without a parameter is in effect */ -# define IN_LOCALE_RUNTIME cBOOL(CopHINTS_get(PL_curcop) & HINT_LOCALE) +# define IN_LOCALE_RUNTIME (PL_curcop \ + && CopHINTS_get(PL_curcop) & HINT_LOCALE) /* Returns TRUE if either form of the locale pragma is in effect */ # define IN_SOME_LOCALE_FORM_RUNTIME \ @@ -5990,7 +5933,7 @@ typedef struct am_table_short AMTS; # define IN_LC_PARTIAL_COMPILETIME cBOOL(PL_hints & HINT_LOCALE_PARTIAL) # define IN_LC_PARTIAL_RUNTIME \ - cBOOL(CopHINTS_get(PL_curcop) & HINT_LOCALE_PARTIAL) + (PL_curcop && CopHINTS_get(PL_curcop) & HINT_LOCALE_PARTIAL) # define IN_LC_COMPILETIME(category) \ (IN_LC_ALL_COMPILETIME || (IN_LC_PARTIAL_COMPILETIME \ @@ -6029,8 +5972,8 @@ typedef struct am_table_short AMTS; STMT_START { \ if (! PL_in_utf8_CTYPE_locale && ckWARN(WARN_LOCALE)) { \ Perl_warner(aTHX_ packWARN(WARN_LOCALE), \ - "Wide character (U+%"UVXf") in %s", \ - (UV) cp, OP_DESC(PL_op)); \ + "Wide character (U+%" UVXf ") in %s",\ + (UV) cp, OP_DESC(PL_op)); \ } \ } STMT_END @@ -6039,7 +5982,7 @@ typedef struct am_table_short AMTS; if (! PL_in_utf8_CTYPE_locale && ckWARN(WARN_LOCALE)) { \ UV cp = utf8_to_uvchr_buf((U8 *) s, (U8 *) send, NULL); \ Perl_warner(aTHX_ packWARN(WARN_LOCALE), \ - "Wide character (U+%"UVXf") in %s", \ + "Wide character (U+%" UVXf ") in %s", \ (cp == 0) \ ? UNICODE_REPLACEMENT \ : (UV) cp, \ @@ -6049,6 +5992,20 @@ typedef struct am_table_short AMTS; # endif /* PERL_CORE or PERL_IN_XSUB_RE */ +#if defined(USE_ITHREADS) \ + && defined(HAS_NEWLOCALE) \ + && defined(LC_ALL_MASK) \ + && defined(HAS_FREELOCALE) \ + && defined(HAS_USELOCALE) \ + && ! defined(NO_THREAD_SAFE_USELOCALE) + + /* The code is written for simplicity to assume that any platform advanced + * enough to have the Posix 2008 locale functions has LC_ALL. The test + * above makes sure that assumption is valid */ + +# define USE_THREAD_SAFE_LOCALE +#endif + #else /* No locale usage */ # define LOCALE_INIT # define LOCALE_TERM @@ -6230,14 +6187,20 @@ expression, but with an empty argument list, like this: _restore_LC_NUMERIC_function = &Perl_set_numeric_standard; \ } -/* Lock to the C locale until unlock is called */ +/* Lock/unlock to the C locale until unlock is called. This needs to be + * recursively callable. [perl #128207] */ #define LOCK_LC_NUMERIC_STANDARD() \ (__ASSERT_(PL_numeric_standard) \ - PL_numeric_standard = 2) - + PL_numeric_standard++) #define UNLOCK_LC_NUMERIC_STANDARD() \ - (__ASSERT_(PL_numeric_standard == 2) \ - PL_numeric_standard = 1) + STMT_START { \ + if (PL_numeric_standard > 1) { \ + PL_numeric_standard--; \ + } \ + else { \ + assert(0); \ + } \ + } STMT_END #define RESTORE_LC_NUMERIC_UNDERLYING() \ if (_was_local) set_numeric_local(); @@ -6304,7 +6267,7 @@ expression, but with an empty argument list, like this: # ifdef __hpux # define strtoll __strtoll /* secret handshake */ # endif -# ifdef WIN64 +# if defined(WIN64) && defined(_MSC_VER) # define strtoll _strtoi64 /* secret handshake */ # endif # if !defined(Strtol) && defined(HAS_STRTOLL) @@ -6338,7 +6301,7 @@ expression, but with an empty argument list, like this: # ifdef __hpux # define strtoull __strtoull /* secret handshake */ # endif -# ifdef WIN64 +# if defined(WIN64) && defined(_MSC_VER) # define strtoull _strtoui64 /* secret handshake */ # endif # if !defined(Strtoul) && defined(HAS_STRTOULL) @@ -6738,6 +6701,14 @@ extern void moncontrol(int); #define PERL_PV_PRETTY_DUMP PERL_PV_PRETTY_ELLIPSES|PERL_PV_PRETTY_QUOTE #define PERL_PV_PRETTY_REGPROP PERL_PV_PRETTY_ELLIPSES|PERL_PV_PRETTY_LTGT|PERL_PV_ESCAPE_RE|PERL_PV_ESCAPE_NONASCII +#if DOUBLEKIND == DOUBLE_IS_VAX_F_FLOAT || \ + DOUBLEKIND == DOUBLE_IS_VAX_D_FLOAT || \ + DOUBLEKIND == DOUBLE_IS_VAX_G_FLOAT +# define DOUBLE_IS_VAX_FLOAT +#else +# define DOUBLE_IS_IEEE_FORMAT +#endif + #if DOUBLEKIND == DOUBLE_IS_IEEE_754_32_BIT_LITTLE_ENDIAN || \ DOUBLEKIND == DOUBLE_IS_IEEE_754_64_BIT_LITTLE_ENDIAN || \ DOUBLEKIND == DOUBLE_IS_IEEE_754_128_BIT_LITTLE_ENDIAN @@ -6755,11 +6726,77 @@ extern void moncontrol(int); # define DOUBLE_MIX_ENDIAN #endif +/* The VAX fp formats are neither consistently little-endian nor + * big-endian, and neither are they really IEEE-mixed endian like + * the mixed-endian ARM IEEE formats (with swapped bytes). + * Ultimately, the VAX format came from the PDP-11. + * + * The ordering of the parts in VAX floats is quite vexing. + * In the below the fraction_n are the mantissa bits. + * + * The fraction_1 is the most significant (numbering as by DEC/Digital), + * while the rightmost bit in each fraction is the least significant: + * in other words, big-endian bit order within the fractions. + * + * The fraction segments themselves would be big-endianly, except that + * within 32 bit segments the less significant half comes first, the more + * significant after, except that in the format H (used for long doubles) + * the first fraction segment is alone, because the exponent is wider. + * This means for example that both the most and the least significant + * bits can be in the middle of the floats, not at either end. + * + * References: + * http://nssdc.gsfc.nasa.gov/nssdc/formats/VAXFloatingPoint.htm + * http://www.quadibloc.com/comp/cp0201.htm + * http://h71000.www7.hp.com/doc/82final/6443/6443pro_028.html + * (somebody at HP should be fired for the URLs) + * + * F fraction_2:16 sign:1 exp:8 fraction_1:7 + * (exponent bias 128, hidden first one-bit) + * + * D fraction_2:16 sign:1 exp:8 fraction_1:7 + * fraction_4:16 fraction_3:16 + * (exponent bias 128, hidden first one-bit) + * + * G fraction_2:16 sign:1 exp:11 fraction_1:4 + * fraction_4:16 fraction_3:16 + * (exponent bias 1024, hidden first one-bit) + * + * H fraction_1:16 sign:1 exp:15 + * fraction_3:16 fraction_2:16 + * fraction_5:16 fraction_4:16 + * fraction_7:16 fraction_6:16 + * (exponent bias 16384, hidden first one-bit) + * (available only on VAX, and only on Fortran?) + * + * The formats S, T and X are available on the Alpha (and Itanium, + * also known as I64/IA64) and are equivalent with the IEEE-754 formats + * binary32, binary64, and binary128 (commonly: float, double, long double). + * + * S sign:1 exp:8 mantissa:23 + * (exponent bias 127, hidden first one-bit) + * + * T sign:1 exp:11 mantissa:52 + * (exponent bias 1022, hidden first one-bit) + * + * X sign:1 exp:15 mantissa:112 + * (exponent bias 16382, hidden first one-bit) + * + */ + +#ifdef DOUBLE_IS_VAX_FLOAT +# define DOUBLE_VAX_ENDIAN +#endif + +#ifdef DOUBLE_IS_IEEE_FORMAT /* All the basic IEEE formats have the implicit bit, - * except for the 80-bit extended formats, which will undef this. */ -#define NV_IMPLICIT_BIT + * except for the x86 80-bit extended formats, which will undef this. + * Also note that the IEEE 754 subnormals (formerly known as denormals) + * do not have the implicit bit of one. */ +# define NV_IMPLICIT_BIT +#endif -#ifdef LONG_DOUBLEKIND +#if defined(LONG_DOUBLEKIND) && LONG_DOUBLEKIND != LONG_DOUBLE_IS_DOUBLE # if LONG_DOUBLEKIND == LONG_DOUBLE_IS_IEEE_754_128_BIT_LITTLE_ENDIAN || \ LONG_DOUBLEKIND == LONG_DOUBLE_IS_X86_80_BIT_LITTLE_ENDIAN || \ @@ -6783,6 +6820,7 @@ extern void moncontrol(int); # define LONGDOUBLE_X86_80_BIT # ifdef USE_LONG_DOUBLE # undef NV_IMPLICIT_BIT +# define NV_X86_80_BIT # endif # endif @@ -6793,6 +6831,10 @@ extern void moncontrol(int); # define LONGDOUBLE_DOUBLEDOUBLE # endif +# if LONG_DOUBLEKIND == LONG_DOUBLE_IS_VAX_H_FLOAT +# define LONGDOUBLE_VAX_ENDIAN +# endif + #endif /* LONG_DOUBLEKIND */ #ifdef USE_QUADMATH /* assume quadmath endianness == native double endianness */ @@ -6813,6 +6855,9 @@ extern void moncontrol(int); # ifdef DOUBLE_MIX_ENDIAN # define NV_MIX_ENDIAN # endif +# ifdef DOUBLE_VAX_ENDIAN +# define NV_VAX_ENDIAN +# endif #elif NVSIZE == LONG_DOUBLESIZE # ifdef LONGDOUBLE_LITTLE_ENDIAN # define NV_LITTLE_ENDIAN @@ -6823,6 +6868,132 @@ extern void moncontrol(int); # ifdef LONGDOUBLE_MIX_ENDIAN # define NV_MIX_ENDIAN # endif +# ifdef LONGDOUBLE_VAX_ENDIAN +# define NV_VAX_ENDIAN +# endif +#endif + +#ifdef DOUBLE_IS_IEEE_FORMAT +# define DOUBLE_HAS_INF +# define DOUBLE_HAS_NAN +#endif + +#ifdef DOUBLE_HAS_NAN + +#ifdef DOINIT + +/* PL_inf and PL_nan initialization. + * + * For inf and nan initialization the ultimate fallback is dividing + * one or zero by zero: however, some compilers will warn or even fail + * on divide-by-zero, but hopefully something earlier will work. + * + * If you are thinking of using HUGE_VAL for infinity, or using + * <math.h> functions to generate NV_INF (e.g. exp(1e9), log(-1.0)), + * stop. Neither will work portably: HUGE_VAL can be just DBL_MAX, + * and the math functions might be just generating DBL_MAX, or even zero. + * + * Also, do NOT try doing NV_NAN based on NV_INF and trying (NV_INF-NV_INF). + * Though logically correct, some compilers (like Visual C 2003) + * falsely misoptimize that to zero (x-x is always zero, right?) + * + * Finally, note that not all floating point formats define Inf (or NaN). + * For the infinity a large number may be used instead. Operations that + * under the IEEE floating point would return Inf or NaN may return + * either large numbers (positive or negative), or they may cause + * a floating point exception or some other fault. + */ + +/* The quadmath literals are anon structs which -Wc++-compat doesn't like. */ +GCC_DIAG_IGNORE(-Wc++-compat) + +# ifdef USE_QUADMATH +/* Cannot use HUGE_VALQ for PL_inf because not a compile-time + * constant. */ +INFNAN_NV_U8_DECL PL_inf = { 1.0Q/0.0Q }; +# elif NVSIZE == LONG_DOUBLESIZE && defined(LONGDBLINFBYTES) +INFNAN_U8_NV_DECL PL_inf = { { LONGDBLINFBYTES } }; +# elif NVSIZE == DOUBLESIZE && defined(DOUBLEINFBYTES) +INFNAN_U8_NV_DECL PL_inf = { { DOUBLEINFBYTES } }; +# else +# if NVSIZE == LONG_DOUBLESIZE && defined(USE_LONG_DOUBLE) +# if defined(LDBL_INFINITY) +INFNAN_NV_U8_DECL PL_inf = { LDBL_INFINITY }; +# elif defined(LDBL_INF) +INFNAN_NV_U8_DECL PL_inf = { LDBL_INF }; +# elif defined(INFINITY) +INFNAN_NV_U8_DECL PL_inf = { (NV)INFINITY }; +# elif defined(INF) +INFNAN_NV_U8_DECL PL_inf = { (NV)INF }; +# else +INFNAN_NV_U8_DECL PL_inf = { 1.0L/0.0L }; /* keep last */ +# endif +# else +# if defined(DBL_INFINITY) +INFNAN_NV_U8_DECL PL_inf = { DBL_INFINITY }; +# elif defined(DBL_INF) +INFNAN_NV_U8_DECL PL_inf = { DBL_INF }; +# elif defined(INFINITY) /* C99 */ +INFNAN_NV_U8_DECL PL_inf = { (NV)INFINITY }; +# elif defined(INF) +INFNAN_NV_U8_DECL PL_inf = { (NV)INF }; +# else +INFNAN_NV_U8_DECL PL_inf = { 1.0/0.0 }; /* keep last */ +# endif +# endif +# endif + +# ifdef USE_QUADMATH +/* Cannot use nanq("0") for PL_nan because not a compile-time + * constant. */ +INFNAN_NV_U8_DECL PL_nan = { 0.0Q/0.0Q }; +# elif NVSIZE == LONG_DOUBLESIZE && defined(LONGDBLNANBYTES) +INFNAN_U8_NV_DECL PL_nan = { { LONGDBLNANBYTES } }; +# elif NVSIZE == DOUBLESIZE && defined(DOUBLENANBYTES) +INFNAN_U8_NV_DECL PL_nan = { { DOUBLENANBYTES } }; +# else +# if NVSIZE == LONG_DOUBLESIZE && defined(USE_LONG_DOUBLE) +# if defined(LDBL_NAN) +INFNAN_NV_U8_DECL PL_nan = { LDBL_NAN }; +# elif defined(LDBL_QNAN) +INFNAN_NV_U8_DECL PL_nan = { LDBL_QNAN }; +# elif defined(NAN) +INFNAN_NV_U8_DECL PL_nan = { (NV)NAN }; +# else +INFNAN_NV_U8_DECL PL_nan = { 0.0L/0.0L }; /* keep last */ +# endif +# else +# if defined(DBL_NAN) +INFNAN_NV_U8_DECL PL_nan = { DBL_NAN }; +# elif defined(DBL_QNAN) +INFNAN_NV_U8_DECL PL_nan = { DBL_QNAN }; +# elif defined(NAN) /* C99 */ +INFNAN_NV_U8_DECL PL_nan = { (NV)NAN }; +# else +INFNAN_NV_U8_DECL PL_nan = { 0.0/0.0 }; /* keep last */ +# endif +# endif +# endif + +GCC_DIAG_RESTORE + +#else + +INFNAN_NV_U8_DECL PL_inf; +INFNAN_NV_U8_DECL PL_nan; + +#endif + +/* If you have not defined NV_INF/NV_NAN (like for example win32/win32.h), + * we will define NV_INF/NV_NAN as the nv part of the global const + * PL_inf/PL_nan. Note, however, that the preexisting NV_INF/NV_NAN + * might not be a compile-time constant, in which case it cannot be + * used to initialize PL_inf/PL_nan above. */ +#ifndef NV_INF +# define NV_INF PL_inf.nv +#endif +#ifndef NV_NAN +# define NV_NAN PL_nan.nv #endif /* NaNs (not-a-numbers) can carry payload bits, in addition to @@ -6975,6 +7146,8 @@ extern void moncontrol(int); # elif DOUBLEKIND == DOUBLE_IS_IEEE_754_64_BIT_MIXED_ENDIAN_BE_LE # define NV_NAN_QS_BYTE_OFFSET 5 /* bytes 3 2 1 0 7 6 5 4 (MSB 7) */ # else +/* For example the VAX formats should never + * get here because they do not have NaN. */ # error "Unexpected double format" # endif #endif @@ -7177,6 +7350,10 @@ extern void moncontrol(int); # error "Unexpected double format" # endif #endif + +#endif /* DOUBLE_HAS_NAN */ + + /* (KEEP THIS LAST IN perl.h!) diff --git a/Master/tlpkg/tlperl/lib/CORE/perlapi.h b/Master/tlpkg/tlperl/lib/CORE/perlapi.h index 7aa445578e8..91f50eb2b02 100644 --- a/Master/tlpkg/tlperl/lib/CORE/perlapi.h +++ b/Master/tlpkg/tlperl/lib/CORE/perlapi.h @@ -99,6 +99,8 @@ END_EXTERN_C #else /* !PERL_CORE */ +#undef PL_C_locale_obj +#define PL_C_locale_obj (*Perl_GC_locale_obj_ptr(NULL)) #undef PL_appctx #define PL_appctx (*Perl_Gappctx_ptr(NULL)) #undef PL_check @@ -147,6 +149,8 @@ END_EXTERN_C #define PL_perlio_fd_refcnt_size (*Perl_Gperlio_fd_refcnt_size_ptr(NULL)) #undef PL_perlio_mutex #define PL_perlio_mutex (*Perl_Gperlio_mutex_ptr(NULL)) +#undef PL_perllib_sep +#define PL_perllib_sep (*Perl_Gperllib_sep_ptr(NULL)) #undef PL_ppaddr #define PL_ppaddr (*Perl_Gppaddr_ptr(NULL)) #undef PL_sh_path diff --git a/Master/tlpkg/tlperl/lib/CORE/perlhost.h b/Master/tlpkg/tlperl/lib/CORE/perlhost.h index 9963319a929..3260f62a027 100644 --- a/Master/tlpkg/tlperl/lib/CORE/perlhost.h +++ b/Master/tlpkg/tlperl/lib/CORE/perlhost.h @@ -836,15 +836,15 @@ PerlStdIOFdupopen(struct IPerlStdIO* piPerl, FILE* pf) int fileno = win32_dup(win32_fileno(pf)); /* open the file in the same mode */ - if((pf)->_flag & _IOREAD) { + if (PERLIO_FILE_flag(pf) & PERLIO_FILE_flag_RD) { mode[0] = 'r'; mode[1] = 0; } - else if((pf)->_flag & _IOWRT) { + else if (PERLIO_FILE_flag(pf) & PERLIO_FILE_flag_WR) { mode[0] = 'a'; mode[1] = 0; } - else if((pf)->_flag & _IORW) { + else if (PERLIO_FILE_flag(pf) & PERLIO_FILE_flag_RW) { mode[0] = 'r'; mode[1] = '+'; mode[2] = 0; @@ -2177,17 +2177,11 @@ compare(const void *arg1, const void *arg2) void CPerlHost::Add(LPCSTR lpStr) { - char szBuffer[1024]; LPSTR *lpPtr; - int index, length = strlen(lpStr)+1; - - for(index = 0; lpStr[index] != '\0' && lpStr[index] != '='; ++index) - szBuffer[index] = lpStr[index]; - - szBuffer[index] = '\0'; + STRLEN length = strlen(lpStr)+1; // replacing ? - lpPtr = Lookup(szBuffer); + lpPtr = Lookup(lpStr); if (lpPtr != NULL) { // must allocate things via host memory allocation functions // rather than perl's Renew() et al, as the perl interpreter diff --git a/Master/tlpkg/tlperl/lib/CORE/perlvars.h b/Master/tlpkg/tlperl/lib/CORE/perlvars.h index 5466294963d..884d57c5043 100644 --- a/Master/tlpkg/tlperl/lib/CORE/perlvars.h +++ b/Master/tlpkg/tlperl/lib/CORE/perlvars.h @@ -101,6 +101,10 @@ PERLVARI(G, mmap_page_size, IV, 0) PERLVAR(G, hints_mutex, perl_mutex) /* Mutex for refcounted he refcounting */ PERLVAR(G, locale_mutex, perl_mutex) /* Mutex for setlocale() changing */ +# ifdef HAS_NEWLOCALE +PERLVAR(G, C_locale_obj, locale_t) +# endif + #endif #ifdef DEBUGGING @@ -244,3 +248,10 @@ PERLVAR(G, malloc_mutex, perl_mutex) /* Mutex for malloc */ PERLVARI(G, hash_seed_set, bool, FALSE) /* perl.c */ PERLVARA(G, hash_seed, PERL_HASH_SEED_BYTES, unsigned char) /* perl.c and hv.h */ + +/* The path separator can vary depending on whether we're running under DCL or + * a Unix shell. + */ +#ifdef __VMS +PERLVAR(G, perllib_sep, char) +#endif diff --git a/Master/tlpkg/tlperl/lib/CORE/perly.h b/Master/tlpkg/tlperl/lib/CORE/perly.h index acbdaaec974..a7e9a4348bd 100644 --- a/Master/tlpkg/tlperl/lib/CORE/perly.h +++ b/Master/tlpkg/tlperl/lib/CORE/perly.h @@ -4,25 +4,25 @@ Any changes made here will be lost! */ -#define PERL_BISON_VERSION 20007 +#define PERL_BISON_VERSION 30000 #ifdef PERL_CORE -/* A Bison parser, made by GNU Bison 2.7. */ +/* A Bison parser, made by GNU Bison 3.0.2. */ /* Bison interface for Yacc-like parsers in C - - Copyright (C) 1984, 1989-1990, 2000-2012 Free Software Foundation, Inc. - + + Copyright (C) 1984, 1989-1990, 2000-2013 Free Software Foundation, Inc. + This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. - + This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. - + You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>. */ @@ -35,11 +35,11 @@ special exception, which will cause the skeleton and the resulting Bison output files to be licensed under the GNU General Public License without this special exception. - + This special exception was added by the Free Software Foundation in version 2.2 of Bison. */ -/* Enabling traces. */ +/* Debug traces. */ #ifndef YYDEBUG # define YYDEBUG 0 #endif @@ -47,182 +47,100 @@ extern int yydebug; #endif -/* Tokens. */ +/* Token type. */ #ifndef YYTOKENTYPE # define YYTOKENTYPE - /* Put the tokens into the symbol table, so that GDB and other debuggers - know about them. */ - enum yytokentype { - GRAMPROG = 258, - GRAMEXPR = 259, - GRAMBLOCK = 260, - GRAMBARESTMT = 261, - GRAMFULLSTMT = 262, - GRAMSTMTSEQ = 263, - WORD = 264, - METHOD = 265, - FUNCMETH = 266, - THING = 267, - PMFUNC = 268, - PRIVATEREF = 269, - QWLIST = 270, - FUNC0OP = 271, - FUNC0SUB = 272, - UNIOPSUB = 273, - LSTOPSUB = 274, - PLUGEXPR = 275, - PLUGSTMT = 276, - LABEL = 277, - FORMAT = 278, - SUB = 279, - ANONSUB = 280, - PACKAGE = 281, - USE = 282, - WHILE = 283, - UNTIL = 284, - IF = 285, - UNLESS = 286, - ELSE = 287, - ELSIF = 288, - CONTINUE = 289, - FOR = 290, - GIVEN = 291, - WHEN = 292, - DEFAULT = 293, - LOOPEX = 294, - DOTDOT = 295, - YADAYADA = 296, - FUNC0 = 297, - FUNC1 = 298, - FUNC = 299, - UNIOP = 300, - LSTOP = 301, - RELOP = 302, - EQOP = 303, - MULOP = 304, - ADDOP = 305, - DOLSHARP = 306, - DO = 307, - HASHBRACK = 308, - NOAMP = 309, - LOCAL = 310, - MY = 311, - REQUIRE = 312, - COLONATTR = 313, - FORMLBRACK = 314, - FORMRBRACK = 315, - PREC_LOW = 316, - DOROP = 317, - OROP = 318, - ANDOP = 319, - NOTOP = 320, - ASSIGNOP = 321, - DORDOR = 322, - OROR = 323, - ANDAND = 324, - BITOROP = 325, - BITANDOP = 326, - SHIFTOP = 327, - MATCHOP = 328, - REFGEN = 329, - UMINUS = 330, - POWOP = 331, - POSTJOIN = 332, - POSTDEC = 333, - POSTINC = 334, - PREDEC = 335, - PREINC = 336, - ARROW = 337 - }; + enum yytokentype + { + GRAMPROG = 258, + GRAMEXPR = 259, + GRAMBLOCK = 260, + GRAMBARESTMT = 261, + GRAMFULLSTMT = 262, + GRAMSTMTSEQ = 263, + BAREWORD = 264, + METHOD = 265, + FUNCMETH = 266, + THING = 267, + PMFUNC = 268, + PRIVATEREF = 269, + QWLIST = 270, + FUNC0OP = 271, + FUNC0SUB = 272, + UNIOPSUB = 273, + LSTOPSUB = 274, + PLUGEXPR = 275, + PLUGSTMT = 276, + LABEL = 277, + FORMAT = 278, + SUB = 279, + ANONSUB = 280, + PACKAGE = 281, + USE = 282, + WHILE = 283, + UNTIL = 284, + IF = 285, + UNLESS = 286, + ELSE = 287, + ELSIF = 288, + CONTINUE = 289, + FOR = 290, + GIVEN = 291, + WHEN = 292, + DEFAULT = 293, + LOOPEX = 294, + DOTDOT = 295, + YADAYADA = 296, + FUNC0 = 297, + FUNC1 = 298, + FUNC = 299, + UNIOP = 300, + LSTOP = 301, + RELOP = 302, + EQOP = 303, + MULOP = 304, + ADDOP = 305, + DOLSHARP = 306, + DO = 307, + HASHBRACK = 308, + NOAMP = 309, + LOCAL = 310, + MY = 311, + REQUIRE = 312, + COLONATTR = 313, + FORMLBRACK = 314, + FORMRBRACK = 315, + PREC_LOW = 316, + OROP = 317, + DOROP = 318, + ANDOP = 319, + NOTOP = 320, + ASSIGNOP = 321, + OROR = 322, + DORDOR = 323, + ANDAND = 324, + BITOROP = 325, + BITANDOP = 326, + SHIFTOP = 327, + MATCHOP = 328, + UMINUS = 329, + REFGEN = 330, + POWOP = 331, + PREINC = 332, + PREDEC = 333, + POSTINC = 334, + POSTDEC = 335, + POSTJOIN = 336, + ARROW = 337 + }; #endif -/* Tokens. */ -#define GRAMPROG 258 -#define GRAMEXPR 259 -#define GRAMBLOCK 260 -#define GRAMBARESTMT 261 -#define GRAMFULLSTMT 262 -#define GRAMSTMTSEQ 263 -#define WORD 264 -#define METHOD 265 -#define FUNCMETH 266 -#define THING 267 -#define PMFUNC 268 -#define PRIVATEREF 269 -#define QWLIST 270 -#define FUNC0OP 271 -#define FUNC0SUB 272 -#define UNIOPSUB 273 -#define LSTOPSUB 274 -#define PLUGEXPR 275 -#define PLUGSTMT 276 -#define LABEL 277 -#define FORMAT 278 -#define SUB 279 -#define ANONSUB 280 -#define PACKAGE 281 -#define USE 282 -#define WHILE 283 -#define UNTIL 284 -#define IF 285 -#define UNLESS 286 -#define ELSE 287 -#define ELSIF 288 -#define CONTINUE 289 -#define FOR 290 -#define GIVEN 291 -#define WHEN 292 -#define DEFAULT 293 -#define LOOPEX 294 -#define DOTDOT 295 -#define YADAYADA 296 -#define FUNC0 297 -#define FUNC1 298 -#define FUNC 299 -#define UNIOP 300 -#define LSTOP 301 -#define RELOP 302 -#define EQOP 303 -#define MULOP 304 -#define ADDOP 305 -#define DOLSHARP 306 -#define DO 307 -#define HASHBRACK 308 -#define NOAMP 309 -#define LOCAL 310 -#define MY 311 -#define REQUIRE 312 -#define COLONATTR 313 -#define FORMLBRACK 314 -#define FORMRBRACK 315 -#define PREC_LOW 316 -#define DOROP 317 -#define OROP 318 -#define ANDOP 319 -#define NOTOP 320 -#define ASSIGNOP 321 -#define DORDOR 322 -#define OROR 323 -#define ANDAND 324 -#define BITOROP 325 -#define BITANDOP 326 -#define SHIFTOP 327 -#define MATCHOP 328 -#define REFGEN 329 -#define UMINUS 330 -#define POWOP 331 -#define POSTJOIN 332 -#define POSTDEC 333 -#define POSTINC 334 -#define PREDEC 335 -#define PREINC 336 -#define ARROW 337 - - +/* Value type. */ #ifdef PERL_IN_TOKE_C static bool S_is_opval_token(int type) { switch (type) { + case BAREWORD: case FUNC0OP: case FUNC0SUB: case FUNCMETH: @@ -235,7 +153,6 @@ S_is_opval_token(int type) { case QWLIST: case THING: case UNIOPSUB: - case WORD: return 1; } return 0; @@ -243,9 +160,9 @@ S_is_opval_token(int type) { #endif /* PERL_IN_TOKE_C */ #endif /* PERL_CORE */ #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED -typedef union YYSTYPE +typedef union YYSTYPE YYSTYPE; +union YYSTYPE { -/* Line 2058 of yacc.c */ I32 ival; /* __DEFAULT__ (marker for regen_perly.pl; must always be 1st union member) */ @@ -253,31 +170,17 @@ typedef union YYSTYPE OP *opval; GV *gvval; - -/* Line 2058 of yacc.c */ -} YYSTYPE; +}; # define YYSTYPE_IS_TRIVIAL 1 -# define yystype YYSTYPE /* obsolescent; will be withdrawn */ # define YYSTYPE_IS_DECLARED 1 #endif -#ifdef YYPARSE_PARAM -#if defined __STDC__ || defined __cplusplus -int yyparse (void *YYPARSE_PARAM); -#else -int yyparse (); -#endif -#else /* ! YYPARSE_PARAM */ -#if defined __STDC__ || defined __cplusplus + int yyparse (void); -#else -int yyparse (); -#endif -#endif /* ! YYPARSE_PARAM */ /* Generated from: - * 703ebd267cf8ca45f9dee9bc0f4b21511117a0c1dca1c8bc9438ce91950217ae perly.y - * a4923588f219644801577c514014847e1e5240f49413fa3b89d3306fa4874d07 regen_perly.pl + * a8b5527eacb1205d15c8c01acb4a8f99b494e5b453ddd68a2a2e7fca4be3302a perly.y + * 153cba5d215c1a083a0459c43f4d55c45fd0a7093c197d7247a456dcde21ea53 regen_perly.pl * ex: set ro: */ diff --git a/Master/tlpkg/tlperl/lib/CORE/pp.h b/Master/tlpkg/tlperl/lib/CORE/pp.h index d3d8f988ee0..3b8f36f4144 100644 --- a/Master/tlpkg/tlperl/lib/CORE/pp.h +++ b/Master/tlpkg/tlperl/lib/CORE/pp.h @@ -55,9 +55,7 @@ Refetch the stack pointer. Used after a callback. See L<perlcall>. #define MARK mark #define TARG targ -#if defined(DEBUGGING) && defined(PERL_USE_GCC_BRACE_GROUPS) - -# define PUSHMARK(p) \ +#define PUSHMARK(p) \ STMT_START { \ I32 * mark_stack_entry; \ if (UNLIKELY((mark_stack_entry = ++PL_markstack_ptr) \ @@ -65,48 +63,20 @@ Refetch the stack pointer. Used after a callback. See L<perlcall>. mark_stack_entry = markstack_grow(); \ *mark_stack_entry = (I32)((p) - PL_stack_base); \ DEBUG_s(DEBUG_v(PerlIO_printf(Perl_debug_log, \ - "MARK push %p %"IVdf"\n", \ + "MARK push %p %" IVdf "\n", \ PL_markstack_ptr, (IV)*mark_stack_entry))); \ } STMT_END -# define TOPMARK \ - ({ \ - DEBUG_s(DEBUG_v(PerlIO_printf(Perl_debug_log, \ - "MARK top %p %"IVdf"\n", \ - PL_markstack_ptr, (IV)*PL_markstack_ptr))); \ - *PL_markstack_ptr; \ - }) +#define TOPMARK S_TOPMARK(aTHX) +#define POPMARK S_POPMARK(aTHX) -# define POPMARK \ - ({ \ - DEBUG_s(DEBUG_v(PerlIO_printf(Perl_debug_log, \ - "MARK pop %p %"IVdf"\n", \ - (PL_markstack_ptr-1), (IV)*(PL_markstack_ptr-1)))); \ - assert((PL_markstack_ptr > PL_markstack) || !"MARK underflow");\ - *PL_markstack_ptr--; \ - }) - -# define INCMARK \ - ({ \ +#define INCMARK \ + STMT_START { \ DEBUG_s(DEBUG_v(PerlIO_printf(Perl_debug_log, \ - "MARK inc %p %"IVdf"\n", \ + "MARK inc %p %" IVdf "\n", \ (PL_markstack_ptr+1), (IV)*(PL_markstack_ptr+1)))); \ - *PL_markstack_ptr++; \ - }) - -#else - -# define PUSHMARK(p) \ - STMT_START { \ - I32 * mark_stack_entry; \ - if (UNLIKELY((mark_stack_entry = ++PL_markstack_ptr) == PL_markstack_max)) \ - mark_stack_entry = markstack_grow(); \ - *mark_stack_entry = (I32)((p) - PL_stack_base); \ + PL_markstack_ptr++; \ } STMT_END -# define TOPMARK (*PL_markstack_ptr) -# define POPMARK (*PL_markstack_ptr--) -# define INCMARK (*PL_markstack_ptr++) -#endif #define dSP SV **sp = PL_stack_sp #define djSP dSP diff --git a/Master/tlpkg/tlperl/lib/CORE/pp_proto.h b/Master/tlpkg/tlperl/lib/CORE/pp_proto.h index f919313ed1f..e9315467999 100644 --- a/Master/tlpkg/tlperl/lib/CORE/pp_proto.h +++ b/Master/tlpkg/tlperl/lib/CORE/pp_proto.h @@ -19,9 +19,13 @@ PERL_CALLCONV OP *Perl_pp_anoncode(pTHX); PERL_CALLCONV OP *Perl_pp_anonconst(pTHX); PERL_CALLCONV OP *Perl_pp_anonhash(pTHX); PERL_CALLCONV OP *Perl_pp_anonlist(pTHX); +PERL_CALLCONV OP *Perl_pp_argcheck(pTHX); +PERL_CALLCONV OP *Perl_pp_argdefelem(pTHX); +PERL_CALLCONV OP *Perl_pp_argelem(pTHX); PERL_CALLCONV OP *Perl_pp_aslice(pTHX); PERL_CALLCONV OP *Perl_pp_atan2(pTHX); PERL_CALLCONV OP *Perl_pp_av2arylen(pTHX); +PERL_CALLCONV OP *Perl_pp_avhvswitch(pTHX); PERL_CALLCONV OP *Perl_pp_backtick(pTHX); PERL_CALLCONV OP *Perl_pp_bind(pTHX); PERL_CALLCONV OP *Perl_pp_binmode(pTHX); @@ -194,7 +198,6 @@ PERL_CALLCONV OP *Perl_pp_prototype(pTHX); PERL_CALLCONV OP *Perl_pp_prtf(pTHX); PERL_CALLCONV OP *Perl_pp_push(pTHX); PERL_CALLCONV OP *Perl_pp_pushmark(pTHX); -PERL_CALLCONV OP *Perl_pp_pushre(pTHX); PERL_CALLCONV OP *Perl_pp_qr(pTHX); PERL_CALLCONV OP *Perl_pp_quotemeta(pTHX); PERL_CALLCONV OP *Perl_pp_rand(pTHX); @@ -293,4 +296,9 @@ PERL_CALLCONV OP *Perl_pp_warn(pTHX); PERL_CALLCONV OP *Perl_pp_xor(pTHX); PERL_CALLCONV OP *Perl_unimplemented_op(pTHX); +/* alternative functions */ +#if defined(__GLIBC__) && IVSIZE == 8 && ( __GLIBC__ < 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ < 8)) +PERL_CALLCONV OP *Perl_pp_i_modulo_glibc_bugfix(pTHX); +#endif + /* ex: set ro: */ diff --git a/Master/tlpkg/tlperl/lib/CORE/proto.h b/Master/tlpkg/tlperl/lib/CORE/proto.h index fb4ee295087..dd938605f84 100644 --- a/Master/tlpkg/tlperl/lib/CORE/proto.h +++ b/Master/tlpkg/tlperl/lib/CORE/proto.h @@ -17,30 +17,36 @@ */ START_EXTERN_C +#ifndef NO_MATHOMS PERL_CALLCONV UV ASCII_TO_NEED(const UV enc, const UV ch) __attribute__deprecated__ __attribute__warn_unused_result__ __attribute__pure__; +#endif PERL_CALLCONV int Perl_Gv_AMupdate(pTHX_ HV* stash, bool destructing); #define PERL_ARGS_ASSERT_GV_AMUPDATE \ assert(stash) +#ifndef NO_MATHOMS PERL_CALLCONV UV NATIVE_TO_NEED(const UV enc, const UV ch) __attribute__deprecated__ __attribute__warn_unused_result__ __attribute__pure__; +#endif PERL_CALLCONV const char * Perl_PerlIO_context_layers(pTHX_ const char *mode); PERL_CALLCONV void* Perl_Slab_Alloc(pTHX_ size_t sz) - __attribute__malloc__ __attribute__warn_unused_result__; PERL_CALLCONV void Perl_Slab_Free(pTHX_ void *op); #define PERL_ARGS_ASSERT_SLAB_FREE \ assert(op) -PERL_CALLCONV SV* Perl__get_encoding(pTHX) - __attribute__pure__; - +PERL_CALLCONV char * Perl__byte_dump_string(pTHX_ const U8 * s, const STRLEN len, const bool format); +#define PERL_ARGS_ASSERT__BYTE_DUMP_STRING \ + assert(s) +PERL_CALLCONV void Perl__force_out_malformed_utf8_message(pTHX_ const U8 *const p, const U8 * const e, const U32 flags, const bool die_here); +#define PERL_ARGS_ASSERT__FORCE_OUT_MALFORMED_UTF8_MESSAGE \ + assert(p); assert(e) PERL_CALLCONV bool Perl__is_in_locale_category(pTHX_ const bool compiling, const int category); PERL_CALLCONV bool Perl__is_uni_FOO(pTHX_ const U8 classnum, const UV c) __attribute__warn_unused_result__; @@ -51,10 +57,21 @@ PERL_CALLCONV bool Perl__is_uni_perl_idcont(pTHX_ UV c) PERL_CALLCONV bool Perl__is_uni_perl_idstart(pTHX_ UV c) __attribute__warn_unused_result__; -PERL_CALLCONV bool Perl__is_utf8_FOO(pTHX_ const U8 classnum, const U8 *p) +PERL_CALLCONV bool Perl__is_utf8_FOO(pTHX_ U8 classnum, const U8 * const p, const char * const name, const char * const alternative, const bool use_utf8, const bool use_locale, const char * const file, const unsigned line) __attribute__warn_unused_result__; #define PERL_ARGS_ASSERT__IS_UTF8_FOO \ - assert(p) + assert(p); assert(name); assert(alternative); assert(file) + +PERL_CALLCONV bool Perl__is_utf8_FOO_with_len(pTHX_ const U8 classnum, const U8 *p, const U8 * const e) + __attribute__warn_unused_result__; +#define PERL_ARGS_ASSERT__IS_UTF8_FOO_WITH_LEN \ + assert(p); assert(e) + +PERL_CALLCONV STRLEN Perl__is_utf8_char_helper(const U8 * const s, const U8 * e, const U32 flags) + __attribute__warn_unused_result__ + __attribute__pure__; +#define PERL_ARGS_ASSERT__IS_UTF8_CHAR_HELPER \ + assert(s); assert(e) PERL_CALLCONV bool Perl__is_utf8_idcont(pTHX_ const U8 *p) __attribute__warn_unused_result__; @@ -71,15 +88,15 @@ PERL_CALLCONV bool Perl__is_utf8_mark(pTHX_ const U8 *p) #define PERL_ARGS_ASSERT__IS_UTF8_MARK \ assert(p) -PERL_CALLCONV bool Perl__is_utf8_perl_idcont(pTHX_ const U8 *p) +PERL_CALLCONV bool Perl__is_utf8_perl_idcont_with_len(pTHX_ const U8 *p, const U8 * const e) __attribute__warn_unused_result__; -#define PERL_ARGS_ASSERT__IS_UTF8_PERL_IDCONT \ - assert(p) +#define PERL_ARGS_ASSERT__IS_UTF8_PERL_IDCONT_WITH_LEN \ + assert(p); assert(e) -PERL_CALLCONV bool Perl__is_utf8_perl_idstart(pTHX_ const U8 *p) +PERL_CALLCONV bool Perl__is_utf8_perl_idstart_with_len(pTHX_ const U8 *p, const U8 * const e) __attribute__warn_unused_result__; -#define PERL_ARGS_ASSERT__IS_UTF8_PERL_IDSTART \ - assert(p) +#define PERL_ARGS_ASSERT__IS_UTF8_PERL_IDSTART_WITH_LEN \ + assert(p); assert(e) PERL_CALLCONV bool Perl__is_utf8_xidcont(pTHX_ const U8 *p) __attribute__warn_unused_result__; @@ -94,19 +111,25 @@ PERL_CALLCONV bool Perl__is_utf8_xidstart(pTHX_ const U8 *p) PERL_CALLCONV UV Perl__to_uni_fold_flags(pTHX_ UV c, U8 *p, STRLEN *lenp, U8 flags); #define PERL_ARGS_ASSERT__TO_UNI_FOLD_FLAGS \ assert(p); assert(lenp) -PERL_CALLCONV UV Perl__to_utf8_fold_flags(pTHX_ const U8 *p, U8* ustrp, STRLEN *lenp, U8 flags); +PERL_CALLCONV UV Perl__to_utf8_fold_flags(pTHX_ const U8 *p, const U8 *e, U8* ustrp, STRLEN *lenp, U8 flags, const char * const file, const int line); #define PERL_ARGS_ASSERT__TO_UTF8_FOLD_FLAGS \ - assert(p); assert(ustrp) -PERL_CALLCONV UV Perl__to_utf8_lower_flags(pTHX_ const U8 *p, U8* ustrp, STRLEN *lenp, bool flags); + assert(p); assert(ustrp); assert(file) +PERL_CALLCONV UV Perl__to_utf8_lower_flags(pTHX_ const U8 *p, const U8* e, U8* ustrp, STRLEN *lenp, bool flags, const char * const file, const int line); #define PERL_ARGS_ASSERT__TO_UTF8_LOWER_FLAGS \ - assert(p); assert(ustrp) -PERL_CALLCONV UV Perl__to_utf8_title_flags(pTHX_ const U8 *p, U8* ustrp, STRLEN *lenp, bool flags); + assert(p); assert(ustrp); assert(file) +PERL_CALLCONV UV Perl__to_utf8_title_flags(pTHX_ const U8 *p, const U8* e, U8* ustrp, STRLEN *lenp, bool flags, const char * const file, const int line); #define PERL_ARGS_ASSERT__TO_UTF8_TITLE_FLAGS \ - assert(p); assert(ustrp) -PERL_CALLCONV UV Perl__to_utf8_upper_flags(pTHX_ const U8 *p, U8* ustrp, STRLEN *lenp, bool flags); + assert(p); assert(ustrp); assert(file) +PERL_CALLCONV UV Perl__to_utf8_upper_flags(pTHX_ const U8 *p, const U8 *e, U8* ustrp, STRLEN *lenp, bool flags, const char * const file, const int line); #define PERL_ARGS_ASSERT__TO_UTF8_UPPER_FLAGS \ - assert(p); assert(ustrp) + assert(p); assert(ustrp); assert(file) PERL_CALLCONV void Perl__warn_problematic_locale(void); +PERL_CALLCONV_NO_RET void Perl_abort_execution(pTHX_ const char * const msg, const char * const name) + __attribute__noreturn__; +#define PERL_ARGS_ASSERT_ABORT_EXECUTION \ + assert(msg); assert(name) + +PERL_CALLCONV LOGOP* Perl_alloc_LOGOP(pTHX_ I32 type, OP *first, OP *other); PERL_CALLCONV PADOFFSET Perl_allocmy(pTHX_ const char *const name, const STRLEN len, const U32 flags); #define PERL_ARGS_ASSERT_ALLOCMY \ assert(name) @@ -117,6 +140,11 @@ PERL_CALLCONV SV * Perl_amagic_deref_call(pTHX_ SV *ref, int method); #define PERL_ARGS_ASSERT_AMAGIC_DEREF_CALL \ assert(ref) PERL_CALLCONV bool Perl_amagic_is_enabled(pTHX_ int method); +#ifndef PERL_NO_INLINE_FUNCTIONS +PERL_STATIC_INLINE void S_append_utf8_from_native_byte(const U8 byte, U8** dest); +#define PERL_ARGS_ASSERT_APPEND_UTF8_FROM_NATIVE_BYTE \ + assert(dest) +#endif PERL_CALLCONV I32 Perl_apply(pTHX_ I32 type, SV** mark, SV** sp); #define PERL_ARGS_ASSERT_APPLY \ assert(mark); assert(sp) @@ -192,6 +220,13 @@ PERL_CALLCONV SV** Perl_av_store(pTHX_ AV *av, SSize_t key, SV *val); /* PERL_CALLCONV SSize_t Perl_av_tindex(pTHX_ AV *av) __attribute__warn_unused_result__; */ +#ifndef PERL_NO_INLINE_FUNCTIONS +PERL_STATIC_INLINE SSize_t S_av_top_index(pTHX_ AV *av) + __attribute__warn_unused_result__; +#define PERL_ARGS_ASSERT_AV_TOP_INDEX \ + assert(av) +#endif + PERL_CALLCONV void Perl_av_undef(pTHX_ AV *av); #define PERL_ARGS_ASSERT_AV_UNDEF \ assert(av) @@ -520,8 +555,14 @@ PERL_CALLCONV void Perl_ck_warner_d(pTHX_ U32 err, const char* pat, ...) #define PERL_ARGS_ASSERT_CK_WARNER_D \ assert(pat) -PERL_CALLCONV bool Perl_ckwarn(pTHX_ U32 w); -PERL_CALLCONV bool Perl_ckwarn_d(pTHX_ U32 w); +PERL_CALLCONV bool Perl_ckwarn(pTHX_ U32 w) + __attribute__warn_unused_result__ + __attribute__pure__; + +PERL_CALLCONV bool Perl_ckwarn_d(pTHX_ U32 w) + __attribute__warn_unused_result__ + __attribute__pure__; + PERL_CALLCONV void Perl_clear_defarray(pTHX_ AV* av, bool abandon); #define PERL_ARGS_ASSERT_CLEAR_DEFARRAY \ assert(av) @@ -545,6 +586,10 @@ PERL_CALLCONV_NO_RET void Perl_croak(pTHX_ const char* pat, ...) __attribute__noreturn__ __attribute__format__null_ok__(__printf__,pTHX_1,pTHX_2); +PERL_CALLCONV_NO_RET void Perl_croak_caller(const char* pat, ...) + __attribute__noreturn__ + __attribute__format__null_ok__(__printf__,1,2); + PERL_STATIC_NO_RET void S_croak_memory_wrap(void) __attribute__noreturn__; @@ -586,9 +631,7 @@ PERL_CALLCONV const char * Perl_custom_op_name(pTHX_ const OP *o) PERL_CALLCONV void Perl_custom_op_register(pTHX_ Perl_ppaddr_t ppaddr, const XOP *xop); #define PERL_ARGS_ASSERT_CUSTOM_OP_REGISTER \ assert(ppaddr); assert(xop) -/* PERL_CALLCONV const XOP * Perl_custom_op_xop(pTHX_ const OP *o) - __attribute__pure__; */ - +/* PERL_CALLCONV const XOP * Perl_custom_op_xop(pTHX_ const OP *o); */ PERL_CALLCONV void Perl_cv_ckproto_len_flags(pTHX_ const CV* cv, const GV* gv, const char* p, const STRLEN len, const U32 flags); #define PERL_ARGS_ASSERT_CV_CKPROTO_LEN_FLAGS \ assert(cv) @@ -659,6 +702,9 @@ PERL_CALLCONV void Perl_delete_eval_scope(pTHX); PERL_CALLCONV char* Perl_delimcpy(char* to, const char* toend, const char* from, const char* fromend, int delim, I32* retlen); #define PERL_ARGS_ASSERT_DELIMCPY \ assert(to); assert(toend); assert(from); assert(fromend); assert(retlen) +PERL_CALLCONV char* Perl_delimcpy_no_escape(char* to, const char* toend, const char* from, const char* fromend, int delim, I32* retlen); +#define PERL_ARGS_ASSERT_DELIMCPY_NO_ESCAPE \ + assert(to); assert(toend); assert(from); assert(fromend); assert(retlen) PERL_CALLCONV void Perl_despatch_signals(pTHX); PERL_CALLCONV_NO_RET OP* Perl_die(pTHX_ const char* pat, ...) __attribute__noreturn__ @@ -674,9 +720,11 @@ PERL_CALLCONV_NO_RET void Perl_die_unwind(pTHX_ SV* msv) #define PERL_ARGS_ASSERT_DIE_UNWIND \ assert(msv) -/* PERL_CALLCONV bool Perl_do_aexec(pTHX_ SV* really, SV** mark, SV** sp); */ +#ifndef NO_MATHOMS +PERL_CALLCONV bool Perl_do_aexec(pTHX_ SV* really, SV** mark, SV** sp); #define PERL_ARGS_ASSERT_DO_AEXEC \ assert(mark); assert(sp) +#endif PERL_CALLCONV bool Perl_do_aexec5(pTHX_ SV* really, SV** mark, SV** sp, int fd, int do_report); #define PERL_ARGS_ASSERT_DO_AEXEC5 \ assert(mark); assert(sp) @@ -714,9 +762,11 @@ PERL_CALLCONV I32 Perl_do_ncmp(pTHX_ SV *const left, SV *const right) PERL_CALLCONV void Perl_do_op_dump(pTHX_ I32 level, PerlIO *file, const OP *o); #define PERL_ARGS_ASSERT_DO_OP_DUMP \ assert(file) -/* PERL_CALLCONV bool Perl_do_open(pTHX_ GV* gv, const char* name, I32 len, int as_raw, int rawmode, int rawperm, PerlIO* supplied_fp); */ +#ifndef NO_MATHOMS +PERL_CALLCONV bool Perl_do_open(pTHX_ GV* gv, const char* name, I32 len, int as_raw, int rawmode, int rawperm, PerlIO* supplied_fp); #define PERL_ARGS_ASSERT_DO_OPEN \ assert(gv); assert(name) +#endif PERL_CALLCONV bool Perl_do_open6(pTHX_ GV *gv, const char *oname, STRLEN len, PerlIO *supplied_fp, SV **svp, U32 num); #define PERL_ARGS_ASSERT_DO_OPEN6 \ assert(gv); assert(oname) @@ -756,7 +806,7 @@ PERL_CALLCONV Off_t Perl_do_tell(pTHX_ GV* gv) PERL_CALLCONV I32 Perl_do_trans(pTHX_ SV* sv); #define PERL_ARGS_ASSERT_DO_TRANS \ assert(sv) -PERL_CALLCONV UV Perl_do_vecget(pTHX_ SV* sv, SSize_t offset, int size); +PERL_CALLCONV UV Perl_do_vecget(pTHX_ SV* sv, STRLEN offset, int size); #define PERL_ARGS_ASSERT_DO_VECGET \ assert(sv) PERL_CALLCONV void Perl_do_vecset(pTHX_ SV* sv); @@ -856,21 +906,21 @@ PERL_CALLCONV PADOFFSET Perl_find_rundefsvoffset(pTHX) PERL_CALLCONV char* Perl_find_script(pTHX_ const char *scriptname, bool dosearch, const char *const *const search_ext, I32 flags); #define PERL_ARGS_ASSERT_FIND_SCRIPT \ assert(scriptname) -PERL_CALLCONV I32 Perl_foldEQ(const char* a, const char* b, I32 len) - __attribute__pure__; +#ifndef PERL_NO_INLINE_FUNCTIONS +PERL_STATIC_INLINE I32 Perl_foldEQ(const char* a, const char* b, I32 len); #define PERL_ARGS_ASSERT_FOLDEQ \ assert(a); assert(b) - -PERL_CALLCONV I32 Perl_foldEQ_latin1(const char* a, const char* b, I32 len) - __attribute__pure__; +#endif +#ifndef PERL_NO_INLINE_FUNCTIONS +PERL_STATIC_INLINE I32 Perl_foldEQ_latin1(const char* a, const char* b, I32 len); #define PERL_ARGS_ASSERT_FOLDEQ_LATIN1 \ assert(a); assert(b) - -PERL_CALLCONV I32 Perl_foldEQ_locale(const char* a, const char* b, I32 len) - __attribute__pure__; +#endif +#ifndef PERL_NO_INLINE_FUNCTIONS +PERL_STATIC_INLINE I32 Perl_foldEQ_locale(const char* a, const char* b, I32 len); #define PERL_ARGS_ASSERT_FOLDEQ_LOCALE \ assert(a); assert(b) - +#endif /* PERL_CALLCONV I32 foldEQ_utf8(pTHX_ const char *s1, char **pe1, UV l1, bool u1, const char *s2, char **pe2, UV l2, bool u2); */ PERL_CALLCONV I32 Perl_foldEQ_utf8_flags(pTHX_ const char *s1, char **pe1, UV l1, bool u1, const char *s2, char **pe2, UV l2, bool u2, U32 flags); #define PERL_ARGS_ASSERT_FOLDEQ_UTF8_FLAGS \ @@ -961,9 +1011,15 @@ PERL_CALLCONV bool Perl_grok_numeric_radix(pTHX_ const char **sp, const char *se PERL_CALLCONV UV Perl_grok_oct(pTHX_ const char* start, STRLEN* len_p, I32* flags, NV *result); #define PERL_ARGS_ASSERT_GROK_OCT \ assert(start); assert(len_p); assert(flags) -/* PERL_CALLCONV GV* Perl_gv_AVadd(pTHX_ GV *gv); */ -/* PERL_CALLCONV GV* Perl_gv_HVadd(pTHX_ GV *gv); */ -/* PERL_CALLCONV GV* Perl_gv_IOadd(pTHX_ GV* gv); */ +#ifndef NO_MATHOMS +PERL_CALLCONV GV* Perl_gv_AVadd(pTHX_ GV *gv); +#endif +#ifndef NO_MATHOMS +PERL_CALLCONV GV* Perl_gv_HVadd(pTHX_ GV *gv); +#endif +#ifndef NO_MATHOMS +PERL_CALLCONV GV* Perl_gv_IOadd(pTHX_ GV* gv); +#endif PERL_CALLCONV GV* Perl_gv_add_by_type(pTHX_ GV *gv, svtype type); /* PERL_CALLCONV GV* gv_autoload4(pTHX_ HV* stash, const char* name, STRLEN len, I32 method) __attribute__warn_unused_result__; */ @@ -995,9 +1051,11 @@ PERL_CALLCONV void Perl_gv_dump(pTHX_ GV* gv); PERL_CALLCONV void Perl_gv_efullname(pTHX_ SV* sv, const GV* gv); #define PERL_ARGS_ASSERT_GV_EFULLNAME \ assert(sv); assert(gv) -/* PERL_CALLCONV void Perl_gv_efullname3(pTHX_ SV* sv, const GV* gv, const char* prefix); */ +#ifndef NO_MATHOMS +PERL_CALLCONV void Perl_gv_efullname3(pTHX_ SV* sv, const GV* gv, const char* prefix); #define PERL_ARGS_ASSERT_GV_EFULLNAME3 \ assert(sv); assert(gv) +#endif PERL_CALLCONV void Perl_gv_efullname4(pTHX_ SV* sv, const GV* gv, const char* prefix, bool keepmain); #define PERL_ARGS_ASSERT_GV_EFULLNAME4 \ assert(sv); assert(gv) @@ -1027,9 +1085,11 @@ PERL_CALLCONV GV* Perl_gv_fetchmeth_sv(pTHX_ HV* stash, SV* namesv, I32 level, U PERL_CALLCONV GV* Perl_gv_fetchmeth_sv_autoload(pTHX_ HV* stash, SV* namesv, I32 level, U32 flags); #define PERL_ARGS_ASSERT_GV_FETCHMETH_SV_AUTOLOAD \ assert(namesv) -/* PERL_CALLCONV GV* Perl_gv_fetchmethod(pTHX_ HV* stash, const char* name); */ +#ifndef NO_MATHOMS +PERL_CALLCONV GV* Perl_gv_fetchmethod(pTHX_ HV* stash, const char* name); #define PERL_ARGS_ASSERT_GV_FETCHMETHOD \ assert(stash); assert(name) +#endif PERL_CALLCONV GV* Perl_gv_fetchmethod_autoload(pTHX_ HV* stash, const char* name, I32 autoload); #define PERL_ARGS_ASSERT_GV_FETCHMETHOD_AUTOLOAD \ assert(stash); assert(name) @@ -1054,9 +1114,11 @@ PERL_CALLCONV GV* Perl_gv_fetchsv(pTHX_ SV *name, I32 flags, const svtype sv_typ PERL_CALLCONV void Perl_gv_fullname(pTHX_ SV* sv, const GV* gv); #define PERL_ARGS_ASSERT_GV_FULLNAME \ assert(sv); assert(gv) -/* PERL_CALLCONV void Perl_gv_fullname3(pTHX_ SV* sv, const GV* gv, const char* prefix); */ +#ifndef NO_MATHOMS +PERL_CALLCONV void Perl_gv_fullname3(pTHX_ SV* sv, const GV* gv, const char* prefix); #define PERL_ARGS_ASSERT_GV_FULLNAME3 \ assert(sv); assert(gv) +#endif PERL_CALLCONV void Perl_gv_fullname4(pTHX_ SV* sv, const GV* gv, const char* prefix, bool keepmain); #define PERL_ARGS_ASSERT_GV_FULLNAME4 \ assert(sv); assert(gv) @@ -1097,6 +1159,11 @@ PERL_CALLCONV void Perl_gv_try_downgrade(pTHX_ GV* gv); PERL_CALLCONV AV** Perl_hv_backreferences_p(pTHX_ HV *hv); #define PERL_ARGS_ASSERT_HV_BACKREFERENCES_P \ assert(hv) +PERL_CALLCONV SV* Perl_hv_bucket_ratio(pTHX_ HV *hv) + __attribute__warn_unused_result__; +#define PERL_ARGS_ASSERT_HV_BUCKET_RATIO \ + assert(hv) + PERL_CALLCONV void Perl_hv_clear(pTHX_ HV *hv); PERL_CALLCONV void Perl_hv_clear_placeholders(pTHX_ HV *hv); #define PERL_ARGS_ASSERT_HV_CLEAR_PLACEHOLDERS \ @@ -1111,12 +1178,16 @@ PERL_CALLCONV HV * Perl_hv_copy_hints_hv(pTHX_ HV *const ohv) PERL_CALLCONV void Perl_hv_delayfree_ent(pTHX_ HV *hv, HE *entry); #define PERL_ARGS_ASSERT_HV_DELAYFREE_ENT \ assert(hv) -/* PERL_CALLCONV SV* Perl_hv_delete(pTHX_ HV *hv, const char *key, I32 klen, I32 flags); */ +#ifndef NO_MATHOMS +PERL_CALLCONV SV* Perl_hv_delete(pTHX_ HV *hv, const char *key, I32 klen, I32 flags); #define PERL_ARGS_ASSERT_HV_DELETE \ assert(key) -/* PERL_CALLCONV SV* Perl_hv_delete_ent(pTHX_ HV *hv, SV *keysv, I32 flags, U32 hash); */ +#endif +#ifndef NO_MATHOMS +PERL_CALLCONV SV* Perl_hv_delete_ent(pTHX_ HV *hv, SV *keysv, I32 flags, U32 hash); #define PERL_ARGS_ASSERT_HV_DELETE_ENT \ assert(keysv) +#endif PERL_CALLCONV HE** Perl_hv_eiter_p(pTHX_ HV *hv) __attribute__warn_unused_result__; #define PERL_ARGS_ASSERT_HV_EITER_P \ @@ -1131,22 +1202,30 @@ PERL_CALLCONV void Perl_hv_ename_add(pTHX_ HV *hv, const char *name, U32 len, U3 PERL_CALLCONV void Perl_hv_ename_delete(pTHX_ HV *hv, const char *name, U32 len, U32 flags); #define PERL_ARGS_ASSERT_HV_ENAME_DELETE \ assert(hv); assert(name) -/* PERL_CALLCONV bool Perl_hv_exists(pTHX_ HV *hv, const char *key, I32 klen) - __attribute__warn_unused_result__; */ +#ifndef NO_MATHOMS +PERL_CALLCONV bool Perl_hv_exists(pTHX_ HV *hv, const char *key, I32 klen) + __attribute__warn_unused_result__; #define PERL_ARGS_ASSERT_HV_EXISTS \ assert(key) +#endif -/* PERL_CALLCONV bool Perl_hv_exists_ent(pTHX_ HV *hv, SV *keysv, U32 hash) - __attribute__warn_unused_result__; */ +#ifndef NO_MATHOMS +PERL_CALLCONV bool Perl_hv_exists_ent(pTHX_ HV *hv, SV *keysv, U32 hash) + __attribute__warn_unused_result__; #define PERL_ARGS_ASSERT_HV_EXISTS_ENT \ assert(keysv) +#endif -/* PERL_CALLCONV SV** Perl_hv_fetch(pTHX_ HV *hv, const char *key, I32 klen, I32 lval); */ +#ifndef NO_MATHOMS +PERL_CALLCONV SV** Perl_hv_fetch(pTHX_ HV *hv, const char *key, I32 klen, I32 lval); #define PERL_ARGS_ASSERT_HV_FETCH \ assert(key) -/* PERL_CALLCONV HE* Perl_hv_fetch_ent(pTHX_ HV *hv, SV *keysv, I32 lval, U32 hash); */ +#endif +#ifndef NO_MATHOMS +PERL_CALLCONV HE* Perl_hv_fetch_ent(pTHX_ HV *hv, SV *keysv, I32 lval, U32 hash); #define PERL_ARGS_ASSERT_HV_FETCH_ENT \ assert(keysv) +#endif PERL_CALLCONV STRLEN Perl_hv_fill(pTHX_ HV *const hv); #define PERL_ARGS_ASSERT_HV_FILL \ assert(hv) @@ -1166,10 +1245,12 @@ PERL_CALLCONV SV* Perl_hv_iterkeysv(pTHX_ HE* entry) #define PERL_ARGS_ASSERT_HV_ITERKEYSV \ assert(entry) -/* PERL_CALLCONV HE* Perl_hv_iternext(pTHX_ HV *hv) - __attribute__warn_unused_result__; */ +#ifndef NO_MATHOMS +PERL_CALLCONV HE* Perl_hv_iternext(pTHX_ HV *hv) + __attribute__warn_unused_result__; #define PERL_ARGS_ASSERT_HV_ITERNEXT \ assert(hv) +#endif PERL_CALLCONV HE* Perl_hv_iternext_flags(pTHX_ HV *hv, I32 flags) __attribute__warn_unused_result__; @@ -1189,9 +1270,11 @@ PERL_CALLCONV SV* Perl_hv_iterval(pTHX_ HV *hv, HE *entry) PERL_CALLCONV void Perl_hv_ksplit(pTHX_ HV *hv, IV newmax); #define PERL_ARGS_ASSERT_HV_KSPLIT \ assert(hv) -/* PERL_CALLCONV void Perl_hv_magic(pTHX_ HV *hv, GV *gv, int how); */ +#ifndef NO_MATHOMS +PERL_CALLCONV void Perl_hv_magic(pTHX_ HV *hv, GV *gv, int how); #define PERL_ARGS_ASSERT_HV_MAGIC \ assert(hv) +#endif PERL_CALLCONV void Perl_hv_name_set(pTHX_ HV *hv, const char *name, U32 len, U32 flags); #define PERL_ARGS_ASSERT_HV_NAME_SET \ assert(hv) @@ -1224,13 +1307,25 @@ PERL_CALLCONV SV* Perl_hv_scalar(pTHX_ HV *hv) #define PERL_ARGS_ASSERT_HV_SCALAR \ assert(hv) -/* PERL_CALLCONV SV** Perl_hv_store(pTHX_ HV *hv, const char *key, I32 klen, SV *val, U32 hash); */ -/* PERL_CALLCONV HE* Perl_hv_store_ent(pTHX_ HV *hv, SV *key, SV *val, U32 hash); */ -/* PERL_CALLCONV SV** Perl_hv_store_flags(pTHX_ HV *hv, const char *key, I32 klen, SV *val, U32 hash, int flags); */ +#ifndef NO_MATHOMS +PERL_CALLCONV SV** Perl_hv_store(pTHX_ HV *hv, const char *key, I32 klen, SV *val, U32 hash); +#endif +#ifndef NO_MATHOMS +PERL_CALLCONV HE* Perl_hv_store_ent(pTHX_ HV *hv, SV *key, SV *val, U32 hash); +#endif +#ifndef NO_MATHOMS +PERL_CALLCONV SV** Perl_hv_store_flags(pTHX_ HV *hv, const char *key, I32 klen, SV *val, U32 hash, int flags); +#endif /* PERL_CALLCONV void hv_undef(pTHX_ HV *hv); */ PERL_CALLCONV void Perl_hv_undef_flags(pTHX_ HV *hv, U32 flags); -/* PERL_CALLCONV I32 ibcmp(pTHX_ const char* a, const char* b, I32 len); */ -/* PERL_CALLCONV I32 ibcmp_locale(pTHX_ const char* a, const char* b, I32 len); */ +/* PERL_CALLCONV I32 ibcmp(pTHX_ const char* a, const char* b, I32 len) + __attribute__warn_unused_result__ + __attribute__pure__; */ + +/* PERL_CALLCONV I32 ibcmp_locale(pTHX_ const char* a, const char* b, I32 len) + __attribute__warn_unused_result__ + __attribute__pure__; */ + /* PERL_CALLCONV I32 ibcmp_utf8(pTHX_ const char *s1, char **pe1, UV l1, bool u1, const char *s2, char **pe2, UV l2, bool u2); */ PERL_CALLCONV void Perl_init_argv_symbols(pTHX_ int argc, char **argv); #define PERL_ARGS_ASSERT_INIT_ARGV_SYMBOLS \ @@ -1244,11 +1339,13 @@ PERL_CALLCONV void Perl_init_stacks(pTHX); PERL_CALLCONV void Perl_init_tm(pTHX_ struct tm *ptm); #define PERL_ARGS_ASSERT_INIT_TM \ assert(ptm) +#ifndef NO_MATHOMS PERL_CALLCONV char* Perl_instr(const char* big, const char* little) __attribute__warn_unused_result__ __attribute__pure__; #define PERL_ARGS_ASSERT_INSTR \ assert(big); assert(little) +#endif PERL_CALLCONV U32 Perl_intro_my(pTHX); PERL_CALLCONV OP* Perl_invert(pTHX_ OP* cmd) @@ -1259,58 +1356,83 @@ PERL_CALLCONV bool Perl_io_close(pTHX_ IO* io, GV *gv, bool not_implicit, bool w assert(io) PERL_CALLCONV bool Perl_isALNUM_lazy(pTHX_ const char* p) __attribute__deprecated__ - __attribute__warn_unused_result__ - __attribute__pure__; + __attribute__warn_unused_result__; #define PERL_ARGS_ASSERT_ISALNUM_LAZY \ assert(p) PERL_CALLCONV bool Perl_isIDFIRST_lazy(pTHX_ const char* p) __attribute__deprecated__ - __attribute__warn_unused_result__ - __attribute__pure__; + __attribute__warn_unused_result__; #define PERL_ARGS_ASSERT_ISIDFIRST_LAZY \ assert(p) -/* PERL_CALLCONV bool Perl_is_ascii_string(pTHX_ const U8 *s, STRLEN len) - __attribute__warn_unused_result__; */ +/* PERL_CALLCONV bool Perl_is_ascii_string(const U8* const s, const STRLEN len) + __attribute__warn_unused_result__ + __attribute__pure__; */ -PERL_CALLCONV bool Perl_is_invariant_string(const U8 *s, STRLEN len) +#ifndef PERL_NO_INLINE_FUNCTIONS +PERL_STATIC_INLINE bool S_is_c9strict_utf8_string(const U8 *s, const STRLEN len) __attribute__warn_unused_result__; -#define PERL_ARGS_ASSERT_IS_INVARIANT_STRING \ +#define PERL_ARGS_ASSERT_IS_C9STRICT_UTF8_STRING \ assert(s) +#endif + +/* PERL_CALLCONV bool is_c9strict_utf8_string_loc(const U8 *s, const STRLEN len, const U8 **ep); */ +#ifndef PERL_NO_INLINE_FUNCTIONS +PERL_STATIC_INLINE bool S_is_c9strict_utf8_string_loclen(const U8 *s, const STRLEN len, const U8 **ep, STRLEN *el); +#define PERL_ARGS_ASSERT_IS_C9STRICT_UTF8_STRING_LOCLEN \ + assert(s) +#endif +/* PERL_CALLCONV bool Perl_is_invariant_string(const U8* const s, const STRLEN len) + __attribute__warn_unused_result__ + __attribute__pure__; */ PERL_CALLCONV I32 Perl_is_lvalue_sub(pTHX) __attribute__warn_unused_result__; +#ifndef PERL_NO_INLINE_FUNCTIONS +PERL_STATIC_INLINE bool S_is_safe_syscall(pTHX_ const char *pv, STRLEN len, const char *what, const char *op_name) + __attribute__warn_unused_result__; +#define PERL_ARGS_ASSERT_IS_SAFE_SYSCALL \ + assert(pv); assert(what); assert(op_name) +#endif + +#ifndef PERL_NO_INLINE_FUNCTIONS +PERL_STATIC_INLINE bool S_is_strict_utf8_string(const U8 *s, const STRLEN len) + __attribute__warn_unused_result__; +#define PERL_ARGS_ASSERT_IS_STRICT_UTF8_STRING \ + assert(s) +#endif + +/* PERL_CALLCONV bool is_strict_utf8_string_loc(const U8 *s, const STRLEN len, const U8 **ep); */ +#ifndef PERL_NO_INLINE_FUNCTIONS +PERL_STATIC_INLINE bool S_is_strict_utf8_string_loclen(const U8 *s, const STRLEN len, const U8 **ep, STRLEN *el); +#define PERL_ARGS_ASSERT_IS_STRICT_UTF8_STRING_LOCLEN \ + assert(s) +#endif PERL_CALLCONV bool Perl_is_uni_alnum(pTHX_ UV c) __attribute__deprecated__ - __attribute__warn_unused_result__ - __attribute__pure__; + __attribute__warn_unused_result__; PERL_CALLCONV bool Perl_is_uni_alnum_lc(pTHX_ UV c) __attribute__deprecated__ - __attribute__warn_unused_result__ - __attribute__pure__; + __attribute__warn_unused_result__; PERL_CALLCONV bool Perl_is_uni_alnumc(pTHX_ UV c) __attribute__deprecated__ - __attribute__warn_unused_result__ - __attribute__pure__; + __attribute__warn_unused_result__; PERL_CALLCONV bool Perl_is_uni_alnumc_lc(pTHX_ UV c) __attribute__deprecated__ - __attribute__warn_unused_result__ - __attribute__pure__; + __attribute__warn_unused_result__; PERL_CALLCONV bool Perl_is_uni_alpha(pTHX_ UV c) __attribute__deprecated__ - __attribute__warn_unused_result__ - __attribute__pure__; + __attribute__warn_unused_result__; PERL_CALLCONV bool Perl_is_uni_alpha_lc(pTHX_ UV c) __attribute__deprecated__ - __attribute__warn_unused_result__ - __attribute__pure__; + __attribute__warn_unused_result__; PERL_CALLCONV bool Perl_is_uni_ascii(pTHX_ UV c) __attribute__deprecated__ @@ -1344,63 +1466,51 @@ PERL_CALLCONV bool Perl_is_uni_cntrl_lc(pTHX_ UV c) PERL_CALLCONV bool Perl_is_uni_digit(pTHX_ UV c) __attribute__deprecated__ - __attribute__warn_unused_result__ - __attribute__pure__; + __attribute__warn_unused_result__; PERL_CALLCONV bool Perl_is_uni_digit_lc(pTHX_ UV c) __attribute__deprecated__ - __attribute__warn_unused_result__ - __attribute__pure__; + __attribute__warn_unused_result__; PERL_CALLCONV bool Perl_is_uni_graph(pTHX_ UV c) __attribute__deprecated__ - __attribute__warn_unused_result__ - __attribute__pure__; + __attribute__warn_unused_result__; PERL_CALLCONV bool Perl_is_uni_graph_lc(pTHX_ UV c) __attribute__deprecated__ - __attribute__warn_unused_result__ - __attribute__pure__; + __attribute__warn_unused_result__; PERL_CALLCONV bool Perl_is_uni_idfirst(pTHX_ UV c) __attribute__deprecated__ - __attribute__warn_unused_result__ - __attribute__pure__; + __attribute__warn_unused_result__; PERL_CALLCONV bool Perl_is_uni_idfirst_lc(pTHX_ UV c) __attribute__deprecated__ - __attribute__warn_unused_result__ - __attribute__pure__; + __attribute__warn_unused_result__; PERL_CALLCONV bool Perl_is_uni_lower(pTHX_ UV c) __attribute__deprecated__ - __attribute__warn_unused_result__ - __attribute__pure__; + __attribute__warn_unused_result__; PERL_CALLCONV bool Perl_is_uni_lower_lc(pTHX_ UV c) __attribute__deprecated__ - __attribute__warn_unused_result__ - __attribute__pure__; + __attribute__warn_unused_result__; PERL_CALLCONV bool Perl_is_uni_print(pTHX_ UV c) __attribute__deprecated__ - __attribute__warn_unused_result__ - __attribute__pure__; + __attribute__warn_unused_result__; PERL_CALLCONV bool Perl_is_uni_print_lc(pTHX_ UV c) __attribute__deprecated__ - __attribute__warn_unused_result__ - __attribute__pure__; + __attribute__warn_unused_result__; PERL_CALLCONV bool Perl_is_uni_punct(pTHX_ UV c) __attribute__deprecated__ - __attribute__warn_unused_result__ - __attribute__pure__; + __attribute__warn_unused_result__; PERL_CALLCONV bool Perl_is_uni_punct_lc(pTHX_ UV c) __attribute__deprecated__ - __attribute__warn_unused_result__ - __attribute__pure__; + __attribute__warn_unused_result__; PERL_CALLCONV bool Perl_is_uni_space(pTHX_ UV c) __attribute__deprecated__ @@ -1414,13 +1524,11 @@ PERL_CALLCONV bool Perl_is_uni_space_lc(pTHX_ UV c) PERL_CALLCONV bool Perl_is_uni_upper(pTHX_ UV c) __attribute__deprecated__ - __attribute__warn_unused_result__ - __attribute__pure__; + __attribute__warn_unused_result__; PERL_CALLCONV bool Perl_is_uni_upper_lc(pTHX_ UV c) __attribute__deprecated__ - __attribute__warn_unused_result__ - __attribute__pure__; + __attribute__warn_unused_result__; PERL_CALLCONV bool Perl_is_uni_xdigit(pTHX_ UV c) __attribute__deprecated__ @@ -1467,9 +1575,11 @@ PERL_CALLCONV STRLEN Perl_is_utf8_char(const U8 *s) #define PERL_ARGS_ASSERT_IS_UTF8_CHAR \ assert(s) -/* PERL_CALLCONV STRLEN Perl_is_utf8_char_buf(const U8 *buf, const U8 *buf_end); */ +#ifndef NO_MATHOMS +PERL_CALLCONV STRLEN Perl_is_utf8_char_buf(const U8 *buf, const U8 *buf_end); #define PERL_ARGS_ASSERT_IS_UTF8_CHAR_BUF \ assert(buf); assert(buf_end) +#endif PERL_CALLCONV bool Perl_is_utf8_cntrl(pTHX_ const U8 *p) __attribute__deprecated__ __attribute__warn_unused_result__; @@ -1482,6 +1592,13 @@ PERL_CALLCONV bool Perl_is_utf8_digit(pTHX_ const U8 *p) #define PERL_ARGS_ASSERT_IS_UTF8_DIGIT \ assert(p) +/* PERL_CALLCONV bool is_utf8_fixed_width_buf_flags(const U8 * const s, const STRLEN len, const U32 flags); */ +/* PERL_CALLCONV bool is_utf8_fixed_width_buf_loc_flags(const U8 * const s, const STRLEN len, const U8 **ep, const U32 flags); */ +#ifndef PERL_NO_INLINE_FUNCTIONS +PERL_STATIC_INLINE bool S_is_utf8_fixed_width_buf_loclen_flags(const U8 * const s, const STRLEN len, const U8 **ep, STRLEN *el, const U32 flags); +#define PERL_ARGS_ASSERT_IS_UTF8_FIXED_WIDTH_BUF_LOCLEN_FLAGS \ + assert(s) +#endif PERL_CALLCONV bool Perl_is_utf8_graph(pTHX_ const U8 *p) __attribute__deprecated__ __attribute__warn_unused_result__; @@ -1500,6 +1617,13 @@ PERL_CALLCONV bool Perl_is_utf8_idfirst(pTHX_ const U8 *p) #define PERL_ARGS_ASSERT_IS_UTF8_IDFIRST \ assert(p) +#ifndef PERL_NO_INLINE_FUNCTIONS +PERL_STATIC_INLINE bool S_is_utf8_invariant_string(const U8* const s, STRLEN const len) + __attribute__warn_unused_result__; +#define PERL_ARGS_ASSERT_IS_UTF8_INVARIANT_STRING \ + assert(s) +#endif + PERL_CALLCONV bool Perl_is_utf8_lower(pTHX_ const U8 *p) __attribute__deprecated__ __attribute__warn_unused_result__; @@ -1548,21 +1672,53 @@ PERL_CALLCONV bool Perl_is_utf8_space(pTHX_ const U8 *p) #define PERL_ARGS_ASSERT_IS_UTF8_SPACE \ assert(p) -PERL_CALLCONV bool Perl_is_utf8_string(const U8 *s, STRLEN len); +#ifndef PERL_NO_INLINE_FUNCTIONS +PERL_STATIC_INLINE bool Perl_is_utf8_string(const U8 *s, const STRLEN len) + __attribute__warn_unused_result__; #define PERL_ARGS_ASSERT_IS_UTF8_STRING \ assert(s) -/* PERL_CALLCONV bool Perl_is_utf8_string_loc(const U8 *s, STRLEN len, const U8 **ep); */ -#define PERL_ARGS_ASSERT_IS_UTF8_STRING_LOC \ +#endif + +#ifndef PERL_NO_INLINE_FUNCTIONS +PERL_STATIC_INLINE bool S_is_utf8_string_flags(const U8 *s, const STRLEN len, const U32 flags) + __attribute__warn_unused_result__; +#define PERL_ARGS_ASSERT_IS_UTF8_STRING_FLAGS \ assert(s) -PERL_CALLCONV bool Perl_is_utf8_string_loclen(const U8 *s, STRLEN len, const U8 **ep, STRLEN *el); +#endif + +#ifndef NO_MATHOMS +PERL_CALLCONV bool Perl_is_utf8_string_loc(const U8 *s, const STRLEN len, const U8 **ep); +#define PERL_ARGS_ASSERT_IS_UTF8_STRING_LOC \ + assert(s); assert(ep) +#endif +/* PERL_CALLCONV bool is_utf8_string_loc_flags(const U8 *s, const STRLEN len, const U8 **ep, const U32 flags); */ +#ifndef PERL_NO_INLINE_FUNCTIONS +PERL_STATIC_INLINE bool Perl_is_utf8_string_loclen(const U8 *s, const STRLEN len, const U8 **ep, STRLEN *el); #define PERL_ARGS_ASSERT_IS_UTF8_STRING_LOCLEN \ assert(s) +#endif +#ifndef PERL_NO_INLINE_FUNCTIONS +PERL_STATIC_INLINE bool S_is_utf8_string_loclen_flags(const U8 *s, const STRLEN len, const U8 **ep, STRLEN *el, const U32 flags); +#define PERL_ARGS_ASSERT_IS_UTF8_STRING_LOCLEN_FLAGS \ + assert(s) +#endif PERL_CALLCONV bool Perl_is_utf8_upper(pTHX_ const U8 *p) __attribute__deprecated__ __attribute__warn_unused_result__; #define PERL_ARGS_ASSERT_IS_UTF8_UPPER \ assert(p) +/* PERL_CALLCONV bool is_utf8_valid_partial_char(const U8 * const s, const U8 * const e) + __attribute__warn_unused_result__ + __attribute__pure__; */ + +#ifndef PERL_NO_INLINE_FUNCTIONS +PERL_STATIC_INLINE bool S_is_utf8_valid_partial_char_flags(const U8 * const s, const U8 * const e, const U32 flags) + __attribute__warn_unused_result__; +#define PERL_ARGS_ASSERT_IS_UTF8_VALID_PARTIAL_CHAR_FLAGS \ + assert(s); assert(e) +#endif + PERL_CALLCONV bool Perl_is_utf8_xdigit(pTHX_ const U8 *p) __attribute__deprecated__ __attribute__warn_unused_result__; @@ -1581,7 +1737,10 @@ PERL_CALLCONV bool Perl_is_utf8_xidfirst(pTHX_ const U8 *p) #define PERL_ARGS_ASSERT_IS_UTF8_XIDFIRST \ assert(p) -PERL_CALLCONV bool Perl_isinfnan(NV nv); +PERL_CALLCONV bool Perl_isinfnan(NV nv) + __attribute__warn_unused_result__ + __attribute__pure__; + PERL_CALLCONV bool Perl_isinfnansv(pTHX_ SV *sv); #define PERL_ARGS_ASSERT_ISINFNANSV \ assert(sv) @@ -1589,6 +1748,7 @@ PERL_CALLCONV OP* Perl_jmaybe(pTHX_ OP *o); #define PERL_ARGS_ASSERT_JMAYBE \ assert(o) PERL_CALLCONV I32 Perl_keyword(pTHX_ const char *name, I32 len, bool all_keywords) + __attribute__warn_unused_result__ __attribute__pure__; #define PERL_ARGS_ASSERT_KEYWORD \ assert(name) @@ -1914,7 +2074,9 @@ PERL_CALLCONV_NO_RET void Perl_my_failure_exit(pTHX) PERL_CALLCONV I32 Perl_my_fflush_all(pTHX); PERL_CALLCONV Pid_t Perl_my_fork(void); -/* PERL_CALLCONV I32 Perl_my_lstat(pTHX); */ +#ifndef NO_MATHOMS +PERL_CALLCONV I32 Perl_my_lstat(pTHX); +#endif PERL_CALLCONV I32 Perl_my_lstat_flags(pTHX_ const U32 flags); PERL_CALLCONV PerlIO* Perl_my_popen_list(pTHX_ const char* mode, int n, SV ** args); #define PERL_ARGS_ASSERT_MY_POPEN_LIST \ @@ -1926,7 +2088,9 @@ PERL_CALLCONV int Perl_my_snprintf(char *buffer, const Size_t len, const char *f assert(buffer); assert(format) PERL_CALLCONV int Perl_my_socketpair(int family, int type, int protocol, int fd[2]); -/* PERL_CALLCONV I32 Perl_my_stat(pTHX); */ +#ifndef NO_MATHOMS +PERL_CALLCONV I32 Perl_my_stat(pTHX); +#endif PERL_CALLCONV I32 Perl_my_stat_flags(pTHX_ const U32 flags); PERL_CALLCONV char* Perl_my_strerror(pTHX_ const int errnum); PERL_CALLCONV char * Perl_my_strftime(pTHX_ const char *fmt, int sec, int min, int hour, int mday, int mon, int year, int wday, int yday, int isdst) @@ -1940,35 +2104,31 @@ PERL_CALLCONV int Perl_my_vsnprintf(char *buffer, const Size_t len, const char * assert(buffer); assert(format) PERL_CALLCONV OP* Perl_newANONATTRSUB(pTHX_ I32 floor, OP *proto, OP *attrs, OP *block); PERL_CALLCONV OP* Perl_newANONHASH(pTHX_ OP* o) - __attribute__malloc__ __attribute__warn_unused_result__; PERL_CALLCONV OP* Perl_newANONLIST(pTHX_ OP* o) - __attribute__malloc__ __attribute__warn_unused_result__; PERL_CALLCONV OP* Perl_newANONSUB(pTHX_ I32 floor, OP* proto, OP* block); PERL_CALLCONV OP* Perl_newASSIGNOP(pTHX_ I32 flags, OP* left, I32 optype, OP* right) - __attribute__malloc__ __attribute__warn_unused_result__; /* PERL_CALLCONV CV* newATTRSUB(pTHX_ I32 floor, OP *o, OP *proto, OP *attrs, OP *block); */ PERL_CALLCONV CV* Perl_newATTRSUB_x(pTHX_ I32 floor, OP *o, OP *proto, OP *attrs, OP *block, bool o_is_gv); -/* PERL_CALLCONV AV* Perl_newAV(pTHX) - __attribute__warn_unused_result__; */ +#ifndef NO_MATHOMS +PERL_CALLCONV AV* Perl_newAV(pTHX) + __attribute__warn_unused_result__; +#endif PERL_CALLCONV OP* Perl_newAVREF(pTHX_ OP* o) - __attribute__malloc__ __attribute__warn_unused_result__; #define PERL_ARGS_ASSERT_NEWAVREF \ assert(o) PERL_CALLCONV OP* Perl_newBINOP(pTHX_ I32 type, I32 flags, OP* first, OP* last) - __attribute__malloc__ __attribute__warn_unused_result__; PERL_CALLCONV OP* Perl_newCONDOP(pTHX_ I32 flags, OP* first, OP* trueop, OP* falseop) - __attribute__malloc__ __attribute__warn_unused_result__; #define PERL_ARGS_ASSERT_NEWCONDOP \ assert(first) @@ -1976,7 +2136,6 @@ PERL_CALLCONV OP* Perl_newCONDOP(pTHX_ I32 flags, OP* first, OP* trueop, OP* fal PERL_CALLCONV CV* Perl_newCONSTSUB(pTHX_ HV* stash, const char* name, SV* sv); PERL_CALLCONV CV* Perl_newCONSTSUB_flags(pTHX_ HV* stash, const char* name, STRLEN len, U32 flags, SV* sv); PERL_CALLCONV OP* Perl_newCVREF(pTHX_ I32 flags, OP* o) - __attribute__malloc__ __attribute__warn_unused_result__; PERL_CALLCONV OP* Perl_newDEFSVOP(pTHX) @@ -1984,13 +2143,11 @@ PERL_CALLCONV OP* Perl_newDEFSVOP(pTHX) PERL_CALLCONV void Perl_newFORM(pTHX_ I32 floor, OP* o, OP* block); PERL_CALLCONV OP* Perl_newFOROP(pTHX_ I32 flags, OP* sv, OP* expr, OP* block, OP* cont) - __attribute__malloc__ __attribute__warn_unused_result__; #define PERL_ARGS_ASSERT_NEWFOROP \ assert(expr) PERL_CALLCONV OP* Perl_newGIVENOP(pTHX_ OP* cond, OP* block, PADOFFSET defsv_off) - __attribute__malloc__ __attribute__warn_unused_result__; #define PERL_ARGS_ASSERT_NEWGIVENOP \ assert(cond); assert(block) @@ -1999,67 +2156,59 @@ PERL_CALLCONV GP * Perl_newGP(pTHX_ GV *const gv); #define PERL_ARGS_ASSERT_NEWGP \ assert(gv) PERL_CALLCONV OP* Perl_newGVOP(pTHX_ I32 type, I32 flags, GV* gv) - __attribute__malloc__ __attribute__warn_unused_result__; #define PERL_ARGS_ASSERT_NEWGVOP \ assert(gv) PERL_CALLCONV OP* Perl_newGVREF(pTHX_ I32 type, OP* o) - __attribute__malloc__ __attribute__warn_unused_result__; /* PERL_CALLCONV GV* newGVgen(pTHX_ const char* pack); */ PERL_CALLCONV GV* Perl_newGVgen_flags(pTHX_ const char* pack, U32 flags) - __attribute__malloc__ __attribute__warn_unused_result__; #define PERL_ARGS_ASSERT_NEWGVGEN_FLAGS \ assert(pack) -/* PERL_CALLCONV HV* Perl_newHV(pTHX) - __attribute__warn_unused_result__; */ +#ifndef NO_MATHOMS +PERL_CALLCONV HV* Perl_newHV(pTHX) + __attribute__warn_unused_result__; +#endif PERL_CALLCONV OP* Perl_newHVREF(pTHX_ OP* o) - __attribute__malloc__ __attribute__warn_unused_result__; #define PERL_ARGS_ASSERT_NEWHVREF \ assert(o) PERL_CALLCONV HV* Perl_newHVhv(pTHX_ HV *hv) - __attribute__malloc__ __attribute__warn_unused_result__; -/* PERL_CALLCONV IO* Perl_newIO(pTHX) - __attribute__malloc__ - __attribute__warn_unused_result__; */ +#ifndef NO_MATHOMS +PERL_CALLCONV IO* Perl_newIO(pTHX) + __attribute__warn_unused_result__; +#endif PERL_CALLCONV OP* Perl_newLISTOP(pTHX_ I32 type, I32 flags, OP* first, OP* last) - __attribute__malloc__ __attribute__warn_unused_result__; PERL_CALLCONV OP* Perl_newLOGOP(pTHX_ I32 optype, I32 flags, OP *first, OP *other) - __attribute__malloc__ __attribute__warn_unused_result__; #define PERL_ARGS_ASSERT_NEWLOGOP \ assert(first); assert(other) PERL_CALLCONV OP* Perl_newLOOPEX(pTHX_ I32 type, OP* label) - __attribute__malloc__ __attribute__warn_unused_result__; #define PERL_ARGS_ASSERT_NEWLOOPEX \ assert(label) PERL_CALLCONV OP* Perl_newLOOPOP(pTHX_ I32 flags, I32 debuggable, OP* expr, OP* block) - __attribute__malloc__ __attribute__warn_unused_result__; PERL_CALLCONV OP* Perl_newMETHOP(pTHX_ I32 type, I32 flags, OP* dynamic_meth) - __attribute__malloc__ __attribute__warn_unused_result__; #define PERL_ARGS_ASSERT_NEWMETHOP \ assert(dynamic_meth) PERL_CALLCONV OP* Perl_newMETHOP_named(pTHX_ I32 type, I32 flags, SV* const_meth) - __attribute__malloc__ __attribute__warn_unused_result__; #define PERL_ARGS_ASSERT_NEWMETHOP_NAMED \ assert(const_meth) @@ -2068,162 +2217,132 @@ PERL_CALLCONV CV * Perl_newMYSUB(pTHX_ I32 floor, OP *o, OP *proto, OP *attrs, O #define PERL_ARGS_ASSERT_NEWMYSUB \ assert(o) PERL_CALLCONV OP* Perl_newNULLLIST(pTHX) - __attribute__malloc__ __attribute__warn_unused_result__; PERL_CALLCONV OP* Perl_newOP(pTHX_ I32 optype, I32 flags) - __attribute__malloc__ __attribute__warn_unused_result__; PERL_CALLCONV PADNAMELIST * Perl_newPADNAMELIST(size_t max) - __attribute__malloc__ __attribute__warn_unused_result__; PERL_CALLCONV PADNAME * Perl_newPADNAMEouter(PADNAME *outer) - __attribute__malloc__ __attribute__warn_unused_result__; #define PERL_ARGS_ASSERT_NEWPADNAMEOUTER \ assert(outer) PERL_CALLCONV PADNAME * Perl_newPADNAMEpvn(const char *s, STRLEN len) - __attribute__malloc__ __attribute__warn_unused_result__; #define PERL_ARGS_ASSERT_NEWPADNAMEPVN \ assert(s) PERL_CALLCONV OP* Perl_newPMOP(pTHX_ I32 type, I32 flags) - __attribute__malloc__ __attribute__warn_unused_result__; PERL_CALLCONV void Perl_newPROG(pTHX_ OP* o); #define PERL_ARGS_ASSERT_NEWPROG \ assert(o) PERL_CALLCONV OP* Perl_newPVOP(pTHX_ I32 type, I32 flags, char* pv) - __attribute__malloc__ __attribute__warn_unused_result__; PERL_CALLCONV OP* Perl_newRANGE(pTHX_ I32 flags, OP* left, OP* right) - __attribute__malloc__ __attribute__warn_unused_result__; #define PERL_ARGS_ASSERT_NEWRANGE \ assert(left); assert(right) PERL_CALLCONV SV* Perl_newRV(pTHX_ SV *const sv) - __attribute__malloc__ __attribute__warn_unused_result__; #define PERL_ARGS_ASSERT_NEWRV \ assert(sv) PERL_CALLCONV SV* Perl_newRV_noinc(pTHX_ SV *const tmpRef) - __attribute__malloc__ __attribute__warn_unused_result__; #define PERL_ARGS_ASSERT_NEWRV_NOINC \ assert(tmpRef) PERL_CALLCONV OP* Perl_newSLICEOP(pTHX_ I32 flags, OP* subscript, OP* listop) - __attribute__malloc__ __attribute__warn_unused_result__; PERL_CALLCONV OP* Perl_newSTATEOP(pTHX_ I32 flags, char* label, OP* o) - __attribute__malloc__ __attribute__warn_unused_result__; PERL_CALLCONV CV* Perl_newSTUB(pTHX_ GV *gv, bool fake); #define PERL_ARGS_ASSERT_NEWSTUB \ assert(gv) -/* PERL_CALLCONV CV* Perl_newSUB(pTHX_ I32 floor, OP* o, OP* proto, OP* block); */ +#ifndef NO_MATHOMS +PERL_CALLCONV CV* Perl_newSUB(pTHX_ I32 floor, OP* o, OP* proto, OP* block); +#endif PERL_CALLCONV SV* Perl_newSV(pTHX_ const STRLEN len) - __attribute__malloc__ __attribute__warn_unused_result__; PERL_CALLCONV OP* Perl_newSVOP(pTHX_ I32 type, I32 flags, SV* sv) - __attribute__malloc__ __attribute__warn_unused_result__; #define PERL_ARGS_ASSERT_NEWSVOP \ assert(sv) PERL_CALLCONV OP* Perl_newSVREF(pTHX_ OP* o) - __attribute__malloc__ __attribute__warn_unused_result__; #define PERL_ARGS_ASSERT_NEWSVREF \ assert(o) PERL_CALLCONV SV* Perl_newSV_type(pTHX_ const svtype type) - __attribute__malloc__ __attribute__warn_unused_result__; PERL_CALLCONV SV* Perl_newSVavdefelem(pTHX_ AV *av, SSize_t ix, bool extendible) - __attribute__malloc__ __attribute__warn_unused_result__; #define PERL_ARGS_ASSERT_NEWSVAVDEFELEM \ assert(av) PERL_CALLCONV SV* Perl_newSVhek(pTHX_ const HEK *const hek) - __attribute__malloc__ __attribute__warn_unused_result__; PERL_CALLCONV SV* Perl_newSViv(pTHX_ const IV i) - __attribute__malloc__ __attribute__warn_unused_result__; PERL_CALLCONV SV* Perl_newSVnv(pTHX_ const NV n) - __attribute__malloc__ __attribute__warn_unused_result__; PERL_CALLCONV SV* Perl_newSVpv(pTHX_ const char *const s, const STRLEN len) - __attribute__malloc__ __attribute__warn_unused_result__; PERL_CALLCONV SV* Perl_newSVpv_share(pTHX_ const char* s, U32 hash) - __attribute__malloc__ __attribute__warn_unused_result__; PERL_CALLCONV SV* Perl_newSVpvf(pTHX_ const char *const pat, ...) - __attribute__malloc__ __attribute__warn_unused_result__ __attribute__format__(__printf__,pTHX_1,pTHX_2); #define PERL_ARGS_ASSERT_NEWSVPVF \ assert(pat) PERL_CALLCONV SV* Perl_newSVpvn(pTHX_ const char *const s, const STRLEN len) - __attribute__malloc__ __attribute__warn_unused_result__; PERL_CALLCONV SV* Perl_newSVpvn_flags(pTHX_ const char *const s, const STRLEN len, const U32 flags) - __attribute__malloc__ __attribute__warn_unused_result__; PERL_CALLCONV SV* Perl_newSVpvn_share(pTHX_ const char* s, I32 len, U32 hash) - __attribute__malloc__ __attribute__warn_unused_result__; PERL_CALLCONV SV* Perl_newSVrv(pTHX_ SV *const rv, const char *const classname); #define PERL_ARGS_ASSERT_NEWSVRV \ assert(rv) PERL_CALLCONV SV* Perl_newSVsv(pTHX_ SV *const old) - __attribute__malloc__ __attribute__warn_unused_result__; PERL_CALLCONV SV* Perl_newSVuv(pTHX_ const UV u) - __attribute__malloc__ __attribute__warn_unused_result__; PERL_CALLCONV OP* Perl_newUNOP(pTHX_ I32 type, I32 flags, OP* first) - __attribute__malloc__ __attribute__warn_unused_result__; PERL_CALLCONV OP* Perl_newUNOP_AUX(pTHX_ I32 type, I32 flags, OP* first, UNOP_AUX_item *aux) - __attribute__malloc__ __attribute__warn_unused_result__; PERL_CALLCONV OP* Perl_newWHENOP(pTHX_ OP* cond, OP* block) - __attribute__malloc__ __attribute__warn_unused_result__; #define PERL_ARGS_ASSERT_NEWWHENOP \ assert(block) PERL_CALLCONV OP* Perl_newWHILEOP(pTHX_ I32 flags, I32 debuggable, LOOP* loop, OP* expr, OP* block, OP* cont, I32 has_my) - __attribute__malloc__ __attribute__warn_unused_result__; PERL_CALLCONV CV* Perl_newXS(pTHX_ const char *name, XSUBADDR_t subaddr, const char *filename); @@ -2244,14 +2363,12 @@ PERL_CALLCONV void Perl_new_ctype(pTHX_ const char* newctype); assert(newctype) PERL_CALLCONV void Perl_new_numeric(pTHX_ const char* newcoll); PERL_CALLCONV PERL_SI* Perl_new_stackinfo(pTHX_ I32 stitems, I32 cxitems) - __attribute__malloc__ __attribute__warn_unused_result__; PERL_CALLCONV SV* Perl_new_version(pTHX_ SV *ver); #define PERL_ARGS_ASSERT_NEW_VERSION \ assert(ver) PERL_CALLCONV STRLEN * Perl_new_warnings_bitfield(pTHX_ STRLEN *buffer, const char *const bits, STRLEN size) - __attribute__malloc__ __attribute__warn_unused_result__; #define PERL_ARGS_ASSERT_NEW_WARNINGS_BITFIELD \ assert(bits) @@ -2259,11 +2376,6 @@ PERL_CALLCONV STRLEN * Perl_new_warnings_bitfield(pTHX_ STRLEN *buffer, const ch PERL_CALLCONV PerlIO* Perl_nextargv(pTHX_ GV* gv, bool nomagicopen); #define PERL_ARGS_ASSERT_NEXTARGV \ assert(gv) -PERL_CALLCONV char* Perl_ninstr(const char* big, const char* bigend, const char* little, const char* lend) - __attribute__pure__; -#define PERL_ARGS_ASSERT_NINSTR \ - assert(big); assert(bigend); assert(little); assert(lend) - PERL_CALLCONV_NO_RET void Perl_noperl_die(const char* pat, ...) __attribute__noreturn__ __attribute__format__(__printf__,1,2); @@ -2271,6 +2383,7 @@ PERL_CALLCONV_NO_RET void Perl_noperl_die(const char* pat, ...) assert(pat) PERL_CALLCONV int Perl_nothreadhook(pTHX); +PERL_CALLCONV void Perl_notify_parser_that_changed_to_utf8(pTHX); PERL_CALLCONV OP* Perl_oopsAV(pTHX_ OP* o) __attribute__warn_unused_result__; #define PERL_ARGS_ASSERT_OOPSAV \ @@ -2283,6 +2396,7 @@ PERL_CALLCONV OP* Perl_oopsHV(pTHX_ OP* o) PERL_CALLCONV OP* Perl_op_append_elem(pTHX_ I32 optype, OP* first, OP* last); PERL_CALLCONV OP* Perl_op_append_list(pTHX_ I32 optype, OP* first, OP* last); +PERL_CALLCONV OPclass Perl_op_class(pTHX_ const OP *o); PERL_CALLCONV void Perl_op_clear(pTHX_ OP* o); #define PERL_ARGS_ASSERT_OP_CLEAR \ assert(o) @@ -2339,8 +2453,10 @@ PERL_CALLCONV void Perl_pad_add_weakref(pTHX_ CV* func); assert(func) PERL_CALLCONV PADOFFSET Perl_pad_alloc(pTHX_ I32 optype, U32 tmptype); PERL_CALLCONV void Perl_pad_block_start(pTHX_ int full); +#ifndef NO_MATHOMS PERL_CALLCONV HV* Perl_pad_compname_type(pTHX_ const PADOFFSET po) __attribute__warn_unused_result__; +#endif PERL_CALLCONV PADOFFSET Perl_pad_findmy_pv(pTHX_ const char* name, U32 flags); #define PERL_ARGS_ASSERT_PAD_FINDMY_PV \ @@ -2357,7 +2473,6 @@ PERL_CALLCONV void Perl_pad_fixup_inner_anons(pTHX_ PADLIST *padlist, CV *old_cv PERL_CALLCONV void Perl_pad_free(pTHX_ PADOFFSET po); PERL_CALLCONV OP * Perl_pad_leavemy(pTHX); PERL_CALLCONV PADLIST* Perl_pad_new(pTHX_ int flags) - __attribute__malloc__ __attribute__warn_unused_result__; PERL_CALLCONV void Perl_pad_push(pTHX_ PADLIST *padlist, int depth); @@ -2390,9 +2505,6 @@ PERL_CALLCONV OP* Perl_parse_fullstmt(pTHX_ U32 flags); PERL_CALLCONV SV* Perl_parse_label(pTHX_ U32 flags); PERL_CALLCONV OP* Perl_parse_listexpr(pTHX_ U32 flags); PERL_CALLCONV OP* Perl_parse_stmtseq(pTHX_ U32 flags); -PERL_CALLCONV OP * Perl_parse_subsignature(pTHX) - __attribute__warn_unused_result__; - PERL_CALLCONV OP* Perl_parse_termexpr(pTHX_ U32 flags); PERL_CALLCONV U32 Perl_parse_unicode_opts(pTHX_ const char **popt); #define PERL_ARGS_ASSERT_PARSE_UNICODE_OPTS \ @@ -2418,7 +2530,7 @@ PERL_CALLCONV int perl_run(PerlInterpreter *my_perl); #define PERL_ARGS_ASSERT_PERL_RUN \ assert(my_perl) PERL_CALLCONV void Perl_pmop_dump(pTHX_ PMOP* pm); -PERL_CALLCONV OP* Perl_pmruntime(pTHX_ OP *o, OP *expr, OP *repl, bool isreg, I32 floor); +PERL_CALLCONV OP* Perl_pmruntime(pTHX_ OP *o, OP *expr, OP *repl, UV flags, I32 floor); #define PERL_ARGS_ASSERT_PMRUNTIME \ assert(o); assert(expr) PERL_CALLCONV void Perl_pop_scope(pTHX); @@ -2448,7 +2560,6 @@ PERL_CALLCONV void* Perl_ptr_table_fetch(pTHX_ PTR_TBL_t *const tbl, const void PERL_CALLCONV void Perl_ptr_table_free(pTHX_ PTR_TBL_t *const tbl); PERL_CALLCONV PTR_TBL_t* Perl_ptr_table_new(pTHX) - __attribute__malloc__ __attribute__warn_unused_result__; PERL_CALLCONV void Perl_ptr_table_split(pTHX_ PTR_TBL_t *const tbl); @@ -2486,7 +2597,6 @@ PERL_CALLCONV REGEXP* Perl_re_op_compile(pTHX_ SV ** const patternp, int pat_cou #define PERL_ARGS_ASSERT_RE_OP_COMPILE \ assert(eng) PERL_CALLCONV Malloc_t Perl_realloc(Malloc_t where, MEM_SIZE nbytes) - __attribute__malloc__ __attribute__warn_unused_result__; PERL_CALLCONV void Perl_reentrant_free(pTHX); @@ -2495,7 +2605,9 @@ PERL_CALLCONV void* Perl_reentrant_retry(const char *f, ...); #define PERL_ARGS_ASSERT_REENTRANT_RETRY \ assert(f) PERL_CALLCONV void Perl_reentrant_size(pTHX); -/* PERL_CALLCONV OP* Perl_ref(pTHX_ OP* o, I32 type); */ +#ifndef NO_MATHOMS +PERL_CALLCONV OP* Perl_ref(pTHX_ OP* o, I32 type); +#endif PERL_CALLCONV HV * Perl_refcounted_he_chain_2hv(pTHX_ const struct refcounted_he *c, U32 flags); PERL_CALLCONV SV * Perl_refcounted_he_fetch_pv(pTHX_ const struct refcounted_he *chain, const char *key, U32 hash, U32 flags); #define PERL_ARGS_ASSERT_REFCOUNTED_HE_FETCH_PV \ @@ -2582,6 +2694,7 @@ PERL_CALLCONV void Perl_require_pv(pTHX_ const char* pv); #define PERL_ARGS_ASSERT_REQUIRE_PV \ assert(pv) PERL_CALLCONV char* Perl_rninstr(const char* big, const char* bigend, const char* little, const char* lend) + __attribute__warn_unused_result__ __attribute__pure__; #define PERL_ARGS_ASSERT_RNINSTR \ assert(big); assert(bigend); assert(little); assert(lend) @@ -2611,7 +2724,6 @@ PERL_CALLCONV Malloc_t Perl_safesysmalloc(MEM_SIZE nbytes) __attribute__warn_unused_result__; PERL_CALLCONV Malloc_t Perl_safesysrealloc(Malloc_t where, MEM_SIZE nbytes) - __attribute__malloc__ __attribute__warn_unused_result__; PERL_CALLCONV void Perl_save_I16(pTHX_ I16* intp); @@ -2650,9 +2762,15 @@ PERL_CALLCONV void Perl_save_destructor(pTHX_ DESTRUCTORFUNC_NOCONTEXT_t f, void #define PERL_ARGS_ASSERT_SAVE_DESTRUCTOR \ assert(p) PERL_CALLCONV void Perl_save_destructor_x(pTHX_ DESTRUCTORFUNC_t f, void* p); -/* PERL_CALLCONV void Perl_save_freeop(pTHX_ OP* o); */ -/* PERL_CALLCONV void Perl_save_freepv(pTHX_ char* pv); */ -/* PERL_CALLCONV void Perl_save_freesv(pTHX_ SV* sv); */ +#ifndef NO_MATHOMS +PERL_CALLCONV void Perl_save_freeop(pTHX_ OP* o); +#endif +#ifndef NO_MATHOMS +PERL_CALLCONV void Perl_save_freepv(pTHX_ char* pv); +#endif +#ifndef NO_MATHOMS +PERL_CALLCONV void Perl_save_freesv(pTHX_ SV* sv); +#endif PERL_CALLCONV void Perl_save_generic_pvref(pTHX_ char** str); #define PERL_ARGS_ASSERT_SAVE_GENERIC_PVREF \ assert(str) @@ -2691,13 +2809,17 @@ PERL_CALLCONV void Perl_save_list(pTHX_ SV** sarg, I32 maxsarg); PERL_CALLCONV void Perl_save_long(pTHX_ long* longp); #define PERL_ARGS_ASSERT_SAVE_LONG \ assert(longp) -/* PERL_CALLCONV void Perl_save_mortalizesv(pTHX_ SV* sv); */ +#ifndef NO_MATHOMS +PERL_CALLCONV void Perl_save_mortalizesv(pTHX_ SV* sv); #define PERL_ARGS_ASSERT_SAVE_MORTALIZESV \ assert(sv) +#endif PERL_CALLCONV void Perl_save_nogv(pTHX_ GV* gv); #define PERL_ARGS_ASSERT_SAVE_NOGV \ assert(gv) -/* PERL_CALLCONV void Perl_save_op(pTHX); */ +#ifndef NO_MATHOMS +PERL_CALLCONV void Perl_save_op(pTHX); +#endif PERL_CALLCONV void Perl_save_padsv_and_mortalize(pTHX_ PADOFFSET off); PERL_CALLCONV void Perl_save_pptr(pTHX_ char** pptr); #define PERL_ARGS_ASSERT_SAVE_PPTR \ @@ -2826,9 +2948,11 @@ PERL_CALLCONV CV* Perl_sv_2cv(pTHX_ SV* sv, HV **const st, GV **const gvp, const PERL_CALLCONV IO* Perl_sv_2io(pTHX_ SV *const sv); #define PERL_ARGS_ASSERT_SV_2IO \ assert(sv) -/* PERL_CALLCONV IV Perl_sv_2iv(pTHX_ SV *sv); */ +#ifndef NO_MATHOMS +PERL_CALLCONV IV Perl_sv_2iv(pTHX_ SV *sv); #define PERL_ARGS_ASSERT_SV_2IV \ assert(sv) +#endif PERL_CALLCONV IV Perl_sv_2iv_flags(pTHX_ SV *const sv, const I32 flags); #define PERL_ARGS_ASSERT_SV_2IV_FLAGS \ assert(sv) @@ -2839,36 +2963,46 @@ PERL_CALLCONV SV* Perl_sv_2num(pTHX_ SV *const sv); PERL_CALLCONV NV Perl_sv_2nv_flags(pTHX_ SV *const sv, const I32 flags); #define PERL_ARGS_ASSERT_SV_2NV_FLAGS \ assert(sv) -/* PERL_CALLCONV char* Perl_sv_2pv(pTHX_ SV *sv, STRLEN *lp); */ +#ifndef NO_MATHOMS +PERL_CALLCONV char* Perl_sv_2pv(pTHX_ SV *sv, STRLEN *lp); #define PERL_ARGS_ASSERT_SV_2PV \ assert(sv) +#endif PERL_CALLCONV char* Perl_sv_2pv_flags(pTHX_ SV *const sv, STRLEN *const lp, const I32 flags); #define PERL_ARGS_ASSERT_SV_2PV_FLAGS \ assert(sv) -/* PERL_CALLCONV char* Perl_sv_2pv_nolen(pTHX_ SV* sv) - __attribute__warn_unused_result__; */ +#ifndef NO_MATHOMS +PERL_CALLCONV char* Perl_sv_2pv_nolen(pTHX_ SV* sv) + __attribute__warn_unused_result__; #define PERL_ARGS_ASSERT_SV_2PV_NOLEN \ assert(sv) +#endif PERL_CALLCONV char* Perl_sv_2pvbyte(pTHX_ SV *sv, STRLEN *const lp); #define PERL_ARGS_ASSERT_SV_2PVBYTE \ assert(sv) -/* PERL_CALLCONV char* Perl_sv_2pvbyte_nolen(pTHX_ SV* sv) - __attribute__warn_unused_result__; */ +#ifndef NO_MATHOMS +PERL_CALLCONV char* Perl_sv_2pvbyte_nolen(pTHX_ SV* sv) + __attribute__warn_unused_result__; #define PERL_ARGS_ASSERT_SV_2PVBYTE_NOLEN \ assert(sv) +#endif PERL_CALLCONV char* Perl_sv_2pvutf8(pTHX_ SV *sv, STRLEN *const lp); #define PERL_ARGS_ASSERT_SV_2PVUTF8 \ assert(sv) -/* PERL_CALLCONV char* Perl_sv_2pvutf8_nolen(pTHX_ SV* sv) - __attribute__warn_unused_result__; */ +#ifndef NO_MATHOMS +PERL_CALLCONV char* Perl_sv_2pvutf8_nolen(pTHX_ SV* sv) + __attribute__warn_unused_result__; #define PERL_ARGS_ASSERT_SV_2PVUTF8_NOLEN \ assert(sv) +#endif -/* PERL_CALLCONV UV Perl_sv_2uv(pTHX_ SV *sv); */ +#ifndef NO_MATHOMS +PERL_CALLCONV UV Perl_sv_2uv(pTHX_ SV *sv); #define PERL_ARGS_ASSERT_SV_2UV \ assert(sv) +#endif PERL_CALLCONV UV Perl_sv_2uv_flags(pTHX_ SV *const sv, const I32 flags); #define PERL_ARGS_ASSERT_SV_2UV_FLAGS \ assert(sv) @@ -2900,24 +3034,32 @@ PERL_CALLCONV void Perl_sv_catpvf_mg(pTHX_ SV *const sv, const char *const pat, #define PERL_ARGS_ASSERT_SV_CATPVF_MG \ assert(sv); assert(pat) -/* PERL_CALLCONV void Perl_sv_catpvn(pTHX_ SV *dsv, const char *sstr, STRLEN len); */ +#ifndef NO_MATHOMS +PERL_CALLCONV void Perl_sv_catpvn(pTHX_ SV *dsv, const char *sstr, STRLEN len); #define PERL_ARGS_ASSERT_SV_CATPVN \ assert(dsv); assert(sstr) +#endif PERL_CALLCONV void Perl_sv_catpvn_flags(pTHX_ SV *const dstr, const char *sstr, const STRLEN len, const I32 flags); #define PERL_ARGS_ASSERT_SV_CATPVN_FLAGS \ assert(dstr); assert(sstr) -/* PERL_CALLCONV void Perl_sv_catpvn_mg(pTHX_ SV *sv, const char *ptr, STRLEN len); */ +#ifndef NO_MATHOMS +PERL_CALLCONV void Perl_sv_catpvn_mg(pTHX_ SV *sv, const char *ptr, STRLEN len); #define PERL_ARGS_ASSERT_SV_CATPVN_MG \ assert(sv); assert(ptr) -/* PERL_CALLCONV void Perl_sv_catsv(pTHX_ SV *dstr, SV *sstr); */ +#endif +#ifndef NO_MATHOMS +PERL_CALLCONV void Perl_sv_catsv(pTHX_ SV *dstr, SV *sstr); #define PERL_ARGS_ASSERT_SV_CATSV \ assert(dstr) +#endif PERL_CALLCONV void Perl_sv_catsv_flags(pTHX_ SV *const dsv, SV *const ssv, const I32 flags); #define PERL_ARGS_ASSERT_SV_CATSV_FLAGS \ assert(dsv) -/* PERL_CALLCONV void Perl_sv_catsv_mg(pTHX_ SV *dsv, SV *ssv); */ +#ifndef NO_MATHOMS +PERL_CALLCONV void Perl_sv_catsv_mg(pTHX_ SV *dsv, SV *ssv); #define PERL_ARGS_ASSERT_SV_CATSV_MG \ assert(dsv) +#endif PERL_CALLCONV void Perl_sv_chop(pTHX_ SV *const sv, const char *const ptr); #define PERL_ARGS_ASSERT_SV_CHOP \ assert(sv) @@ -2930,9 +3072,11 @@ PERL_CALLCONV I32 Perl_sv_cmp(pTHX_ SV *const sv1, SV *const sv2); PERL_CALLCONV I32 Perl_sv_cmp_flags(pTHX_ SV *const sv1, SV *const sv2, const U32 flags); PERL_CALLCONV I32 Perl_sv_cmp_locale(pTHX_ SV *const sv1, SV *const sv2); PERL_CALLCONV I32 Perl_sv_cmp_locale_flags(pTHX_ SV *const sv1, SV *const sv2, const U32 flags); -/* PERL_CALLCONV void Perl_sv_copypv(pTHX_ SV *const dsv, SV *const ssv); */ +#ifndef NO_MATHOMS +PERL_CALLCONV void Perl_sv_copypv(pTHX_ SV *const dsv, SV *const ssv); #define PERL_ARGS_ASSERT_SV_COPYPV \ assert(dsv); assert(ssv) +#endif PERL_CALLCONV void Perl_sv_copypv_flags(pTHX_ SV *const dsv, SV *const ssv, const I32 flags); #define PERL_ARGS_ASSERT_SV_COPYPV_FLAGS \ assert(dsv); assert(ssv) @@ -2984,13 +3128,13 @@ PERL_CALLCONV bool Perl_sv_does_sv(pTHX_ SV* sv, SV* namesv, U32 flags) assert(sv); assert(namesv) PERL_CALLCONV void Perl_sv_dump(pTHX_ SV* sv); -#define PERL_ARGS_ASSERT_SV_DUMP \ - assert(sv) /* PERL_CALLCONV I32 sv_eq(pTHX_ SV* sv1, SV* sv2); */ PERL_CALLCONV I32 Perl_sv_eq_flags(pTHX_ SV* sv1, SV* sv2, const U32 flags); -/* PERL_CALLCONV void Perl_sv_force_normal(pTHX_ SV *sv); */ +#ifndef NO_MATHOMS +PERL_CALLCONV void Perl_sv_force_normal(pTHX_ SV *sv); #define PERL_ARGS_ASSERT_SV_FORCE_NORMAL \ assert(sv) +#endif PERL_CALLCONV void Perl_sv_force_normal_flags(pTHX_ SV *const sv, const U32 flags); #define PERL_ARGS_ASSERT_SV_FORCE_NORMAL_FLAGS \ assert(sv) @@ -2999,11 +3143,9 @@ PERL_CALLCONV void Perl_sv_free2(pTHX_ SV *const sv, const U32 refcnt); #define PERL_ARGS_ASSERT_SV_FREE2 \ assert(sv) PERL_CALLCONV void Perl_sv_free_arenas(pTHX); -PERL_CALLCONV SV* Perl_sv_get_backrefs(SV *const sv) - __attribute__pure__; +PERL_CALLCONV SV* Perl_sv_get_backrefs(SV *const sv); #define PERL_ARGS_ASSERT_SV_GET_BACKREFS \ assert(sv) - PERL_CALLCONV char* Perl_sv_gets(pTHX_ SV *const sv, PerlIO *const fp, I32 append); #define PERL_ARGS_ASSERT_SV_GETS \ assert(sv); assert(fp) @@ -3012,10 +3154,12 @@ PERL_CALLCONV char* Perl_sv_grow(pTHX_ SV *const sv, STRLEN newlen); assert(sv) PERL_CALLCONV void Perl_sv_inc(pTHX_ SV *const sv); PERL_CALLCONV void Perl_sv_inc_nomg(pTHX_ SV *const sv); -/* PERL_CALLCONV void Perl_sv_insert(pTHX_ SV *const bigstr, const STRLEN offset, const STRLEN len, const char *const little, const STRLEN littlelen); */ +#ifndef NO_MATHOMS +PERL_CALLCONV void Perl_sv_insert(pTHX_ SV *const bigstr, const STRLEN offset, const STRLEN len, const char *const little, const STRLEN littlelen); #define PERL_ARGS_ASSERT_SV_INSERT \ assert(bigstr); assert(little) -PERL_CALLCONV void Perl_sv_insert_flags(pTHX_ SV *const bigstr, const STRLEN offset, const STRLEN len, const char *const little, const STRLEN littlelen, const U32 flags); +#endif +PERL_CALLCONV void Perl_sv_insert_flags(pTHX_ SV *const bigstr, const STRLEN offset, const STRLEN len, const char *little, const STRLEN littlelen, const U32 flags); #define PERL_ARGS_ASSERT_SV_INSERT_FLAGS \ assert(bigstr); assert(little) PERL_CALLCONV int Perl_sv_isa(pTHX_ SV* sv, const char *const name); @@ -3039,23 +3183,33 @@ PERL_CALLCONV MAGIC * Perl_sv_magicext(pTHX_ SV *const sv, SV *const obj, const PERL_CALLCONV MAGIC * Perl_sv_magicext_mglob(pTHX_ SV *sv); #define PERL_ARGS_ASSERT_SV_MAGICEXT_MGLOB \ assert(sv) -/* PERL_CALLCONV SV* Perl_sv_mortalcopy(pTHX_ SV *const oldsv) - __attribute__malloc__ - __attribute__warn_unused_result__; */ +#ifndef NO_MATHOMS +PERL_CALLCONV SV* Perl_sv_mortalcopy(pTHX_ SV *const oldsv) + __attribute__warn_unused_result__; +#endif PERL_CALLCONV SV* Perl_sv_mortalcopy_flags(pTHX_ SV *const oldsv, U32 flags) - __attribute__malloc__ __attribute__warn_unused_result__; PERL_CALLCONV SV* Perl_sv_newmortal(pTHX) __attribute__warn_unused_result__; PERL_CALLCONV SV* Perl_sv_newref(pTHX_ SV *const sv); -/* PERL_CALLCONV void Perl_sv_nolocking(pTHX_ SV *sv); */ +#ifndef NO_MATHOMS +PERL_CALLCONV void Perl_sv_nolocking(pTHX_ SV *sv); +#endif PERL_CALLCONV void Perl_sv_nosharing(pTHX_ SV *sv); +#ifndef NO_MATHOMS +PERL_CALLCONV void Perl_sv_nounlocking(pTHX_ SV *sv); +#endif PERL_CALLCONV NV Perl_sv_nv(pTHX_ SV* sv); #define PERL_ARGS_ASSERT_SV_NV \ assert(sv) +#ifndef PERL_NO_INLINE_FUNCTIONS +PERL_STATIC_INLINE bool S_sv_only_taint_gmagic(SV *sv); +#define PERL_ARGS_ASSERT_SV_ONLY_TAINT_GMAGIC \ + assert(sv) +#endif PERL_CALLCONV char* Perl_sv_peek(pTHX_ SV* sv); PERL_CALLCONV void Perl_sv_pos_b2u(pTHX_ SV *const sv, I32 *const offsetp); #define PERL_ARGS_ASSERT_SV_POS_B2U \ @@ -3069,15 +3223,19 @@ PERL_CALLCONV void Perl_sv_pos_u2b(pTHX_ SV *const sv, I32 *const offsetp, I32 * PERL_CALLCONV STRLEN Perl_sv_pos_u2b_flags(pTHX_ SV *const sv, STRLEN uoffset, STRLEN *const lenp, U32 flags); #define PERL_ARGS_ASSERT_SV_POS_U2B_FLAGS \ assert(sv) -/* PERL_CALLCONV char* Perl_sv_pv(pTHX_ SV *sv) - __attribute__warn_unused_result__; */ +#ifndef NO_MATHOMS +PERL_CALLCONV char* Perl_sv_pv(pTHX_ SV *sv) + __attribute__warn_unused_result__; #define PERL_ARGS_ASSERT_SV_PV \ assert(sv) +#endif -/* PERL_CALLCONV char* Perl_sv_pvbyte(pTHX_ SV *sv) - __attribute__warn_unused_result__; */ +#ifndef NO_MATHOMS +PERL_CALLCONV char* Perl_sv_pvbyte(pTHX_ SV *sv) + __attribute__warn_unused_result__; #define PERL_ARGS_ASSERT_SV_PVBYTE \ assert(sv) +#endif PERL_CALLCONV char* Perl_sv_pvbyten(pTHX_ SV *sv, STRLEN *lp); #define PERL_ARGS_ASSERT_SV_PVBYTEN \ @@ -3088,19 +3246,23 @@ PERL_CALLCONV char* Perl_sv_pvbyten_force(pTHX_ SV *const sv, STRLEN *const lp); PERL_CALLCONV char* Perl_sv_pvn(pTHX_ SV *sv, STRLEN *lp); #define PERL_ARGS_ASSERT_SV_PVN \ assert(sv); assert(lp) -/* PERL_CALLCONV char* Perl_sv_pvn_force(pTHX_ SV* sv, STRLEN* lp); */ +#ifndef NO_MATHOMS +PERL_CALLCONV char* Perl_sv_pvn_force(pTHX_ SV* sv, STRLEN* lp); #define PERL_ARGS_ASSERT_SV_PVN_FORCE \ assert(sv) +#endif PERL_CALLCONV char* Perl_sv_pvn_force_flags(pTHX_ SV *const sv, STRLEN *const lp, const I32 flags); #define PERL_ARGS_ASSERT_SV_PVN_FORCE_FLAGS \ assert(sv) PERL_CALLCONV char* Perl_sv_pvn_nomg(pTHX_ SV* sv, STRLEN* lp); #define PERL_ARGS_ASSERT_SV_PVN_NOMG \ assert(sv) -/* PERL_CALLCONV char* Perl_sv_pvutf8(pTHX_ SV *sv) - __attribute__warn_unused_result__; */ +#ifndef NO_MATHOMS +PERL_CALLCONV char* Perl_sv_pvutf8(pTHX_ SV *sv) + __attribute__warn_unused_result__; #define PERL_ARGS_ASSERT_SV_PVUTF8 \ assert(sv) +#endif PERL_CALLCONV char* Perl_sv_pvutf8n(pTHX_ SV *sv, STRLEN *lp); #define PERL_ARGS_ASSERT_SV_PVUTF8N \ @@ -3130,6 +3292,9 @@ PERL_CALLCONV void Perl_sv_resetpvn(pTHX_ const char* s, STRLEN len, HV *const s PERL_CALLCONV SV* Perl_sv_rvweaken(pTHX_ SV *const sv); #define PERL_ARGS_ASSERT_SV_RVWEAKEN \ assert(sv) +PERL_CALLCONV void Perl_sv_set_undef(pTHX_ SV *sv); +#define PERL_ARGS_ASSERT_SV_SET_UNDEF \ + assert(sv) PERL_CALLCONV void Perl_sv_sethek(pTHX_ SV *const sv, const HEK *const hek); #define PERL_ARGS_ASSERT_SV_SETHEK \ assert(sv) @@ -3148,6 +3313,9 @@ PERL_CALLCONV void Perl_sv_setnv_mg(pTHX_ SV *const sv, const NV num); PERL_CALLCONV void Perl_sv_setpv(pTHX_ SV *const sv, const char *const ptr); #define PERL_ARGS_ASSERT_SV_SETPV \ assert(sv) +PERL_CALLCONV char * Perl_sv_setpv_bufsize(pTHX_ SV *const sv, const STRLEN cur, const STRLEN len); +#define PERL_ARGS_ASSERT_SV_SETPV_BUFSIZE \ + assert(sv) PERL_CALLCONV void Perl_sv_setpv_mg(pTHX_ SV *const sv, const char *const ptr); #define PERL_ARGS_ASSERT_SV_SETPV_MG \ assert(sv) @@ -3161,12 +3329,16 @@ PERL_CALLCONV void Perl_sv_setpvf_mg(pTHX_ SV *const sv, const char *const pat, #define PERL_ARGS_ASSERT_SV_SETPVF_MG \ assert(sv); assert(pat) +#ifndef NO_MATHOMS PERL_CALLCONV void Perl_sv_setpviv(pTHX_ SV *const sv, const IV num); #define PERL_ARGS_ASSERT_SV_SETPVIV \ assert(sv) +#endif +#ifndef NO_MATHOMS PERL_CALLCONV void Perl_sv_setpviv_mg(pTHX_ SV *const sv, const IV iv); #define PERL_ARGS_ASSERT_SV_SETPVIV_MG \ assert(sv) +#endif PERL_CALLCONV void Perl_sv_setpvn(pTHX_ SV *const sv, const char *const ptr, const STRLEN len); #define PERL_ARGS_ASSERT_SV_SETPVN \ assert(sv) @@ -3188,9 +3360,11 @@ PERL_CALLCONV SV* Perl_sv_setref_pvn(pTHX_ SV *const rv, const char *const class PERL_CALLCONV SV* Perl_sv_setref_uv(pTHX_ SV *const rv, const char *const classname, const UV uv); #define PERL_ARGS_ASSERT_SV_SETREF_UV \ assert(rv) -/* PERL_CALLCONV void Perl_sv_setsv(pTHX_ SV *dstr, SV *sstr); */ +#ifndef NO_MATHOMS +PERL_CALLCONV void Perl_sv_setsv(pTHX_ SV *dstr, SV *sstr); #define PERL_ARGS_ASSERT_SV_SETSV \ assert(dstr) +#endif PERL_CALLCONV void Perl_sv_setsv_flags(pTHX_ SV *dstr, SV *sstr, const I32 flags); #define PERL_ARGS_ASSERT_SV_SETSV_FLAGS \ assert(dstr) @@ -3203,9 +3377,11 @@ PERL_CALLCONV void Perl_sv_setuv(pTHX_ SV *const sv, const UV num); PERL_CALLCONV void Perl_sv_setuv_mg(pTHX_ SV *const sv, const UV u); #define PERL_ARGS_ASSERT_SV_SETUV_MG \ assert(sv) -/* PERL_CALLCONV void Perl_sv_taint(pTHX_ SV* sv); */ +#ifndef NO_MATHOMS +PERL_CALLCONV void Perl_sv_taint(pTHX_ SV* sv); #define PERL_ARGS_ASSERT_SV_TAINT \ assert(sv) +#endif PERL_CALLCONV bool Perl_sv_tainted(pTHX_ SV *const sv) __attribute__warn_unused_result__; #define PERL_ARGS_ASSERT_SV_TAINTED \ @@ -3223,9 +3399,11 @@ PERL_CALLCONV int Perl_sv_unmagic(pTHX_ SV *const sv, const int type); PERL_CALLCONV int Perl_sv_unmagicext(pTHX_ SV *const sv, const int type, MGVTBL *vtbl); #define PERL_ARGS_ASSERT_SV_UNMAGICEXT \ assert(sv) -/* PERL_CALLCONV void Perl_sv_unref(pTHX_ SV* sv); */ +#ifndef NO_MATHOMS +PERL_CALLCONV void Perl_sv_unref(pTHX_ SV* sv); #define PERL_ARGS_ASSERT_SV_UNREF \ assert(sv) +#endif PERL_CALLCONV void Perl_sv_unref_flags(pTHX_ SV *const ref, const U32 flags); #define PERL_ARGS_ASSERT_SV_UNREF_FLAGS \ assert(ref) @@ -3235,15 +3413,19 @@ PERL_CALLCONV void Perl_sv_untaint(pTHX_ SV *const sv); PERL_CALLCONV void Perl_sv_upgrade(pTHX_ SV *const sv, svtype new_type); #define PERL_ARGS_ASSERT_SV_UPGRADE \ assert(sv) -/* PERL_CALLCONV void Perl_sv_usepvn(pTHX_ SV* sv, char* ptr, STRLEN len); */ +#ifndef NO_MATHOMS +PERL_CALLCONV void Perl_sv_usepvn(pTHX_ SV* sv, char* ptr, STRLEN len); #define PERL_ARGS_ASSERT_SV_USEPVN \ assert(sv) +#endif PERL_CALLCONV void Perl_sv_usepvn_flags(pTHX_ SV *const sv, char* ptr, const STRLEN len, const U32 flags); #define PERL_ARGS_ASSERT_SV_USEPVN_FLAGS \ assert(sv) -/* PERL_CALLCONV void Perl_sv_usepvn_mg(pTHX_ SV *sv, char *ptr, STRLEN len); */ +#ifndef NO_MATHOMS +PERL_CALLCONV void Perl_sv_usepvn_mg(pTHX_ SV *sv, char *ptr, STRLEN len); #define PERL_ARGS_ASSERT_SV_USEPVN_MG \ assert(sv) +#endif PERL_CALLCONV bool Perl_sv_utf8_decode(pTHX_ SV *const sv); #define PERL_ARGS_ASSERT_SV_UTF8_DECODE \ assert(sv) @@ -3253,9 +3435,11 @@ PERL_CALLCONV bool Perl_sv_utf8_downgrade(pTHX_ SV *const sv, const bool fail_ok PERL_CALLCONV void Perl_sv_utf8_encode(pTHX_ SV *const sv); #define PERL_ARGS_ASSERT_SV_UTF8_ENCODE \ assert(sv) -/* PERL_CALLCONV STRLEN Perl_sv_utf8_upgrade(pTHX_ SV *sv); */ +#ifndef NO_MATHOMS +PERL_CALLCONV STRLEN Perl_sv_utf8_upgrade(pTHX_ SV *sv); #define PERL_ARGS_ASSERT_SV_UTF8_UPGRADE \ assert(sv) +#endif /* PERL_CALLCONV STRLEN Perl_sv_utf8_upgrade_flags(pTHX_ SV *const sv, const I32 flags); */ PERL_CALLCONV STRLEN Perl_sv_utf8_upgrade_flags_grow(pTHX_ SV *const sv, const I32 flags, STRLEN extra); #define PERL_ARGS_ASSERT_SV_UTF8_UPGRADE_FLAGS_GROW \ @@ -3315,42 +3499,55 @@ PERL_CALLCONV UV Perl_to_uni_lower(pTHX_ UV c, U8 *p, STRLEN *lenp); assert(p); assert(lenp) PERL_CALLCONV U32 Perl_to_uni_lower_lc(pTHX_ U32 c) __attribute__deprecated__ - __attribute__warn_unused_result__ - __attribute__pure__; + __attribute__warn_unused_result__; PERL_CALLCONV UV Perl_to_uni_title(pTHX_ UV c, U8 *p, STRLEN *lenp); #define PERL_ARGS_ASSERT_TO_UNI_TITLE \ assert(p); assert(lenp) PERL_CALLCONV U32 Perl_to_uni_title_lc(pTHX_ U32 c) __attribute__deprecated__ - __attribute__warn_unused_result__ - __attribute__pure__; + __attribute__warn_unused_result__; PERL_CALLCONV UV Perl_to_uni_upper(pTHX_ UV c, U8 *p, STRLEN *lenp); #define PERL_ARGS_ASSERT_TO_UNI_UPPER \ assert(p); assert(lenp) PERL_CALLCONV U32 Perl_to_uni_upper_lc(pTHX_ U32 c) __attribute__deprecated__ - __attribute__warn_unused_result__ - __attribute__pure__; + __attribute__warn_unused_result__; PERL_CALLCONV UV Perl_to_utf8_case(pTHX_ const U8 *p, U8* ustrp, STRLEN *lenp, SV **swashp, const char *normal, const char *special) __attribute__deprecated__; #define PERL_ARGS_ASSERT_TO_UTF8_CASE \ assert(p); assert(ustrp); assert(swashp); assert(normal) -/* PERL_CALLCONV UV Perl_to_utf8_fold(pTHX_ const U8 *p, U8* ustrp, STRLEN *lenp); */ +#ifndef NO_MATHOMS +PERL_CALLCONV UV Perl_to_utf8_fold(pTHX_ const U8 *p, U8* ustrp, STRLEN *lenp) + __attribute__deprecated__; #define PERL_ARGS_ASSERT_TO_UTF8_FOLD \ assert(p); assert(ustrp) -/* PERL_CALLCONV UV Perl_to_utf8_lower(pTHX_ const U8 *p, U8* ustrp, STRLEN *lenp); */ +#endif + +#ifndef NO_MATHOMS +PERL_CALLCONV UV Perl_to_utf8_lower(pTHX_ const U8 *p, U8* ustrp, STRLEN *lenp) + __attribute__deprecated__; #define PERL_ARGS_ASSERT_TO_UTF8_LOWER \ assert(p); assert(ustrp) -/* PERL_CALLCONV UV Perl_to_utf8_title(pTHX_ const U8 *p, U8* ustrp, STRLEN *lenp); */ +#endif + +#ifndef NO_MATHOMS +PERL_CALLCONV UV Perl_to_utf8_title(pTHX_ const U8 *p, U8* ustrp, STRLEN *lenp) + __attribute__deprecated__; #define PERL_ARGS_ASSERT_TO_UTF8_TITLE \ assert(p); assert(ustrp) -/* PERL_CALLCONV UV Perl_to_utf8_upper(pTHX_ const U8 *p, U8* ustrp, STRLEN *lenp); */ +#endif + +#ifndef NO_MATHOMS +PERL_CALLCONV UV Perl_to_utf8_upper(pTHX_ const U8 *p, U8* ustrp, STRLEN *lenp) + __attribute__deprecated__; #define PERL_ARGS_ASSERT_TO_UTF8_UPPER \ assert(p); assert(ustrp) +#endif + PERL_CALLCONV bool Perl_try_amagic_bin(pTHX_ int method, int flags); PERL_CALLCONV bool Perl_try_amagic_un(pTHX_ int method, int flags); PERL_CALLCONV I32 Perl_unpack_str(pTHX_ const char *pat, const char *patend, const char *s, const char *strbeg, const char *strend, char **new_s, I32 ocnt, U32 flags); @@ -3370,17 +3567,40 @@ PERL_CALLCONV U8* Perl_utf16_to_utf8(pTHX_ U8* p, U8 *d, I32 bytelen, I32 *newle PERL_CALLCONV U8* Perl_utf16_to_utf8_reversed(pTHX_ U8* p, U8 *d, I32 bytelen, I32 *newlen); #define PERL_ARGS_ASSERT_UTF16_TO_UTF8_REVERSED \ assert(p); assert(d); assert(newlen) -PERL_CALLCONV IV Perl_utf8_distance(pTHX_ const U8 *a, const U8 *b) - __attribute__warn_unused_result__ - __attribute__pure__; +#ifndef PERL_NO_INLINE_FUNCTIONS +PERL_STATIC_INLINE IV Perl_utf8_distance(pTHX_ const U8 *a, const U8 *b) + __attribute__warn_unused_result__; #define PERL_ARGS_ASSERT_UTF8_DISTANCE \ assert(a); assert(b) +#endif -PERL_CALLCONV U8* Perl_utf8_hop(const U8 *s, SSize_t off) - __attribute__warn_unused_result__ - __attribute__pure__; +#ifndef PERL_NO_INLINE_FUNCTIONS +PERL_STATIC_INLINE U8* Perl_utf8_hop(const U8 *s, SSize_t off) + __attribute__warn_unused_result__; #define PERL_ARGS_ASSERT_UTF8_HOP \ assert(s) +#endif + +#ifndef PERL_NO_INLINE_FUNCTIONS +PERL_STATIC_INLINE U8* Perl_utf8_hop_back(const U8 *s, SSize_t off, const U8 *start) + __attribute__warn_unused_result__; +#define PERL_ARGS_ASSERT_UTF8_HOP_BACK \ + assert(s); assert(start) +#endif + +#ifndef PERL_NO_INLINE_FUNCTIONS +PERL_STATIC_INLINE U8* Perl_utf8_hop_forward(const U8 *s, SSize_t off, const U8 *end) + __attribute__warn_unused_result__; +#define PERL_ARGS_ASSERT_UTF8_HOP_FORWARD \ + assert(s); assert(end) +#endif + +#ifndef PERL_NO_INLINE_FUNCTIONS +PERL_STATIC_INLINE U8* Perl_utf8_hop_safe(const U8 *s, SSize_t off, const U8 *start, const U8 *end) + __attribute__warn_unused_result__; +#define PERL_ARGS_ASSERT_UTF8_HOP_SAFE \ + assert(s); assert(start); assert(end) +#endif PERL_CALLCONV STRLEN Perl_utf8_length(pTHX_ const U8* s, const U8 *e) __attribute__warn_unused_result__ @@ -3396,7 +3616,9 @@ PERL_CALLCONV UV Perl_utf8_to_uvchr(pTHX_ const U8 *s, STRLEN *retlen) #define PERL_ARGS_ASSERT_UTF8_TO_UVCHR \ assert(s) -/* PERL_CALLCONV UV utf8_to_uvchr_buf(pTHX_ const U8 *s, const U8 *send, STRLEN *retlen); */ +PERL_CALLCONV UV Perl_utf8_to_uvchr_buf(pTHX_ const U8 *s, const U8 *send, STRLEN *retlen); +#define PERL_ARGS_ASSERT_UTF8_TO_UVCHR_BUF \ + assert(s); assert(send) PERL_CALLCONV UV Perl_utf8_to_uvuni(pTHX_ const U8 *s, STRLEN *retlen) __attribute__deprecated__; #define PERL_ARGS_ASSERT_UTF8_TO_UVUNI \ @@ -3407,9 +3629,12 @@ PERL_CALLCONV UV Perl_utf8_to_uvuni_buf(pTHX_ const U8 *s, const U8 *send, STRLE #define PERL_ARGS_ASSERT_UTF8_TO_UVUNI_BUF \ assert(s); assert(send) -PERL_CALLCONV UV Perl_utf8n_to_uvchr(pTHX_ const U8 *s, STRLEN curlen, STRLEN *retlen, U32 flags); +PERL_CALLCONV UV Perl_utf8n_to_uvchr(pTHX_ const U8 *s, STRLEN curlen, STRLEN *retlen, const U32 flags); #define PERL_ARGS_ASSERT_UTF8N_TO_UVCHR \ assert(s) +PERL_CALLCONV UV Perl_utf8n_to_uvchr_error(pTHX_ const U8 *s, STRLEN curlen, STRLEN *retlen, const U32 flags, U32 * errors); +#define PERL_ARGS_ASSERT_UTF8N_TO_UVCHR_ERROR \ + assert(s) PERL_CALLCONV UV Perl_utf8n_to_uvuni(pTHX_ const U8 *s, STRLEN curlen, STRLEN *retlen, U32 flags); #define PERL_ARGS_ASSERT_UTF8N_TO_UVUNI \ assert(s) @@ -3418,7 +3643,7 @@ PERL_CALLCONV void Perl_utilize(pTHX_ int aver, I32 floor, OP* version, OP* idop assert(idop) /* PERL_CALLCONV U8* uvchr_to_utf8(pTHX_ U8 *d, UV uv); */ /* PERL_CALLCONV U8* uvchr_to_utf8_flags(pTHX_ U8 *d, UV uv, UV flags); */ -PERL_CALLCONV U8* Perl_uvoffuni_to_utf8_flags(pTHX_ U8 *d, UV uv, UV flags); +PERL_CALLCONV U8* Perl_uvoffuni_to_utf8_flags(pTHX_ U8 *d, UV uv, const UV flags); #define PERL_ARGS_ASSERT_UVOFFUNI_TO_UTF8_FLAGS \ assert(d) PERL_CALLCONV U8* Perl_uvuni_to_utf8(pTHX_ U8 *d, UV uv); @@ -3427,9 +3652,13 @@ PERL_CALLCONV U8* Perl_uvuni_to_utf8(pTHX_ U8 *d, UV uv); PERL_CALLCONV U8* Perl_uvuni_to_utf8_flags(pTHX_ U8 *d, UV uv, UV flags); #define PERL_ARGS_ASSERT_UVUNI_TO_UTF8_FLAGS \ assert(d) -PERL_CALLCONV UV Perl_valid_utf8_to_uvchr(pTHX_ const U8 *s, STRLEN *retlen); +#ifndef PERL_NO_INLINE_FUNCTIONS +PERL_STATIC_INLINE UV Perl_valid_utf8_to_uvchr(const U8 *s, STRLEN *retlen) + __attribute__warn_unused_result__; #define PERL_ARGS_ASSERT_VALID_UTF8_TO_UVCHR \ assert(s) +#endif + PERL_CALLCONV UV Perl_valid_utf8_to_uvuni(pTHX_ const U8 *s, STRLEN *retlen) __attribute__deprecated__; #define PERL_ARGS_ASSERT_VALID_UTF8_TO_UVUNI \ @@ -3465,7 +3694,6 @@ PERL_CALLCONV SV* Perl_vmess(pTHX_ const char* pat, va_list* args); #define PERL_ARGS_ASSERT_VMESS \ assert(pat) PERL_CALLCONV SV* Perl_vnewSVpvf(pTHX_ const char *const pat, va_list *const args) - __attribute__malloc__ __attribute__warn_unused_result__; #define PERL_ARGS_ASSERT_VNEWSVPVF \ assert(pat) @@ -3537,10 +3765,9 @@ PERL_CALLCONV int Perl_yyerror_pv(pTHX_ const char *const s, U32 flags); #define PERL_ARGS_ASSERT_YYERROR_PV \ assert(s) PERL_CALLCONV int Perl_yyerror_pvn(pTHX_ const char *const s, STRLEN len, U32 flags); -#define PERL_ARGS_ASSERT_YYERROR_PVN \ - assert(s) PERL_CALLCONV int Perl_yylex(pTHX); PERL_CALLCONV int Perl_yyparse(pTHX_ int gramtype); +PERL_CALLCONV void Perl_yyquit(pTHX); PERL_CALLCONV void Perl_yyunlex(pTHX); #if !(defined(DEBUGGING)) # if !defined(NV_PRESERVES_UV) @@ -3551,13 +3778,18 @@ STATIC int S_sv_2iuv_non_preserve(pTHX_ SV *const sv); # endif # endif #endif +#if !(defined(HAS_MEMMEM)) +PERL_CALLCONV char* Perl_ninstr(const char* big, const char* bigend, const char* little, const char* lend) + __attribute__warn_unused_result__ + __attribute__pure__; +#define PERL_ARGS_ASSERT_NINSTR \ + assert(big); assert(bigend); assert(little); assert(lend) + +#endif #if !(defined(HAS_SIGACTION) && defined(SA_SIGINFO)) PERL_CALLCONV Signal_t Perl_csighandler(int sig); PERL_CALLCONV Signal_t Perl_sighandler(int sig); #endif -#if !(defined(NO_MATHOMS)) -PERL_CALLCONV void Perl_sv_nounlocking(pTHX_ SV *sv); -#endif #if !(defined(PERL_DEFAULT_DO_EXEC3_IMPLEMENTATION)) PERL_CALLCONV bool Perl_do_exec(pTHX_ const char* cmd); #define PERL_ARGS_ASSERT_DO_EXEC \ @@ -3571,9 +3803,7 @@ PERL_CALLCONV void* Perl_my_cxt_init(pTHX_ int *index, size_t size); # endif #endif #if !(defined(WIN32)) -/* PERL_CALLCONV char* my_setlocale(pTHX_ int category, const char* locale) - __attribute__pure__; */ - +/* PERL_CALLCONV char* my_setlocale(pTHX_ int category, const char* locale); */ #endif #if !(defined(_MSC_VER)) PERL_CALLCONV_NO_RET int Perl_magic_regdatum_set(pTHX_ SV* sv, MAGIC* mg) @@ -3594,6 +3824,7 @@ PERL_CALLCONV char* Perl_getenv_len(pTHX_ const char *env_elem, unsigned long *l #endif #if !defined(HAS_MEMCMP) || !defined(HAS_SANE_MEMCMP) PERL_CALLCONV int Perl_my_memcmp(const void* vs1, const void* vs2, size_t len) + __attribute__warn_unused_result__ __attribute__pure__; #define PERL_ARGS_ASSERT_MY_MEMCMP \ assert(vs1); assert(vs2) @@ -3625,6 +3856,7 @@ PERL_CALLCONV I32 Perl_same_dirent(pTHX_ const char* a, const char* b); #endif #if !defined(HAS_SIGNBIT) PERL_CALLCONV int Perl_signbit(NV f) + __attribute__warn_unused_result__ __attribute__pure__; #endif @@ -3659,28 +3891,58 @@ STATIC PerlIO * S_doopen_pm(pTHX_ SV *name) #endif #if !defined(PERL_EXT_RE_BUILD) # if defined(PERL_IN_REGCOMP_C) +STATIC void S__append_range_to_invlist(pTHX_ SV* const invlist, const UV start, const UV end); +#define PERL_ARGS_ASSERT__APPEND_RANGE_TO_INVLIST \ + assert(invlist) +#ifndef PERL_NO_INLINE_FUNCTIONS +PERL_STATIC_INLINE UV* S__invlist_array_init(SV* const invlist, const bool will_have_0) + __attribute__warn_unused_result__; +#define PERL_ARGS_ASSERT__INVLIST_ARRAY_INIT \ + assert(invlist) +#endif + +#ifndef PERL_NO_INLINE_FUNCTIONS PERL_STATIC_INLINE IV* S_get_invlist_previous_index_addr(SV* invlist) __attribute__warn_unused_result__; #define PERL_ARGS_ASSERT_GET_INVLIST_PREVIOUS_INDEX_ADDR \ assert(invlist) +#endif +#ifndef PERL_NO_INLINE_FUNCTIONS PERL_STATIC_INLINE void S_invlist_clear(pTHX_ SV* invlist); #define PERL_ARGS_ASSERT_INVLIST_CLEAR \ assert(invlist) +#endif +STATIC void S_invlist_extend(pTHX_ SV* const invlist, const UV len); +#define PERL_ARGS_ASSERT_INVLIST_EXTEND \ + assert(invlist) +#ifndef PERL_NO_INLINE_FUNCTIONS +PERL_STATIC_INLINE UV S_invlist_max(SV* const invlist) + __attribute__warn_unused_result__; +#define PERL_ARGS_ASSERT_INVLIST_MAX \ + assert(invlist) +#endif + +#ifndef PERL_NO_INLINE_FUNCTIONS PERL_STATIC_INLINE IV S_invlist_previous_index(SV* const invlist) __attribute__warn_unused_result__; #define PERL_ARGS_ASSERT_INVLIST_PREVIOUS_INDEX \ assert(invlist) +#endif STATIC void S_invlist_replace_list_destroys_src(pTHX_ SV *dest, SV *src); #define PERL_ARGS_ASSERT_INVLIST_REPLACE_LIST_DESTROYS_SRC \ assert(dest); assert(src) +#ifndef PERL_NO_INLINE_FUNCTIONS PERL_STATIC_INLINE void S_invlist_set_previous_index(SV* const invlist, const IV index); #define PERL_ARGS_ASSERT_INVLIST_SET_PREVIOUS_INDEX \ assert(invlist) +#endif +#ifndef PERL_NO_INLINE_FUNCTIONS PERL_STATIC_INLINE void S_invlist_trim(SV* invlist); #define PERL_ARGS_ASSERT_INVLIST_TRIM \ assert(invlist) +#endif # endif #endif #if !defined(PERL_IMPLICIT_SYS) @@ -3697,81 +3959,96 @@ STATIC SV * S_incpush_if_exists(pTHX_ AV *const av, SV *dir, SV *const stem); # endif #endif #if !defined(PERL_NO_INLINE_FUNCTIONS) -PERL_STATIC_INLINE STRLEN S__is_utf8_char_slow(const U8 *s, const U8 *e) - __attribute__warn_unused_result__; -#define PERL_ARGS_ASSERT__IS_UTF8_CHAR_SLOW \ - assert(s); assert(e) - -PERL_STATIC_INLINE void S_append_utf8_from_native_byte(const U8 byte, U8** dest); -#define PERL_ARGS_ASSERT_APPEND_UTF8_FROM_NATIVE_BYTE \ - assert(dest) -PERL_STATIC_INLINE SSize_t S_av_top_index(pTHX_ AV *av) - __attribute__warn_unused_result__; -#define PERL_ARGS_ASSERT_AV_TOP_INDEX \ - assert(av) - +#ifndef PERL_NO_INLINE_FUNCTIONS PERL_STATIC_INLINE void S_cx_popblock(pTHX_ PERL_CONTEXT *cx); #define PERL_ARGS_ASSERT_CX_POPBLOCK \ assert(cx) +#endif +#ifndef PERL_NO_INLINE_FUNCTIONS PERL_STATIC_INLINE void S_cx_popeval(pTHX_ PERL_CONTEXT *cx); #define PERL_ARGS_ASSERT_CX_POPEVAL \ assert(cx) +#endif +#ifndef PERL_NO_INLINE_FUNCTIONS PERL_STATIC_INLINE void S_cx_popformat(pTHX_ PERL_CONTEXT *cx); #define PERL_ARGS_ASSERT_CX_POPFORMAT \ assert(cx) +#endif +#ifndef PERL_NO_INLINE_FUNCTIONS PERL_STATIC_INLINE void S_cx_popgiven(pTHX_ PERL_CONTEXT *cx); #define PERL_ARGS_ASSERT_CX_POPGIVEN \ assert(cx) +#endif +#ifndef PERL_NO_INLINE_FUNCTIONS PERL_STATIC_INLINE void S_cx_poploop(pTHX_ PERL_CONTEXT *cx); #define PERL_ARGS_ASSERT_CX_POPLOOP \ assert(cx) +#endif +#ifndef PERL_NO_INLINE_FUNCTIONS PERL_STATIC_INLINE void S_cx_popsub(pTHX_ PERL_CONTEXT *cx); #define PERL_ARGS_ASSERT_CX_POPSUB \ assert(cx) +#endif +#ifndef PERL_NO_INLINE_FUNCTIONS PERL_STATIC_INLINE void S_cx_popsub_args(pTHX_ PERL_CONTEXT *cx); #define PERL_ARGS_ASSERT_CX_POPSUB_ARGS \ assert(cx) +#endif +#ifndef PERL_NO_INLINE_FUNCTIONS PERL_STATIC_INLINE void S_cx_popsub_common(pTHX_ PERL_CONTEXT *cx); #define PERL_ARGS_ASSERT_CX_POPSUB_COMMON \ assert(cx) +#endif +#ifndef PERL_NO_INLINE_FUNCTIONS PERL_STATIC_INLINE void S_cx_popwhen(pTHX_ PERL_CONTEXT *cx); #define PERL_ARGS_ASSERT_CX_POPWHEN \ assert(cx) +#endif +#ifndef PERL_NO_INLINE_FUNCTIONS PERL_STATIC_INLINE PERL_CONTEXT * S_cx_pushblock(pTHX_ U8 type, U8 gimme, SV** sp, I32 saveix); #define PERL_ARGS_ASSERT_CX_PUSHBLOCK \ assert(sp) +#endif +#ifndef PERL_NO_INLINE_FUNCTIONS PERL_STATIC_INLINE void S_cx_pusheval(pTHX_ PERL_CONTEXT *cx, OP *retop, SV *namesv); #define PERL_ARGS_ASSERT_CX_PUSHEVAL \ assert(cx) +#endif +#ifndef PERL_NO_INLINE_FUNCTIONS PERL_STATIC_INLINE void S_cx_pushformat(pTHX_ PERL_CONTEXT *cx, CV *cv, OP *retop, GV *gv); #define PERL_ARGS_ASSERT_CX_PUSHFORMAT \ assert(cx); assert(cv) +#endif +#ifndef PERL_NO_INLINE_FUNCTIONS PERL_STATIC_INLINE void S_cx_pushgiven(pTHX_ PERL_CONTEXT *cx, SV *orig_defsv); #define PERL_ARGS_ASSERT_CX_PUSHGIVEN \ assert(cx) +#endif +#ifndef PERL_NO_INLINE_FUNCTIONS PERL_STATIC_INLINE void S_cx_pushloop_for(pTHX_ PERL_CONTEXT *cx, void *itervarp, SV *itersave); #define PERL_ARGS_ASSERT_CX_PUSHLOOP_FOR \ assert(cx); assert(itervarp) +#endif +#ifndef PERL_NO_INLINE_FUNCTIONS PERL_STATIC_INLINE void S_cx_pushloop_plain(pTHX_ PERL_CONTEXT *cx); #define PERL_ARGS_ASSERT_CX_PUSHLOOP_PLAIN \ assert(cx) +#endif +#ifndef PERL_NO_INLINE_FUNCTIONS PERL_STATIC_INLINE void S_cx_pushsub(pTHX_ PERL_CONTEXT *cx, CV *cv, OP *retop, bool hasargs); #define PERL_ARGS_ASSERT_CX_PUSHSUB \ assert(cx); assert(cv) +#endif +#ifndef PERL_NO_INLINE_FUNCTIONS PERL_STATIC_INLINE void S_cx_pushwhen(pTHX_ PERL_CONTEXT *cx); #define PERL_ARGS_ASSERT_CX_PUSHWHEN \ assert(cx) +#endif +#ifndef PERL_NO_INLINE_FUNCTIONS PERL_STATIC_INLINE void S_cx_topblock(pTHX_ PERL_CONTEXT *cx); #define PERL_ARGS_ASSERT_CX_TOPBLOCK \ assert(cx) -PERL_STATIC_INLINE bool S_is_safe_syscall(pTHX_ const char *pv, STRLEN len, const char *what, const char *op_name) - __attribute__warn_unused_result__; -#define PERL_ARGS_ASSERT_IS_SAFE_SYSCALL \ - assert(pv); assert(what); assert(op_name) - -PERL_STATIC_INLINE bool S_sv_only_taint_gmagic(SV *sv); -#define PERL_ARGS_ASSERT_SV_ONLY_TAINT_GMAGIC \ - assert(sv) +#endif #endif #if !defined(PERL_NO_UTF16_FILTER) # if defined(PERL_IN_TOKE_C) @@ -3839,7 +4116,7 @@ STATIC void S_dump_trie_interim_table(pTHX_ const struct _reg_trie_data *trie, H STATIC const regnode* S_dumpuntil(pTHX_ const regexp *r, const regnode *start, const regnode *node, const regnode *last, const regnode *plast, SV* sv, I32 indent, U32 depth); #define PERL_ARGS_ASSERT_DUMPUNTIL \ assert(r); assert(start); assert(node); assert(sv) -STATIC bool S_put_charclass_bitmap_innards(pTHX_ SV* sv, char* bitmap, SV* nonbitmap_invlist, SV* only_utf8_locale_invlist, const regnode * const node); +STATIC bool S_put_charclass_bitmap_innards(pTHX_ SV* sv, char* bitmap, SV* nonbitmap_invlist, SV* only_utf8_locale_invlist, const regnode * const node, const bool force_as_is_display); #define PERL_ARGS_ASSERT_PUT_CHARCLASS_BITMAP_INNARDS \ assert(sv); assert(bitmap) STATIC SV* S_put_charclass_bitmap_innards_common(pTHX_ SV* invlist, SV* posixes, SV* only_utf8, SV* not_utf8, SV* only_utf8_locale, const bool invert); @@ -3891,16 +4168,35 @@ STATIC int S_tokereport(pTHX_ I32 rv, const YYSTYPE* lvalp); # endif # if defined(USE_LOCALE) && (defined(PERL_IN_LOCALE_C) || defined (PERL_EXT_POSIX)) PERL_CALLCONV char * Perl__setlocale_debug_string(const int category, const char* const locale, const char* const retval) - __attribute__warn_unused_result__ - __attribute__pure__; + __attribute__warn_unused_result__; # endif +# if defined(USE_LOCALE) && defined(PERL_IN_LOCALE_C) +STATIC void S_print_collxfrm_input_and_return(pTHX_ const char * const s, const char * const e, const STRLEN * const xlen, const bool is_utf8); +#define PERL_ARGS_ASSERT_PRINT_COLLXFRM_INPUT_AND_RETURN \ + assert(s); assert(e) +# endif +#endif +#if defined(DEBUGGING) && defined(ENABLE_REGEX_SETS_DEBUGGING) +# if defined(PERL_IN_REGCOMP_C) +STATIC void S_dump_regex_sets_structures(pTHX_ RExC_state_t *pRExC_state, AV * stack, const IV fence, AV * fence_stack); +#define PERL_ARGS_ASSERT_DUMP_REGEX_SETS_STRUCTURES \ + assert(pRExC_state); assert(stack); assert(fence_stack) +# endif #endif #if defined(DEBUG_LEAKING_SCALARS_FORK_DUMP) PERL_CALLCONV void Perl_dump_sv_child(pTHX_ SV *sv); #define PERL_ARGS_ASSERT_DUMP_SV_CHILD \ assert(sv) #endif +#if defined(HAS_MEMMEM) +PERL_CALLCONV char* Perl_ninstr(const char* big, const char* bigend, const char* little, const char* lend) + __attribute__warn_unused_result__ + __attribute__pure__; +#define PERL_ARGS_ASSERT_NINSTR \ + assert(big); assert(bigend); assert(little); assert(lend) + +#endif #if defined(HAS_MSG) || defined(HAS_SEM) || defined(HAS_SHM) PERL_CALLCONV I32 Perl_do_ipcctl(pTHX_ I32 optype, SV** mark, SV** sp); #define PERL_ARGS_ASSERT_DO_IPCCTL \ @@ -3950,9 +4246,6 @@ PERL_CALLCONV MEM_SIZE Perl_malloced_size(void *p) assert(p) #endif -#if defined(NO_MATHOMS) -/* PERL_CALLCONV void Perl_sv_nounlocking(pTHX_ SV *sv); */ -#endif #if defined(PERL_ANY_COW) PERL_CALLCONV SV* Perl_sv_setsv_cow(pTHX_ SV* dstr, SV* sstr); #define PERL_ARGS_ASSERT_SV_SETSV_COW \ @@ -3971,10 +4264,12 @@ PERL_CALLCONV void Perl_opslab_free_nopad(pTHX_ OPSLAB *slab); PERL_CALLCONV void Perl_parser_free_nexttoke_ops(pTHX_ yy_parser *parser, OPSLAB *slab); #define PERL_ARGS_ASSERT_PARSER_FREE_NEXTTOKE_OPS \ assert(parser); assert(slab) +#ifndef PERL_NO_INLINE_FUNCTIONS PERL_STATIC_INLINE bool S_should_warn_nl(const char *pv) __attribute__warn_unused_result__; #define PERL_ARGS_ASSERT_SHOULD_WARN_NL \ assert(pv) +#endif # if defined(PERL_DEBUG_READONLY_OPS) PERL_CALLCONV void Perl_Slab_to_ro(pTHX_ OPSLAB *slab); @@ -3986,10 +4281,12 @@ PERL_CALLCONV void Perl_Slab_to_rw(pTHX_ OPSLAB *const slab); # endif #endif #if defined(PERL_CORE) || defined (PERL_EXT) +#ifndef PERL_NO_INLINE_FUNCTIONS PERL_STATIC_INLINE STRLEN S_sv_or_pv_pos_u2b(pTHX_ SV *sv, const char *pv, STRLEN pos, STRLEN *lenp); #define PERL_ARGS_ASSERT_SV_OR_PV_POS_U2B \ assert(sv); assert(pv) #endif +#endif #if defined(PERL_CR_FILTER) # if defined(PERL_IN_TOKE_C) STATIC I32 S_cr_textfilter(pTHX_ int idx, SV *sv, int maxlen); @@ -4018,7 +4315,9 @@ PERL_CALLCONV OP * Perl_op_refcnt_inc(pTHX_ OP *o); /* PERL_CALLCONV bool Perl_do_exec(pTHX_ const char* cmd); */ #endif #if defined(PERL_DONT_CREATE_GVSV) -/* PERL_CALLCONV GV* Perl_gv_SVadd(pTHX_ GV *gv); */ +#ifndef NO_MATHOMS +PERL_CALLCONV GV* Perl_gv_SVadd(pTHX_ GV *gv); +#endif #endif #if defined(PERL_GLOBAL_STRUCT) PERL_CALLCONV struct perl_vars * Perl_GetVars(pTHX); @@ -4195,32 +4494,38 @@ PERL_CALLCONV void Perl_hv_kill_backrefs(pTHX_ HV *hv); STATIC bool S_find_default_stash(pTHX_ HV **stash, const char *name, STRLEN len, const U32 is_utf8, const I32 add, const svtype sv_type); #define PERL_ARGS_ASSERT_FIND_DEFAULT_STASH \ assert(stash); assert(name) +#ifndef PERL_NO_INLINE_FUNCTIONS PERL_STATIC_INLINE GV* S_gv_fetchmeth_internal(pTHX_ HV* stash, SV* meth, const char* name, STRLEN len, I32 level, U32 flags); +#endif STATIC void S_gv_init_svtype(pTHX_ GV *gv, const svtype sv_type); #define PERL_ARGS_ASSERT_GV_INIT_SVTYPE \ assert(gv) STATIC bool S_gv_is_in_main(pTHX_ const char *name, STRLEN len, const U32 is_utf8); #define PERL_ARGS_ASSERT_GV_IS_IN_MAIN \ assert(name) -STATIC bool S_gv_magicalize(pTHX_ GV *gv, HV *stash, const char *name, STRLEN len, bool addmg, const svtype sv_type); +STATIC bool S_gv_magicalize(pTHX_ GV *gv, HV *stash, const char *name, STRLEN len, const svtype sv_type); #define PERL_ARGS_ASSERT_GV_MAGICALIZE \ assert(gv); assert(stash); assert(name) STATIC void S_gv_magicalize_isa(pTHX_ GV *gv); #define PERL_ARGS_ASSERT_GV_MAGICALIZE_ISA \ assert(gv) +#ifndef PERL_NO_INLINE_FUNCTIONS PERL_STATIC_INLINE HV* S_gv_stashpvn_internal(pTHX_ const char* name, U32 namelen, I32 flags); #define PERL_ARGS_ASSERT_GV_STASHPVN_INTERNAL \ assert(name) +#endif +#ifndef PERL_NO_INLINE_FUNCTIONS PERL_STATIC_INLINE HV* S_gv_stashsvpvn_cached(pTHX_ SV *namesv, const char* name, U32 namelen, I32 flags); +#endif STATIC void S_maybe_multimagic_gv(pTHX_ GV *gv, const char *name, const svtype sv_type); #define PERL_ARGS_ASSERT_MAYBE_MULTIMAGIC_GV \ assert(gv); assert(name) STATIC bool S_parse_gv_stash_name(pTHX_ HV **stash, GV **gv, const char **name, STRLEN *len, const char *nambeg, STRLEN full_len, const U32 is_utf8, const I32 add); #define PERL_ARGS_ASSERT_PARSE_GV_STASH_NAME \ assert(stash); assert(gv); assert(name); assert(len); assert(nambeg) -STATIC HV* S_require_tie_mod(pTHX_ GV *gv, const char *varpv, SV* namesv, const char *methpv, const U32 flags); +STATIC void S_require_tie_mod(pTHX_ GV *gv, const char varname, const char * name, STRLEN len, const U32 flags); #define PERL_ARGS_ASSERT_REQUIRE_TIE_MOD \ - assert(gv); assert(varpv); assert(namesv); assert(methpv) + assert(gv); assert(varname); assert(name) #endif #if defined(PERL_IN_GV_C) || defined(PERL_IN_SV_C) || defined(PERL_IN_PAD_C) || defined(PERL_IN_OP_C) PERL_CALLCONV void Perl_sv_add_backref(pTHX_ SV *const tsv, SV *const sv); @@ -4256,10 +4561,11 @@ PERL_STATIC_NO_RET void S_hv_notallowed(pTHX_ int flags, const char *key, I32 kl assert(key); assert(msg) STATIC HE* S_new_he(pTHX) - __attribute__malloc__ __attribute__warn_unused_result__; +#ifndef PERL_NO_INLINE_FUNCTIONS PERL_STATIC_INLINE U32 S_ptr_hash(PTRV u); +#endif STATIC SV * S_refcounted_he_value(pTHX_ const struct refcounted_he *he); #define PERL_ARGS_ASSERT_REFCOUNTED_HE_VALUE \ assert(he) @@ -4286,6 +4592,13 @@ PERL_CALLCONV SV* Perl_hfree_next_entry(pTHX_ HV *hv, STRLEN *indexp); #define PERL_ARGS_ASSERT_HFREE_NEXT_ENTRY \ assert(hv); assert(indexp) #endif +#if defined(PERL_IN_LOCALE_C) || defined(PERL_IN_SV_C) || defined(PERL_IN_MATHOMS_C) +# if defined(USE_LOCALE_COLLATE) +PERL_CALLCONV char* Perl__mem_collxfrm(pTHX_ const char* input_string, STRLEN len, STRLEN* xlen, bool utf8); +#define PERL_ARGS_ASSERT__MEM_COLLXFRM \ + assert(input_string); assert(xlen) +# endif +#endif #if defined(PERL_IN_MALLOC_C) STATIC int S_adjust_size_and_find_bucket(size_t *nbytes_p); #define PERL_ARGS_ASSERT_ADJUST_SIZE_AND_FIND_BUCKET \ @@ -4354,7 +4667,7 @@ STATIC void S_finalize_op(pTHX_ OP* o); STATIC void S_find_and_forget_pmops(pTHX_ OP *o); #define PERL_ARGS_ASSERT_FIND_AND_FORGET_PMOPS \ assert(o) -STATIC OP* S_fold_constants(pTHX_ OP *o); +STATIC OP* S_fold_constants(pTHX_ OP * const o); #define PERL_ARGS_ASSERT_FOLD_CONSTANTS \ assert(o) STATIC OP* S_force_list(pTHX_ OP* arg, bool nullit); @@ -4384,7 +4697,9 @@ STATIC OP * S_my_kid(pTHX_ OP *o, OP *attrs, OP **imopsp); STATIC OP* S_newGIVWHENOP(pTHX_ OP* cond, OP *block, I32 enter_opcode, I32 leave_opcode, PADOFFSET entertarg); #define PERL_ARGS_ASSERT_NEWGIVWHENOP \ assert(block) +#ifndef PERL_NO_INLINE_FUNCTIONS PERL_STATIC_INLINE OP* S_newMETHOP_internal(pTHX_ I32 type, I32 flags, OP* dynamic_meth, SV* const_meth); +#endif STATIC OP* S_new_logop(pTHX_ I32 type, I32 flags, OP **firstp, OP **otherp) __attribute__warn_unused_result__; #define PERL_ARGS_ASSERT_NEW_LOGOP \ @@ -4398,12 +4713,16 @@ STATIC OP* S_no_fh_allowed(pTHX_ OP *o) #define PERL_ARGS_ASSERT_NO_FH_ALLOWED \ assert(o) +#ifndef PERL_NO_INLINE_FUNCTIONS PERL_STATIC_INLINE OP* S_op_integerize(pTHX_ OP *o); #define PERL_ARGS_ASSERT_OP_INTEGERIZE \ assert(o) +#endif +#ifndef PERL_NO_INLINE_FUNCTIONS PERL_STATIC_INLINE OP* S_op_std_init(pTHX_ OP *o); #define PERL_ARGS_ASSERT_OP_STD_INIT \ assert(o) +#endif STATIC OP* S_pmtrans(pTHX_ OP* o, OP* expr, OP* repl); #define PERL_ARGS_ASSERT_PMTRANS \ assert(o); assert(expr); assert(repl) @@ -4437,9 +4756,11 @@ STATIC OP* S_too_many_arguments_pv(pTHX_ OP *o, const char* name, U32 flags); #define PERL_ARGS_ASSERT_TOO_MANY_ARGUMENTS_PV \ assert(o); assert(name) # if defined(USE_ITHREADS) +#ifndef PERL_NO_INLINE_FUNCTIONS PERL_STATIC_INLINE void S_op_relocate_sv(pTHX_ SV** svp, PADOFFSET* targp); #define PERL_ARGS_ASSERT_OP_RELOCATE_SV \ assert(svp); assert(targp) +#endif # endif #endif #if defined(PERL_IN_OP_C) || defined(PERL_IN_SV_C) @@ -4527,7 +4848,7 @@ STATIC void S_destroy_matcher(pTHX_ PMOP* matcher); #define PERL_ARGS_ASSERT_DESTROY_MATCHER \ assert(matcher) STATIC OP* S_do_smartmatch(pTHX_ HV* seen_this, HV* seen_other, const bool copied); -STATIC OP* S_docatch(pTHX_ OP *o) +STATIC OP* S_docatch(pTHX_ Perl_ppaddr_t firstpp) __attribute__warn_unused_result__; STATIC bool S_doeval_compile(pTHX_ U8 gimme, CV* outside, U32 seq, HV* hh); @@ -4574,10 +4895,12 @@ STATIC bool S_matcher_matches_sv(pTHX_ PMOP* matcher, SV* sv) STATIC bool S_num_overflow(NV value, I32 fldsize, I32 frcsize) __attribute__warn_unused_result__; +#ifndef PERL_NO_INLINE_FUNCTIONS PERL_STATIC_INLINE bool S_path_is_searchable(const char *name) __attribute__warn_unused_result__; #define PERL_ARGS_ASSERT_PATH_IS_SEARCHABLE \ assert(name) +#endif STATIC I32 S_run_user_filter(pTHX_ int idx, SV *buf_sv, int maxlen) __attribute__warn_unused_result__; @@ -4598,10 +4921,12 @@ STATIC void S_save_lines(pTHX_ AV *array, SV *sv); STATIC void S_do_oddball(pTHX_ SV **oddkey, SV **firstkey); #define PERL_ARGS_ASSERT_DO_ODDBALL \ assert(oddkey); assert(firstkey) +#ifndef PERL_NO_INLINE_FUNCTIONS PERL_STATIC_INLINE HV* S_opmethod_stash(pTHX_ SV* meth); #define PERL_ARGS_ASSERT_OPMETHOD_STASH \ assert(meth) #endif +#endif #if defined(PERL_IN_PP_PACK_C) STATIC int S_div128(pTHX_ SV *pnum, bool *done); #define PERL_ARGS_ASSERT_DIV128 \ @@ -4690,18 +5015,8 @@ STATIC OP* S_doform(pTHX_ CV *cv, GV *gv, OP *retop); #define PERL_ARGS_ASSERT_DOFORM \ assert(cv); assert(gv) STATIC SV * S_space_join_names_mortal(pTHX_ char *const *array); -#define PERL_ARGS_ASSERT_SPACE_JOIN_NAMES_MORTAL \ - assert(array) #endif #if defined(PERL_IN_REGCOMP_C) -STATIC void S__append_range_to_invlist(pTHX_ SV* const invlist, const UV start, const UV end); -#define PERL_ARGS_ASSERT__APPEND_RANGE_TO_INVLIST \ - assert(invlist) -PERL_STATIC_INLINE UV* S__invlist_array_init(SV* const invlist, const bool will_have_0) - __attribute__warn_unused_result__; -#define PERL_ARGS_ASSERT__INVLIST_ARRAY_INIT \ - assert(invlist) - STATIC SV* S__make_exactf_invlist(pTHX_ RExC_state_t *pRExC_state, regnode *node) __attribute__warn_unused_result__; #define PERL_ARGS_ASSERT__MAKE_EXACTF_INVLIST \ @@ -4710,8 +5025,10 @@ STATIC SV* S__make_exactf_invlist(pTHX_ RExC_state_t *pRExC_state, regnode *node STATIC void S_add_above_Latin1_folds(pTHX_ RExC_state_t *pRExC_state, const U8 cp, SV** invlist); #define PERL_ARGS_ASSERT_ADD_ABOVE_LATIN1_FOLDS \ assert(pRExC_state); assert(invlist) +#ifndef PERL_NO_INLINE_FUNCTIONS PERL_STATIC_INLINE SV* S_add_cp_to_invlist(pTHX_ SV* invlist, const UV cp) __attribute__warn_unused_result__; +#endif STATIC U32 S_add_data(RExC_state_t* const pRExC_state, const char* const s, const U32 n) __attribute__warn_unused_result__; @@ -4721,85 +5038,97 @@ STATIC U32 S_add_data(RExC_state_t* const pRExC_state, const char* const s, cons STATIC AV* S_add_multi_match(pTHX_ AV* multi_char_matches, SV* multi_string, const STRLEN cp_count); #define PERL_ARGS_ASSERT_ADD_MULTI_MATCH \ assert(multi_string) +#ifndef PERL_NO_INLINE_FUNCTIONS PERL_STATIC_INLINE void S_alloc_maybe_populate_EXACT(pTHX_ RExC_state_t *pRExC_state, regnode *node, I32 *flagp, STRLEN len, UV code_point, bool downgradable); #define PERL_ARGS_ASSERT_ALLOC_MAYBE_POPULATE_EXACT \ assert(pRExC_state); assert(node); assert(flagp) +#endif STATIC const char * S_cntrl_to_mnemonic(const U8 c) - __attribute__pure__; + __attribute__warn_unused_result__; +#ifndef PERL_NO_INLINE_FUNCTIONS PERL_STATIC_INLINE U8 S_compute_EXACTish(RExC_state_t *pRExC_state); #define PERL_ARGS_ASSERT_COMPUTE_EXACTISH \ assert(pRExC_state) +#endif STATIC regnode * S_construct_ahocorasick_from_trie(pTHX_ RExC_state_t *pRExC_state, regnode *source, U32 depth); #define PERL_ARGS_ASSERT_CONSTRUCT_AHOCORASICK_FROM_TRIE \ assert(pRExC_state); assert(source) STATIC int S_edit_distance(const UV *src, const UV *tgt, const STRLEN x, const STRLEN y, const SSize_t maxDistance) - __attribute__pure__; + __attribute__warn_unused_result__; #define PERL_ARGS_ASSERT_EDIT_DISTANCE \ assert(src); assert(tgt) STATIC SV* S_get_ANYOF_cp_list_for_ssc(pTHX_ const RExC_state_t *pRExC_state, const regnode_charclass* const node); #define PERL_ARGS_ASSERT_GET_ANYOF_CP_LIST_FOR_SSC \ assert(pRExC_state); assert(node) +#ifndef PERL_NO_INLINE_FUNCTIONS PERL_STATIC_INLINE STRLEN* S_get_invlist_iter_addr(SV* invlist) __attribute__warn_unused_result__; #define PERL_ARGS_ASSERT_GET_INVLIST_ITER_ADDR \ assert(invlist) +#endif STATIC bool S_grok_bslash_N(pTHX_ RExC_state_t *pRExC_state, regnode** nodep, UV *code_point_p, int* cp_count, I32 *flagp, const bool strict, const U32 depth); #define PERL_ARGS_ASSERT_GROK_BSLASH_N \ assert(pRExC_state); assert(flagp) +#ifndef PERL_NO_INLINE_FUNCTIONS PERL_STATIC_INLINE regnode* S_handle_named_backref(pTHX_ RExC_state_t *pRExC_state, I32 *flagp, char * parse_start, char ch); #define PERL_ARGS_ASSERT_HANDLE_NAMED_BACKREF \ assert(pRExC_state); assert(flagp); assert(parse_start) +#endif STATIC int S_handle_possible_posix(pTHX_ RExC_state_t *pRExC_state, const char* const s, char ** updated_parse_ptr, AV** posix_warnings, const bool check_only); #define PERL_ARGS_ASSERT_HANDLE_POSSIBLE_POSIX \ assert(pRExC_state); assert(s) STATIC regnode* S_handle_regex_sets(pTHX_ RExC_state_t *pRExC_state, SV ** return_invlist, I32 *flagp, U32 depth, char * const oregcomp_parse); #define PERL_ARGS_ASSERT_HANDLE_REGEX_SETS \ assert(pRExC_state); assert(flagp); assert(oregcomp_parse) +#ifndef PERL_NO_INLINE_FUNCTIONS PERL_STATIC_INLINE SV* S_invlist_clone(pTHX_ SV* const invlist) __attribute__warn_unused_result__; #define PERL_ARGS_ASSERT_INVLIST_CLONE \ assert(invlist) +#endif STATIC SV* S_invlist_contents(pTHX_ SV* const invlist, const bool traditional_style) __attribute__warn_unused_result__; #define PERL_ARGS_ASSERT_INVLIST_CONTENTS \ assert(invlist) -STATIC void S_invlist_extend(pTHX_ SV* const invlist, const UV len); -#define PERL_ARGS_ASSERT_INVLIST_EXTEND \ - assert(invlist) +#ifndef PERL_NO_INLINE_FUNCTIONS PERL_STATIC_INLINE UV S_invlist_highest(SV* const invlist) __attribute__warn_unused_result__; #define PERL_ARGS_ASSERT_INVLIST_HIGHEST \ assert(invlist) +#endif +#ifndef PERL_NO_INLINE_FUNCTIONS PERL_STATIC_INLINE bool S_invlist_is_iterating(SV* const invlist) __attribute__warn_unused_result__; #define PERL_ARGS_ASSERT_INVLIST_IS_ITERATING \ assert(invlist) +#endif +#ifndef PERL_NO_INLINE_FUNCTIONS PERL_STATIC_INLINE void S_invlist_iterfinish(SV* invlist); #define PERL_ARGS_ASSERT_INVLIST_ITERFINISH \ assert(invlist) +#endif +#ifndef PERL_NO_INLINE_FUNCTIONS PERL_STATIC_INLINE void S_invlist_iterinit(SV* invlist); #define PERL_ARGS_ASSERT_INVLIST_ITERINIT \ assert(invlist) +#endif STATIC bool S_invlist_iternext(SV* invlist, UV* start, UV* end) __attribute__warn_unused_result__; #define PERL_ARGS_ASSERT_INVLIST_ITERNEXT \ assert(invlist); assert(start); assert(end) -PERL_STATIC_INLINE UV S_invlist_max(SV* const invlist) - __attribute__warn_unused_result__; -#define PERL_ARGS_ASSERT_INVLIST_MAX \ - assert(invlist) - +#ifndef PERL_NO_INLINE_FUNCTIONS PERL_STATIC_INLINE void S_invlist_set_len(pTHX_ SV* const invlist, const UV len, const bool offset); #define PERL_ARGS_ASSERT_INVLIST_SET_LEN \ assert(invlist) +#endif STATIC bool S_is_ssc_worth_it(const RExC_state_t * pRExC_state, const regnode_ssc * ssc); #define PERL_ARGS_ASSERT_IS_SSC_WORTH_IT \ assert(pRExC_state); assert(ssc) @@ -4835,15 +5164,14 @@ STATIC regnode* S_reg2Lanode(pTHX_ RExC_state_t *pRExC_state, const U8 op, const STATIC regnode* S_reg_node(pTHX_ RExC_state_t *pRExC_state, U8 op); #define PERL_ARGS_ASSERT_REG_NODE \ assert(pRExC_state) -STATIC UV S_reg_recode(pTHX_ const U8 value, SV **encp); -#define PERL_ARGS_ASSERT_REG_RECODE \ - assert(encp) STATIC SV * S_reg_scan_name(pTHX_ RExC_state_t *pRExC_state, U32 flags); #define PERL_ARGS_ASSERT_REG_SCAN_NAME \ assert(pRExC_state) +#ifndef PERL_NO_INLINE_FUNCTIONS PERL_STATIC_INLINE char * S_reg_skipcomment(RExC_state_t *pRExC_state, char * p); #define PERL_ARGS_ASSERT_REG_SKIPCOMMENT \ assert(pRExC_state); assert(p) +#endif STATIC regnode* S_reganode(pTHX_ RExC_state_t *pRExC_state, U8 op, U32 arg); #define PERL_ARGS_ASSERT_REGANODE \ assert(pRExC_state) @@ -4857,11 +5185,11 @@ STATIC regnode* S_regclass(pTHX_ RExC_state_t *pRExC_state, I32 *flagp, U32 dept #define PERL_ARGS_ASSERT_REGCLASS \ assert(pRExC_state); assert(flagp) STATIC unsigned int S_regex_set_precedence(const U8 my_operator) - __attribute__pure__; + __attribute__warn_unused_result__; -STATIC void S_reginsert(pTHX_ RExC_state_t *pRExC_state, U8 op, regnode *opnd, U32 depth); +STATIC void S_reginsert(pTHX_ RExC_state_t *pRExC_state, U8 op, regnode *operand, U32 depth); #define PERL_ARGS_ASSERT_REGINSERT \ - assert(pRExC_state); assert(opnd) + assert(pRExC_state); assert(operand) STATIC regnode* S_regnode_guts(pTHX_ RExC_state_t *pRExC_state, const U8 op, const STRLEN extra_len, const char* const name); #define PERL_ARGS_ASSERT_REGNODE_GUTS \ assert(pRExC_state); assert(name) @@ -4880,30 +5208,38 @@ STATIC void S_set_ANYOF_arg(pTHX_ RExC_state_t* const pRExC_state, regnode* cons STATIC void S_skip_to_be_ignored_text(pTHX_ RExC_state_t *pRExC_state, char ** p, const bool force_to_xmod); #define PERL_ARGS_ASSERT_SKIP_TO_BE_IGNORED_TEXT \ assert(pRExC_state); assert(p) +#ifndef PERL_NO_INLINE_FUNCTIONS PERL_STATIC_INLINE void S_ssc_add_range(pTHX_ regnode_ssc *ssc, UV const start, UV const end); #define PERL_ARGS_ASSERT_SSC_ADD_RANGE \ assert(ssc) +#endif STATIC void S_ssc_and(pTHX_ const RExC_state_t *pRExC_state, regnode_ssc *ssc, const regnode_charclass *and_with); #define PERL_ARGS_ASSERT_SSC_AND \ assert(pRExC_state); assert(ssc); assert(and_with) STATIC void S_ssc_anything(pTHX_ regnode_ssc *ssc); #define PERL_ARGS_ASSERT_SSC_ANYTHING \ assert(ssc) +#ifndef PERL_NO_INLINE_FUNCTIONS PERL_STATIC_INLINE void S_ssc_clear_locale(regnode_ssc *ssc); #define PERL_ARGS_ASSERT_SSC_CLEAR_LOCALE \ assert(ssc) +#endif +#ifndef PERL_NO_INLINE_FUNCTIONS PERL_STATIC_INLINE void S_ssc_cp_and(pTHX_ regnode_ssc *ssc, UV const cp); #define PERL_ARGS_ASSERT_SSC_CP_AND \ assert(ssc) +#endif STATIC void S_ssc_finalize(pTHX_ RExC_state_t *pRExC_state, regnode_ssc *ssc); #define PERL_ARGS_ASSERT_SSC_FINALIZE \ assert(pRExC_state); assert(ssc) STATIC void S_ssc_init(pTHX_ const RExC_state_t *pRExC_state, regnode_ssc *ssc); #define PERL_ARGS_ASSERT_SSC_INIT \ assert(pRExC_state); assert(ssc) +#ifndef PERL_NO_INLINE_FUNCTIONS PERL_STATIC_INLINE void S_ssc_intersection(pTHX_ regnode_ssc *ssc, SV* const invlist, const bool invert_2nd); #define PERL_ARGS_ASSERT_SSC_INTERSECTION \ assert(ssc); assert(invlist) +#endif STATIC int S_ssc_is_anything(const regnode_ssc *ssc) __attribute__warn_unused_result__; #define PERL_ARGS_ASSERT_SSC_IS_ANYTHING \ @@ -4917,9 +5253,11 @@ STATIC int S_ssc_is_cp_posixl_init(const RExC_state_t *pRExC_state, const regnod STATIC void S_ssc_or(pTHX_ const RExC_state_t *pRExC_state, regnode_ssc *ssc, const regnode_charclass *or_with); #define PERL_ARGS_ASSERT_SSC_OR \ assert(pRExC_state); assert(ssc); assert(or_with) +#ifndef PERL_NO_INLINE_FUNCTIONS PERL_STATIC_INLINE void S_ssc_union(pTHX_ regnode_ssc *ssc, SV* const invlist, const bool invert_2nd); #define PERL_ARGS_ASSERT_SSC_UNION \ assert(ssc); assert(invlist) +#endif STATIC SSize_t S_study_chunk(pTHX_ RExC_state_t *pRExC_state, regnode **scanp, SSize_t *minlenp, SSize_t *deltap, regnode *last, struct scan_data_t *data, I32 stopparen, U32 recursed_depth, regnode_ssc *and_withp, U32 flags, U32 depth); #define PERL_ARGS_ASSERT_STUDY_CHUNK \ assert(pRExC_state); assert(scanp); assert(minlenp); assert(deltap); assert(last) @@ -4957,17 +5295,21 @@ PERL_CALLCONV SV* Perl__get_swash_invlist(pTHX_ SV* const swash) #define PERL_ARGS_ASSERT__GET_SWASH_INVLIST \ assert(swash) +#ifndef PERL_NO_INLINE_FUNCTIONS PERL_STATIC_INLINE bool S__invlist_contains_cp(SV* const invlist, const UV cp) __attribute__warn_unused_result__; #define PERL_ARGS_ASSERT__INVLIST_CONTAINS_CP \ assert(invlist) +#endif +#ifndef PERL_NO_INLINE_FUNCTIONS PERL_STATIC_INLINE UV S__invlist_len(SV* const invlist) __attribute__warn_unused_result__; #define PERL_ARGS_ASSERT__INVLIST_LEN \ assert(invlist) +#endif -PERL_CALLCONV IV Perl__invlist_search(SV* const invlist, const UV cp) +PERL_CALLCONV SSize_t Perl__invlist_search(SV* const invlist, const UV cp) __attribute__warn_unused_result__; #define PERL_ARGS_ASSERT__INVLIST_SEARCH \ assert(invlist) @@ -4977,15 +5319,19 @@ PERL_CALLCONV HV* Perl__swash_inversion_hash(pTHX_ SV* const swash) #define PERL_ARGS_ASSERT__SWASH_INVERSION_HASH \ assert(swash) +#ifndef PERL_NO_INLINE_FUNCTIONS PERL_STATIC_INLINE bool* S_get_invlist_offset_addr(SV* invlist) __attribute__warn_unused_result__; #define PERL_ARGS_ASSERT_GET_INVLIST_OFFSET_ADDR \ assert(invlist) +#endif +#ifndef PERL_NO_INLINE_FUNCTIONS PERL_STATIC_INLINE UV* S_invlist_array(SV* const invlist) __attribute__warn_unused_result__; #define PERL_ARGS_ASSERT_INVLIST_ARRAY \ assert(invlist) +#endif #endif #if defined(PERL_IN_REGCOMP_C) || defined(PERL_IN_REGEXEC_C) || defined(PERL_IN_UTF8_C) || defined(PERL_IN_TOKE_C) @@ -4994,10 +5340,12 @@ PERL_CALLCONV SV* Perl__core_swash_init(pTHX_ const char* pkg, const char* name, assert(pkg); assert(name); assert(listsv) #endif #if defined(PERL_IN_REGCOMP_C) || defined(PERL_IN_TOKE_C) || defined(PERL_IN_DQUOTE_C) +#ifndef PERL_NO_INLINE_FUNCTIONS PERL_STATIC_INLINE char* S_form_short_octal_warning(pTHX_ const char * const s, const STRLEN len) __attribute__warn_unused_result__; #define PERL_ARGS_ASSERT_FORM_SHORT_OCTAL_WARNING \ assert(s) +#endif PERL_CALLCONV char Perl_grok_bslash_c(pTHX_ const char source, const bool output_warning) __attribute__warn_unused_result__; @@ -5012,15 +5360,16 @@ PERL_CALLCONV bool Perl_grok_bslash_x(pTHX_ char** s, UV* uv, const char** error #define PERL_ARGS_ASSERT_GROK_BSLASH_X \ assert(s); assert(uv); assert(error_msg) +#ifndef PERL_NO_INLINE_FUNCTIONS PERL_STATIC_INLINE I32 S_regcurly(const char *s) - __attribute__warn_unused_result__ - __attribute__pure__; + __attribute__warn_unused_result__; #define PERL_ARGS_ASSERT_REGCURLY \ assert(s) +#endif #endif #if defined(PERL_IN_REGCOMP_C) || defined(PERL_IN_UTF8_C) -PERL_CALLCONV SV* Perl__add_range_to_invlist(pTHX_ SV* invlist, const UV start, const UV end) +PERL_CALLCONV SV* Perl__add_range_to_invlist(pTHX_ SV* invlist, UV start, UV end) __attribute__warn_unused_result__; /* PERL_CALLCONV void _invlist_intersection(pTHX_ SV* const a, SV* const b, SV** i); */ @@ -5068,6 +5417,11 @@ STATIC WB_enum S_advance_one_WB(pTHX_ U8 ** curpos, const U8 * const strend, con #define PERL_ARGS_ASSERT_ADVANCE_ONE_WB \ assert(curpos); assert(strend) +STATIC GCB_enum S_backup_one_GCB(pTHX_ const U8 * const strbeg, U8 ** curpos, const bool utf8_target) + __attribute__warn_unused_result__; +#define PERL_ARGS_ASSERT_BACKUP_ONE_GCB \ + assert(strbeg); assert(curpos) + STATIC LB_enum S_backup_one_LB(pTHX_ const U8 * const strbeg, U8 ** curpos, const bool utf8_target) __attribute__warn_unused_result__; #define PERL_ARGS_ASSERT_BACKUP_ONE_LB \ @@ -5088,16 +5442,15 @@ STATIC char* S_find_byclass(pTHX_ regexp * prog, const regnode *c, char *s, cons #define PERL_ARGS_ASSERT_FIND_BYCLASS \ assert(prog); assert(c); assert(s); assert(strend) -STATIC bool S_isFOO_lc(pTHX_ const U8 classnum, const U8 character) - __attribute__warn_unused_result__; - STATIC bool S_isFOO_utf8_lc(pTHX_ const U8 classnum, const U8* character) __attribute__warn_unused_result__; #define PERL_ARGS_ASSERT_ISFOO_UTF8_LC \ assert(character) -PERL_STATIC_INLINE bool S_isGCB(const GCB_enum before, const GCB_enum after) +STATIC bool S_isGCB(pTHX_ const GCB_enum before, const GCB_enum after, const U8 * const strbeg, const U8 * const curpos, const bool utf8_target) __attribute__warn_unused_result__; +#define PERL_ARGS_ASSERT_ISGCB \ + assert(strbeg); assert(curpos) STATIC bool S_isLB(pTHX_ LB_enum before, LB_enum after, const U8 * const strbeg, const U8 * const curpos, const U8 * const strend, const bool utf8_target) __attribute__warn_unused_result__; @@ -5119,10 +5472,13 @@ STATIC I32 S_reg_check_named_buff_matched(const regexp *rex, const regnode *scan #define PERL_ARGS_ASSERT_REG_CHECK_NAMED_BUFF_MATCHED \ assert(rex); assert(scan) -STATIC void S_regcppop(pTHX_ regexp *rex, U32 *maxopenparen_p); +STATIC void S_regcp_restore(pTHX_ regexp *rex, I32 ix, U32 *maxopenparen_p _pDEPTH); +#define PERL_ARGS_ASSERT_REGCP_RESTORE \ + assert(rex); assert(maxopenparen_p) +STATIC void S_regcppop(pTHX_ regexp *rex, U32 *maxopenparen_p _pDEPTH); #define PERL_ARGS_ASSERT_REGCPPOP \ assert(rex); assert(maxopenparen_p) -STATIC CHECKPOINT S_regcppush(pTHX_ const regexp *rex, I32 parenfloor, U32 maxopenparen); +STATIC CHECKPOINT S_regcppush(pTHX_ const regexp *rex, I32 parenfloor, U32 maxopenparen _pDEPTH); #define PERL_ARGS_ASSERT_REGCPPUSH \ assert(rex) STATIC U8* S_reghop3(U8 *s, SSize_t off, const U8 *lim) @@ -5135,7 +5491,7 @@ STATIC U8* S_reghop4(U8 *s, SSize_t off, const U8 *llim, const U8 *rlim) #define PERL_ARGS_ASSERT_REGHOP4 \ assert(s); assert(llim); assert(rlim) -STATIC U8* S_reghopmaybe3(U8 *s, SSize_t off, const U8 *lim) +STATIC U8* S_reghopmaybe3(U8 *s, SSize_t off, const U8 * const lim) __attribute__warn_unused_result__; #define PERL_ARGS_ASSERT_REGHOPMAYBE3 \ assert(s); assert(lim) @@ -5150,7 +5506,7 @@ STATIC SSize_t S_regmatch(pTHX_ regmatch_info *reginfo, char *startpos, regnode #define PERL_ARGS_ASSERT_REGMATCH \ assert(reginfo); assert(startpos); assert(prog) -STATIC I32 S_regrepeat(pTHX_ regexp *prog, char **startposp, const regnode *p, regmatch_info *const reginfo, I32 max, int depth) +STATIC I32 S_regrepeat(pTHX_ regexp *prog, char **startposp, const regnode *p, regmatch_info *const reginfo, I32 max _pDEPTH) __attribute__warn_unused_result__; #define PERL_ARGS_ASSERT_REGREPEAT \ assert(prog); assert(startposp); assert(p); assert(reginfo) @@ -5167,6 +5523,18 @@ STATIC void S_to_utf8_substr(pTHX_ regexp * prog); #define PERL_ARGS_ASSERT_TO_UTF8_SUBSTR \ assert(prog) #endif +#if defined(PERL_IN_REGEXEC_C) || defined(PERL_IN_TOKE_C) +PERL_CALLCONV bool Perl__is_grapheme(pTHX_ const U8 * strbeg, const U8 * s, const U8 *strend, const UV cp) + __attribute__warn_unused_result__; +#define PERL_ARGS_ASSERT__IS_GRAPHEME \ + assert(strbeg); assert(s); assert(strend) + +#endif +#if defined(PERL_IN_REGEXEC_C) || defined(PERL_IN_UTF8_C) +PERL_CALLCONV bool Perl_isFOO_lc(pTHX_ const U8 classnum, const U8 character) + __attribute__warn_unused_result__; + +#endif #if defined(PERL_IN_SCOPE_C) STATIC void S_save_pushptri32ptr(pTHX_ void *const ptr1, const I32 i, void *const ptr2, const int type); STATIC SV* S_save_scalar_at(pTHX_ SV **sptr, const U32 flags); @@ -5191,7 +5559,7 @@ STATIC I32 S_expect_number(pTHX_ char **const pattern) #define PERL_ARGS_ASSERT_EXPECT_NUMBER \ assert(pattern) -STATIC I32 S_find_array_subscript(pTHX_ const AV *const av, const SV *const val); +STATIC SSize_t S_find_array_subscript(pTHX_ const AV *const av, const SV *const val); #define PERL_ARGS_ASSERT_FIND_ARRAY_SUBSCRIPT \ assert(val) STATIC SV * S_find_hash_subscript(pTHX_ const HV *const hv, const SV *const val); @@ -5239,9 +5607,11 @@ STATIC STRLEN S_sv_pos_u2b_forwards(const U8 *const start, const U8 *const send, STATIC STRLEN S_sv_pos_u2b_midway(const U8 *const start, const U8 *send, STRLEN uoffset, const STRLEN uend); #define PERL_ARGS_ASSERT_SV_POS_U2B_MIDWAY \ assert(start); assert(send) +#ifndef PERL_NO_INLINE_FUNCTIONS PERL_STATIC_INLINE void S_sv_unglob(pTHX_ SV *const sv, U32 flags); #define PERL_ARGS_ASSERT_SV_UNGLOB \ assert(sv) +#endif STATIC char * S_uiv_2buf(char *const buf, const IV iv, UV uv, const int is_uv, char **const peob) __attribute__warn_unused_result__; #define PERL_ARGS_ASSERT_UIV_2BUF \ @@ -5271,7 +5641,7 @@ STATIC void S_unreferenced_to_tmp_stack(pTHX_ AV *const unreferenced); # endif #endif #if defined(PERL_IN_SV_C) || defined (PERL_IN_OP_C) -PERL_CALLCONV SV * Perl_varname(pTHX_ const GV *const gv, const char gvtype, PADOFFSET targ, const SV *const keyname, I32 aindex, int subscript_type) +PERL_CALLCONV SV * Perl_varname(pTHX_ const GV *const gv, const char gvtype, PADOFFSET targ, const SV *const keyname, SSize_t aindex, int subscript_type) __attribute__warn_unused_result__; #endif @@ -5306,7 +5676,7 @@ STATIC char* S_force_version(pTHX_ char *s, int guessing); STATIC char* S_force_word(pTHX_ char *start, int token, int check_keyword, int allow_pack); #define PERL_ARGS_ASSERT_FORCE_WORD \ assert(start) -PERL_STATIC_INLINE SV* S_get_and_check_backslash_N_name(pTHX_ const char* s, const char* const e) +STATIC SV* S_get_and_check_backslash_N_name(pTHX_ const char* s, const char* const e) __attribute__warn_unused_result__; #define PERL_ARGS_ASSERT_GET_AND_CHECK_BACKSLASH_N_NAME \ assert(s); assert(e) @@ -5320,7 +5690,7 @@ STATIC int S_intuit_method(pTHX_ char *s, SV *ioname, CV *cv); STATIC int S_intuit_more(pTHX_ char *s); #define PERL_ARGS_ASSERT_INTUIT_MORE \ assert(s) -STATIC I32 S_lop(pTHX_ I32 f, int x, char *s); +STATIC I32 S_lop(pTHX_ I32 f, U8 x, char *s); #define PERL_ARGS_ASSERT_LOP \ assert(s) PERL_STATIC_NO_RET void S_missingterm(pTHX_ char *s) @@ -5332,7 +5702,7 @@ STATIC SV* S_new_constant(pTHX_ const char *s, STRLEN len, const char *key, STRL STATIC void S_no_op(pTHX_ const char *const what, char *s); #define PERL_ARGS_ASSERT_NO_OP \ assert(what) -STATIC void S_parse_ident(pTHX_ char **s, char **d, char * const e, int allow_package, bool is_utf8); +STATIC void S_parse_ident(pTHX_ char **s, char **d, char * const e, int allow_package, bool is_utf8, bool check_dollar); #define PERL_ARGS_ASSERT_PARSE_IDENT \ assert(s); assert(d); assert(e) STATIC int S_pending_ident(pTHX); @@ -5423,15 +5793,55 @@ STATIC bool S_isa_lookup(pTHX_ HV *stash, const char * const name, STRLEN len, U STATIC UV S__to_utf8_case(pTHX_ const UV uv1, const U8 *p, U8* ustrp, STRLEN *lenp, SV **swashp, const char *normal, const char *special); #define PERL_ARGS_ASSERT__TO_UTF8_CASE \ assert(p); assert(ustrp); assert(swashp); assert(normal) +STATIC U32 S_check_and_deprecate(pTHX_ const U8 * p, const U8 ** e, const unsigned type, const bool use_locale, const char * const file, const unsigned line); +#define PERL_ARGS_ASSERT_CHECK_AND_DEPRECATE \ + assert(p); assert(e); assert(file) STATIC UV S_check_locale_boundary_crossing(pTHX_ const U8* const p, const UV result, U8* const ustrp, STRLEN *lenp) __attribute__warn_unused_result__; #define PERL_ARGS_ASSERT_CHECK_LOCALE_BOUNDARY_CROSSING \ assert(p); assert(ustrp); assert(lenp) +#ifndef PERL_NO_INLINE_FUNCTIONS +PERL_STATIC_INLINE bool S_does_utf8_overflow(const U8 * const s, const U8 * e) + __attribute__warn_unused_result__; +#define PERL_ARGS_ASSERT_DOES_UTF8_OVERFLOW \ + assert(s); assert(e) +#endif + +#ifndef PERL_NO_INLINE_FUNCTIONS +PERL_STATIC_INLINE bool S_isFF_OVERLONG(const U8 * const s, const STRLEN len) + __attribute__warn_unused_result__; +#define PERL_ARGS_ASSERT_ISFF_OVERLONG \ + assert(s) +#endif + +#ifndef PERL_NO_INLINE_FUNCTIONS PERL_STATIC_INLINE bool S_is_utf8_common(pTHX_ const U8 *const p, SV **swash, const char * const swashname, SV* const invlist) __attribute__warn_unused_result__; #define PERL_ARGS_ASSERT_IS_UTF8_COMMON \ assert(p); assert(swash); assert(swashname) +#endif + +#ifndef PERL_NO_INLINE_FUNCTIONS +PERL_STATIC_INLINE bool S_is_utf8_common_with_len(pTHX_ const U8 *const p, const U8 *const e, SV **swash, const char * const swashname, SV* const invlist) + __attribute__warn_unused_result__; +#define PERL_ARGS_ASSERT_IS_UTF8_COMMON_WITH_LEN \ + assert(p); assert(e); assert(swash); assert(swashname) +#endif + +#ifndef PERL_NO_INLINE_FUNCTIONS +PERL_STATIC_INLINE bool S_is_utf8_cp_above_31_bits(const U8 * const s, const U8 * const e) + __attribute__warn_unused_result__; +#define PERL_ARGS_ASSERT_IS_UTF8_CP_ABOVE_31_BITS \ + assert(s); assert(e) +#endif + +#ifndef PERL_NO_INLINE_FUNCTIONS +PERL_STATIC_INLINE bool S_is_utf8_overlong_given_start_byte_ok(const U8 * const s, const STRLEN len) + __attribute__warn_unused_result__; +#define PERL_ARGS_ASSERT_IS_UTF8_OVERLONG_GIVEN_START_BYTE_OK \ + assert(s) +#endif STATIC U8* S_swash_scan_list_line(pTHX_ U8* l, U8* const lend, UV* min, UV* max, UV* val, const bool wants_value, const U8* const typestr) __attribute__warn_unused_result__; @@ -5443,9 +5853,17 @@ STATIC SV* S_swatch_get(pTHX_ SV* swash, UV start, UV span) #define PERL_ARGS_ASSERT_SWATCH_GET \ assert(swash) -STATIC U8 S_to_lower_latin1(const U8 c, U8 *p, STRLEN *lenp) +STATIC U8 S_to_lower_latin1(const U8 c, U8 *p, STRLEN *lenp, const char dummy) __attribute__warn_unused_result__; +STATIC char * S_unexpected_non_continuation_text(pTHX_ const U8 * const s, STRLEN print_len, const STRLEN non_cont_byte_pos, const STRLEN expect_len) + __attribute__warn_unused_result__; +#define PERL_ARGS_ASSERT_UNEXPECTED_NON_CONTINUATION_TEXT \ + assert(s) + +STATIC void S_warn_on_first_deprecated_use(pTHX_ const char * const name, const char * const alternative, const bool use_locale, const char * const file, const unsigned line); +#define PERL_ARGS_ASSERT_WARN_ON_FIRST_DEPRECATED_USE \ + assert(name); assert(alternative); assert(file) #endif #if defined(PERL_IN_UTF8_C) || defined(PERL_IN_PP_C) PERL_CALLCONV UV Perl__to_upper_title_latin1(pTHX_ const U8 c, U8 *p, STRLEN *lenp, const char S_or_s); @@ -5530,7 +5948,6 @@ PERL_CALLCONV void Perl_clone_params_del(CLONE_PARAMS *param); #define PERL_ARGS_ASSERT_CLONE_PARAMS_DEL \ assert(param) PERL_CALLCONV CLONE_PARAMS * Perl_clone_params_new(PerlInterpreter *const from, PerlInterpreter *const to) - __attribute__malloc__ __attribute__warn_unused_result__; #define PERL_ARGS_ASSERT_CLONE_PARAMS_NEW \ assert(from); assert(to) @@ -5572,7 +5989,6 @@ PERL_CALLCONV struct mro_meta* Perl_mro_meta_dup(pTHX_ struct mro_meta* smeta, C #define PERL_ARGS_ASSERT_MRO_META_DUP \ assert(smeta); assert(param) PERL_CALLCONV OP* Perl_newPADOP(pTHX_ I32 type, I32 flags, SV* sv) - __attribute__malloc__ __attribute__warn_unused_result__; #define PERL_ARGS_ASSERT_NEWPADOP \ assert(sv) @@ -5613,7 +6029,6 @@ PERL_CALLCONV PERL_SI* Perl_si_dup(pTHX_ PERL_SI* si, CLONE_PARAMS* param) assert(param) PERL_CALLCONV ANY* Perl_ss_dup(pTHX_ PerlInterpreter* proto_perl, CLONE_PARAMS* param) - __attribute__malloc__ __attribute__warn_unused_result__; #define PERL_ARGS_ASSERT_SS_DUP \ assert(proto_perl); assert(param) @@ -5641,9 +6056,11 @@ STATIC char* S_stdize_locale(pTHX_ char* locs); PERL_CALLCONV int Perl_magic_setcollxfrm(pTHX_ SV* sv, MAGIC* mg); #define PERL_ARGS_ASSERT_MAGIC_SETCOLLXFRM \ assert(sv); assert(mg) -PERL_CALLCONV char* Perl_mem_collxfrm(pTHX_ const char* s, STRLEN len, STRLEN* xlen); +#ifndef NO_MATHOMS +PERL_CALLCONV char* Perl_mem_collxfrm(pTHX_ const char* input_string, STRLEN len, STRLEN* xlen); #define PERL_ARGS_ASSERT_MEM_COLLXFRM \ - assert(s); assert(xlen) + assert(input_string); assert(xlen) +#endif /* PERL_CALLCONV char* sv_collxfrm(pTHX_ SV *const sv, STRLEN *const nxp); */ PERL_CALLCONV char* Perl_sv_collxfrm_flags(pTHX_ SV *const sv, STRLEN *const nxp, I32 const flags); #define PERL_ARGS_ASSERT_SV_COLLXFRM_FLAGS \ @@ -5700,9 +6117,7 @@ PERL_CALLCONV const char* Perl_quadmath_format_single(const char* format); assert(format) #endif #if defined(WIN32) -PERL_CALLCONV char* Perl_my_setlocale(pTHX_ int category, const char* locale) - __attribute__pure__; - +PERL_CALLCONV char* Perl_my_setlocale(pTHX_ int category, const char* locale); PERL_CALLCONV_NO_RET void win32_croak_not_implemented(const char * fname) __attribute__noreturn__; #define PERL_ARGS_ASSERT_WIN32_CROAK_NOT_IMPLEMENTED \ diff --git a/Master/tlpkg/tlperl/lib/CORE/regcharclass.h b/Master/tlpkg/tlperl/lib/CORE/regcharclass.h index 36fa1fd086a..273176af226 100644 --- a/Master/tlpkg/tlperl/lib/CORE/regcharclass.h +++ b/Master/tlpkg/tlperl/lib/CORE/regcharclass.h @@ -28,55 +28,55 @@ /*** GENERATED CODE ***/ #define is_LNBREAK_safe(s,e,is_utf8) \ ( ((e)-(s) > 2) ? \ - ( ( 0x0A <= ((U8*)s)[0] && ((U8*)s)[0] <= 0x0C ) ? 1 \ - : ( 0x0D == ((U8*)s)[0] ) ? \ - ( ( 0x0A == ((U8*)s)[1] ) ? 2 : 1 ) \ + ( ( 0x0A <= ((const U8*)s)[0] && ((const U8*)s)[0] <= 0x0C ) ? 1 \ + : ( 0x0D == ((const U8*)s)[0] ) ? \ + ( ( 0x0A == ((const U8*)s)[1] ) ? 2 : 1 ) \ : ( is_utf8 ) ? \ - ( ( 0xC2 == ((U8*)s)[0] ) ? \ - ( ( 0x85 == ((U8*)s)[1] ) ? 2 : 0 ) \ - : ( ( ( 0xE2 == ((U8*)s)[0] ) && ( 0x80 == ((U8*)s)[1] ) ) && ( ( ((U8*)s)[2] & 0xFE ) == 0xA8 ) ) ? 3 : 0 )\ - : ( 0x85 == ((U8*)s)[0] ) ) \ + ( ( 0xC2 == ((const U8*)s)[0] ) ? \ + ( ( 0x85 == ((const U8*)s)[1] ) ? 2 : 0 ) \ + : ( ( ( 0xE2 == ((const U8*)s)[0] ) && ( 0x80 == ((const U8*)s)[1] ) ) && ( ( ((const U8*)s)[2] & 0xFE ) == 0xA8 ) ) ? 3 : 0 )\ + : ( 0x85 == ((const U8*)s)[0] ) ) \ : ((e)-(s) > 1) ? \ - ( ( 0x0A <= ((U8*)s)[0] && ((U8*)s)[0] <= 0x0C ) ? 1 \ - : ( 0x0D == ((U8*)s)[0] ) ? \ - ( ( 0x0A == ((U8*)s)[1] ) ? 2 : 1 ) \ + ( ( 0x0A <= ((const U8*)s)[0] && ((const U8*)s)[0] <= 0x0C ) ? 1 \ + : ( 0x0D == ((const U8*)s)[0] ) ? \ + ( ( 0x0A == ((const U8*)s)[1] ) ? 2 : 1 ) \ : ( is_utf8 ) ? \ - ( ( ( 0xC2 == ((U8*)s)[0] ) && ( 0x85 == ((U8*)s)[1] ) ) ? 2 : 0 ) \ - : ( 0x85 == ((U8*)s)[0] ) ) \ + ( ( ( 0xC2 == ((const U8*)s)[0] ) && ( 0x85 == ((const U8*)s)[1] ) ) ? 2 : 0 )\ + : ( 0x85 == ((const U8*)s)[0] ) ) \ : ((e)-(s) > 0) ? \ - ( ( 0x0A <= ((U8*)s)[0] && ((U8*)s)[0] <= 0x0D ) ? 1 \ + ( ( 0x0A <= ((const U8*)s)[0] && ((const U8*)s)[0] <= 0x0D ) ? 1 \ : ( !( is_utf8 ) ) ? \ - ( 0x85 == ((U8*)s)[0] ) \ + ( 0x85 == ((const U8*)s)[0] ) \ : 0 ) \ : 0 ) /*** GENERATED CODE ***/ #define is_LNBREAK_utf8_safe(s,e) \ ( ((e)-(s) > 2) ? \ - ( ( 0x0A <= ((U8*)s)[0] && ((U8*)s)[0] <= 0x0C ) ? 1 \ - : ( 0x0D == ((U8*)s)[0] ) ? \ - ( ( 0x0A == ((U8*)s)[1] ) ? 2 : 1 ) \ - : ( 0xC2 == ((U8*)s)[0] ) ? \ - ( ( 0x85 == ((U8*)s)[1] ) ? 2 : 0 ) \ - : ( ( ( 0xE2 == ((U8*)s)[0] ) && ( 0x80 == ((U8*)s)[1] ) ) && ( ( ((U8*)s)[2] & 0xFE ) == 0xA8 ) ) ? 3 : 0 )\ + ( ( 0x0A <= ((const U8*)s)[0] && ((const U8*)s)[0] <= 0x0C ) ? 1 \ + : ( 0x0D == ((const U8*)s)[0] ) ? \ + ( ( 0x0A == ((const U8*)s)[1] ) ? 2 : 1 ) \ + : ( 0xC2 == ((const U8*)s)[0] ) ? \ + ( ( 0x85 == ((const U8*)s)[1] ) ? 2 : 0 ) \ + : ( ( ( 0xE2 == ((const U8*)s)[0] ) && ( 0x80 == ((const U8*)s)[1] ) ) && ( ( ((const U8*)s)[2] & 0xFE ) == 0xA8 ) ) ? 3 : 0 )\ : ((e)-(s) > 1) ? \ - ( ( 0x0A <= ((U8*)s)[0] && ((U8*)s)[0] <= 0x0C ) ? 1 \ - : ( 0x0D == ((U8*)s)[0] ) ? \ - ( ( 0x0A == ((U8*)s)[1] ) ? 2 : 1 ) \ - : ( ( 0xC2 == ((U8*)s)[0] ) && ( 0x85 == ((U8*)s)[1] ) ) ? 2 : 0 ) \ + ( ( 0x0A <= ((const U8*)s)[0] && ((const U8*)s)[0] <= 0x0C ) ? 1 \ + : ( 0x0D == ((const U8*)s)[0] ) ? \ + ( ( 0x0A == ((const U8*)s)[1] ) ? 2 : 1 ) \ + : ( ( 0xC2 == ((const U8*)s)[0] ) && ( 0x85 == ((const U8*)s)[1] ) ) ? 2 : 0 )\ : ((e)-(s) > 0) ? \ - ( 0x0A <= ((U8*)s)[0] && ((U8*)s)[0] <= 0x0D ) \ + ( 0x0A <= ((const U8*)s)[0] && ((const U8*)s)[0] <= 0x0D ) \ : 0 ) /*** GENERATED CODE ***/ #define is_LNBREAK_latin1_safe(s,e) \ ( ((e)-(s) > 1) ? \ - ( ( ( 0x0A <= ((U8*)s)[0] && ((U8*)s)[0] <= 0x0C ) || 0x85 == ((U8*)s)[0] ) ? 1\ - : ( 0x0D == ((U8*)s)[0] ) ? \ - ( ( 0x0A == ((U8*)s)[1] ) ? 2 : 1 ) \ + ( ( ( 0x0A <= ((const U8*)s)[0] && ((const U8*)s)[0] <= 0x0C ) || 0x85 == ((const U8*)s)[0] ) ? 1\ + : ( 0x0D == ((const U8*)s)[0] ) ? \ + ( ( 0x0A == ((const U8*)s)[1] ) ? 2 : 1 ) \ : 0 ) \ : ((e)-(s) > 0) ? \ - ( ( 0x0A <= ((U8*)s)[0] && ((U8*)s)[0] <= 0x0D ) || 0x85 == ((U8*)s)[0] )\ + ( ( 0x0A <= ((const U8*)s)[0] && ((const U8*)s)[0] <= 0x0D ) || 0x85 == ((const U8*)s)[0] )\ : 0 ) /* @@ -86,13 +86,13 @@ */ /*** GENERATED CODE ***/ #define is_HORIZWS_high(s) \ -( ( 0xE1 == ((U8*)s)[0] ) ? \ - ( ( ( 0x9A == ((U8*)s)[1] ) && ( 0x80 == ((U8*)s)[2] ) ) ? 3 : 0 ) \ -: ( 0xE2 == ((U8*)s)[0] ) ? \ - ( ( 0x80 == ((U8*)s)[1] ) ? \ - ( ( ( ((U8*)s)[2] <= 0x8A ) || 0xAF == ((U8*)s)[2] ) ? 3 : 0 ) \ - : ( ( 0x81 == ((U8*)s)[1] ) && ( 0x9F == ((U8*)s)[2] ) ) ? 3 : 0 ) \ -: ( ( ( 0xE3 == ((U8*)s)[0] ) && ( 0x80 == ((U8*)s)[1] ) ) && ( 0x80 == ((U8*)s)[2] ) ) ? 3 : 0 ) +( ( 0xE1 == ((const U8*)s)[0] ) ? \ + ( ( ( 0x9A == ((const U8*)s)[1] ) && ( 0x80 == ((const U8*)s)[2] ) ) ? 3 : 0 )\ +: ( 0xE2 == ((const U8*)s)[0] ) ? \ + ( ( 0x80 == ((const U8*)s)[1] ) ? \ + ( ( ( ((const U8*)s)[2] <= 0x8A ) || 0xAF == ((const U8*)s)[2] ) ? 3 : 0 )\ + : ( ( 0x81 == ((const U8*)s)[1] ) && ( 0x9F == ((const U8*)s)[2] ) ) ? 3 : 0 )\ +: ( ( ( 0xE3 == ((const U8*)s)[0] ) && ( 0x80 == ((const U8*)s)[1] ) ) && ( 0x80 == ((const U8*)s)[2] ) ) ? 3 : 0 ) /*** GENERATED CODE ***/ #define is_HORIZWS_cp_high(cp) \ @@ -108,7 +108,7 @@ */ /*** GENERATED CODE ***/ #define is_VERTWS_high(s) \ -( ( ( ( 0xE2 == ((U8*)s)[0] ) && ( 0x80 == ((U8*)s)[1] ) ) && ( ( ((U8*)s)[2] & 0xFE ) == 0xA8 ) ) ? 3 : 0 ) +( ( ( ( 0xE2 == ((const U8*)s)[0] ) && ( 0x80 == ((const U8*)s)[1] ) ) && ( ( ((const U8*)s)[2] & 0xFE ) == 0xA8 ) ) ? 3 : 0 ) /*** GENERATED CODE ***/ #define is_VERTWS_cp_high(cp) \ @@ -121,10 +121,10 @@ */ /*** GENERATED CODE ***/ #define is_XDIGIT_high(s) \ -( ( 0xEF == ((U8*)s)[0] ) ? \ - ( ( 0xBC == ((U8*)s)[1] ) ? \ - ( ( ( 0x90 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x99 ) || ( 0xA1 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0xA6 ) ) ? 3 : 0 )\ - : ( ( 0xBD == ((U8*)s)[1] ) && ( 0x81 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x86 ) ) ? 3 : 0 )\ +( ( 0xEF == ((const U8*)s)[0] ) ? \ + ( ( 0xBC == ((const U8*)s)[1] ) ? \ + ( ( ( 0x90 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x99 ) || ( 0xA1 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0xA6 ) ) ? 3 : 0 )\ + : ( ( 0xBD == ((const U8*)s)[1] ) && ( 0x81 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x86 ) ) ? 3 : 0 )\ : 0 ) /*** GENERATED CODE ***/ @@ -139,13 +139,13 @@ */ /*** GENERATED CODE ***/ #define is_XPERLSPACE_high(s) \ -( ( 0xE1 == ((U8*)s)[0] ) ? \ - ( ( ( 0x9A == ((U8*)s)[1] ) && ( 0x80 == ((U8*)s)[2] ) ) ? 3 : 0 ) \ -: ( 0xE2 == ((U8*)s)[0] ) ? \ - ( ( 0x80 == ((U8*)s)[1] ) ? \ - ( ( ( ((U8*)s)[2] <= 0x8A ) || ( ((U8*)s)[2] & 0xFE ) == 0xA8 || 0xAF == ((U8*)s)[2] ) ? 3 : 0 )\ - : ( ( 0x81 == ((U8*)s)[1] ) && ( 0x9F == ((U8*)s)[2] ) ) ? 3 : 0 ) \ -: ( ( ( 0xE3 == ((U8*)s)[0] ) && ( 0x80 == ((U8*)s)[1] ) ) && ( 0x80 == ((U8*)s)[2] ) ) ? 3 : 0 ) +( ( 0xE1 == ((const U8*)s)[0] ) ? \ + ( ( ( 0x9A == ((const U8*)s)[1] ) && ( 0x80 == ((const U8*)s)[2] ) ) ? 3 : 0 )\ +: ( 0xE2 == ((const U8*)s)[0] ) ? \ + ( ( 0x80 == ((const U8*)s)[1] ) ? \ + ( ( ( ((const U8*)s)[2] <= 0x8A ) || ( ((const U8*)s)[2] & 0xFE ) == 0xA8 || 0xAF == ((const U8*)s)[2] ) ? 3 : 0 )\ + : ( ( 0x81 == ((const U8*)s)[1] ) && ( 0x9F == ((const U8*)s)[2] ) ) ? 3 : 0 )\ +: ( ( ( 0xE3 == ((const U8*)s)[0] ) && ( 0x80 == ((const U8*)s)[1] ) ) && ( 0x80 == ((const U8*)s)[2] ) ) ? 3 : 0 ) /*** GENERATED CODE ***/ #define is_XPERLSPACE_cp_high(cp) \ @@ -163,7 +163,7 @@ */ /*** GENERATED CODE ***/ #define is_REPLACEMENT_utf8_safe(s,e) \ -( ( ( ( ( ((e) - (s)) >= 3 ) && ( 0xEF == ((U8*)s)[0] ) ) && ( 0xBF == ((U8*)s)[1] ) ) && ( 0xBD == ((U8*)s)[2] ) ) ? 3 : 0 ) +( ( ( ( ( ((e) - (s)) >= 3 ) && ( 0xEF == ((const U8*)s)[0] ) ) && ( 0xBF == ((const U8*)s)[1] ) ) && ( 0xBD == ((const U8*)s)[2] ) ) ? 3 : 0 ) /* NONCHAR: Non character code points @@ -171,25 +171,25 @@ \p{_Perl_Nchar} */ /*** GENERATED CODE ***/ -#define is_NONCHAR_utf8(s) \ -( ( 0xEF == ((U8*)s)[0] ) ? \ - ( ( 0xB7 == ((U8*)s)[1] ) ? \ - ( ( 0x90 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0xAF ) ? 3 : 0 ) \ - : ( ( 0xBF == ((U8*)s)[1] ) && ( ((U8*)s)[2] >= 0xBE ) ) ? 3 : 0 ) \ -: ( 0xF0 == ((U8*)s)[0] ) ? \ - ( ( ( ( ((U8*)s)[1] == 0x9F || ( ( ((U8*)s)[1] & 0xEF ) == 0xAF ) ) && ( 0xBF == ((U8*)s)[2] ) ) && ( ((U8*)s)[3] >= 0xBE ) ) ? 4 : 0 )\ -: ( 0xF1 <= ((U8*)s)[0] && ((U8*)s)[0] <= 0xF3 ) ? \ - ( ( ( ( ( ((U8*)s)[1] & 0xCF ) == 0x8F ) && ( 0xBF == ((U8*)s)[2] ) ) && ( ((U8*)s)[3] >= 0xBE ) ) ? 4 : 0 )\ -: ( ( ( ( 0xF4 == ((U8*)s)[0] ) && ( 0x8F == ((U8*)s)[1] ) ) && ( 0xBF == ((U8*)s)[2] ) ) && ( ((U8*)s)[3] >= 0xBE ) ) ? 4 : 0 ) +#define is_NONCHAR_utf8_safe(s,e) \ +( ( ( LIKELY((e) > (s)) ) && ( LIKELY(((e) - (s)) >= UTF8SKIP(s)) ) ) ? ( ( 0xEF == ((const U8*)s)[0] ) ?\ + ( ( 0xB7 == ((const U8*)s)[1] ) ? \ + ( ( 0x90 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0xAF ) ? 3 : 0 )\ + : ( ( 0xBF == ((const U8*)s)[1] ) && ( ( ((const U8*)s)[2] & 0xFE ) == 0xBE ) ) ? 3 : 0 )\ + : ( 0xF0 == ((const U8*)s)[0] ) ? \ + ( ( ( ( ((const U8*)s)[1] == 0x9F || ( ( ((const U8*)s)[1] & 0xEF ) == 0xAF ) ) && ( 0xBF == ((const U8*)s)[2] ) ) && ( ( ((const U8*)s)[3] & 0xFE ) == 0xBE ) ) ? 4 : 0 )\ + : ( 0xF1 <= ((const U8*)s)[0] && ((const U8*)s)[0] <= 0xF3 ) ? \ + ( ( ( ( ( ((const U8*)s)[1] & 0xCF ) == 0x8F ) && ( 0xBF == ((const U8*)s)[2] ) ) && ( ( ((const U8*)s)[3] & 0xFE ) == 0xBE ) ) ? 4 : 0 )\ + : ( ( ( ( 0xF4 == ((const U8*)s)[0] ) && ( 0x8F == ((const U8*)s)[1] ) ) && ( 0xBF == ((const U8*)s)[2] ) ) && ( ( ((const U8*)s)[3] & 0xFE ) == 0xBE ) ) ? 4 : 0 ) : 0 ) /* - SURROGATE: Surrogate characters + SURROGATE: Surrogate code points \p{_Perl_Surrogate} */ /*** GENERATED CODE ***/ -#define is_SURROGATE_utf8(s) \ -( ( ( 0xED == ((U8*)s)[0] ) && ( ((U8*)s)[1] >= 0xA0 ) ) ? 3 : 0 ) +#define is_SURROGATE_utf8_safe(s,e) \ +( ( ( ( ( ((e) - (s)) >= 3 ) && ( 0xED == ((const U8*)s)[0] ) ) && ( ( ((const U8*)s)[1] & 0xE0 ) == 0xA0 ) ) && ( ( ((const U8*)s)[2] & 0xC0 ) == 0x80 ) ) ? 3 : 0 ) /* QUOTEMETA: Meta-characters that \Q should quote @@ -198,53 +198,53 @@ */ /*** GENERATED CODE ***/ #define is_QUOTEMETA_high(s) \ -( ( 0xCD == ((U8*)s)[0] ) ? \ - ( ( 0x8F == ((U8*)s)[1] ) ? 2 : 0 ) \ -: ( 0xD8 == ((U8*)s)[0] ) ? \ - ( ( 0x9C == ((U8*)s)[1] ) ? 2 : 0 ) \ -: ( 0xE1 == ((U8*)s)[0] ) ? \ - ( ( 0x85 == ((U8*)s)[1] ) ? \ - ( ( 0x9F == ((U8*)s)[2] || 0xA0 == ((U8*)s)[2] ) ? 3 : 0 ) \ - : ( 0x9A == ((U8*)s)[1] ) ? \ - ( ( 0x80 == ((U8*)s)[2] ) ? 3 : 0 ) \ - : ( 0x9E == ((U8*)s)[1] ) ? \ - ( ( ( ((U8*)s)[2] & 0xFE ) == 0xB4 ) ? 3 : 0 ) \ - : ( ( 0xA0 == ((U8*)s)[1] ) && ( 0x8B <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x8E ) ) ? 3 : 0 )\ -: ( 0xE2 == ((U8*)s)[0] ) ? \ - ( ( 0x80 == ((U8*)s)[1] ) ? \ - ( ( ((U8*)s)[2] <= 0xBE ) ? 3 : 0 ) \ - : ( 0x81 == ((U8*)s)[1] ) ? \ - ( ( ( 0x81 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x93 ) || ( 0x95 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0xAF ) ) ? 3 : 0 )\ - : ( 0x86 == ((U8*)s)[1] ) ? \ - ( ( ((U8*)s)[2] >= 0x90 ) ? 3 : 0 ) \ - : ( ( 0x87 <= ((U8*)s)[1] && ((U8*)s)[1] <= 0x90 ) || ( 0x94 <= ((U8*)s)[1] && ((U8*)s)[1] <= 0x9C ) || ( 0x9F <= ((U8*)s)[1] && ((U8*)s)[1] <= 0xAF ) || ( ((U8*)s)[1] & 0xFE ) == 0xB8 ) ?\ +( ( 0xCD == ((const U8*)s)[0] ) ? \ + ( ( 0x8F == ((const U8*)s)[1] ) ? 2 : 0 ) \ +: ( 0xD8 == ((const U8*)s)[0] ) ? \ + ( ( 0x9C == ((const U8*)s)[1] ) ? 2 : 0 ) \ +: ( 0xE1 == ((const U8*)s)[0] ) ? \ + ( ( 0x85 == ((const U8*)s)[1] ) ? \ + ( ( 0x9F == ((const U8*)s)[2] || 0xA0 == ((const U8*)s)[2] ) ? 3 : 0 )\ + : ( 0x9A == ((const U8*)s)[1] ) ? \ + ( ( 0x80 == ((const U8*)s)[2] ) ? 3 : 0 ) \ + : ( 0x9E == ((const U8*)s)[1] ) ? \ + ( ( ( ((const U8*)s)[2] & 0xFE ) == 0xB4 ) ? 3 : 0 ) \ + : ( ( 0xA0 == ((const U8*)s)[1] ) && ( 0x8B <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x8E ) ) ? 3 : 0 )\ +: ( 0xE2 == ((const U8*)s)[0] ) ? \ + ( ( 0x80 == ((const U8*)s)[1] ) ? \ + ( ( ((const U8*)s)[2] <= 0xBE ) ? 3 : 0 ) \ + : ( 0x81 == ((const U8*)s)[1] ) ? \ + ( ( ( 0x81 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x93 ) || ( 0x95 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0xAF ) ) ? 3 : 0 )\ + : ( 0x86 == ((const U8*)s)[1] ) ? \ + ( ( ((const U8*)s)[2] >= 0x90 ) ? 3 : 0 ) \ + : ( ( 0x87 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x90 ) || ( 0x94 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x9C ) || ( 0x9F <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0xAF ) || ( ((const U8*)s)[1] & 0xFE ) == 0xB8 ) ?\ 3 \ - : ( 0x91 == ((U8*)s)[1] ) ? \ - ( ( ((U8*)s)[2] <= 0x9F ) ? 3 : 0 ) \ - : ( 0x9D == ((U8*)s)[1] ) ? \ - ( ( ((U8*)s)[2] <= 0xB5 ) ? 3 : 0 ) \ - : ( ( 0x9E == ((U8*)s)[1] ) && ( ((U8*)s)[2] >= 0x94 ) ) ? 3 : 0 ) \ -: ( 0xE3 == ((U8*)s)[0] ) ? \ - ( ( 0x80 == ((U8*)s)[1] ) ? \ - ( ( ( ((U8*)s)[2] <= 0x83 ) || ( 0x88 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0xA0 ) || 0xB0 == ((U8*)s)[2] ) ? 3 : 0 )\ - : ( ( 0x85 == ((U8*)s)[1] ) && ( 0xA4 == ((U8*)s)[2] ) ) ? 3 : 0 ) \ -: ( 0xEF == ((U8*)s)[0] ) ? \ - ( ( 0xB4 == ((U8*)s)[1] ) ? \ - ( ( ((U8*)s)[2] >= 0xBE ) ? 3 : 0 ) \ - : ( 0xB8 == ((U8*)s)[1] ) ? \ - ( ( ((U8*)s)[2] <= 0x8F ) ? 3 : 0 ) \ - : ( 0xB9 == ((U8*)s)[1] ) ? \ - ( ( 0x85 == ((U8*)s)[2] || 0x86 == ((U8*)s)[2] ) ? 3 : 0 ) \ - : ( 0xBB == ((U8*)s)[1] ) ? \ - ( ( 0xBF == ((U8*)s)[2] ) ? 3 : 0 ) \ - : ( 0xBE == ((U8*)s)[1] ) ? \ - ( ( 0xA0 == ((U8*)s)[2] ) ? 3 : 0 ) \ - : ( ( 0xBF == ((U8*)s)[1] ) && ( 0xB0 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0xB8 ) ) ? 3 : 0 )\ -: ( 0xF0 == ((U8*)s)[0] ) ? \ - ( ( 0x9B == ((U8*)s)[1] ) ? \ - ( ( ( 0xB2 == ((U8*)s)[2] ) && ( ( ((U8*)s)[3] & 0xFC ) == 0xA0 ) ) ? 4 : 0 )\ - : ( ( ( 0x9D == ((U8*)s)[1] ) && ( 0x85 == ((U8*)s)[2] ) ) && ( 0xB3 <= ((U8*)s)[3] && ((U8*)s)[3] <= 0xBA ) ) ? 4 : 0 )\ -: ( ( 0xF3 == ((U8*)s)[0] ) && ( 0xA0 == ((U8*)s)[1] ) ) ? 4 : 0 ) + : ( 0x91 == ((const U8*)s)[1] ) ? \ + ( ( ((const U8*)s)[2] <= 0x9F ) ? 3 : 0 ) \ + : ( 0x9D == ((const U8*)s)[1] ) ? \ + ( ( ((const U8*)s)[2] <= 0xB5 ) ? 3 : 0 ) \ + : ( ( 0x9E == ((const U8*)s)[1] ) && ( ((const U8*)s)[2] >= 0x94 ) ) ? 3 : 0 )\ +: ( 0xE3 == ((const U8*)s)[0] ) ? \ + ( ( 0x80 == ((const U8*)s)[1] ) ? \ + ( ( ( ((const U8*)s)[2] <= 0x83 ) || ( 0x88 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0xA0 ) || 0xB0 == ((const U8*)s)[2] ) ? 3 : 0 )\ + : ( ( 0x85 == ((const U8*)s)[1] ) && ( 0xA4 == ((const U8*)s)[2] ) ) ? 3 : 0 )\ +: ( 0xEF == ((const U8*)s)[0] ) ? \ + ( ( 0xB4 == ((const U8*)s)[1] ) ? \ + ( ( ((const U8*)s)[2] >= 0xBE ) ? 3 : 0 ) \ + : ( 0xB8 == ((const U8*)s)[1] ) ? \ + ( ( ((const U8*)s)[2] <= 0x8F ) ? 3 : 0 ) \ + : ( 0xB9 == ((const U8*)s)[1] ) ? \ + ( ( 0x85 == ((const U8*)s)[2] || 0x86 == ((const U8*)s)[2] ) ? 3 : 0 )\ + : ( 0xBB == ((const U8*)s)[1] ) ? \ + ( ( 0xBF == ((const U8*)s)[2] ) ? 3 : 0 ) \ + : ( 0xBE == ((const U8*)s)[1] ) ? \ + ( ( 0xA0 == ((const U8*)s)[2] ) ? 3 : 0 ) \ + : ( ( 0xBF == ((const U8*)s)[1] ) && ( 0xB0 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0xB8 ) ) ? 3 : 0 )\ +: ( 0xF0 == ((const U8*)s)[0] ) ? \ + ( ( 0x9B == ((const U8*)s)[1] ) ? \ + ( ( ( 0xB2 == ((const U8*)s)[2] ) && ( ( ((const U8*)s)[3] & 0xFC ) == 0xA0 ) ) ? 4 : 0 )\ + : ( ( ( 0x9D == ((const U8*)s)[1] ) && ( 0x85 == ((const U8*)s)[2] ) ) && ( 0xB3 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0xBA ) ) ? 4 : 0 )\ +: ( ( 0xF3 == ((const U8*)s)[0] ) && ( 0xA0 == ((const U8*)s)[1] ) ) ? 4 : 0 ) /* MULTI_CHAR_FOLD: multi-char strings that are folded to by a single character @@ -253,215 +253,215 @@ */ /*** GENERATED CODE ***/ #define is_MULTI_CHAR_FOLD_utf8_safe_part0(s,e) \ -( ( 0x61 == ((U8*)s)[0] ) ? \ - ( ( ( 0xCA == ((U8*)s)[1] ) && ( 0xBE == ((U8*)s)[2] ) ) ? 3 : 0 ) \ - : ( 0x66 == ((U8*)s)[0] ) ? \ - ( ( 0x66 == ((U8*)s)[1] ) ? \ - ( ( 0x69 == ((U8*)s)[2] || 0x6C == ((U8*)s)[2] ) ? 3 : 2 ) \ - : ( 0x69 == ((U8*)s)[1] || 0x6C == ((U8*)s)[1] ) ? 2 : 0 ) \ - : ( 0x68 == ((U8*)s)[0] ) ? \ - ( ( ( 0xCC == ((U8*)s)[1] ) && ( 0xB1 == ((U8*)s)[2] ) ) ? 3 : 0 ) \ - : ( 0x69 == ((U8*)s)[0] ) ? \ - ( ( ( 0xCC == ((U8*)s)[1] ) && ( 0x87 == ((U8*)s)[2] ) ) ? 3 : 0 ) \ - : ( 0x6A == ((U8*)s)[0] ) ? \ - ( ( ( 0xCC == ((U8*)s)[1] ) && ( 0x8C == ((U8*)s)[2] ) ) ? 3 : 0 ) \ - : ( 0x73 == ((U8*)s)[0] ) ? \ - ( ( 0x73 == ((U8*)s)[1] || 0x74 == ((U8*)s)[1] ) ? 2 : 0 ) \ - : ( 0x74 == ((U8*)s)[0] ) ? \ - ( ( ( 0xCC == ((U8*)s)[1] ) && ( 0x88 == ((U8*)s)[2] ) ) ? 3 : 0 ) \ - : ( 0x77 == ((U8*)s)[0] || 0x79 == ((U8*)s)[0] ) ? \ - ( ( ( 0xCC == ((U8*)s)[1] ) && ( 0x8A == ((U8*)s)[2] ) ) ? 3 : 0 ) \ - : ( 0xC5 == ((U8*)s)[0] ) ? \ - ( ( ( ( 0xBF == ((U8*)s)[1] ) && ( 0xC5 == ((U8*)s)[2] ) ) && ( 0xBF == ((U8*)s)[3] ) ) ? 4 : 0 )\ - : ( 0xCA == ((U8*)s)[0] ) ? \ - ( ( ( 0xBC == ((U8*)s)[1] ) && ( 0x6E == ((U8*)s)[2] ) ) ? 3 : 0 ) \ - : ( 0xCE == ((U8*)s)[0] ) ? \ - ( ( ( ((U8*)s)[1] & 0xFD ) == 0xAC ) ? \ - ( ( ( 0xCE == ((U8*)s)[2] ) && ( 0xB9 == ((U8*)s)[3] ) ) ? 4 : 0 )\ - : ( 0xB1 == ((U8*)s)[1] || 0xB7 == ((U8*)s)[1] ) ? \ - ( ( 0xCD == ((U8*)s)[2] ) ? \ - ( ( 0x82 == ((U8*)s)[3] ) ? 4 : 0 ) \ - : ( ( 0xCE == ((U8*)s)[2] ) && ( 0xB9 == ((U8*)s)[3] ) ) ? 4 : 0 )\ - : ( ( ( 0xB9 == ((U8*)s)[1] ) && ( 0xCD == ((U8*)s)[2] ) ) && ( 0x82 == ((U8*)s)[3] ) ) ? 4 : 0 )\ - : ( 0xCF == ((U8*)s)[0] ) ? \ - ( ( 0x81 == ((U8*)s)[1] ) ? \ - ( ( ( 0xCC == ((U8*)s)[2] ) && ( 0x93 == ((U8*)s)[3] ) ) ? 4 : 0 )\ - : ( 0x85 == ((U8*)s)[1] ) ? \ - ( ( 0xCC == ((U8*)s)[2] ) ? \ - ( ( 0x93 == ((U8*)s)[3] ) ? 4 : 0 ) \ - : ( ( 0xCD == ((U8*)s)[2] ) && ( 0x82 == ((U8*)s)[3] ) ) ? 4 : 0 )\ - : ( 0x89 == ((U8*)s)[1] ) ? \ - ( ( 0xCD == ((U8*)s)[2] ) ? \ - ( ( 0x82 == ((U8*)s)[3] ) ? 4 : 0 ) \ - : ( ( 0xCE == ((U8*)s)[2] ) && ( 0xB9 == ((U8*)s)[3] ) ) ? 4 : 0 )\ - : ( ( ( 0x8E == ((U8*)s)[1] ) && ( 0xCE == ((U8*)s)[2] ) ) && ( 0xB9 == ((U8*)s)[3] ) ) ? 4 : 0 )\ - : ( 0xD5 == ((U8*)s)[0] ) ? \ - ( ( 0xA5 == ((U8*)s)[1] ) ? \ - ( ( ( 0xD6 == ((U8*)s)[2] ) && ( 0x82 == ((U8*)s)[3] ) ) ? 4 : 0 )\ - : ( 0xB4 == ((U8*)s)[1] ) ? \ - ( ( ( 0xD5 == ((U8*)s)[2] ) && ( ( ( ((U8*)s)[3] & 0xF7 ) == 0xA5 ) || ((U8*)s)[3] == 0xAB || ((U8*)s)[3] == 0xB6 ) ) ? 4 : 0 )\ - : ( ( ( 0xBE == ((U8*)s)[1] ) && ( 0xD5 == ((U8*)s)[2] ) ) && ( 0xB6 == ((U8*)s)[3] ) ) ? 4 : 0 )\ - : ( 0xE1 == ((U8*)s)[0] ) ? \ - ( ( 0xBC == ((U8*)s)[1] ) ? \ - ( ( ( ( ( ((U8*)s)[2] & 0xD8 ) == 0x80 ) && ( 0xCE == ((U8*)s)[3] ) ) && ( 0xB9 == ((U8*)s)[4] ) ) ? 5 : 0 )\ - : ( ( ( ( 0xBD == ((U8*)s)[1] ) && ( ( ( ((U8*)s)[2] & 0xF8 ) == 0xA0 ) || ( ( ((U8*)s)[2] & 0xFB ) == 0xB0 ) || ((U8*)s)[2] == 0xBC ) ) && ( 0xCE == ((U8*)s)[3] ) ) && ( 0xB9 == ((U8*)s)[4] ) ) ? 5 : 0 )\ +( ( 0x61 == ((const U8*)s)[0] ) ? \ + ( ( ( 0xCA == ((const U8*)s)[1] ) && ( 0xBE == ((const U8*)s)[2] ) ) ? 3 : 0 )\ + : ( 0x66 == ((const U8*)s)[0] ) ? \ + ( ( 0x66 == ((const U8*)s)[1] ) ? \ + ( ( 0x69 == ((const U8*)s)[2] || 0x6C == ((const U8*)s)[2] ) ? 3 : 2 )\ + : ( 0x69 == ((const U8*)s)[1] || 0x6C == ((const U8*)s)[1] ) ? 2 : 0 )\ + : ( 0x68 == ((const U8*)s)[0] ) ? \ + ( ( ( 0xCC == ((const U8*)s)[1] ) && ( 0xB1 == ((const U8*)s)[2] ) ) ? 3 : 0 )\ + : ( 0x69 == ((const U8*)s)[0] ) ? \ + ( ( ( 0xCC == ((const U8*)s)[1] ) && ( 0x87 == ((const U8*)s)[2] ) ) ? 3 : 0 )\ + : ( 0x6A == ((const U8*)s)[0] ) ? \ + ( ( ( 0xCC == ((const U8*)s)[1] ) && ( 0x8C == ((const U8*)s)[2] ) ) ? 3 : 0 )\ + : ( 0x73 == ((const U8*)s)[0] ) ? \ + ( ( 0x73 == ((const U8*)s)[1] || 0x74 == ((const U8*)s)[1] ) ? 2 : 0 )\ + : ( 0x74 == ((const U8*)s)[0] ) ? \ + ( ( ( 0xCC == ((const U8*)s)[1] ) && ( 0x88 == ((const U8*)s)[2] ) ) ? 3 : 0 )\ + : ( 0x77 == ((const U8*)s)[0] || 0x79 == ((const U8*)s)[0] ) ? \ + ( ( ( 0xCC == ((const U8*)s)[1] ) && ( 0x8A == ((const U8*)s)[2] ) ) ? 3 : 0 )\ + : ( 0xC5 == ((const U8*)s)[0] ) ? \ + ( ( ( ( 0xBF == ((const U8*)s)[1] ) && ( 0xC5 == ((const U8*)s)[2] ) ) && ( 0xBF == ((const U8*)s)[3] ) ) ? 4 : 0 )\ + : ( 0xCA == ((const U8*)s)[0] ) ? \ + ( ( ( 0xBC == ((const U8*)s)[1] ) && ( 0x6E == ((const U8*)s)[2] ) ) ? 3 : 0 )\ + : ( 0xCE == ((const U8*)s)[0] ) ? \ + ( ( ( ((const U8*)s)[1] & 0xFD ) == 0xAC ) ? \ + ( ( ( 0xCE == ((const U8*)s)[2] ) && ( 0xB9 == ((const U8*)s)[3] ) ) ? 4 : 0 )\ + : ( 0xB1 == ((const U8*)s)[1] || 0xB7 == ((const U8*)s)[1] ) ? \ + ( ( 0xCD == ((const U8*)s)[2] ) ? \ + ( ( 0x82 == ((const U8*)s)[3] ) ? 4 : 0 ) \ + : ( ( 0xCE == ((const U8*)s)[2] ) && ( 0xB9 == ((const U8*)s)[3] ) ) ? 4 : 0 )\ + : ( ( ( 0xB9 == ((const U8*)s)[1] ) && ( 0xCD == ((const U8*)s)[2] ) ) && ( 0x82 == ((const U8*)s)[3] ) ) ? 4 : 0 )\ + : ( 0xCF == ((const U8*)s)[0] ) ? \ + ( ( 0x81 == ((const U8*)s)[1] ) ? \ + ( ( ( 0xCC == ((const U8*)s)[2] ) && ( 0x93 == ((const U8*)s)[3] ) ) ? 4 : 0 )\ + : ( 0x85 == ((const U8*)s)[1] ) ? \ + ( ( 0xCC == ((const U8*)s)[2] ) ? \ + ( ( 0x93 == ((const U8*)s)[3] ) ? 4 : 0 ) \ + : ( ( 0xCD == ((const U8*)s)[2] ) && ( 0x82 == ((const U8*)s)[3] ) ) ? 4 : 0 )\ + : ( 0x89 == ((const U8*)s)[1] ) ? \ + ( ( 0xCD == ((const U8*)s)[2] ) ? \ + ( ( 0x82 == ((const U8*)s)[3] ) ? 4 : 0 ) \ + : ( ( 0xCE == ((const U8*)s)[2] ) && ( 0xB9 == ((const U8*)s)[3] ) ) ? 4 : 0 )\ + : ( ( ( 0x8E == ((const U8*)s)[1] ) && ( 0xCE == ((const U8*)s)[2] ) ) && ( 0xB9 == ((const U8*)s)[3] ) ) ? 4 : 0 )\ + : ( 0xD5 == ((const U8*)s)[0] ) ? \ + ( ( 0xA5 == ((const U8*)s)[1] ) ? \ + ( ( ( 0xD6 == ((const U8*)s)[2] ) && ( 0x82 == ((const U8*)s)[3] ) ) ? 4 : 0 )\ + : ( 0xB4 == ((const U8*)s)[1] ) ? \ + ( ( ( 0xD5 == ((const U8*)s)[2] ) && ( ( ( ((const U8*)s)[3] & 0xF7 ) == 0xA5 ) || ((const U8*)s)[3] == 0xAB || ((const U8*)s)[3] == 0xB6 ) ) ? 4 : 0 )\ + : ( ( ( 0xBE == ((const U8*)s)[1] ) && ( 0xD5 == ((const U8*)s)[2] ) ) && ( 0xB6 == ((const U8*)s)[3] ) ) ? 4 : 0 )\ + : ( 0xE1 == ((const U8*)s)[0] ) ? \ + ( ( 0xBC == ((const U8*)s)[1] ) ? \ + ( ( ( ( ( ((const U8*)s)[2] & 0xD8 ) == 0x80 ) && ( 0xCE == ((const U8*)s)[3] ) ) && ( 0xB9 == ((const U8*)s)[4] ) ) ? 5 : 0 )\ + : ( ( ( ( 0xBD == ((const U8*)s)[1] ) && ( ( ( ((const U8*)s)[2] & 0xF8 ) == 0xA0 ) || ( ( ((const U8*)s)[2] & 0xFB ) == 0xB0 ) || ((const U8*)s)[2] == 0xBC ) ) && ( 0xCE == ((const U8*)s)[3] ) ) && ( 0xB9 == ((const U8*)s)[4] ) ) ? 5 : 0 )\ : 0 ) /*** GENERATED CODE ***/ #define is_MULTI_CHAR_FOLD_utf8_safe_part1(s,e) \ ( ((e)-(s) > 3) ? \ - ( ( 0x61 == ((U8*)s)[0] ) ? \ - ( ( ( 0xCA == ((U8*)s)[1] ) && ( 0xBE == ((U8*)s)[2] ) ) ? 3 : 0 ) \ - : ( 0x66 == ((U8*)s)[0] ) ? \ - ( ( 0x66 == ((U8*)s)[1] ) ? \ - ( ( 0x69 == ((U8*)s)[2] || 0x6C == ((U8*)s)[2] ) ? 3 : 2 ) \ - : ( 0x69 == ((U8*)s)[1] || 0x6C == ((U8*)s)[1] ) ? 2 : 0 ) \ - : ( 0x68 == ((U8*)s)[0] ) ? \ - ( ( ( 0xCC == ((U8*)s)[1] ) && ( 0xB1 == ((U8*)s)[2] ) ) ? 3 : 0 ) \ - : ( 0x69 == ((U8*)s)[0] ) ? \ - ( ( ( 0xCC == ((U8*)s)[1] ) && ( 0x87 == ((U8*)s)[2] ) ) ? 3 : 0 ) \ - : ( 0x6A == ((U8*)s)[0] ) ? \ - ( ( ( 0xCC == ((U8*)s)[1] ) && ( 0x8C == ((U8*)s)[2] ) ) ? 3 : 0 ) \ - : ( 0x73 == ((U8*)s)[0] ) ? \ - ( ( 0x73 == ((U8*)s)[1] || 0x74 == ((U8*)s)[1] ) ? 2 : 0 ) \ - : ( 0x74 == ((U8*)s)[0] ) ? \ - ( ( ( 0xCC == ((U8*)s)[1] ) && ( 0x88 == ((U8*)s)[2] ) ) ? 3 : 0 ) \ - : ( 0x77 == ((U8*)s)[0] || 0x79 == ((U8*)s)[0] ) ? \ - ( ( ( 0xCC == ((U8*)s)[1] ) && ( 0x8A == ((U8*)s)[2] ) ) ? 3 : 0 ) \ - : ( 0xC5 == ((U8*)s)[0] ) ? \ - ( ( ( ( 0xBF == ((U8*)s)[1] ) && ( 0xC5 == ((U8*)s)[2] ) ) && ( 0xBF == ((U8*)s)[3] ) ) ? 4 : 0 )\ - : ( 0xCA == ((U8*)s)[0] ) ? \ - ( ( ( 0xBC == ((U8*)s)[1] ) && ( 0x6E == ((U8*)s)[2] ) ) ? 3 : 0 ) \ - : ( 0xCE == ((U8*)s)[0] ) ? \ - ( ( ( ((U8*)s)[1] & 0xFD ) == 0xAC ) ? \ - ( ( ( 0xCE == ((U8*)s)[2] ) && ( 0xB9 == ((U8*)s)[3] ) ) ? 4 : 0 )\ - : ( 0xB1 == ((U8*)s)[1] || 0xB7 == ((U8*)s)[1] ) ? \ - ( ( 0xCD == ((U8*)s)[2] ) ? \ - ( ( 0x82 == ((U8*)s)[3] ) ? 4 : 0 ) \ - : ( ( 0xCE == ((U8*)s)[2] ) && ( 0xB9 == ((U8*)s)[3] ) ) ? 4 : 0 )\ - : ( ( ( 0xB9 == ((U8*)s)[1] ) && ( 0xCD == ((U8*)s)[2] ) ) && ( 0x82 == ((U8*)s)[3] ) ) ? 4 : 0 )\ - : ( 0xCF == ((U8*)s)[0] ) ? \ - ( ( 0x81 == ((U8*)s)[1] ) ? \ - ( ( ( 0xCC == ((U8*)s)[2] ) && ( 0x93 == ((U8*)s)[3] ) ) ? 4 : 0 )\ - : ( 0x85 == ((U8*)s)[1] ) ? \ - ( ( 0xCC == ((U8*)s)[2] ) ? \ - ( ( 0x93 == ((U8*)s)[3] ) ? 4 : 0 ) \ - : ( ( 0xCD == ((U8*)s)[2] ) && ( 0x82 == ((U8*)s)[3] ) ) ? 4 : 0 )\ - : ( 0x89 == ((U8*)s)[1] ) ? \ - ( ( 0xCD == ((U8*)s)[2] ) ? \ - ( ( 0x82 == ((U8*)s)[3] ) ? 4 : 0 ) \ - : ( ( 0xCE == ((U8*)s)[2] ) && ( 0xB9 == ((U8*)s)[3] ) ) ? 4 : 0 )\ - : ( ( ( 0x8E == ((U8*)s)[1] ) && ( 0xCE == ((U8*)s)[2] ) ) && ( 0xB9 == ((U8*)s)[3] ) ) ? 4 : 0 )\ - : ( 0xD5 == ((U8*)s)[0] ) ? \ - ( ( 0xA5 == ((U8*)s)[1] ) ? \ - ( ( ( 0xD6 == ((U8*)s)[2] ) && ( 0x82 == ((U8*)s)[3] ) ) ? 4 : 0 )\ - : ( 0xB4 == ((U8*)s)[1] ) ? \ - ( ( ( 0xD5 == ((U8*)s)[2] ) && ( ( ( ((U8*)s)[3] & 0xF7 ) == 0xA5 ) || ((U8*)s)[3] == 0xAB || ((U8*)s)[3] == 0xB6 ) ) ? 4 : 0 )\ - : ( ( ( 0xBE == ((U8*)s)[1] ) && ( 0xD5 == ((U8*)s)[2] ) ) && ( 0xB6 == ((U8*)s)[3] ) ) ? 4 : 0 )\ + ( ( 0x61 == ((const U8*)s)[0] ) ? \ + ( ( ( 0xCA == ((const U8*)s)[1] ) && ( 0xBE == ((const U8*)s)[2] ) ) ? 3 : 0 )\ + : ( 0x66 == ((const U8*)s)[0] ) ? \ + ( ( 0x66 == ((const U8*)s)[1] ) ? \ + ( ( 0x69 == ((const U8*)s)[2] || 0x6C == ((const U8*)s)[2] ) ? 3 : 2 )\ + : ( 0x69 == ((const U8*)s)[1] || 0x6C == ((const U8*)s)[1] ) ? 2 : 0 )\ + : ( 0x68 == ((const U8*)s)[0] ) ? \ + ( ( ( 0xCC == ((const U8*)s)[1] ) && ( 0xB1 == ((const U8*)s)[2] ) ) ? 3 : 0 )\ + : ( 0x69 == ((const U8*)s)[0] ) ? \ + ( ( ( 0xCC == ((const U8*)s)[1] ) && ( 0x87 == ((const U8*)s)[2] ) ) ? 3 : 0 )\ + : ( 0x6A == ((const U8*)s)[0] ) ? \ + ( ( ( 0xCC == ((const U8*)s)[1] ) && ( 0x8C == ((const U8*)s)[2] ) ) ? 3 : 0 )\ + : ( 0x73 == ((const U8*)s)[0] ) ? \ + ( ( 0x73 == ((const U8*)s)[1] || 0x74 == ((const U8*)s)[1] ) ? 2 : 0 )\ + : ( 0x74 == ((const U8*)s)[0] ) ? \ + ( ( ( 0xCC == ((const U8*)s)[1] ) && ( 0x88 == ((const U8*)s)[2] ) ) ? 3 : 0 )\ + : ( 0x77 == ((const U8*)s)[0] || 0x79 == ((const U8*)s)[0] ) ? \ + ( ( ( 0xCC == ((const U8*)s)[1] ) && ( 0x8A == ((const U8*)s)[2] ) ) ? 3 : 0 )\ + : ( 0xC5 == ((const U8*)s)[0] ) ? \ + ( ( ( ( 0xBF == ((const U8*)s)[1] ) && ( 0xC5 == ((const U8*)s)[2] ) ) && ( 0xBF == ((const U8*)s)[3] ) ) ? 4 : 0 )\ + : ( 0xCA == ((const U8*)s)[0] ) ? \ + ( ( ( 0xBC == ((const U8*)s)[1] ) && ( 0x6E == ((const U8*)s)[2] ) ) ? 3 : 0 )\ + : ( 0xCE == ((const U8*)s)[0] ) ? \ + ( ( ( ((const U8*)s)[1] & 0xFD ) == 0xAC ) ? \ + ( ( ( 0xCE == ((const U8*)s)[2] ) && ( 0xB9 == ((const U8*)s)[3] ) ) ? 4 : 0 )\ + : ( 0xB1 == ((const U8*)s)[1] || 0xB7 == ((const U8*)s)[1] ) ? \ + ( ( 0xCD == ((const U8*)s)[2] ) ? \ + ( ( 0x82 == ((const U8*)s)[3] ) ? 4 : 0 ) \ + : ( ( 0xCE == ((const U8*)s)[2] ) && ( 0xB9 == ((const U8*)s)[3] ) ) ? 4 : 0 )\ + : ( ( ( 0xB9 == ((const U8*)s)[1] ) && ( 0xCD == ((const U8*)s)[2] ) ) && ( 0x82 == ((const U8*)s)[3] ) ) ? 4 : 0 )\ + : ( 0xCF == ((const U8*)s)[0] ) ? \ + ( ( 0x81 == ((const U8*)s)[1] ) ? \ + ( ( ( 0xCC == ((const U8*)s)[2] ) && ( 0x93 == ((const U8*)s)[3] ) ) ? 4 : 0 )\ + : ( 0x85 == ((const U8*)s)[1] ) ? \ + ( ( 0xCC == ((const U8*)s)[2] ) ? \ + ( ( 0x93 == ((const U8*)s)[3] ) ? 4 : 0 ) \ + : ( ( 0xCD == ((const U8*)s)[2] ) && ( 0x82 == ((const U8*)s)[3] ) ) ? 4 : 0 )\ + : ( 0x89 == ((const U8*)s)[1] ) ? \ + ( ( 0xCD == ((const U8*)s)[2] ) ? \ + ( ( 0x82 == ((const U8*)s)[3] ) ? 4 : 0 ) \ + : ( ( 0xCE == ((const U8*)s)[2] ) && ( 0xB9 == ((const U8*)s)[3] ) ) ? 4 : 0 )\ + : ( ( ( 0x8E == ((const U8*)s)[1] ) && ( 0xCE == ((const U8*)s)[2] ) ) && ( 0xB9 == ((const U8*)s)[3] ) ) ? 4 : 0 )\ + : ( 0xD5 == ((const U8*)s)[0] ) ? \ + ( ( 0xA5 == ((const U8*)s)[1] ) ? \ + ( ( ( 0xD6 == ((const U8*)s)[2] ) && ( 0x82 == ((const U8*)s)[3] ) ) ? 4 : 0 )\ + : ( 0xB4 == ((const U8*)s)[1] ) ? \ + ( ( ( 0xD5 == ((const U8*)s)[2] ) && ( ( ( ((const U8*)s)[3] & 0xF7 ) == 0xA5 ) || ((const U8*)s)[3] == 0xAB || ((const U8*)s)[3] == 0xB6 ) ) ? 4 : 0 )\ + : ( ( ( 0xBE == ((const U8*)s)[1] ) && ( 0xD5 == ((const U8*)s)[2] ) ) && ( 0xB6 == ((const U8*)s)[3] ) ) ? 4 : 0 )\ : 0 ) \ : ((e)-(s) > 2) ? \ - ( ( 0x61 == ((U8*)s)[0] ) ? \ - ( ( ( 0xCA == ((U8*)s)[1] ) && ( 0xBE == ((U8*)s)[2] ) ) ? 3 : 0 ) \ - : ( 0x66 == ((U8*)s)[0] ) ? \ - ( ( 0x66 == ((U8*)s)[1] ) ? \ - ( ( 0x69 == ((U8*)s)[2] || 0x6C == ((U8*)s)[2] ) ? 3 : 2 ) \ - : ( 0x69 == ((U8*)s)[1] || 0x6C == ((U8*)s)[1] ) ? 2 : 0 ) \ - : ( 0x68 == ((U8*)s)[0] ) ? \ - ( ( ( 0xCC == ((U8*)s)[1] ) && ( 0xB1 == ((U8*)s)[2] ) ) ? 3 : 0 ) \ - : ( 0x69 == ((U8*)s)[0] ) ? \ - ( ( ( 0xCC == ((U8*)s)[1] ) && ( 0x87 == ((U8*)s)[2] ) ) ? 3 : 0 ) \ - : ( 0x6A == ((U8*)s)[0] ) ? \ - ( ( ( 0xCC == ((U8*)s)[1] ) && ( 0x8C == ((U8*)s)[2] ) ) ? 3 : 0 ) \ - : ( 0x73 == ((U8*)s)[0] ) ? \ - ( ( 0x73 == ((U8*)s)[1] || 0x74 == ((U8*)s)[1] ) ? 2 : 0 ) \ - : ( 0x74 == ((U8*)s)[0] ) ? \ - ( ( ( 0xCC == ((U8*)s)[1] ) && ( 0x88 == ((U8*)s)[2] ) ) ? 3 : 0 ) \ - : ( 0x77 == ((U8*)s)[0] || 0x79 == ((U8*)s)[0] ) ? \ - ( ( ( 0xCC == ((U8*)s)[1] ) && ( 0x8A == ((U8*)s)[2] ) ) ? 3 : 0 ) \ - : ( ( ( 0xCA == ((U8*)s)[0] ) && ( 0xBC == ((U8*)s)[1] ) ) && ( 0x6E == ((U8*)s)[2] ) ) ? 3 : 0 )\ + ( ( 0x61 == ((const U8*)s)[0] ) ? \ + ( ( ( 0xCA == ((const U8*)s)[1] ) && ( 0xBE == ((const U8*)s)[2] ) ) ? 3 : 0 )\ + : ( 0x66 == ((const U8*)s)[0] ) ? \ + ( ( 0x66 == ((const U8*)s)[1] ) ? \ + ( ( 0x69 == ((const U8*)s)[2] || 0x6C == ((const U8*)s)[2] ) ? 3 : 2 )\ + : ( 0x69 == ((const U8*)s)[1] || 0x6C == ((const U8*)s)[1] ) ? 2 : 0 )\ + : ( 0x68 == ((const U8*)s)[0] ) ? \ + ( ( ( 0xCC == ((const U8*)s)[1] ) && ( 0xB1 == ((const U8*)s)[2] ) ) ? 3 : 0 )\ + : ( 0x69 == ((const U8*)s)[0] ) ? \ + ( ( ( 0xCC == ((const U8*)s)[1] ) && ( 0x87 == ((const U8*)s)[2] ) ) ? 3 : 0 )\ + : ( 0x6A == ((const U8*)s)[0] ) ? \ + ( ( ( 0xCC == ((const U8*)s)[1] ) && ( 0x8C == ((const U8*)s)[2] ) ) ? 3 : 0 )\ + : ( 0x73 == ((const U8*)s)[0] ) ? \ + ( ( 0x73 == ((const U8*)s)[1] || 0x74 == ((const U8*)s)[1] ) ? 2 : 0 )\ + : ( 0x74 == ((const U8*)s)[0] ) ? \ + ( ( ( 0xCC == ((const U8*)s)[1] ) && ( 0x88 == ((const U8*)s)[2] ) ) ? 3 : 0 )\ + : ( 0x77 == ((const U8*)s)[0] || 0x79 == ((const U8*)s)[0] ) ? \ + ( ( ( 0xCC == ((const U8*)s)[1] ) && ( 0x8A == ((const U8*)s)[2] ) ) ? 3 : 0 )\ + : ( ( ( 0xCA == ((const U8*)s)[0] ) && ( 0xBC == ((const U8*)s)[1] ) ) && ( 0x6E == ((const U8*)s)[2] ) ) ? 3 : 0 )\ : ((e)-(s) > 1) ? \ - ( ( 0x66 == ((U8*)s)[0] ) ? \ - ( ( 0x66 == ((U8*)s)[1] || 0x69 == ((U8*)s)[1] || 0x6C == ((U8*)s)[1] ) ? 2 : 0 )\ - : ( ( 0x73 == ((U8*)s)[0] ) && ( 0x73 == ((U8*)s)[1] || 0x74 == ((U8*)s)[1] ) ) ? 2 : 0 )\ + ( ( 0x66 == ((const U8*)s)[0] ) ? \ + ( ( 0x66 == ((const U8*)s)[1] || 0x69 == ((const U8*)s)[1] || 0x6C == ((const U8*)s)[1] ) ? 2 : 0 )\ + : ( ( 0x73 == ((const U8*)s)[0] ) && ( 0x73 == ((const U8*)s)[1] || 0x74 == ((const U8*)s)[1] ) ) ? 2 : 0 )\ : 0 ) /*** GENERATED CODE ***/ #define is_MULTI_CHAR_FOLD_utf8_safe(s,e) \ ( ((e)-(s) > 5) ? \ - ( ( 0x61 == ((U8*)s)[0] ) ? \ - ( ( ( 0xCA == ((U8*)s)[1] ) && ( 0xBE == ((U8*)s)[2] ) ) ? 3 : 0 ) \ - : ( 0x66 == ((U8*)s)[0] ) ? \ - ( ( 0x66 == ((U8*)s)[1] ) ? \ - ( ( 0x69 == ((U8*)s)[2] || 0x6C == ((U8*)s)[2] ) ? 3 : 2 ) \ - : ( 0x69 == ((U8*)s)[1] || 0x6C == ((U8*)s)[1] ) ? 2 : 0 ) \ - : ( 0x68 == ((U8*)s)[0] ) ? \ - ( ( ( 0xCC == ((U8*)s)[1] ) && ( 0xB1 == ((U8*)s)[2] ) ) ? 3 : 0 ) \ - : ( 0x69 == ((U8*)s)[0] ) ? \ - ( ( ( 0xCC == ((U8*)s)[1] ) && ( 0x87 == ((U8*)s)[2] ) ) ? 3 : 0 ) \ - : ( 0x6A == ((U8*)s)[0] ) ? \ - ( ( ( 0xCC == ((U8*)s)[1] ) && ( 0x8C == ((U8*)s)[2] ) ) ? 3 : 0 ) \ - : ( 0x73 == ((U8*)s)[0] ) ? \ - ( ( 0x73 == ((U8*)s)[1] || 0x74 == ((U8*)s)[1] ) ? 2 : 0 ) \ - : ( 0x74 == ((U8*)s)[0] ) ? \ - ( ( ( 0xCC == ((U8*)s)[1] ) && ( 0x88 == ((U8*)s)[2] ) ) ? 3 : 0 ) \ - : ( 0x77 == ((U8*)s)[0] || 0x79 == ((U8*)s)[0] ) ? \ - ( ( ( 0xCC == ((U8*)s)[1] ) && ( 0x8A == ((U8*)s)[2] ) ) ? 3 : 0 ) \ - : ( 0xC5 == ((U8*)s)[0] ) ? \ - ( ( ( ( 0xBF == ((U8*)s)[1] ) && ( 0xC5 == ((U8*)s)[2] ) ) && ( 0xBF == ((U8*)s)[3] ) ) ? 4 : 0 )\ - : ( 0xCA == ((U8*)s)[0] ) ? \ - ( ( ( 0xBC == ((U8*)s)[1] ) && ( 0x6E == ((U8*)s)[2] ) ) ? 3 : 0 ) \ - : ( 0xCE == ((U8*)s)[0] ) ? \ - ( ( ( ((U8*)s)[1] & 0xFD ) == 0xAC ) ? \ - ( ( ( 0xCE == ((U8*)s)[2] ) && ( 0xB9 == ((U8*)s)[3] ) ) ? 4 : 0 )\ - : ( 0xB1 == ((U8*)s)[1] || 0xB7 == ((U8*)s)[1] ) ? \ - ( ( 0xCD == ((U8*)s)[2] ) ? \ - ( ( 0x82 == ((U8*)s)[3] ) ? \ - ( ( ( 0xCE == ((U8*)s)[4] ) && ( 0xB9 == ((U8*)s)[5] ) ) ? 6 : 4 )\ + ( ( 0x61 == ((const U8*)s)[0] ) ? \ + ( ( ( 0xCA == ((const U8*)s)[1] ) && ( 0xBE == ((const U8*)s)[2] ) ) ? 3 : 0 )\ + : ( 0x66 == ((const U8*)s)[0] ) ? \ + ( ( 0x66 == ((const U8*)s)[1] ) ? \ + ( ( 0x69 == ((const U8*)s)[2] || 0x6C == ((const U8*)s)[2] ) ? 3 : 2 )\ + : ( 0x69 == ((const U8*)s)[1] || 0x6C == ((const U8*)s)[1] ) ? 2 : 0 )\ + : ( 0x68 == ((const U8*)s)[0] ) ? \ + ( ( ( 0xCC == ((const U8*)s)[1] ) && ( 0xB1 == ((const U8*)s)[2] ) ) ? 3 : 0 )\ + : ( 0x69 == ((const U8*)s)[0] ) ? \ + ( ( ( 0xCC == ((const U8*)s)[1] ) && ( 0x87 == ((const U8*)s)[2] ) ) ? 3 : 0 )\ + : ( 0x6A == ((const U8*)s)[0] ) ? \ + ( ( ( 0xCC == ((const U8*)s)[1] ) && ( 0x8C == ((const U8*)s)[2] ) ) ? 3 : 0 )\ + : ( 0x73 == ((const U8*)s)[0] ) ? \ + ( ( 0x73 == ((const U8*)s)[1] || 0x74 == ((const U8*)s)[1] ) ? 2 : 0 )\ + : ( 0x74 == ((const U8*)s)[0] ) ? \ + ( ( ( 0xCC == ((const U8*)s)[1] ) && ( 0x88 == ((const U8*)s)[2] ) ) ? 3 : 0 )\ + : ( 0x77 == ((const U8*)s)[0] || 0x79 == ((const U8*)s)[0] ) ? \ + ( ( ( 0xCC == ((const U8*)s)[1] ) && ( 0x8A == ((const U8*)s)[2] ) ) ? 3 : 0 )\ + : ( 0xC5 == ((const U8*)s)[0] ) ? \ + ( ( ( ( 0xBF == ((const U8*)s)[1] ) && ( 0xC5 == ((const U8*)s)[2] ) ) && ( 0xBF == ((const U8*)s)[3] ) ) ? 4 : 0 )\ + : ( 0xCA == ((const U8*)s)[0] ) ? \ + ( ( ( 0xBC == ((const U8*)s)[1] ) && ( 0x6E == ((const U8*)s)[2] ) ) ? 3 : 0 )\ + : ( 0xCE == ((const U8*)s)[0] ) ? \ + ( ( ( ((const U8*)s)[1] & 0xFD ) == 0xAC ) ? \ + ( ( ( 0xCE == ((const U8*)s)[2] ) && ( 0xB9 == ((const U8*)s)[3] ) ) ? 4 : 0 )\ + : ( 0xB1 == ((const U8*)s)[1] || 0xB7 == ((const U8*)s)[1] ) ? \ + ( ( 0xCD == ((const U8*)s)[2] ) ? \ + ( ( 0x82 == ((const U8*)s)[3] ) ? \ + ( ( ( 0xCE == ((const U8*)s)[4] ) && ( 0xB9 == ((const U8*)s)[5] ) ) ? 6 : 4 )\ : 0 ) \ - : ( ( 0xCE == ((U8*)s)[2] ) && ( 0xB9 == ((U8*)s)[3] ) ) ? 4 : 0 )\ - : ( 0xB9 == ((U8*)s)[1] ) ? \ - ( ( 0xCC == ((U8*)s)[2] ) ? \ - ( ( 0x88 == ((U8*)s)[3] ) ? \ - ( ( 0xCC == ((U8*)s)[4] ) ? \ - ( ( ( ((U8*)s)[5] & 0xFE ) == 0x80 ) ? 6 : 0 ) \ - : ( ( 0xCD == ((U8*)s)[4] ) && ( 0x82 == ((U8*)s)[5] ) ) ? 6 : 0 )\ + : ( ( 0xCE == ((const U8*)s)[2] ) && ( 0xB9 == ((const U8*)s)[3] ) ) ? 4 : 0 )\ + : ( 0xB9 == ((const U8*)s)[1] ) ? \ + ( ( 0xCC == ((const U8*)s)[2] ) ? \ + ( ( 0x88 == ((const U8*)s)[3] ) ? \ + ( ( 0xCC == ((const U8*)s)[4] ) ? \ + ( ( ( ((const U8*)s)[5] & 0xFE ) == 0x80 ) ? 6 : 0 )\ + : ( ( 0xCD == ((const U8*)s)[4] ) && ( 0x82 == ((const U8*)s)[5] ) ) ? 6 : 0 )\ : 0 ) \ - : ( ( 0xCD == ((U8*)s)[2] ) && ( 0x82 == ((U8*)s)[3] ) ) ? 4 : 0 )\ + : ( ( 0xCD == ((const U8*)s)[2] ) && ( 0x82 == ((const U8*)s)[3] ) ) ? 4 : 0 )\ : 0 ) \ - : ( 0xCF == ((U8*)s)[0] ) ? \ - ( ( 0x81 == ((U8*)s)[1] ) ? \ - ( ( ( 0xCC == ((U8*)s)[2] ) && ( 0x93 == ((U8*)s)[3] ) ) ? 4 : 0 )\ - : ( 0x85 == ((U8*)s)[1] ) ? \ - ( ( 0xCC == ((U8*)s)[2] ) ? \ - ( ( 0x88 == ((U8*)s)[3] ) ? \ - ( ( 0xCC == ((U8*)s)[4] ) ? \ - ( ( ( ((U8*)s)[5] & 0xFE ) == 0x80 ) ? 6 : 0 ) \ - : ( ( 0xCD == ((U8*)s)[4] ) && ( 0x82 == ((U8*)s)[5] ) ) ? 6 : 0 )\ - : ( 0x93 == ((U8*)s)[3] ) ? \ - ( ( 0xCC == ((U8*)s)[4] ) ? \ - ( ( ( ((U8*)s)[5] & 0xFE ) == 0x80 ) ? 6 : 4 ) \ - : ( ( 0xCD == ((U8*)s)[4] ) && ( 0x82 == ((U8*)s)[5] ) ) ? 6 : 4 )\ + : ( 0xCF == ((const U8*)s)[0] ) ? \ + ( ( 0x81 == ((const U8*)s)[1] ) ? \ + ( ( ( 0xCC == ((const U8*)s)[2] ) && ( 0x93 == ((const U8*)s)[3] ) ) ? 4 : 0 )\ + : ( 0x85 == ((const U8*)s)[1] ) ? \ + ( ( 0xCC == ((const U8*)s)[2] ) ? \ + ( ( 0x88 == ((const U8*)s)[3] ) ? \ + ( ( 0xCC == ((const U8*)s)[4] ) ? \ + ( ( ( ((const U8*)s)[5] & 0xFE ) == 0x80 ) ? 6 : 0 )\ + : ( ( 0xCD == ((const U8*)s)[4] ) && ( 0x82 == ((const U8*)s)[5] ) ) ? 6 : 0 )\ + : ( 0x93 == ((const U8*)s)[3] ) ? \ + ( ( 0xCC == ((const U8*)s)[4] ) ? \ + ( ( ( ((const U8*)s)[5] & 0xFE ) == 0x80 ) ? 6 : 4 )\ + : ( ( 0xCD == ((const U8*)s)[4] ) && ( 0x82 == ((const U8*)s)[5] ) ) ? 6 : 4 )\ : 0 ) \ - : ( ( 0xCD == ((U8*)s)[2] ) && ( 0x82 == ((U8*)s)[3] ) ) ? 4 : 0 )\ - : ( 0x89 == ((U8*)s)[1] ) ? \ - ( ( 0xCD == ((U8*)s)[2] ) ? \ - ( ( 0x82 == ((U8*)s)[3] ) ? \ - ( ( ( 0xCE == ((U8*)s)[4] ) && ( 0xB9 == ((U8*)s)[5] ) ) ? 6 : 4 )\ + : ( ( 0xCD == ((const U8*)s)[2] ) && ( 0x82 == ((const U8*)s)[3] ) ) ? 4 : 0 )\ + : ( 0x89 == ((const U8*)s)[1] ) ? \ + ( ( 0xCD == ((const U8*)s)[2] ) ? \ + ( ( 0x82 == ((const U8*)s)[3] ) ? \ + ( ( ( 0xCE == ((const U8*)s)[4] ) && ( 0xB9 == ((const U8*)s)[5] ) ) ? 6 : 4 )\ : 0 ) \ - : ( ( 0xCE == ((U8*)s)[2] ) && ( 0xB9 == ((U8*)s)[3] ) ) ? 4 : 0 )\ - : ( ( ( 0x8E == ((U8*)s)[1] ) && ( 0xCE == ((U8*)s)[2] ) ) && ( 0xB9 == ((U8*)s)[3] ) ) ? 4 : 0 )\ - : ( 0xD5 == ((U8*)s)[0] ) ? \ - ( ( 0xA5 == ((U8*)s)[1] ) ? \ - ( ( ( 0xD6 == ((U8*)s)[2] ) && ( 0x82 == ((U8*)s)[3] ) ) ? 4 : 0 )\ - : ( 0xB4 == ((U8*)s)[1] ) ? \ - ( ( ( 0xD5 == ((U8*)s)[2] ) && ( ( ( ((U8*)s)[3] & 0xF7 ) == 0xA5 ) || ((U8*)s)[3] == 0xAB || ((U8*)s)[3] == 0xB6 ) ) ? 4 : 0 )\ - : ( ( ( 0xBE == ((U8*)s)[1] ) && ( 0xD5 == ((U8*)s)[2] ) ) && ( 0xB6 == ((U8*)s)[3] ) ) ? 4 : 0 )\ - : ( 0xE1 == ((U8*)s)[0] ) ? \ - ( ( 0xBC == ((U8*)s)[1] ) ? \ - ( ( ( ( ( ((U8*)s)[2] & 0xD8 ) == 0x80 ) && ( 0xCE == ((U8*)s)[3] ) ) && ( 0xB9 == ((U8*)s)[4] ) ) ? 5 : 0 )\ - : ( ( ( ( 0xBD == ((U8*)s)[1] ) && ( ( ( ((U8*)s)[2] & 0xF8 ) == 0xA0 ) || ( ( ((U8*)s)[2] & 0xFB ) == 0xB0 ) || ((U8*)s)[2] == 0xBC ) ) && ( 0xCE == ((U8*)s)[3] ) ) && ( 0xB9 == ((U8*)s)[4] ) ) ? 5 : 0 )\ + : ( ( 0xCE == ((const U8*)s)[2] ) && ( 0xB9 == ((const U8*)s)[3] ) ) ? 4 : 0 )\ + : ( ( ( 0x8E == ((const U8*)s)[1] ) && ( 0xCE == ((const U8*)s)[2] ) ) && ( 0xB9 == ((const U8*)s)[3] ) ) ? 4 : 0 )\ + : ( 0xD5 == ((const U8*)s)[0] ) ? \ + ( ( 0xA5 == ((const U8*)s)[1] ) ? \ + ( ( ( 0xD6 == ((const U8*)s)[2] ) && ( 0x82 == ((const U8*)s)[3] ) ) ? 4 : 0 )\ + : ( 0xB4 == ((const U8*)s)[1] ) ? \ + ( ( ( 0xD5 == ((const U8*)s)[2] ) && ( ( ( ((const U8*)s)[3] & 0xF7 ) == 0xA5 ) || ((const U8*)s)[3] == 0xAB || ((const U8*)s)[3] == 0xB6 ) ) ? 4 : 0 )\ + : ( ( ( 0xBE == ((const U8*)s)[1] ) && ( 0xD5 == ((const U8*)s)[2] ) ) && ( 0xB6 == ((const U8*)s)[3] ) ) ? 4 : 0 )\ + : ( 0xE1 == ((const U8*)s)[0] ) ? \ + ( ( 0xBC == ((const U8*)s)[1] ) ? \ + ( ( ( ( ( ((const U8*)s)[2] & 0xD8 ) == 0x80 ) && ( 0xCE == ((const U8*)s)[3] ) ) && ( 0xB9 == ((const U8*)s)[4] ) ) ? 5 : 0 )\ + : ( ( ( ( 0xBD == ((const U8*)s)[1] ) && ( ( ( ((const U8*)s)[2] & 0xF8 ) == 0xA0 ) || ( ( ((const U8*)s)[2] & 0xFB ) == 0xB0 ) || ((const U8*)s)[2] == 0xBC ) ) && ( 0xCE == ((const U8*)s)[3] ) ) && ( 0xB9 == ((const U8*)s)[4] ) ) ? 5 : 0 )\ : 0 ) \ : ((e)-(s) > 4) ? is_MULTI_CHAR_FOLD_utf8_safe_part0(s,e) : is_MULTI_CHAR_FOLD_utf8_safe_part1(s,e) ) @@ -473,15 +473,15 @@ /*** GENERATED CODE ***/ #define is_MULTI_CHAR_FOLD_latin1_safe(s,e) \ ( ((e)-(s) > 2) ? \ - ( ( ( ((U8*)s)[0] & 0xDF ) == 0x46 ) ? \ - ( ( ( ((U8*)s)[1] & 0xDF ) == 0x46 ) ? \ - ( ( ( ( ((U8*)s)[2] & 0xDF ) == 0x49 ) || ( ( ((U8*)s)[2] & 0xDF ) == 0x4C ) ) ? 3 : 2 )\ - : ( ( ( ((U8*)s)[1] & 0xDF ) == 0x49 ) || ( ( ((U8*)s)[1] & 0xDF ) == 0x4C ) ) ? 2 : 0 )\ - : ( ( ( ((U8*)s)[0] & 0xDF ) == 0x53 ) && ( ( ( ((U8*)s)[1] & 0xDF ) == 0x53 ) || ( ( ((U8*)s)[1] & 0xDF ) == 0x54 ) ) ) ? 2 : 0 )\ + ( ( ( ((const U8*)s)[0] & 0xDF ) == 0x46 ) ? \ + ( ( ( ((const U8*)s)[1] & 0xDF ) == 0x46 ) ? \ + ( ( ( ( ((const U8*)s)[2] & 0xDF ) == 0x49 ) || ( ( ((const U8*)s)[2] & 0xDF ) == 0x4C ) ) ? 3 : 2 )\ + : ( ( ( ((const U8*)s)[1] & 0xDF ) == 0x49 ) || ( ( ((const U8*)s)[1] & 0xDF ) == 0x4C ) ) ? 2 : 0 )\ + : ( ( ( ((const U8*)s)[0] & 0xDF ) == 0x53 ) && ( ( ( ((const U8*)s)[1] & 0xDF ) == 0x53 ) || ( ( ((const U8*)s)[1] & 0xDF ) == 0x54 ) ) ) ? 2 : 0 )\ : ((e)-(s) > 1) ? \ - ( ( ( ((U8*)s)[0] & 0xDF ) == 0x46 ) ? \ - ( ( ( ( ((U8*)s)[1] & 0xDF ) == 0x46 ) || ( ( ((U8*)s)[1] & 0xDF ) == 0x49 ) || ( ( ((U8*)s)[1] & 0xDF ) == 0x4C ) ) ? 2 : 0 )\ - : ( ( ( ((U8*)s)[0] & 0xDF ) == 0x53 ) && ( ( ( ((U8*)s)[1] & 0xDF ) == 0x53 ) || ( ( ((U8*)s)[1] & 0xDF ) == 0x54 ) ) ) ? 2 : 0 )\ + ( ( ( ((const U8*)s)[0] & 0xDF ) == 0x46 ) ? \ + ( ( ( ( ((const U8*)s)[1] & 0xDF ) == 0x46 ) || ( ( ((const U8*)s)[1] & 0xDF ) == 0x49 ) || ( ( ((const U8*)s)[1] & 0xDF ) == 0x4C ) ) ? 2 : 0 )\ + : ( ( ( ((const U8*)s)[0] & 0xDF ) == 0x53 ) && ( ( ( ((const U8*)s)[1] & 0xDF ) == 0x53 ) || ( ( ((const U8*)s)[1] & 0xDF ) == 0x54 ) ) ) ? 2 : 0 )\ : 0 ) /* @@ -491,25 +491,25 @@ */ /*** GENERATED CODE ***/ #define is_FOLDS_TO_MULTI_utf8(s) \ -( ( 0xC3 == ((U8*)s)[0] ) ? \ - ( ( 0x9F == ((U8*)s)[1] ) ? 2 : 0 ) \ -: ( 0xC4 == ((U8*)s)[0] || 0xC7 == ((U8*)s)[0] ) ? \ - ( ( 0xB0 == ((U8*)s)[1] ) ? 2 : 0 ) \ -: ( 0xC5 == ((U8*)s)[0] ) ? \ - ( ( 0x89 == ((U8*)s)[1] ) ? 2 : 0 ) \ -: ( 0xCE == ((U8*)s)[0] ) ? \ - ( ( ( ((U8*)s)[1] & 0xDF ) == 0x90 ) ? 2 : 0 ) \ -: ( 0xD6 == ((U8*)s)[0] ) ? \ - ( ( 0x87 == ((U8*)s)[1] ) ? 2 : 0 ) \ -: ( 0xE1 == ((U8*)s)[0] ) ? \ - ( ( 0xBA == ((U8*)s)[1] ) ? \ - ( ( ( 0x96 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x9A ) || 0x9E == ((U8*)s)[2] ) ? 3 : 0 )\ - : ( 0xBD == ((U8*)s)[1] ) ? \ - ( ( ( ((U8*)s)[2] & 0xF9 ) == 0x90 ) ? 3 : 0 ) \ - : ( 0xBE == ((U8*)s)[1] ) ? \ - ( ( ( ( ((U8*)s)[2] & 0xE0 ) == 0x80 ) || ( ( ((U8*)s)[2] & 0xF0 ) == 0xA0 ) || ( ( ((U8*)s)[2] & 0xFA ) == 0xB2 ) || ( ( ((U8*)s)[2] & 0xF7 ) == 0xB4 ) ) ? 3 : 0 )\ - : ( ( 0xBF == ((U8*)s)[1] ) && ( ( ( ((U8*)s)[2] & 0xCA ) == 0x82 ) || ( ( ((U8*)s)[2] & 0xF7 ) == 0x84 ) || ((U8*)s)[2] == 0xA4 || ( ( ((U8*)s)[2] & 0xF7 ) == 0xB4 ) ) ) ? 3 : 0 )\ -: ( ( ( 0xEF == ((U8*)s)[0] ) && ( 0xAC == ((U8*)s)[1] ) ) && ( ( ((U8*)s)[2] <= 0x86 ) || ( 0x93 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x97 ) ) ) ? 3 : 0 ) +( ( 0xC3 == ((const U8*)s)[0] ) ? \ + ( ( 0x9F == ((const U8*)s)[1] ) ? 2 : 0 ) \ +: ( 0xC4 == ((const U8*)s)[0] || 0xC7 == ((const U8*)s)[0] ) ? \ + ( ( 0xB0 == ((const U8*)s)[1] ) ? 2 : 0 ) \ +: ( 0xC5 == ((const U8*)s)[0] ) ? \ + ( ( 0x89 == ((const U8*)s)[1] ) ? 2 : 0 ) \ +: ( 0xCE == ((const U8*)s)[0] ) ? \ + ( ( ( ((const U8*)s)[1] & 0xDF ) == 0x90 ) ? 2 : 0 ) \ +: ( 0xD6 == ((const U8*)s)[0] ) ? \ + ( ( 0x87 == ((const U8*)s)[1] ) ? 2 : 0 ) \ +: ( 0xE1 == ((const U8*)s)[0] ) ? \ + ( ( 0xBA == ((const U8*)s)[1] ) ? \ + ( ( ( 0x96 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x9A ) || 0x9E == ((const U8*)s)[2] ) ? 3 : 0 )\ + : ( 0xBD == ((const U8*)s)[1] ) ? \ + ( ( ( ((const U8*)s)[2] & 0xF9 ) == 0x90 ) ? 3 : 0 ) \ + : ( 0xBE == ((const U8*)s)[1] ) ? \ + ( ( ( ( ((const U8*)s)[2] & 0xE0 ) == 0x80 ) || ( ( ((const U8*)s)[2] & 0xF0 ) == 0xA0 ) || ( ( ((const U8*)s)[2] & 0xFA ) == 0xB2 ) || ( ( ((const U8*)s)[2] & 0xF7 ) == 0xB4 ) ) ? 3 : 0 )\ + : ( ( 0xBF == ((const U8*)s)[1] ) && ( ( ( ((const U8*)s)[2] & 0xCA ) == 0x82 ) || ( ( ((const U8*)s)[2] & 0xF7 ) == 0x84 ) || ((const U8*)s)[2] == 0xA4 || ( ( ((const U8*)s)[2] & 0xF7 ) == 0xB4 ) ) ) ? 3 : 0 )\ +: ( ( ( 0xEF == ((const U8*)s)[0] ) && ( 0xAC == ((const U8*)s)[1] ) ) && ( ( ((const U8*)s)[2] <= 0x86 ) || ( 0x93 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x97 ) ) ) ? 3 : 0 ) /* PROBLEMATIC_LOCALE_FOLD: characters whose fold is problematic under locale @@ -518,20 +518,20 @@ */ /*** GENERATED CODE ***/ #define is_PROBLEMATIC_LOCALE_FOLD_utf8(s) \ -( ( ((U8*)s)[0] <= 0x7F ) ? 1 \ -: ( ( ((U8*)s)[0] & 0xFE ) == 0xC2 ) ? \ +( ( ((const U8*)s)[0] <= 0x7F ) ? 1 \ +: ( ( ((const U8*)s)[0] & 0xFE ) == 0xC2 ) ? \ 2 \ -: ( 0xC4 == ((U8*)s)[0] || 0xC7 == ((U8*)s)[0] ) ? \ - ( ( 0xB0 == ((U8*)s)[1] ) ? 2 : 0 ) \ -: ( 0xC5 == ((U8*)s)[0] ) ? \ - ( ( 0x89 == ((U8*)s)[1] || 0xB8 == ((U8*)s)[1] || 0xBF == ((U8*)s)[1] ) ? 2 : 0 )\ -: ( 0xCE == ((U8*)s)[0] ) ? \ - ( ( ( ((U8*)s)[1] & 0xDF ) == 0x9C ) ? 2 : 0 ) \ -: ( 0xE1 == ((U8*)s)[0] ) ? \ - ( ( ( 0xBA == ((U8*)s)[1] ) && ( ( 0x96 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x9A ) || 0x9E == ((U8*)s)[2] ) ) ? 3 : 0 )\ -: ( 0xE2 == ((U8*)s)[0] ) ? \ - ( ( ( 0x84 == ((U8*)s)[1] ) && ( ( ((U8*)s)[2] & 0xFE ) == 0xAA ) ) ? 3 : 0 )\ -: ( ( ( 0xEF == ((U8*)s)[0] ) && ( 0xAC == ((U8*)s)[1] ) ) && ( ((U8*)s)[2] <= 0x86 ) ) ? 3 : 0 ) +: ( 0xC4 == ((const U8*)s)[0] || 0xC7 == ((const U8*)s)[0] ) ? \ + ( ( 0xB0 == ((const U8*)s)[1] ) ? 2 : 0 ) \ +: ( 0xC5 == ((const U8*)s)[0] ) ? \ + ( ( 0x89 == ((const U8*)s)[1] || 0xB8 == ((const U8*)s)[1] || 0xBF == ((const U8*)s)[1] ) ? 2 : 0 )\ +: ( 0xCE == ((const U8*)s)[0] ) ? \ + ( ( ( ((const U8*)s)[1] & 0xDF ) == 0x9C ) ? 2 : 0 ) \ +: ( 0xE1 == ((const U8*)s)[0] ) ? \ + ( ( ( 0xBA == ((const U8*)s)[1] ) && ( ( 0x96 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x9A ) || 0x9E == ((const U8*)s)[2] ) ) ? 3 : 0 )\ +: ( 0xE2 == ((const U8*)s)[0] ) ? \ + ( ( ( 0x84 == ((const U8*)s)[1] ) && ( ( ((const U8*)s)[2] & 0xFE ) == 0xAA ) ) ? 3 : 0 )\ +: ( ( ( 0xEF == ((const U8*)s)[0] ) && ( 0xAC == ((const U8*)s)[1] ) ) && ( ((const U8*)s)[2] <= 0x86 ) ) ? 3 : 0 ) /*** GENERATED CODE ***/ #define is_PROBLEMATIC_LOCALE_FOLD_cp(cp) \ @@ -555,22 +555,22 @@ */ /*** GENERATED CODE ***/ #define is_PROBLEMATIC_LOCALE_FOLDEDS_START_utf8(s) \ -( ( ((U8*)s)[0] <= 0x7F ) ? 1 \ -: ( ( ((U8*)s)[0] & 0xFE ) == 0xC2 ) ? \ +( ( ((const U8*)s)[0] <= 0x7F ) ? 1 \ +: ( ( ((const U8*)s)[0] & 0xFE ) == 0xC2 ) ? \ 2 \ -: ( 0xC4 == ((U8*)s)[0] || 0xC7 == ((U8*)s)[0] ) ? \ - ( ( 0xB0 == ((U8*)s)[1] ) ? 2 : 0 ) \ -: ( 0xC5 == ((U8*)s)[0] ) ? \ - ( ( 0x89 == ((U8*)s)[1] || 0xB8 == ((U8*)s)[1] || 0xBF == ((U8*)s)[1] ) ? 2 : 0 )\ -: ( 0xCA == ((U8*)s)[0] ) ? \ - ( ( 0xBC == ((U8*)s)[1] ) ? 2 : 0 ) \ -: ( 0xCE == ((U8*)s)[0] ) ? \ - ( ( ( ((U8*)s)[1] & 0xDF ) == 0x9C ) ? 2 : 0 ) \ -: ( 0xE1 == ((U8*)s)[0] ) ? \ - ( ( ( 0xBA == ((U8*)s)[1] ) && ( ( 0x96 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x9A ) || 0x9E == ((U8*)s)[2] ) ) ? 3 : 0 )\ -: ( 0xE2 == ((U8*)s)[0] ) ? \ - ( ( ( 0x84 == ((U8*)s)[1] ) && ( ( ((U8*)s)[2] & 0xFE ) == 0xAA ) ) ? 3 : 0 )\ -: ( ( ( 0xEF == ((U8*)s)[0] ) && ( 0xAC == ((U8*)s)[1] ) ) && ( ((U8*)s)[2] <= 0x86 ) ) ? 3 : 0 ) +: ( 0xC4 == ((const U8*)s)[0] || 0xC7 == ((const U8*)s)[0] ) ? \ + ( ( 0xB0 == ((const U8*)s)[1] ) ? 2 : 0 ) \ +: ( 0xC5 == ((const U8*)s)[0] ) ? \ + ( ( 0x89 == ((const U8*)s)[1] || 0xB8 == ((const U8*)s)[1] || 0xBF == ((const U8*)s)[1] ) ? 2 : 0 )\ +: ( 0xCA == ((const U8*)s)[0] ) ? \ + ( ( 0xBC == ((const U8*)s)[1] ) ? 2 : 0 ) \ +: ( 0xCE == ((const U8*)s)[0] ) ? \ + ( ( ( ((const U8*)s)[1] & 0xDF ) == 0x9C ) ? 2 : 0 ) \ +: ( 0xE1 == ((const U8*)s)[0] ) ? \ + ( ( ( 0xBA == ((const U8*)s)[1] ) && ( ( 0x96 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x9A ) || 0x9E == ((const U8*)s)[2] ) ) ? 3 : 0 )\ +: ( 0xE2 == ((const U8*)s)[0] ) ? \ + ( ( ( 0x84 == ((const U8*)s)[1] ) && ( ( ((const U8*)s)[2] & 0xFE ) == 0xAA ) ) ? 3 : 0 )\ +: ( ( ( 0xEF == ((const U8*)s)[0] ) && ( 0xAC == ((const U8*)s)[1] ) ) && ( ((const U8*)s)[2] <= 0x86 ) ) ? 3 : 0 ) /*** GENERATED CODE ***/ #define is_PROBLEMATIC_LOCALE_FOLDEDS_START_cp(cp) \ @@ -596,13 +596,13 @@ /*** GENERATED CODE ***/ #define is_PATWS_safe(s,e,is_utf8) \ ( ( LIKELY((e) > (s)) ) ? \ - ( ( ( 0x09 <= ((U8*)s)[0] && ((U8*)s)[0] <= 0x0D ) || 0x20 == ((U8*)s)[0] ) ? 1\ + ( ( ( 0x09 <= ((const U8*)s)[0] && ((const U8*)s)[0] <= 0x0D ) || 0x20 == ((const U8*)s)[0] ) ? 1\ : (! is_utf8 ) ? \ - ( 0x85 == ((U8*)s)[0] ) \ + ( 0x85 == ((const U8*)s)[0] ) \ : ( LIKELY(((e) - (s)) >= UTF8SKIP(s)) ) ? \ - ( ( 0xC2 == ((U8*)s)[0] ) ? \ - ( ( 0x85 == ((U8*)s)[1] ) ? 2 : 0 ) \ - : ( ( ( 0xE2 == ((U8*)s)[0] ) && ( 0x80 == ((U8*)s)[1] ) ) && ( ( ((U8*)s)[2] & 0xFE ) == 0x8E || ( ((U8*)s)[2] & 0xFE ) == 0xA8 ) ) ? 3 : 0 )\ + ( ( 0xC2 == ((const U8*)s)[0] ) ? \ + ( ( 0x85 == ((const U8*)s)[1] ) ? 2 : 0 ) \ + : ( ( ( 0xE2 == ((const U8*)s)[0] ) && ( 0x80 == ((const U8*)s)[1] ) ) && ( ( ((const U8*)s)[2] & 0xFE ) == 0x8E || ( ((const U8*)s)[2] & 0xFE ) == 0xA8 ) ) ? 3 : 0 )\ : 0 ) \ : 0 ) @@ -630,44 +630,44 @@ /*** GENERATED CODE ***/ #define is_LNBREAK_safe(s,e,is_utf8) \ ( ((e)-(s) > 2) ? \ - ( ( ( 0x0B == ((U8*)s)[0] || 0x0C == ((U8*)s)[0] ) || 0x15 == ((U8*)s)[0] || 0x25 == ((U8*)s)[0] ) ? 1\ - : ( 0x0D == ((U8*)s)[0] ) ? \ - ( ( 0x15 == ((U8*)s)[1] ) ? 2 : 1 ) \ - : ( ( ( ( is_utf8 ) && ( 0xCA == ((U8*)s)[0] ) ) && ( 0x42 == ((U8*)s)[1] ) ) && ( 0x49 == ((U8*)s)[2] || 0x4A == ((U8*)s)[2] ) ) ? 3 : 0 )\ + ( ( ( 0x0B == ((const U8*)s)[0] || 0x0C == ((const U8*)s)[0] ) || 0x15 == ((const U8*)s)[0] || 0x25 == ((const U8*)s)[0] ) ? 1\ + : ( 0x0D == ((const U8*)s)[0] ) ? \ + ( ( 0x15 == ((const U8*)s)[1] ) ? 2 : 1 ) \ + : ( ( ( ( is_utf8 ) && ( 0xCA == ((const U8*)s)[0] ) ) && ( 0x42 == ((const U8*)s)[1] ) ) && ( 0x49 == ((const U8*)s)[2] || 0x4A == ((const U8*)s)[2] ) ) ? 3 : 0 )\ : ((e)-(s) > 1) ? \ - ( ( ( 0x0B == ((U8*)s)[0] || 0x0C == ((U8*)s)[0] ) || 0x15 == ((U8*)s)[0] || 0x25 == ((U8*)s)[0] ) ? 1\ - : ( 0x0D == ((U8*)s)[0] ) ? \ - ( ( 0x15 == ((U8*)s)[1] ) ? 2 : 1 ) \ + ( ( ( 0x0B == ((const U8*)s)[0] || 0x0C == ((const U8*)s)[0] ) || 0x15 == ((const U8*)s)[0] || 0x25 == ((const U8*)s)[0] ) ? 1\ + : ( 0x0D == ((const U8*)s)[0] ) ? \ + ( ( 0x15 == ((const U8*)s)[1] ) ? 2 : 1 ) \ : 0 ) \ : ((e)-(s) > 0) ? \ - ( ( 0x0B <= ((U8*)s)[0] && ((U8*)s)[0] <= 0x0D ) || 0x15 == ((U8*)s)[0] || 0x25 == ((U8*)s)[0] )\ + ( ( 0x0B <= ((const U8*)s)[0] && ((const U8*)s)[0] <= 0x0D ) || 0x15 == ((const U8*)s)[0] || 0x25 == ((const U8*)s)[0] )\ : 0 ) /*** GENERATED CODE ***/ #define is_LNBREAK_utf8_safe(s,e) \ ( ((e)-(s) > 2) ? \ - ( ( ( 0x0B == ((U8*)s)[0] || 0x0C == ((U8*)s)[0] ) || 0x15 == ((U8*)s)[0] || 0x25 == ((U8*)s)[0] ) ? 1\ - : ( 0x0D == ((U8*)s)[0] ) ? \ - ( ( 0x15 == ((U8*)s)[1] ) ? 2 : 1 ) \ - : ( ( ( 0xCA == ((U8*)s)[0] ) && ( 0x42 == ((U8*)s)[1] ) ) && ( 0x49 == ((U8*)s)[2] || 0x4A == ((U8*)s)[2] ) ) ? 3 : 0 )\ + ( ( ( 0x0B == ((const U8*)s)[0] || 0x0C == ((const U8*)s)[0] ) || 0x15 == ((const U8*)s)[0] || 0x25 == ((const U8*)s)[0] ) ? 1\ + : ( 0x0D == ((const U8*)s)[0] ) ? \ + ( ( 0x15 == ((const U8*)s)[1] ) ? 2 : 1 ) \ + : ( ( ( 0xCA == ((const U8*)s)[0] ) && ( 0x42 == ((const U8*)s)[1] ) ) && ( 0x49 == ((const U8*)s)[2] || 0x4A == ((const U8*)s)[2] ) ) ? 3 : 0 )\ : ((e)-(s) > 1) ? \ - ( ( ( 0x0B == ((U8*)s)[0] || 0x0C == ((U8*)s)[0] ) || 0x15 == ((U8*)s)[0] || 0x25 == ((U8*)s)[0] ) ? 1\ - : ( 0x0D == ((U8*)s)[0] ) ? \ - ( ( 0x15 == ((U8*)s)[1] ) ? 2 : 1 ) \ + ( ( ( 0x0B == ((const U8*)s)[0] || 0x0C == ((const U8*)s)[0] ) || 0x15 == ((const U8*)s)[0] || 0x25 == ((const U8*)s)[0] ) ? 1\ + : ( 0x0D == ((const U8*)s)[0] ) ? \ + ( ( 0x15 == ((const U8*)s)[1] ) ? 2 : 1 ) \ : 0 ) \ : ((e)-(s) > 0) ? \ - ( ( 0x0B <= ((U8*)s)[0] && ((U8*)s)[0] <= 0x0D ) || 0x15 == ((U8*)s)[0] || 0x25 == ((U8*)s)[0] )\ + ( ( 0x0B <= ((const U8*)s)[0] && ((const U8*)s)[0] <= 0x0D ) || 0x15 == ((const U8*)s)[0] || 0x25 == ((const U8*)s)[0] )\ : 0 ) /*** GENERATED CODE ***/ #define is_LNBREAK_latin1_safe(s,e) \ ( ((e)-(s) > 1) ? \ - ( ( ( 0x0B == ((U8*)s)[0] || 0x0C == ((U8*)s)[0] ) || 0x15 == ((U8*)s)[0] || 0x25 == ((U8*)s)[0] ) ? 1\ - : ( 0x0D == ((U8*)s)[0] ) ? \ - ( ( 0x15 == ((U8*)s)[1] ) ? 2 : 1 ) \ + ( ( ( 0x0B == ((const U8*)s)[0] || 0x0C == ((const U8*)s)[0] ) || 0x15 == ((const U8*)s)[0] || 0x25 == ((const U8*)s)[0] ) ? 1\ + : ( 0x0D == ((const U8*)s)[0] ) ? \ + ( ( 0x15 == ((const U8*)s)[1] ) ? 2 : 1 ) \ : 0 ) \ : ((e)-(s) > 0) ? \ - ( ( 0x0B <= ((U8*)s)[0] && ((U8*)s)[0] <= 0x0D ) || 0x15 == ((U8*)s)[0] || 0x25 == ((U8*)s)[0] )\ + ( ( 0x0B <= ((const U8*)s)[0] && ((const U8*)s)[0] <= 0x0D ) || 0x15 == ((const U8*)s)[0] || 0x25 == ((const U8*)s)[0] )\ : 0 ) /* @@ -677,15 +677,15 @@ */ /*** GENERATED CODE ***/ #define is_HORIZWS_high(s) \ -( ( 0xBC == ((U8*)s)[0] ) ? \ - ( ( ( 0x63 == ((U8*)s)[1] ) && ( 0x41 == ((U8*)s)[2] ) ) ? 3 : 0 ) \ -: ( 0xCA == ((U8*)s)[0] ) ? \ - ( ( 0x41 == ((U8*)s)[1] ) ? \ - ( ( ( 0x41 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x4A ) || 0x51 == ((U8*)s)[2] ) ? 3 : 0 )\ - : ( 0x42 == ((U8*)s)[1] ) ? \ - ( ( 0x56 == ((U8*)s)[2] ) ? 3 : 0 ) \ - : ( ( 0x43 == ((U8*)s)[1] ) && ( 0x73 == ((U8*)s)[2] ) ) ? 3 : 0 ) \ -: ( ( ( 0xCE == ((U8*)s)[0] ) && ( 0x41 == ((U8*)s)[1] ) ) && ( 0x41 == ((U8*)s)[2] ) ) ? 3 : 0 ) +( ( 0xBC == ((const U8*)s)[0] ) ? \ + ( ( ( 0x63 == ((const U8*)s)[1] ) && ( 0x41 == ((const U8*)s)[2] ) ) ? 3 : 0 )\ +: ( 0xCA == ((const U8*)s)[0] ) ? \ + ( ( 0x41 == ((const U8*)s)[1] ) ? \ + ( ( ( 0x41 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x4A ) || 0x51 == ((const U8*)s)[2] ) ? 3 : 0 )\ + : ( 0x42 == ((const U8*)s)[1] ) ? \ + ( ( 0x56 == ((const U8*)s)[2] ) ? 3 : 0 ) \ + : ( ( 0x43 == ((const U8*)s)[1] ) && ( 0x73 == ((const U8*)s)[2] ) ) ? 3 : 0 )\ +: ( ( ( 0xCE == ((const U8*)s)[0] ) && ( 0x41 == ((const U8*)s)[1] ) ) && ( 0x41 == ((const U8*)s)[2] ) ) ? 3 : 0 ) /*** GENERATED CODE ***/ #define is_HORIZWS_cp_high(cp) \ @@ -701,7 +701,7 @@ */ /*** GENERATED CODE ***/ #define is_VERTWS_high(s) \ -( ( ( ( 0xCA == ((U8*)s)[0] ) && ( 0x42 == ((U8*)s)[1] ) ) && ( 0x49 == ((U8*)s)[2] || 0x4A == ((U8*)s)[2] ) ) ? 3 : 0 ) +( ( ( ( 0xCA == ((const U8*)s)[0] ) && ( 0x42 == ((const U8*)s)[1] ) ) && ( 0x49 == ((const U8*)s)[2] || 0x4A == ((const U8*)s)[2] ) ) ? 3 : 0 ) /*** GENERATED CODE ***/ #define is_VERTWS_cp_high(cp) \ @@ -714,9 +714,9 @@ */ /*** GENERATED CODE ***/ #define is_XDIGIT_high(s) \ -( ( ( 0xDD == ((U8*)s)[0] ) && ( 0x73 == ((U8*)s)[1] ) ) ? ( ( 0x67 == ((U8*)s)[2] ) ?\ - ( ( ( 0x57 <= ((U8*)s)[3] && ((U8*)s)[3] <= 0x59 ) || ( 0x62 <= ((U8*)s)[3] && ((U8*)s)[3] <= 0x68 ) ) ? 4 : 0 )\ - : ( ( ( ((U8*)s)[2] & 0xFE ) == 0x68 ) && ( 0x42 <= ((U8*)s)[3] && ((U8*)s)[3] <= 0x47 ) ) ? 4 : 0 ) : 0 ) +( ( ( 0xDD == ((const U8*)s)[0] ) && ( 0x73 == ((const U8*)s)[1] ) ) ? ( ( 0x67 == ((const U8*)s)[2] ) ?\ + ( ( ( 0x57 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x68 ) ) ? 4 : 0 )\ + : ( ( ( ((const U8*)s)[2] & 0xFE ) == 0x68 ) && ( 0x42 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x47 ) ) ? 4 : 0 ) : 0 ) /*** GENERATED CODE ***/ #define is_XDIGIT_cp_high(cp) \ @@ -730,15 +730,15 @@ */ /*** GENERATED CODE ***/ #define is_XPERLSPACE_high(s) \ -( ( 0xBC == ((U8*)s)[0] ) ? \ - ( ( ( 0x63 == ((U8*)s)[1] ) && ( 0x41 == ((U8*)s)[2] ) ) ? 3 : 0 ) \ -: ( 0xCA == ((U8*)s)[0] ) ? \ - ( ( 0x41 == ((U8*)s)[1] ) ? \ - ( ( ( 0x41 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x4A ) || 0x51 == ((U8*)s)[2] ) ? 3 : 0 )\ - : ( 0x42 == ((U8*)s)[1] ) ? \ - ( ( ( 0x49 == ((U8*)s)[2] || 0x4A == ((U8*)s)[2] ) || 0x56 == ((U8*)s)[2] ) ? 3 : 0 )\ - : ( ( 0x43 == ((U8*)s)[1] ) && ( 0x73 == ((U8*)s)[2] ) ) ? 3 : 0 ) \ -: ( ( ( 0xCE == ((U8*)s)[0] ) && ( 0x41 == ((U8*)s)[1] ) ) && ( 0x41 == ((U8*)s)[2] ) ) ? 3 : 0 ) +( ( 0xBC == ((const U8*)s)[0] ) ? \ + ( ( ( 0x63 == ((const U8*)s)[1] ) && ( 0x41 == ((const U8*)s)[2] ) ) ? 3 : 0 )\ +: ( 0xCA == ((const U8*)s)[0] ) ? \ + ( ( 0x41 == ((const U8*)s)[1] ) ? \ + ( ( ( 0x41 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x4A ) || 0x51 == ((const U8*)s)[2] ) ? 3 : 0 )\ + : ( 0x42 == ((const U8*)s)[1] ) ? \ + ( ( ( 0x49 == ((const U8*)s)[2] || 0x4A == ((const U8*)s)[2] ) || 0x56 == ((const U8*)s)[2] ) ? 3 : 0 )\ + : ( ( 0x43 == ((const U8*)s)[1] ) && ( 0x73 == ((const U8*)s)[2] ) ) ? 3 : 0 )\ +: ( ( ( 0xCE == ((const U8*)s)[0] ) && ( 0x41 == ((const U8*)s)[1] ) ) && ( 0x41 == ((const U8*)s)[2] ) ) ? 3 : 0 ) /*** GENERATED CODE ***/ #define is_XPERLSPACE_cp_high(cp) \ @@ -756,7 +756,7 @@ */ /*** GENERATED CODE ***/ #define is_REPLACEMENT_utf8_safe(s,e) \ -( ( ( ( ( ( ((e) - (s)) >= 4 ) && ( 0xDD == ((U8*)s)[0] ) ) && ( 0x73 == ((U8*)s)[1] ) ) && ( 0x73 == ((U8*)s)[2] ) ) && ( 0x71 == ((U8*)s)[3] ) ) ? 4 : 0 ) +( ( ( ( ( ( ((e) - (s)) >= 4 ) && ( 0xDD == ((const U8*)s)[0] ) ) && ( 0x73 == ((const U8*)s)[1] ) ) && ( 0x73 == ((const U8*)s)[2] ) ) && ( 0x71 == ((const U8*)s)[3] ) ) ? 4 : 0 ) /* NONCHAR: Non character code points @@ -764,107 +764,104 @@ \p{_Perl_Nchar} */ /*** GENERATED CODE ***/ -#define is_NONCHAR_utf8(s) \ -( ( 0xDD == ((U8*)s)[0] ) ? \ - ( ( 0x73 == ((U8*)s)[1] ) ? \ - ( ( 0x55 == ((U8*)s)[2] ) ? \ - ( ( ( 0x57 <= ((U8*)s)[3] && ((U8*)s)[3] <= 0x59 ) || ( 0x62 <= ((U8*)s)[3] && ((U8*)s)[3] <= 0x6A ) || ( ((U8*)s)[3] & 0xFC ) == 0x70 ) ? 4 : 0 )\ - : ( 0x56 == ((U8*)s)[2] ) ? \ - ( ( ( 0x41 <= ((U8*)s)[3] && ((U8*)s)[3] <= 0x4A ) || ( 0x51 <= ((U8*)s)[3] && ((U8*)s)[3] <= 0x56 ) ) ? 4 : 0 )\ - : ( ( 0x73 == ((U8*)s)[2] ) && ( ( ((U8*)s)[3] & 0xFE ) == 0x72 ) ) ? 4 : 0 )\ - : 0 ) \ -: ( 0xDF == ((U8*)s)[0] || 0xEA == ((U8*)s)[0] || 0xEC == ((U8*)s)[0] ) ? \ - ( ( ( ( 0x73 == ((U8*)s)[1] ) && ( 0x73 == ((U8*)s)[2] ) ) && ( ( ((U8*)s)[3] & 0xFE ) == 0x72 ) ) ? 4 : 0 )\ -: ( 0xED == ((U8*)s)[0] ) ? \ - ( ( ( ( ( ((U8*)s)[1] == 0x4A || ((U8*)s)[1] == 0x52 || ( ( ((U8*)s)[1] & 0xFD ) == 0x54 ) || ((U8*)s)[1] == 0x58 || ((U8*)s)[1] == 0x62 || ( ( ((U8*)s)[1] & 0xFD ) == 0x64 ) || ( ( ((U8*)s)[1] & 0xFD ) == 0x68 ) || ( ( ((U8*)s)[1] & 0xFD ) == 0x71 ) ) && ( 0x73 == ((U8*)s)[2] ) ) && ( 0x73 == ((U8*)s)[3] ) ) && ( ( ((U8*)s)[4] & 0xFE ) == 0x72 ) ) ? 5 : 0 )\ -: ( ( ( ( ( 0xEE == ((U8*)s)[0] ) && ( 0x42 == ((U8*)s)[1] ) ) && ( 0x73 == ((U8*)s)[2] ) ) && ( 0x73 == ((U8*)s)[3] ) ) && ( ( ((U8*)s)[4] & 0xFE ) == 0x72 ) ) ? 5 : 0 ) +#define is_NONCHAR_utf8_safe(s,e) \ +( ( ( LIKELY((e) > (s)) ) && ( LIKELY(((e) - (s)) >= UTF8SKIP(s)) ) ) ? ( ( 0xDD == ((const U8*)s)[0] ) ?\ + ( ( 0x73 == ((const U8*)s)[1] ) ? \ + ( ( 0x55 == ((const U8*)s)[2] ) ? \ + ( ( ( 0x57 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x6A ) || ( ((const U8*)s)[3] & 0xFC ) == 0x70 ) ? 4 : 0 )\ + : ( 0x56 == ((const U8*)s)[2] ) ? \ + ( ( ( 0x41 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x56 ) ) ? 4 : 0 )\ + : ( ( 0x73 == ((const U8*)s)[2] ) && ( ( ((const U8*)s)[3] & 0xFE ) == 0x72 ) ) ? 4 : 0 )\ + : 0 ) \ + : ( 0xDF == ((const U8*)s)[0] || 0xEA == ((const U8*)s)[0] || 0xEC == ((const U8*)s)[0] ) ?\ + ( ( ( ( 0x73 == ((const U8*)s)[1] ) && ( 0x73 == ((const U8*)s)[2] ) ) && ( ( ((const U8*)s)[3] & 0xFE ) == 0x72 ) ) ? 4 : 0 )\ + : ( 0xED == ((const U8*)s)[0] ) ? \ + ( ( ( ( ( ((const U8*)s)[1] == 0x4A || ((const U8*)s)[1] == 0x52 || ( ( ((const U8*)s)[1] & 0xFD ) == 0x54 ) || ((const U8*)s)[1] == 0x58 || ((const U8*)s)[1] == 0x62 || ( ( ((const U8*)s)[1] & 0xFD ) == 0x64 ) || ( ( ((const U8*)s)[1] & 0xFD ) == 0x68 ) || ( ( ((const U8*)s)[1] & 0xFD ) == 0x71 ) ) && ( 0x73 == ((const U8*)s)[2] ) ) && ( 0x73 == ((const U8*)s)[3] ) ) && ( ( ((const U8*)s)[4] & 0xFE ) == 0x72 ) ) ? 5 : 0 )\ + : ( ( ( ( ( 0xEE == ((const U8*)s)[0] ) && ( 0x42 == ((const U8*)s)[1] ) ) && ( 0x73 == ((const U8*)s)[2] ) ) && ( 0x73 == ((const U8*)s)[3] ) ) && ( ( ((const U8*)s)[4] & 0xFE ) == 0x72 ) ) ? 5 : 0 ) : 0 ) /* - SURROGATE: Surrogate characters + SURROGATE: Surrogate code points \p{_Perl_Surrogate} */ /*** GENERATED CODE ***/ -#define is_SURROGATE_utf8(s) \ -( ( ( ( ( 0xDD == ((U8*)s)[0] ) && ( 0x65 == ((U8*)s)[1] || 0x66 == ((U8*)s)[1] ) ) && ( ( 0x41 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x4A ) || ( 0x51 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x59 ) || ( 0x62 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x6A ) || ( ((U8*)s)[2] & 0xFC ) == 0x70 ) ) && ( ( 0x41 <= ((U8*)s)[3] && ((U8*)s)[3] <= 0x4A ) || ( 0x51 <= ((U8*)s)[3] && ((U8*)s)[3] <= 0x59 ) || ( 0x62 <= ((U8*)s)[3] && ((U8*)s)[3] <= 0x6A ) || ( ((U8*)s)[3] & 0xFC ) == 0x70 ) ) ? 4 : 0 ) +#define is_SURROGATE_utf8_safe(s,e) \ +( ( ( ( ( ( ((e) - (s)) >= 4 ) && ( 0xDD == ((const U8*)s)[0] ) ) && ( 0x65 == ((const U8*)s)[1] || 0x66 == ((const U8*)s)[1] ) ) && ( ( 0x41 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x6A ) || ( ((const U8*)s)[2] & 0xFC ) == 0x70 ) ) && ( ( 0x41 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x6A ) || ( ((const U8*)s)[3] & 0xFC ) == 0x70 ) ) ? 4 : 0 ) /* - UTF8_CHAR: Matches legal UTF-EBCDIC encoded characters from 2 through 3 bytes + QUOTEMETA: Meta-characters that \Q should quote - 0xA0 - 0x3FFF + \p{_Perl_Quotemeta} */ /*** GENERATED CODE ***/ -#define is_UTF8_CHAR_utf8_no_length_checks(s) \ -( ( 0x80 == ((U8*)s)[0] || ( 0x8A <= ((U8*)s)[0] && ((U8*)s)[0] <= 0x90 ) || ( 0x9A <= ((U8*)s)[0] && ((U8*)s)[0] <= 0xA0 ) || ( 0xAA <= ((U8*)s)[0] && ((U8*)s)[0] <= 0xAC ) || ( 0xAE <= ((U8*)s)[0] && ((U8*)s)[0] <= 0xB6 ) ) ?\ - ( ( ( 0x41 <= ((U8*)s)[1] && ((U8*)s)[1] <= 0x4A ) || ( 0x51 <= ((U8*)s)[1] && ((U8*)s)[1] <= 0x59 ) || ( 0x62 <= ((U8*)s)[1] && ((U8*)s)[1] <= 0x6A ) || ( ((U8*)s)[1] & 0xFC ) == 0x70 ) ? 2 : 0 )\ -: ( ( ( ( ( ((U8*)s)[0] & 0xFC ) == 0xB8 ) || ((U8*)s)[0] == 0xBC || ( ( ((U8*)s)[0] & 0xFE ) == 0xBE ) || ( ( ((U8*)s)[0] & 0xEE ) == 0xCA ) || ( ( ((U8*)s)[0] & 0xFC ) == 0xCC ) ) && ( ( 0x41 <= ((U8*)s)[1] && ((U8*)s)[1] <= 0x4A ) || ( 0x51 <= ((U8*)s)[1] && ((U8*)s)[1] <= 0x59 ) || ( 0x62 <= ((U8*)s)[1] && ((U8*)s)[1] <= 0x6A ) || ( ((U8*)s)[1] & 0xFC ) == 0x70 ) ) && ( ( 0x41 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x4A ) || ( 0x51 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x59 ) || ( 0x62 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x6A ) || ( ((U8*)s)[2] & 0xFC ) == 0x70 ) ) ? 3 : 0 ) +#define is_QUOTEMETA_high_part0(s) \ +( ( 0x41 == ((const U8*)s)[1] || ( 0x54 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x6A ) || ( ((const U8*)s)[1] & 0xFC ) == 0x70 ) ?\ + ( ( ( 0x41 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x6A ) || ( ((const U8*)s)[2] & 0xFC ) == 0x70 ) ? 3 : 0 )\ + : ( 0x42 == ((const U8*)s)[1] ) ? \ + ( ( ( 0x41 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x72 ) ) ? 3 : 0 )\ + : ( 0x43 == ((const U8*)s)[1] ) ? \ + ( ( ( 0x42 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x59 ) || 0x62 == ((const U8*)s)[2] || ( 0x64 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x6A ) || ( ((const U8*)s)[2] & 0xFC ) == 0x70 ) ? 3 : 0 )\ + : ( 0x44 == ((const U8*)s)[1] ) ? \ + ( ( ( 0x41 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x56 ) ) ? 3 : 0 )\ + : ( ( 0x53 == ((const U8*)s)[1] ) && ( ( 0x57 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x6A ) || ( ((const U8*)s)[2] & 0xFC ) == 0x70 ) ) ? 3 : 0 ) -/* - QUOTEMETA: Meta-characters that \Q should quote - \p{_Perl_Quotemeta} -*/ /*** GENERATED CODE ***/ -#define is_QUOTEMETA_high(s) \ -( ( 0xB1 == ((U8*)s)[0] ) ? \ - ( ( 0x56 == ((U8*)s)[1] ) ? 2 : 0 ) \ -: ( 0xB8 == ((U8*)s)[0] ) ? \ - ( ( ( 0x57 == ((U8*)s)[1] ) && ( 0x70 == ((U8*)s)[2] ) ) ? 3 : 0 ) \ -: ( 0xBB == ((U8*)s)[0] ) ? \ - ( ( 0x51 == ((U8*)s)[1] ) ? \ - ( ( 0x73 == ((U8*)s)[2] ) ? 3 : 0 ) \ - : ( ( 0x52 == ((U8*)s)[1] ) && ( 0x41 == ((U8*)s)[2] ) ) ? 3 : 0 ) \ -: ( 0xBC == ((U8*)s)[0] ) ? \ - ( ( 0x63 == ((U8*)s)[1] ) ? \ - ( ( 0x41 == ((U8*)s)[2] ) ? 3 : 0 ) \ - : ( ( 0x71 == ((U8*)s)[1] ) && ( 0x63 == ((U8*)s)[2] || 0x64 == ((U8*)s)[2] ) ) ? 3 : 0 )\ -: ( 0xBE == ((U8*)s)[0] ) ? \ - ( ( ( 0x41 == ((U8*)s)[1] ) && ( 0x52 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x55 ) ) ? 3 : 0 )\ -: ( 0xCA == ((U8*)s)[0] ) ? \ - ( ( 0x41 == ((U8*)s)[1] || ( 0x54 <= ((U8*)s)[1] && ((U8*)s)[1] <= 0x59 ) || ( 0x62 <= ((U8*)s)[1] && ((U8*)s)[1] <= 0x6A ) || ( ((U8*)s)[1] & 0xFC ) == 0x70 ) ?\ - ( ( ( 0x41 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x4A ) || ( 0x51 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x59 ) || ( 0x62 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x6A ) || ( ((U8*)s)[2] & 0xFC ) == 0x70 ) ? 3 : 0 )\ - : ( 0x42 == ((U8*)s)[1] ) ? \ - ( ( ( 0x41 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x4A ) || ( 0x51 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x59 ) || ( 0x62 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x6A ) || ( 0x70 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x72 ) ) ? 3 : 0 )\ - : ( 0x43 == ((U8*)s)[1] ) ? \ - ( ( ( 0x42 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x4A ) || ( 0x51 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x59 ) || 0x62 == ((U8*)s)[2] || ( 0x64 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x6A ) || ( ((U8*)s)[2] & 0xFC ) == 0x70 ) ? 3 : 0 )\ - : ( 0x44 == ((U8*)s)[1] ) ? \ - ( ( ( 0x41 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x4A ) || ( 0x51 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x56 ) ) ? 3 : 0 )\ - : ( ( 0x53 == ((U8*)s)[1] ) && ( ( 0x57 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x59 ) || ( 0x62 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x6A ) || ( ((U8*)s)[2] & 0xFC ) == 0x70 ) ) ? 3 : 0 )\ -: ( 0xCB == ((U8*)s)[0] ) ? \ - ( ( ( ( ((U8*)s)[1] & 0xE7 ) == 0x41 ) || ( ( ((U8*)s)[1] & 0xCE ) == 0x42 ) || ((U8*)s)[1] == 0x4A || ( ( ((U8*)s)[1] & 0xFC ) == 0x54 ) || ((U8*)s)[1] == 0x58 || ( ( ((U8*)s)[1] & 0xFC ) == 0x64 ) || ( ( ((U8*)s)[1] & 0xFE ) == 0x68 ) || ((U8*)s)[1] == 0x71 ) ?\ - ( ( ( 0x41 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x4A ) || ( 0x51 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x59 ) || ( 0x62 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x6A ) || ( ((U8*)s)[2] & 0xFC ) == 0x70 ) ? 3 : 0 )\ - : ( 0x6A == ((U8*)s)[1] ) ? \ - ( ( ( 0x41 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x4A ) || ( 0x51 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x59 ) || ( 0x62 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x64 ) ) ? 3 : 0 )\ - : ( ( 0x70 == ((U8*)s)[1] ) && ( ( 0x63 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x6A ) || ( ((U8*)s)[2] & 0xFC ) == 0x70 ) ) ? 3 : 0 )\ -: ( 0xCC == ((U8*)s)[0] ) ? \ - ( ( ( ( 0x41 <= ((U8*)s)[1] && ((U8*)s)[1] <= 0x4A ) || ( 0x51 <= ((U8*)s)[1] && ((U8*)s)[1] <= 0x59 ) || ( 0x62 <= ((U8*)s)[1] && ((U8*)s)[1] <= 0x6A ) || ( ((U8*)s)[1] & 0xFC ) == 0x70 ) && ( ( 0x41 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x4A ) || ( 0x51 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x59 ) || ( 0x62 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x6A ) || ( ((U8*)s)[2] & 0xFC ) == 0x70 ) ) ? 3 : 0 )\ -: ( 0xCD == ((U8*)s)[0] ) ? \ - ( ( ( ( 0x57 <= ((U8*)s)[1] && ((U8*)s)[1] <= 0x59 ) || 0x62 == ((U8*)s)[1] ) && ( ( 0x41 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x4A ) || ( 0x51 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x59 ) || ( 0x62 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x6A ) || ( ((U8*)s)[2] & 0xFC ) == 0x70 ) ) ? 3 : 0 )\ -: ( 0xCE == ((U8*)s)[0] ) ? \ - ( ( 0x41 == ((U8*)s)[1] ) ? \ - ( ( ( 0x41 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x44 ) || ( 0x49 == ((U8*)s)[2] || 0x4A == ((U8*)s)[2] ) || ( 0x51 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x59 ) || ( 0x62 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x6A ) || ( ((U8*)s)[2] & 0xFC ) == 0x70 ) ? 3 : 0 )\ - : ( 0x42 == ((U8*)s)[1] ) ? \ - ( ( 0x41 == ((U8*)s)[2] || 0x57 == ((U8*)s)[2] ) ? 3 : 0 ) \ - : ( ( 0x52 == ((U8*)s)[1] ) && ( 0x45 == ((U8*)s)[2] ) ) ? 3 : 0 ) \ -: ( 0xDD == ((U8*)s)[0] ) ? \ - ( ( 0x73 == ((U8*)s)[1] ) ? \ - ( ( 0x4A == ((U8*)s)[2] ) ? \ - ( ( ( ((U8*)s)[3] & 0xFE ) == 0x72 ) ? 4 : 0 ) \ - : ( 0x57 == ((U8*)s)[2] ) ? \ - ( ( ( 0x41 <= ((U8*)s)[3] && ((U8*)s)[3] <= 0x4A ) || ( 0x51 <= ((U8*)s)[3] && ((U8*)s)[3] <= 0x56 ) ) ? 4 : 0 )\ - : ( 0x59 == ((U8*)s)[2] ) ? \ - ( ( ( ((U8*)s)[3] & 0xFE ) == 0x46 ) ? 4 : 0 ) \ - : ( 0x66 == ((U8*)s)[2] ) ? \ - ( ( 0x73 == ((U8*)s)[3] ) ? 4 : 0 ) \ - : ( 0x71 == ((U8*)s)[2] ) ? \ - ( ( 0x41 == ((U8*)s)[3] ) ? 4 : 0 ) \ - : ( ( 0x73 == ((U8*)s)[2] ) && ( ( 0x57 <= ((U8*)s)[3] && ((U8*)s)[3] <= 0x59 ) || ( 0x62 <= ((U8*)s)[3] && ((U8*)s)[3] <= 0x67 ) ) ) ? 4 : 0 )\ +#define is_QUOTEMETA_high_part1(s) \ +( ( 0xCB == ((const U8*)s)[0] ) ? \ + ( ( ( ( ((const U8*)s)[1] & 0xE7 ) == 0x41 ) || ( ( ((const U8*)s)[1] & 0xCE ) == 0x42 ) || ((const U8*)s)[1] == 0x4A || ( ( ((const U8*)s)[1] & 0xFC ) == 0x54 ) || ((const U8*)s)[1] == 0x58 || ( ( ((const U8*)s)[1] & 0xFC ) == 0x64 ) || ( ( ((const U8*)s)[1] & 0xFE ) == 0x68 ) || ((const U8*)s)[1] == 0x71 ) ?\ + ( ( ( 0x41 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x6A ) || ( ((const U8*)s)[2] & 0xFC ) == 0x70 ) ? 3 : 0 )\ + : ( 0x6A == ((const U8*)s)[1] ) ? \ + ( ( ( 0x41 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x64 ) ) ? 3 : 0 )\ + : ( ( 0x70 == ((const U8*)s)[1] ) && ( ( 0x63 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x6A ) || ( ((const U8*)s)[2] & 0xFC ) == 0x70 ) ) ? 3 : 0 )\ +: ( 0xCC == ((const U8*)s)[0] ) ? \ + ( ( ( ( 0x41 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x6A ) || ( ((const U8*)s)[1] & 0xFC ) == 0x70 ) && ( ( 0x41 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x6A ) || ( ((const U8*)s)[2] & 0xFC ) == 0x70 ) ) ? 3 : 0 )\ +: ( 0xCD == ((const U8*)s)[0] ) ? \ + ( ( ( ( 0x57 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x59 ) || 0x62 == ((const U8*)s)[1] ) && ( ( 0x41 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x6A ) || ( ((const U8*)s)[2] & 0xFC ) == 0x70 ) ) ? 3 : 0 )\ +: ( 0xCE == ((const U8*)s)[0] ) ? \ + ( ( 0x41 == ((const U8*)s)[1] ) ? \ + ( ( ( 0x41 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x44 ) || ( 0x49 == ((const U8*)s)[2] || 0x4A == ((const U8*)s)[2] ) || ( 0x51 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x6A ) || ( ((const U8*)s)[2] & 0xFC ) == 0x70 ) ? 3 : 0 )\ + : ( 0x42 == ((const U8*)s)[1] ) ? \ + ( ( 0x41 == ((const U8*)s)[2] || 0x57 == ((const U8*)s)[2] ) ? 3 : 0 )\ + : ( ( 0x52 == ((const U8*)s)[1] ) && ( 0x45 == ((const U8*)s)[2] ) ) ? 3 : 0 )\ +: ( 0xDD == ((const U8*)s)[0] ) ? \ + ( ( 0x73 == ((const U8*)s)[1] ) ? \ + ( ( 0x4A == ((const U8*)s)[2] ) ? \ + ( ( ( ((const U8*)s)[3] & 0xFE ) == 0x72 ) ? 4 : 0 ) \ + : ( 0x57 == ((const U8*)s)[2] ) ? \ + ( ( ( 0x41 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x56 ) ) ? 4 : 0 )\ + : ( 0x59 == ((const U8*)s)[2] ) ? \ + ( ( ( ((const U8*)s)[3] & 0xFE ) == 0x46 ) ? 4 : 0 ) \ + : ( 0x66 == ((const U8*)s)[2] ) ? \ + ( ( 0x73 == ((const U8*)s)[3] ) ? 4 : 0 ) \ + : ( 0x71 == ((const U8*)s)[2] ) ? \ + ( ( 0x41 == ((const U8*)s)[3] ) ? 4 : 0 ) \ + : ( ( 0x73 == ((const U8*)s)[2] ) && ( ( 0x57 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x67 ) ) ) ? 4 : 0 )\ : 0 ) \ -: ( 0xDF == ((U8*)s)[0] ) ? \ - ( ( 0x56 == ((U8*)s)[1] ) ? \ - ( ( ( 0x46 == ((U8*)s)[2] ) && ( 0x41 <= ((U8*)s)[3] && ((U8*)s)[3] <= 0x44 ) ) ? 4 : 0 )\ - : ( ( ( 0x63 == ((U8*)s)[1] ) && ( 0x52 == ((U8*)s)[2] ) ) && ( 0x62 <= ((U8*)s)[3] && ((U8*)s)[3] <= 0x69 ) ) ? 4 : 0 )\ -: ( ( ( ( ( 0xED == ((U8*)s)[0] ) && ( 0x70 == ((U8*)s)[1] ) ) && ( 0x41 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x44 ) ) && ( ( 0x41 <= ((U8*)s)[3] && ((U8*)s)[3] <= 0x4A ) || ( 0x51 <= ((U8*)s)[3] && ((U8*)s)[3] <= 0x59 ) || ( 0x62 <= ((U8*)s)[3] && ((U8*)s)[3] <= 0x6A ) || ( ((U8*)s)[3] & 0xFC ) == 0x70 ) ) && ( ( 0x41 <= ((U8*)s)[4] && ((U8*)s)[4] <= 0x4A ) || ( 0x51 <= ((U8*)s)[4] && ((U8*)s)[4] <= 0x59 ) || ( 0x62 <= ((U8*)s)[4] && ((U8*)s)[4] <= 0x6A ) || ( ((U8*)s)[4] & 0xFC ) == 0x70 ) ) ? 5 : 0 ) +: ( 0xDF == ((const U8*)s)[0] ) ? \ + ( ( 0x56 == ((const U8*)s)[1] ) ? \ + ( ( ( 0x46 == ((const U8*)s)[2] ) && ( 0x41 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x44 ) ) ? 4 : 0 )\ + : ( ( ( 0x63 == ((const U8*)s)[1] ) && ( 0x52 == ((const U8*)s)[2] ) ) && ( 0x62 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x69 ) ) ? 4 : 0 )\ +: ( ( ( ( ( 0xED == ((const U8*)s)[0] ) && ( 0x70 == ((const U8*)s)[1] ) ) && ( 0x41 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x44 ) ) && ( ( 0x41 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x6A ) || ( ((const U8*)s)[3] & 0xFC ) == 0x70 ) ) && ( ( 0x41 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x6A ) || ( ((const U8*)s)[4] & 0xFC ) == 0x70 ) ) ? 5 : 0 ) + + +/*** GENERATED CODE ***/ +#define is_QUOTEMETA_high(s) \ +( ( 0xB1 == ((const U8*)s)[0] ) ? \ + ( ( 0x56 == ((const U8*)s)[1] ) ? 2 : 0 ) \ +: ( 0xB8 == ((const U8*)s)[0] ) ? \ + ( ( ( 0x57 == ((const U8*)s)[1] ) && ( 0x70 == ((const U8*)s)[2] ) ) ? 3 : 0 )\ +: ( 0xBB == ((const U8*)s)[0] ) ? \ + ( ( 0x51 == ((const U8*)s)[1] ) ? \ + ( ( 0x73 == ((const U8*)s)[2] ) ? 3 : 0 ) \ + : ( ( 0x52 == ((const U8*)s)[1] ) && ( 0x41 == ((const U8*)s)[2] ) ) ? 3 : 0 )\ +: ( 0xBC == ((const U8*)s)[0] ) ? \ + ( ( 0x63 == ((const U8*)s)[1] ) ? \ + ( ( 0x41 == ((const U8*)s)[2] ) ? 3 : 0 ) \ + : ( ( 0x71 == ((const U8*)s)[1] ) && ( 0x63 == ((const U8*)s)[2] || 0x64 == ((const U8*)s)[2] ) ) ? 3 : 0 )\ +: ( 0xBE == ((const U8*)s)[0] ) ? \ + ( ( ( 0x41 == ((const U8*)s)[1] ) && ( 0x52 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x55 ) ) ? 3 : 0 )\ +: ( 0xCA == ((const U8*)s)[0] ) ? is_QUOTEMETA_high_part0(s) : is_QUOTEMETA_high_part1(s) ) /* MULTI_CHAR_FOLD: multi-char strings that are folded to by a single character @@ -873,207 +870,215 @@ */ /*** GENERATED CODE ***/ #define is_MULTI_CHAR_FOLD_utf8_safe_part0(s,e) \ -( ( 0x81 == ((U8*)s)[0] ) ? \ - ( ( ( 0xAB == ((U8*)s)[1] ) && ( 0x72 == ((U8*)s)[2] ) ) ? 3 : 0 ) \ - : ( 0x86 == ((U8*)s)[0] ) ? \ - ( ( 0x86 == ((U8*)s)[1] ) ? \ - ( ( 0x89 == ((U8*)s)[2] || 0x93 == ((U8*)s)[2] ) ? 3 : 2 ) \ - : ( 0x89 == ((U8*)s)[1] || 0x93 == ((U8*)s)[1] ) ? 2 : 0 ) \ - : ( 0x88 == ((U8*)s)[0] ) ? \ - ( ( ( 0xB0 == ((U8*)s)[1] ) && ( 0x58 == ((U8*)s)[2] ) ) ? 3 : 0 ) \ - : ( 0x89 == ((U8*)s)[0] ) ? \ - ( ( ( 0xAF == ((U8*)s)[1] ) && ( 0x48 == ((U8*)s)[2] ) ) ? 3 : 0 ) \ - : ( 0x8F == ((U8*)s)[0] ) ? \ - ( ( ( ( 0x73 == ((U8*)s)[1] ) && ( 0x8F == ((U8*)s)[2] ) ) && ( 0x73 == ((U8*)s)[3] ) ) ? 4 : 0 )\ - : ( 0x91 == ((U8*)s)[0] ) ? \ - ( ( ( 0xAF == ((U8*)s)[1] ) && ( 0x53 == ((U8*)s)[2] ) ) ? 3 : 0 ) \ - : ( 0xA2 == ((U8*)s)[0] ) ? \ - ( ( ( ((U8*)s)[1] & 0xFE ) == 0xA2 ) ? 2 : 0 ) \ - : ( 0xA3 == ((U8*)s)[0] ) ? \ - ( ( ( 0xAF == ((U8*)s)[1] ) && ( 0x49 == ((U8*)s)[2] ) ) ? 3 : 0 ) \ - : ( 0xA6 == ((U8*)s)[0] || 0xA8 == ((U8*)s)[0] ) ? \ - ( ( ( 0xAF == ((U8*)s)[1] ) && ( 0x51 == ((U8*)s)[2] ) ) ? 3 : 0 ) \ - : ( 0xAB == ((U8*)s)[0] ) ? \ - ( ( ( 0x70 == ((U8*)s)[1] ) && ( 0x95 == ((U8*)s)[2] ) ) ? 3 : 0 ) \ - : ( 0xB4 == ((U8*)s)[0] ) ? \ - ( ( 0x53 == ((U8*)s)[1] || 0x55 == ((U8*)s)[1] ) ? \ - ( ( ( 0xB4 == ((U8*)s)[2] ) && ( 0x68 == ((U8*)s)[3] ) ) ? 4 : 0 )\ - : ( 0x58 == ((U8*)s)[1] || 0x66 == ((U8*)s)[1] ) ? \ - ( ( 0xB1 == ((U8*)s)[2] ) ? \ - ( ( 0x43 == ((U8*)s)[3] ) ? 4 : 0 ) \ - : ( ( 0xB4 == ((U8*)s)[2] ) && ( 0x68 == ((U8*)s)[3] ) ) ? 4 : 0 )\ - : ( ( ( 0x68 == ((U8*)s)[1] ) && ( 0xB1 == ((U8*)s)[2] ) ) && ( 0x43 == ((U8*)s)[3] ) ) ? 4 : 0 )\ - : ( 0xB5 == ((U8*)s)[0] ) ? \ - ( ( 0x42 == ((U8*)s)[1] ) ? \ - ( ( ( 0xAF == ((U8*)s)[2] ) && ( 0x62 == ((U8*)s)[3] ) ) ? 4 : 0 )\ - : ( 0x46 == ((U8*)s)[1] ) ? \ - ( ( 0xAF == ((U8*)s)[2] ) ? \ - ( ( 0x62 == ((U8*)s)[3] ) ? 4 : 0 ) \ - : ( ( 0xB1 == ((U8*)s)[2] ) && ( 0x43 == ((U8*)s)[3] ) ) ? 4 : 0 )\ - : ( 0x4A == ((U8*)s)[1] ) ? \ - ( ( 0xB1 == ((U8*)s)[2] ) ? \ - ( ( 0x43 == ((U8*)s)[3] ) ? 4 : 0 ) \ - : ( ( 0xB4 == ((U8*)s)[2] ) && ( 0x68 == ((U8*)s)[3] ) ) ? 4 : 0 )\ - : ( ( ( 0x55 == ((U8*)s)[1] ) && ( 0xB4 == ((U8*)s)[2] ) ) && ( 0x68 == ((U8*)s)[3] ) ) ? 4 : 0 )\ - : ( 0xBF == ((U8*)s)[0] ) ? \ - ( ( 0x67 == ((U8*)s)[1] || 0x68 == ((U8*)s)[1] ) ? \ - ( ( ( ( 0x41 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x48 ) && ( 0xB4 == ((U8*)s)[3] ) ) && ( 0x68 == ((U8*)s)[4] ) ) ? 5 : 0 )\ - : ( ( ( ( 0x6A == ((U8*)s)[1] ) && ( ( 0x41 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x48 ) || 0x57 == ((U8*)s)[2] || 0x63 == ((U8*)s)[2] || 0x70 == ((U8*)s)[2] ) ) && ( 0xB4 == ((U8*)s)[3] ) ) && ( 0x68 == ((U8*)s)[4] ) ) ? 5 : 0 )\ - : 0 ) +( ( 0x86 == ((const U8*)s)[1] ) ? \ + ( ( 0x89 == ((const U8*)s)[2] || 0x93 == ((const U8*)s)[2] ) ? 3 : 2 )\ + : ( 0x89 == ((const U8*)s)[1] || 0x93 == ((const U8*)s)[1] ) ? 2 : 0 ) /*** GENERATED CODE ***/ #define is_MULTI_CHAR_FOLD_utf8_safe_part1(s,e) \ +( ( 0x88 == ((const U8*)s)[0] ) ? \ + ( ( ( 0xB0 == ((const U8*)s)[1] ) && ( 0x58 == ((const U8*)s)[2] ) ) ? 3 : 0 )\ + : ( 0x89 == ((const U8*)s)[0] ) ? \ + ( ( ( 0xAF == ((const U8*)s)[1] ) && ( 0x48 == ((const U8*)s)[2] ) ) ? 3 : 0 )\ + : ( 0x8F == ((const U8*)s)[0] ) ? \ + ( ( ( ( 0x73 == ((const U8*)s)[1] ) && ( 0x8F == ((const U8*)s)[2] ) ) && ( 0x73 == ((const U8*)s)[3] ) ) ? 4 : 0 )\ + : ( 0x91 == ((const U8*)s)[0] ) ? \ + ( ( ( 0xAF == ((const U8*)s)[1] ) && ( 0x53 == ((const U8*)s)[2] ) ) ? 3 : 0 )\ + : ( 0xA2 == ((const U8*)s)[0] ) ? \ + ( ( ( ((const U8*)s)[1] & 0xFE ) == 0xA2 ) ? 2 : 0 ) \ + : ( 0xA3 == ((const U8*)s)[0] ) ? \ + ( ( ( 0xAF == ((const U8*)s)[1] ) && ( 0x49 == ((const U8*)s)[2] ) ) ? 3 : 0 )\ + : ( 0xA6 == ((const U8*)s)[0] || 0xA8 == ((const U8*)s)[0] ) ? \ + ( ( ( 0xAF == ((const U8*)s)[1] ) && ( 0x51 == ((const U8*)s)[2] ) ) ? 3 : 0 )\ + : ( 0xAB == ((const U8*)s)[0] ) ? \ + ( ( ( 0x70 == ((const U8*)s)[1] ) && ( 0x95 == ((const U8*)s)[2] ) ) ? 3 : 0 )\ + : ( 0xB4 == ((const U8*)s)[0] ) ? \ + ( ( 0x53 == ((const U8*)s)[1] || 0x55 == ((const U8*)s)[1] ) ? \ + ( ( ( 0xB4 == ((const U8*)s)[2] ) && ( 0x68 == ((const U8*)s)[3] ) ) ? 4 : 0 )\ + : ( 0x58 == ((const U8*)s)[1] || 0x66 == ((const U8*)s)[1] ) ? \ + ( ( 0xB1 == ((const U8*)s)[2] ) ? \ + ( ( 0x43 == ((const U8*)s)[3] ) ? \ + ( ( ( 0xB4 == ((const U8*)s)[4] ) && ( 0x68 == ((const U8*)s)[5] ) ) ? 6 : 4 )\ + : 0 ) \ + : ( ( 0xB4 == ((const U8*)s)[2] ) && ( 0x68 == ((const U8*)s)[3] ) ) ? 4 : 0 )\ + : ( 0x68 == ((const U8*)s)[1] ) ? \ + ( ( 0xAF == ((const U8*)s)[2] ) ? \ + ( ( 0x49 == ((const U8*)s)[3] ) ? \ + ( ( 0xAF == ((const U8*)s)[4] ) ? \ + ( ( 0x41 == ((const U8*)s)[5] || 0x42 == ((const U8*)s)[5] ) ? 6 : 0 )\ + : ( ( 0xB1 == ((const U8*)s)[4] ) && ( 0x43 == ((const U8*)s)[5] ) ) ? 6 : 0 )\ + : 0 ) \ + : ( ( 0xB1 == ((const U8*)s)[2] ) && ( 0x43 == ((const U8*)s)[3] ) ) ? 4 : 0 )\ + : 0 ) \ + : ( 0xB5 == ((const U8*)s)[0] ) ? \ + ( ( 0x42 == ((const U8*)s)[1] ) ? \ + ( ( ( 0xAF == ((const U8*)s)[2] ) && ( 0x62 == ((const U8*)s)[3] ) ) ? 4 : 0 )\ + : ( 0x46 == ((const U8*)s)[1] ) ? \ + ( ( 0xAF == ((const U8*)s)[2] ) ? \ + ( ( 0x49 == ((const U8*)s)[3] ) ? \ + ( ( 0xAF == ((const U8*)s)[4] ) ? \ + ( ( 0x41 == ((const U8*)s)[5] || 0x42 == ((const U8*)s)[5] ) ? 6 : 0 )\ + : ( ( 0xB1 == ((const U8*)s)[4] ) && ( 0x43 == ((const U8*)s)[5] ) ) ? 6 : 0 )\ + : ( 0x62 == ((const U8*)s)[3] ) ? \ + ( ( 0xAF == ((const U8*)s)[4] ) ? \ + ( ( 0x41 == ((const U8*)s)[5] || 0x42 == ((const U8*)s)[5] ) ? 6 : 4 )\ + : ( ( 0xB1 == ((const U8*)s)[4] ) && ( 0x43 == ((const U8*)s)[5] ) ) ? 6 : 4 )\ + : 0 ) \ + : ( ( 0xB1 == ((const U8*)s)[2] ) && ( 0x43 == ((const U8*)s)[3] ) ) ? 4 : 0 )\ + : ( 0x4A == ((const U8*)s)[1] ) ? \ + ( ( 0xB1 == ((const U8*)s)[2] ) ? \ + ( ( 0x43 == ((const U8*)s)[3] ) ? \ + ( ( ( 0xB4 == ((const U8*)s)[4] ) && ( 0x68 == ((const U8*)s)[5] ) ) ? 6 : 4 )\ + : 0 ) \ + : ( ( 0xB4 == ((const U8*)s)[2] ) && ( 0x68 == ((const U8*)s)[3] ) ) ? 4 : 0 )\ + : ( ( ( 0x55 == ((const U8*)s)[1] ) && ( 0xB4 == ((const U8*)s)[2] ) ) && ( 0x68 == ((const U8*)s)[3] ) ) ? 4 : 0 )\ + : ( 0xB8 == ((const U8*)s)[0] ) ? \ + ( ( 0x52 == ((const U8*)s)[1] ) ? \ + ( ( 0x46 == ((const U8*)s)[2] ) ? \ + ( ( ( ( 0xB8 == ((const U8*)s)[3] ) && ( 0x53 == ((const U8*)s)[4] ) ) && ( 0x43 == ((const U8*)s)[5] ) ) ? 6 : 0 )\ + : ( 0x63 == ((const U8*)s)[2] ) ? \ + ( ( ( ( 0xB8 == ((const U8*)s)[3] ) && ( 0x52 == ((const U8*)s)[4] ) ) && ( 0x46 == ((const U8*)s)[5] || 0x52 == ((const U8*)s)[5] || 0x54 == ((const U8*)s)[5] || 0x65 == ((const U8*)s)[5] ) ) ? 6 : 0 )\ + : ( ( ( ( 0x72 == ((const U8*)s)[2] ) && ( 0xB8 == ((const U8*)s)[3] ) ) && ( 0x52 == ((const U8*)s)[4] ) ) && ( 0x65 == ((const U8*)s)[5] ) ) ? 6 : 0 )\ + : 0 ) \ + : ( 0xBF == ((const U8*)s)[0] ) ? \ + ( ( 0x67 == ((const U8*)s)[1] || 0x68 == ((const U8*)s)[1] ) ? \ + ( ( ( ( 0x41 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x48 ) && ( 0xB4 == ((const U8*)s)[3] ) ) && ( 0x68 == ((const U8*)s)[4] ) ) ? 5 : 0 )\ + : ( ( ( ( 0x6A == ((const U8*)s)[1] ) && ( ( 0x41 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x48 ) || 0x57 == ((const U8*)s)[2] || 0x63 == ((const U8*)s)[2] || 0x70 == ((const U8*)s)[2] ) ) && ( 0xB4 == ((const U8*)s)[3] ) ) && ( 0x68 == ((const U8*)s)[4] ) ) ? 5 : 0 )\ + : 0 ) + + +/*** GENERATED CODE ***/ +#define is_MULTI_CHAR_FOLD_utf8_safe_part2(s,e) \ +( ( 0x81 == ((const U8*)s)[0] ) ? \ + ( ( ( 0xAB == ((const U8*)s)[1] ) && ( 0x72 == ((const U8*)s)[2] ) ) ? 3 : 0 )\ + : ( 0x86 == ((const U8*)s)[0] ) ? \ + ( ( 0x86 == ((const U8*)s)[1] ) ? \ + ( ( 0x89 == ((const U8*)s)[2] || 0x93 == ((const U8*)s)[2] ) ? 3 : 2 )\ + : ( 0x89 == ((const U8*)s)[1] || 0x93 == ((const U8*)s)[1] ) ? 2 : 0 )\ + : ( 0x88 == ((const U8*)s)[0] ) ? \ + ( ( ( 0xB0 == ((const U8*)s)[1] ) && ( 0x58 == ((const U8*)s)[2] ) ) ? 3 : 0 )\ + : ( 0x89 == ((const U8*)s)[0] ) ? \ + ( ( ( 0xAF == ((const U8*)s)[1] ) && ( 0x48 == ((const U8*)s)[2] ) ) ? 3 : 0 )\ + : ( 0x8F == ((const U8*)s)[0] ) ? \ + ( ( ( ( 0x73 == ((const U8*)s)[1] ) && ( 0x8F == ((const U8*)s)[2] ) ) && ( 0x73 == ((const U8*)s)[3] ) ) ? 4 : 0 )\ + : ( 0x91 == ((const U8*)s)[0] ) ? \ + ( ( ( 0xAF == ((const U8*)s)[1] ) && ( 0x53 == ((const U8*)s)[2] ) ) ? 3 : 0 )\ + : ( 0xA2 == ((const U8*)s)[0] ) ? \ + ( ( ( ((const U8*)s)[1] & 0xFE ) == 0xA2 ) ? 2 : 0 ) \ + : ( 0xA3 == ((const U8*)s)[0] ) ? \ + ( ( ( 0xAF == ((const U8*)s)[1] ) && ( 0x49 == ((const U8*)s)[2] ) ) ? 3 : 0 )\ + : ( 0xA6 == ((const U8*)s)[0] || 0xA8 == ((const U8*)s)[0] ) ? \ + ( ( ( 0xAF == ((const U8*)s)[1] ) && ( 0x51 == ((const U8*)s)[2] ) ) ? 3 : 0 )\ + : ( 0xAB == ((const U8*)s)[0] ) ? \ + ( ( ( 0x70 == ((const U8*)s)[1] ) && ( 0x95 == ((const U8*)s)[2] ) ) ? 3 : 0 )\ + : ( 0xB4 == ((const U8*)s)[0] ) ? \ + ( ( 0x53 == ((const U8*)s)[1] || 0x55 == ((const U8*)s)[1] ) ? \ + ( ( ( 0xB4 == ((const U8*)s)[2] ) && ( 0x68 == ((const U8*)s)[3] ) ) ? 4 : 0 )\ + : ( 0x58 == ((const U8*)s)[1] || 0x66 == ((const U8*)s)[1] ) ? \ + ( ( 0xB1 == ((const U8*)s)[2] ) ? \ + ( ( 0x43 == ((const U8*)s)[3] ) ? 4 : 0 ) \ + : ( ( 0xB4 == ((const U8*)s)[2] ) && ( 0x68 == ((const U8*)s)[3] ) ) ? 4 : 0 )\ + : ( ( ( 0x68 == ((const U8*)s)[1] ) && ( 0xB1 == ((const U8*)s)[2] ) ) && ( 0x43 == ((const U8*)s)[3] ) ) ? 4 : 0 )\ + : ( 0xB5 == ((const U8*)s)[0] ) ? \ + ( ( 0x42 == ((const U8*)s)[1] ) ? \ + ( ( ( 0xAF == ((const U8*)s)[2] ) && ( 0x62 == ((const U8*)s)[3] ) ) ? 4 : 0 )\ + : ( 0x46 == ((const U8*)s)[1] ) ? \ + ( ( 0xAF == ((const U8*)s)[2] ) ? \ + ( ( 0x62 == ((const U8*)s)[3] ) ? 4 : 0 ) \ + : ( ( 0xB1 == ((const U8*)s)[2] ) && ( 0x43 == ((const U8*)s)[3] ) ) ? 4 : 0 )\ + : ( 0x4A == ((const U8*)s)[1] ) ? \ + ( ( 0xB1 == ((const U8*)s)[2] ) ? \ + ( ( 0x43 == ((const U8*)s)[3] ) ? 4 : 0 ) \ + : ( ( 0xB4 == ((const U8*)s)[2] ) && ( 0x68 == ((const U8*)s)[3] ) ) ? 4 : 0 )\ + : ( ( ( 0x55 == ((const U8*)s)[1] ) && ( 0xB4 == ((const U8*)s)[2] ) ) && ( 0x68 == ((const U8*)s)[3] ) ) ? 4 : 0 )\ + : ( 0xBF == ((const U8*)s)[0] ) ? \ + ( ( 0x67 == ((const U8*)s)[1] || 0x68 == ((const U8*)s)[1] ) ? \ + ( ( ( ( 0x41 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x48 ) && ( 0xB4 == ((const U8*)s)[3] ) ) && ( 0x68 == ((const U8*)s)[4] ) ) ? 5 : 0 )\ + : ( ( ( ( 0x6A == ((const U8*)s)[1] ) && ( ( 0x41 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x48 ) || 0x57 == ((const U8*)s)[2] || 0x63 == ((const U8*)s)[2] || 0x70 == ((const U8*)s)[2] ) ) && ( 0xB4 == ((const U8*)s)[3] ) ) && ( 0x68 == ((const U8*)s)[4] ) ) ? 5 : 0 )\ + : 0 ) + + +/*** GENERATED CODE ***/ +#define is_MULTI_CHAR_FOLD_utf8_safe_part3(s,e) \ ( ((e)-(s) > 3) ? \ - ( ( 0x81 == ((U8*)s)[0] ) ? \ - ( ( ( 0xAB == ((U8*)s)[1] ) && ( 0x72 == ((U8*)s)[2] ) ) ? 3 : 0 ) \ - : ( 0x86 == ((U8*)s)[0] ) ? \ - ( ( 0x86 == ((U8*)s)[1] ) ? \ - ( ( 0x89 == ((U8*)s)[2] || 0x93 == ((U8*)s)[2] ) ? 3 : 2 ) \ - : ( 0x89 == ((U8*)s)[1] || 0x93 == ((U8*)s)[1] ) ? 2 : 0 ) \ - : ( 0x88 == ((U8*)s)[0] ) ? \ - ( ( ( 0xB0 == ((U8*)s)[1] ) && ( 0x58 == ((U8*)s)[2] ) ) ? 3 : 0 ) \ - : ( 0x89 == ((U8*)s)[0] ) ? \ - ( ( ( 0xAF == ((U8*)s)[1] ) && ( 0x48 == ((U8*)s)[2] ) ) ? 3 : 0 ) \ - : ( 0x8F == ((U8*)s)[0] ) ? \ - ( ( ( ( 0x73 == ((U8*)s)[1] ) && ( 0x8F == ((U8*)s)[2] ) ) && ( 0x73 == ((U8*)s)[3] ) ) ? 4 : 0 )\ - : ( 0x91 == ((U8*)s)[0] ) ? \ - ( ( ( 0xAF == ((U8*)s)[1] ) && ( 0x53 == ((U8*)s)[2] ) ) ? 3 : 0 ) \ - : ( 0xA2 == ((U8*)s)[0] ) ? \ - ( ( ( ((U8*)s)[1] & 0xFE ) == 0xA2 ) ? 2 : 0 ) \ - : ( 0xA3 == ((U8*)s)[0] ) ? \ - ( ( ( 0xAF == ((U8*)s)[1] ) && ( 0x49 == ((U8*)s)[2] ) ) ? 3 : 0 ) \ - : ( 0xA6 == ((U8*)s)[0] || 0xA8 == ((U8*)s)[0] ) ? \ - ( ( ( 0xAF == ((U8*)s)[1] ) && ( 0x51 == ((U8*)s)[2] ) ) ? 3 : 0 ) \ - : ( 0xAB == ((U8*)s)[0] ) ? \ - ( ( ( 0x70 == ((U8*)s)[1] ) && ( 0x95 == ((U8*)s)[2] ) ) ? 3 : 0 ) \ - : ( 0xB4 == ((U8*)s)[0] ) ? \ - ( ( 0x53 == ((U8*)s)[1] || 0x55 == ((U8*)s)[1] ) ? \ - ( ( ( 0xB4 == ((U8*)s)[2] ) && ( 0x68 == ((U8*)s)[3] ) ) ? 4 : 0 )\ - : ( 0x58 == ((U8*)s)[1] || 0x66 == ((U8*)s)[1] ) ? \ - ( ( 0xB1 == ((U8*)s)[2] ) ? \ - ( ( 0x43 == ((U8*)s)[3] ) ? 4 : 0 ) \ - : ( ( 0xB4 == ((U8*)s)[2] ) && ( 0x68 == ((U8*)s)[3] ) ) ? 4 : 0 )\ - : ( ( ( 0x68 == ((U8*)s)[1] ) && ( 0xB1 == ((U8*)s)[2] ) ) && ( 0x43 == ((U8*)s)[3] ) ) ? 4 : 0 )\ - : ( 0xB5 == ((U8*)s)[0] ) ? \ - ( ( 0x42 == ((U8*)s)[1] ) ? \ - ( ( ( 0xAF == ((U8*)s)[2] ) && ( 0x62 == ((U8*)s)[3] ) ) ? 4 : 0 )\ - : ( 0x46 == ((U8*)s)[1] ) ? \ - ( ( 0xAF == ((U8*)s)[2] ) ? \ - ( ( 0x62 == ((U8*)s)[3] ) ? 4 : 0 ) \ - : ( ( 0xB1 == ((U8*)s)[2] ) && ( 0x43 == ((U8*)s)[3] ) ) ? 4 : 0 )\ - : ( 0x4A == ((U8*)s)[1] ) ? \ - ( ( 0xB1 == ((U8*)s)[2] ) ? \ - ( ( 0x43 == ((U8*)s)[3] ) ? 4 : 0 ) \ - : ( ( 0xB4 == ((U8*)s)[2] ) && ( 0x68 == ((U8*)s)[3] ) ) ? 4 : 0 )\ - : ( ( ( 0x55 == ((U8*)s)[1] ) && ( 0xB4 == ((U8*)s)[2] ) ) && ( 0x68 == ((U8*)s)[3] ) ) ? 4 : 0 )\ + ( ( 0x81 == ((const U8*)s)[0] ) ? \ + ( ( ( 0xAB == ((const U8*)s)[1] ) && ( 0x72 == ((const U8*)s)[2] ) ) ? 3 : 0 )\ + : ( 0x86 == ((const U8*)s)[0] ) ? \ + ( ( 0x86 == ((const U8*)s)[1] ) ? \ + ( ( 0x89 == ((const U8*)s)[2] || 0x93 == ((const U8*)s)[2] ) ? 3 : 2 )\ + : ( 0x89 == ((const U8*)s)[1] || 0x93 == ((const U8*)s)[1] ) ? 2 : 0 )\ + : ( 0x88 == ((const U8*)s)[0] ) ? \ + ( ( ( 0xB0 == ((const U8*)s)[1] ) && ( 0x58 == ((const U8*)s)[2] ) ) ? 3 : 0 )\ + : ( 0x89 == ((const U8*)s)[0] ) ? \ + ( ( ( 0xAF == ((const U8*)s)[1] ) && ( 0x48 == ((const U8*)s)[2] ) ) ? 3 : 0 )\ + : ( 0x8F == ((const U8*)s)[0] ) ? \ + ( ( ( ( 0x73 == ((const U8*)s)[1] ) && ( 0x8F == ((const U8*)s)[2] ) ) && ( 0x73 == ((const U8*)s)[3] ) ) ? 4 : 0 )\ + : ( 0x91 == ((const U8*)s)[0] ) ? \ + ( ( ( 0xAF == ((const U8*)s)[1] ) && ( 0x53 == ((const U8*)s)[2] ) ) ? 3 : 0 )\ + : ( 0xA2 == ((const U8*)s)[0] ) ? \ + ( ( ( ((const U8*)s)[1] & 0xFE ) == 0xA2 ) ? 2 : 0 ) \ + : ( 0xA3 == ((const U8*)s)[0] ) ? \ + ( ( ( 0xAF == ((const U8*)s)[1] ) && ( 0x49 == ((const U8*)s)[2] ) ) ? 3 : 0 )\ + : ( 0xA6 == ((const U8*)s)[0] || 0xA8 == ((const U8*)s)[0] ) ? \ + ( ( ( 0xAF == ((const U8*)s)[1] ) && ( 0x51 == ((const U8*)s)[2] ) ) ? 3 : 0 )\ + : ( 0xAB == ((const U8*)s)[0] ) ? \ + ( ( ( 0x70 == ((const U8*)s)[1] ) && ( 0x95 == ((const U8*)s)[2] ) ) ? 3 : 0 )\ + : ( 0xB4 == ((const U8*)s)[0] ) ? \ + ( ( 0x53 == ((const U8*)s)[1] || 0x55 == ((const U8*)s)[1] ) ? \ + ( ( ( 0xB4 == ((const U8*)s)[2] ) && ( 0x68 == ((const U8*)s)[3] ) ) ? 4 : 0 )\ + : ( 0x58 == ((const U8*)s)[1] || 0x66 == ((const U8*)s)[1] ) ? \ + ( ( 0xB1 == ((const U8*)s)[2] ) ? \ + ( ( 0x43 == ((const U8*)s)[3] ) ? 4 : 0 ) \ + : ( ( 0xB4 == ((const U8*)s)[2] ) && ( 0x68 == ((const U8*)s)[3] ) ) ? 4 : 0 )\ + : ( ( ( 0x68 == ((const U8*)s)[1] ) && ( 0xB1 == ((const U8*)s)[2] ) ) && ( 0x43 == ((const U8*)s)[3] ) ) ? 4 : 0 )\ + : ( 0xB5 == ((const U8*)s)[0] ) ? \ + ( ( 0x42 == ((const U8*)s)[1] ) ? \ + ( ( ( 0xAF == ((const U8*)s)[2] ) && ( 0x62 == ((const U8*)s)[3] ) ) ? 4 : 0 )\ + : ( 0x46 == ((const U8*)s)[1] ) ? \ + ( ( 0xAF == ((const U8*)s)[2] ) ? \ + ( ( 0x62 == ((const U8*)s)[3] ) ? 4 : 0 ) \ + : ( ( 0xB1 == ((const U8*)s)[2] ) && ( 0x43 == ((const U8*)s)[3] ) ) ? 4 : 0 )\ + : ( 0x4A == ((const U8*)s)[1] ) ? \ + ( ( 0xB1 == ((const U8*)s)[2] ) ? \ + ( ( 0x43 == ((const U8*)s)[3] ) ? 4 : 0 ) \ + : ( ( 0xB4 == ((const U8*)s)[2] ) && ( 0x68 == ((const U8*)s)[3] ) ) ? 4 : 0 )\ + : ( ( ( 0x55 == ((const U8*)s)[1] ) && ( 0xB4 == ((const U8*)s)[2] ) ) && ( 0x68 == ((const U8*)s)[3] ) ) ? 4 : 0 )\ : 0 ) \ : ((e)-(s) > 2) ? \ - ( ( 0x81 == ((U8*)s)[0] ) ? \ - ( ( ( 0xAB == ((U8*)s)[1] ) && ( 0x72 == ((U8*)s)[2] ) ) ? 3 : 0 ) \ - : ( 0x86 == ((U8*)s)[0] ) ? \ - ( ( 0x86 == ((U8*)s)[1] ) ? \ - ( ( 0x89 == ((U8*)s)[2] || 0x93 == ((U8*)s)[2] ) ? 3 : 2 ) \ - : ( 0x89 == ((U8*)s)[1] || 0x93 == ((U8*)s)[1] ) ? 2 : 0 ) \ - : ( 0x88 == ((U8*)s)[0] ) ? \ - ( ( ( 0xB0 == ((U8*)s)[1] ) && ( 0x58 == ((U8*)s)[2] ) ) ? 3 : 0 ) \ - : ( 0x89 == ((U8*)s)[0] ) ? \ - ( ( ( 0xAF == ((U8*)s)[1] ) && ( 0x48 == ((U8*)s)[2] ) ) ? 3 : 0 ) \ - : ( 0x91 == ((U8*)s)[0] ) ? \ - ( ( ( 0xAF == ((U8*)s)[1] ) && ( 0x53 == ((U8*)s)[2] ) ) ? 3 : 0 ) \ - : ( 0xA2 == ((U8*)s)[0] ) ? \ - ( ( ( ((U8*)s)[1] & 0xFE ) == 0xA2 ) ? 2 : 0 ) \ - : ( 0xA3 == ((U8*)s)[0] ) ? \ - ( ( ( 0xAF == ((U8*)s)[1] ) && ( 0x49 == ((U8*)s)[2] ) ) ? 3 : 0 ) \ - : ( 0xA6 == ((U8*)s)[0] || 0xA8 == ((U8*)s)[0] ) ? \ - ( ( ( 0xAF == ((U8*)s)[1] ) && ( 0x51 == ((U8*)s)[2] ) ) ? 3 : 0 ) \ - : ( ( ( 0xAB == ((U8*)s)[0] ) && ( 0x70 == ((U8*)s)[1] ) ) && ( 0x95 == ((U8*)s)[2] ) ) ? 3 : 0 )\ + ( ( 0x81 == ((const U8*)s)[0] ) ? \ + ( ( ( 0xAB == ((const U8*)s)[1] ) && ( 0x72 == ((const U8*)s)[2] ) ) ? 3 : 0 )\ + : ( 0x86 == ((const U8*)s)[0] ) ? \ + ( ( 0x86 == ((const U8*)s)[1] ) ? \ + ( ( 0x89 == ((const U8*)s)[2] || 0x93 == ((const U8*)s)[2] ) ? 3 : 2 )\ + : ( 0x89 == ((const U8*)s)[1] || 0x93 == ((const U8*)s)[1] ) ? 2 : 0 )\ + : ( 0x88 == ((const U8*)s)[0] ) ? \ + ( ( ( 0xB0 == ((const U8*)s)[1] ) && ( 0x58 == ((const U8*)s)[2] ) ) ? 3 : 0 )\ + : ( 0x89 == ((const U8*)s)[0] ) ? \ + ( ( ( 0xAF == ((const U8*)s)[1] ) && ( 0x48 == ((const U8*)s)[2] ) ) ? 3 : 0 )\ + : ( 0x91 == ((const U8*)s)[0] ) ? \ + ( ( ( 0xAF == ((const U8*)s)[1] ) && ( 0x53 == ((const U8*)s)[2] ) ) ? 3 : 0 )\ + : ( 0xA2 == ((const U8*)s)[0] ) ? \ + ( ( ( ((const U8*)s)[1] & 0xFE ) == 0xA2 ) ? 2 : 0 ) \ + : ( 0xA3 == ((const U8*)s)[0] ) ? \ + ( ( ( 0xAF == ((const U8*)s)[1] ) && ( 0x49 == ((const U8*)s)[2] ) ) ? 3 : 0 )\ + : ( 0xA6 == ((const U8*)s)[0] || 0xA8 == ((const U8*)s)[0] ) ? \ + ( ( ( 0xAF == ((const U8*)s)[1] ) && ( 0x51 == ((const U8*)s)[2] ) ) ? 3 : 0 )\ + : ( ( ( 0xAB == ((const U8*)s)[0] ) && ( 0x70 == ((const U8*)s)[1] ) ) && ( 0x95 == ((const U8*)s)[2] ) ) ? 3 : 0 )\ : ((e)-(s) > 1) ? \ - ( ( 0x86 == ((U8*)s)[0] ) ? \ - ( ( 0x86 == ((U8*)s)[1] || 0x89 == ((U8*)s)[1] || 0x93 == ((U8*)s)[1] ) ? 2 : 0 )\ - : ( ( 0xA2 == ((U8*)s)[0] ) && ( ( ((U8*)s)[1] & 0xFE ) == 0xA2 ) ) ? 2 : 0 )\ + ( ( 0x86 == ((const U8*)s)[0] ) ? \ + ( ( 0x86 == ((const U8*)s)[1] || 0x89 == ((const U8*)s)[1] || 0x93 == ((const U8*)s)[1] ) ? 2 : 0 )\ + : ( ( 0xA2 == ((const U8*)s)[0] ) && ( ( ((const U8*)s)[1] & 0xFE ) == 0xA2 ) ) ? 2 : 0 )\ : 0 ) /*** GENERATED CODE ***/ #define is_MULTI_CHAR_FOLD_utf8_safe(s,e) \ ( ((e)-(s) > 5) ? \ - ( ( 0x81 == ((U8*)s)[0] ) ? \ - ( ( ( 0xAB == ((U8*)s)[1] ) && ( 0x72 == ((U8*)s)[2] ) ) ? 3 : 0 ) \ - : ( 0x86 == ((U8*)s)[0] ) ? \ - ( ( 0x86 == ((U8*)s)[1] ) ? \ - ( ( 0x89 == ((U8*)s)[2] || 0x93 == ((U8*)s)[2] ) ? 3 : 2 ) \ - : ( 0x89 == ((U8*)s)[1] || 0x93 == ((U8*)s)[1] ) ? 2 : 0 ) \ - : ( 0x88 == ((U8*)s)[0] ) ? \ - ( ( ( 0xB0 == ((U8*)s)[1] ) && ( 0x58 == ((U8*)s)[2] ) ) ? 3 : 0 ) \ - : ( 0x89 == ((U8*)s)[0] ) ? \ - ( ( ( 0xAF == ((U8*)s)[1] ) && ( 0x48 == ((U8*)s)[2] ) ) ? 3 : 0 ) \ - : ( 0x8F == ((U8*)s)[0] ) ? \ - ( ( ( ( 0x73 == ((U8*)s)[1] ) && ( 0x8F == ((U8*)s)[2] ) ) && ( 0x73 == ((U8*)s)[3] ) ) ? 4 : 0 )\ - : ( 0x91 == ((U8*)s)[0] ) ? \ - ( ( ( 0xAF == ((U8*)s)[1] ) && ( 0x53 == ((U8*)s)[2] ) ) ? 3 : 0 ) \ - : ( 0xA2 == ((U8*)s)[0] ) ? \ - ( ( ( ((U8*)s)[1] & 0xFE ) == 0xA2 ) ? 2 : 0 ) \ - : ( 0xA3 == ((U8*)s)[0] ) ? \ - ( ( ( 0xAF == ((U8*)s)[1] ) && ( 0x49 == ((U8*)s)[2] ) ) ? 3 : 0 ) \ - : ( 0xA6 == ((U8*)s)[0] || 0xA8 == ((U8*)s)[0] ) ? \ - ( ( ( 0xAF == ((U8*)s)[1] ) && ( 0x51 == ((U8*)s)[2] ) ) ? 3 : 0 ) \ - : ( 0xAB == ((U8*)s)[0] ) ? \ - ( ( ( 0x70 == ((U8*)s)[1] ) && ( 0x95 == ((U8*)s)[2] ) ) ? 3 : 0 ) \ - : ( 0xB4 == ((U8*)s)[0] ) ? \ - ( ( 0x53 == ((U8*)s)[1] || 0x55 == ((U8*)s)[1] ) ? \ - ( ( ( 0xB4 == ((U8*)s)[2] ) && ( 0x68 == ((U8*)s)[3] ) ) ? 4 : 0 )\ - : ( 0x58 == ((U8*)s)[1] || 0x66 == ((U8*)s)[1] ) ? \ - ( ( 0xB1 == ((U8*)s)[2] ) ? \ - ( ( 0x43 == ((U8*)s)[3] ) ? \ - ( ( ( 0xB4 == ((U8*)s)[4] ) && ( 0x68 == ((U8*)s)[5] ) ) ? 6 : 4 )\ - : 0 ) \ - : ( ( 0xB4 == ((U8*)s)[2] ) && ( 0x68 == ((U8*)s)[3] ) ) ? 4 : 0 )\ - : ( 0x68 == ((U8*)s)[1] ) ? \ - ( ( 0xAF == ((U8*)s)[2] ) ? \ - ( ( 0x49 == ((U8*)s)[3] ) ? \ - ( ( 0xAF == ((U8*)s)[4] ) ? \ - ( ( 0x41 == ((U8*)s)[5] || 0x42 == ((U8*)s)[5] ) ? 6 : 0 )\ - : ( ( 0xB1 == ((U8*)s)[4] ) && ( 0x43 == ((U8*)s)[5] ) ) ? 6 : 0 )\ - : 0 ) \ - : ( ( 0xB1 == ((U8*)s)[2] ) && ( 0x43 == ((U8*)s)[3] ) ) ? 4 : 0 )\ - : 0 ) \ - : ( 0xB5 == ((U8*)s)[0] ) ? \ - ( ( 0x42 == ((U8*)s)[1] ) ? \ - ( ( ( 0xAF == ((U8*)s)[2] ) && ( 0x62 == ((U8*)s)[3] ) ) ? 4 : 0 )\ - : ( 0x46 == ((U8*)s)[1] ) ? \ - ( ( 0xAF == ((U8*)s)[2] ) ? \ - ( ( 0x49 == ((U8*)s)[3] ) ? \ - ( ( 0xAF == ((U8*)s)[4] ) ? \ - ( ( 0x41 == ((U8*)s)[5] || 0x42 == ((U8*)s)[5] ) ? 6 : 0 )\ - : ( ( 0xB1 == ((U8*)s)[4] ) && ( 0x43 == ((U8*)s)[5] ) ) ? 6 : 0 )\ - : ( 0x62 == ((U8*)s)[3] ) ? \ - ( ( 0xAF == ((U8*)s)[4] ) ? \ - ( ( 0x41 == ((U8*)s)[5] || 0x42 == ((U8*)s)[5] ) ? 6 : 4 )\ - : ( ( 0xB1 == ((U8*)s)[4] ) && ( 0x43 == ((U8*)s)[5] ) ) ? 6 : 4 )\ - : 0 ) \ - : ( ( 0xB1 == ((U8*)s)[2] ) && ( 0x43 == ((U8*)s)[3] ) ) ? 4 : 0 )\ - : ( 0x4A == ((U8*)s)[1] ) ? \ - ( ( 0xB1 == ((U8*)s)[2] ) ? \ - ( ( 0x43 == ((U8*)s)[3] ) ? \ - ( ( ( 0xB4 == ((U8*)s)[4] ) && ( 0x68 == ((U8*)s)[5] ) ) ? 6 : 4 )\ - : 0 ) \ - : ( ( 0xB4 == ((U8*)s)[2] ) && ( 0x68 == ((U8*)s)[3] ) ) ? 4 : 0 )\ - : ( ( ( 0x55 == ((U8*)s)[1] ) && ( 0xB4 == ((U8*)s)[2] ) ) && ( 0x68 == ((U8*)s)[3] ) ) ? 4 : 0 )\ - : ( 0xB8 == ((U8*)s)[0] ) ? \ - ( ( 0x52 == ((U8*)s)[1] ) ? \ - ( ( 0x46 == ((U8*)s)[2] ) ? \ - ( ( ( ( 0xB8 == ((U8*)s)[3] ) && ( 0x53 == ((U8*)s)[4] ) ) && ( 0x43 == ((U8*)s)[5] ) ) ? 6 : 0 )\ - : ( 0x63 == ((U8*)s)[2] ) ? \ - ( ( ( ( 0xB8 == ((U8*)s)[3] ) && ( 0x52 == ((U8*)s)[4] ) ) && ( 0x46 == ((U8*)s)[5] || 0x52 == ((U8*)s)[5] || 0x54 == ((U8*)s)[5] || 0x65 == ((U8*)s)[5] ) ) ? 6 : 0 )\ - : ( ( ( ( 0x72 == ((U8*)s)[2] ) && ( 0xB8 == ((U8*)s)[3] ) ) && ( 0x52 == ((U8*)s)[4] ) ) && ( 0x65 == ((U8*)s)[5] ) ) ? 6 : 0 )\ - : 0 ) \ - : ( 0xBF == ((U8*)s)[0] ) ? \ - ( ( 0x67 == ((U8*)s)[1] || 0x68 == ((U8*)s)[1] ) ? \ - ( ( ( ( 0x41 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x48 ) && ( 0xB4 == ((U8*)s)[3] ) ) && ( 0x68 == ((U8*)s)[4] ) ) ? 5 : 0 )\ - : ( ( ( ( 0x6A == ((U8*)s)[1] ) && ( ( 0x41 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x48 ) || 0x57 == ((U8*)s)[2] || 0x63 == ((U8*)s)[2] || 0x70 == ((U8*)s)[2] ) ) && ( 0xB4 == ((U8*)s)[3] ) ) && ( 0x68 == ((U8*)s)[4] ) ) ? 5 : 0 )\ - : 0 ) \ -: ((e)-(s) > 4) ? is_MULTI_CHAR_FOLD_utf8_safe_part0(s,e) : is_MULTI_CHAR_FOLD_utf8_safe_part1(s,e) ) + ( ( 0x81 == ((const U8*)s)[0] ) ? \ + ( ( ( 0xAB == ((const U8*)s)[1] ) && ( 0x72 == ((const U8*)s)[2] ) ) ? 3 : 0 )\ + : ( 0x86 == ((const U8*)s)[0] ) ? is_MULTI_CHAR_FOLD_utf8_safe_part0(s,e) : is_MULTI_CHAR_FOLD_utf8_safe_part1(s,e) )\ +: ((e)-(s) > 4) ? is_MULTI_CHAR_FOLD_utf8_safe_part2(s,e) : is_MULTI_CHAR_FOLD_utf8_safe_part3(s,e) ) /* MULTI_CHAR_FOLD: multi-char strings that are folded to by a single character @@ -1083,15 +1088,15 @@ /*** GENERATED CODE ***/ #define is_MULTI_CHAR_FOLD_latin1_safe(s,e) \ ( ((e)-(s) > 2) ? \ - ( ( ( ((U8*)s)[0] & 0xBF ) == 0x86 ) ? \ - ( ( ( ((U8*)s)[1] & 0xBF ) == 0x86 ) ? \ - ( ( ( ( ((U8*)s)[2] & 0xBF ) == 0x89 ) || ( ( ((U8*)s)[2] & 0xBF ) == 0x93 ) ) ? 3 : 2 )\ - : ( ( ( ((U8*)s)[1] & 0xBF ) == 0x89 ) || ( ( ((U8*)s)[1] & 0xBF ) == 0x93 ) ) ? 2 : 0 )\ - : ( ( ( ((U8*)s)[0] & 0xBF ) == 0xA2 ) && ( ( ((U8*)s)[1] & 0xBE ) == 0xA2 ) ) ? 2 : 0 )\ + ( ( ( ((const U8*)s)[0] & 0xBF ) == 0x86 ) ? \ + ( ( ( ((const U8*)s)[1] & 0xBF ) == 0x86 ) ? \ + ( ( ( ( ((const U8*)s)[2] & 0xBF ) == 0x89 ) || ( ( ((const U8*)s)[2] & 0xBF ) == 0x93 ) ) ? 3 : 2 )\ + : ( ( ( ((const U8*)s)[1] & 0xBF ) == 0x89 ) || ( ( ((const U8*)s)[1] & 0xBF ) == 0x93 ) ) ? 2 : 0 )\ + : ( ( ( ((const U8*)s)[0] & 0xBF ) == 0xA2 ) && ( ( ((const U8*)s)[1] & 0xBE ) == 0xA2 ) ) ? 2 : 0 )\ : ((e)-(s) > 1) ? \ - ( ( ( ((U8*)s)[0] & 0xBF ) == 0x86 ) ? \ - ( ( ( ( ((U8*)s)[1] & 0xBF ) == 0x86 ) || ( ( ((U8*)s)[1] & 0xBF ) == 0x89 ) || ( ( ((U8*)s)[1] & 0xBF ) == 0x93 ) ) ? 2 : 0 )\ - : ( ( ( ((U8*)s)[0] & 0xBF ) == 0xA2 ) && ( ( ((U8*)s)[1] & 0xBE ) == 0xA2 ) ) ? 2 : 0 )\ + ( ( ( ((const U8*)s)[0] & 0xBF ) == 0x86 ) ? \ + ( ( ( ( ((const U8*)s)[1] & 0xBF ) == 0x86 ) || ( ( ((const U8*)s)[1] & 0xBF ) == 0x89 ) || ( ( ((const U8*)s)[1] & 0xBF ) == 0x93 ) ) ? 2 : 0 )\ + : ( ( ( ((const U8*)s)[0] & 0xBF ) == 0xA2 ) && ( ( ((const U8*)s)[1] & 0xBE ) == 0xA2 ) ) ? 2 : 0 )\ : 0 ) /* @@ -1101,27 +1106,27 @@ */ /*** GENERATED CODE ***/ #define is_FOLDS_TO_MULTI_utf8(s) \ -( ( 0x8A == ((U8*)s)[0] ) ? \ - ( ( 0x73 == ((U8*)s)[1] ) ? 2 : 0 ) \ -: ( 0x8D == ((U8*)s)[0] || 0x9C == ((U8*)s)[0] || ( 0xB3 == ((U8*)s)[0] || 0xB4 == ((U8*)s)[0] ) ) ?\ - ( ( 0x57 == ((U8*)s)[1] ) ? 2 : 0 ) \ -: ( 0x8E == ((U8*)s)[0] ) ? \ - ( ( 0x4A == ((U8*)s)[1] ) ? 2 : 0 ) \ -: ( 0xB8 == ((U8*)s)[0] ) ? \ - ( ( ( 0x53 == ((U8*)s)[1] ) && ( 0x48 == ((U8*)s)[2] ) ) ? 3 : 0 ) \ -: ( 0xBF == ((U8*)s)[0] ) ? \ - ( ( 0x63 == ((U8*)s)[1] ) ? \ - ( ( ( 0x65 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x69 ) || 0x72 == ((U8*)s)[2] ) ? 3 : 0 )\ - : ( 0x69 == ((U8*)s)[1] ) ? \ - ( ( 0x57 == ((U8*)s)[2] || 0x59 == ((U8*)s)[2] || 0x63 == ((U8*)s)[2] || 0x65 == ((U8*)s)[2] ) ? 3 : 0 )\ - : ( 0x70 == ((U8*)s)[1] ) ? \ - ( ( ( 0x41 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x4A ) || ( 0x51 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x59 ) || ( 0x62 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x6A ) || ( ((U8*)s)[2] & 0xFC ) == 0x70 ) ? 3 : 0 )\ - : ( 0x71 == ((U8*)s)[1] ) ? \ - ( ( ( 0x41 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x4A ) || ( 0x51 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x56 ) || 0x59 == ((U8*)s)[2] || ( ((U8*)s)[2] & 0xFE ) == 0x62 || ( 0x65 == ((U8*)s)[2] || 0x66 == ((U8*)s)[2] ) || 0x70 == ((U8*)s)[2] ) ? 3 : 0 )\ - : ( 0x72 == ((U8*)s)[1] ) ? \ - ( ( ( ( ((U8*)s)[2] & 0xFB ) == 0x43 ) || ( ( ((U8*)s)[2] & 0xFE ) == 0x44 ) || ((U8*)s)[2] == 0x48 || ((U8*)s)[2] == 0x53 || ((U8*)s)[2] == 0x59 || ( ( ((U8*)s)[2] & 0xFB ) == 0x62 ) || ((U8*)s)[2] == 0x65 ) ? 3 : 0 )\ - : ( ( 0x73 == ((U8*)s)[1] ) && ( ( ( ((U8*)s)[2] & 0xFB ) == 0x43 ) || ( ( ((U8*)s)[2] & 0xFE ) == 0x44 ) || ((U8*)s)[2] == 0x48 || ((U8*)s)[2] == 0x59 || ( ( ((U8*)s)[2] & 0xFE ) == 0x62 ) || ((U8*)s)[2] == 0x65 || ((U8*)s)[2] == 0x66 || ((U8*)s)[2] == 0x70 ) ) ? 3 : 0 )\ -: ( ( ( ( 0xDD == ((U8*)s)[0] ) && ( 0x72 == ((U8*)s)[1] ) ) && ( 0x67 == ((U8*)s)[2] ) ) && ( ( 0x41 <= ((U8*)s)[3] && ((U8*)s)[3] <= 0x47 ) || ( 0x62 <= ((U8*)s)[3] && ((U8*)s)[3] <= 0x66 ) ) ) ? 4 : 0 ) +( ( 0x8A == ((const U8*)s)[0] ) ? \ + ( ( 0x73 == ((const U8*)s)[1] ) ? 2 : 0 ) \ +: ( 0x8D == ((const U8*)s)[0] || 0x9C == ((const U8*)s)[0] || ( 0xB3 == ((const U8*)s)[0] || 0xB4 == ((const U8*)s)[0] ) ) ?\ + ( ( 0x57 == ((const U8*)s)[1] ) ? 2 : 0 ) \ +: ( 0x8E == ((const U8*)s)[0] ) ? \ + ( ( 0x4A == ((const U8*)s)[1] ) ? 2 : 0 ) \ +: ( 0xB8 == ((const U8*)s)[0] ) ? \ + ( ( ( 0x53 == ((const U8*)s)[1] ) && ( 0x48 == ((const U8*)s)[2] ) ) ? 3 : 0 )\ +: ( 0xBF == ((const U8*)s)[0] ) ? \ + ( ( 0x63 == ((const U8*)s)[1] ) ? \ + ( ( ( 0x65 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x69 ) || 0x72 == ((const U8*)s)[2] ) ? 3 : 0 )\ + : ( 0x69 == ((const U8*)s)[1] ) ? \ + ( ( 0x57 == ((const U8*)s)[2] || 0x59 == ((const U8*)s)[2] || 0x63 == ((const U8*)s)[2] || 0x65 == ((const U8*)s)[2] ) ? 3 : 0 )\ + : ( 0x70 == ((const U8*)s)[1] ) ? \ + ( ( ( 0x41 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x6A ) || ( ((const U8*)s)[2] & 0xFC ) == 0x70 ) ? 3 : 0 )\ + : ( 0x71 == ((const U8*)s)[1] ) ? \ + ( ( ( 0x41 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x56 ) || 0x59 == ((const U8*)s)[2] || ( ((const U8*)s)[2] & 0xFE ) == 0x62 || ( 0x65 == ((const U8*)s)[2] || 0x66 == ((const U8*)s)[2] ) || 0x70 == ((const U8*)s)[2] ) ? 3 : 0 )\ + : ( 0x72 == ((const U8*)s)[1] ) ? \ + ( ( ( ( ((const U8*)s)[2] & 0xFB ) == 0x43 ) || ( ( ((const U8*)s)[2] & 0xFE ) == 0x44 ) || ((const U8*)s)[2] == 0x48 || ((const U8*)s)[2] == 0x53 || ((const U8*)s)[2] == 0x59 || ( ( ((const U8*)s)[2] & 0xFB ) == 0x62 ) || ((const U8*)s)[2] == 0x65 ) ? 3 : 0 )\ + : ( ( 0x73 == ((const U8*)s)[1] ) && ( ( ( ((const U8*)s)[2] & 0xFB ) == 0x43 ) || ( ( ((const U8*)s)[2] & 0xFE ) == 0x44 ) || ((const U8*)s)[2] == 0x48 || ((const U8*)s)[2] == 0x59 || ( ( ((const U8*)s)[2] & 0xFE ) == 0x62 ) || ((const U8*)s)[2] == 0x65 || ((const U8*)s)[2] == 0x66 || ((const U8*)s)[2] == 0x70 ) ) ? 3 : 0 )\ +: ( ( ( ( 0xDD == ((const U8*)s)[0] ) && ( 0x72 == ((const U8*)s)[1] ) ) && ( 0x67 == ((const U8*)s)[2] ) ) && ( ( 0x41 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x47 ) || ( 0x62 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x66 ) ) ) ? 4 : 0 ) /* PROBLEMATIC_LOCALE_FOLD: characters whose fold is problematic under locale @@ -1130,22 +1135,22 @@ */ /*** GENERATED CODE ***/ #define is_PROBLEMATIC_LOCALE_FOLD_utf8(s) \ -( ( ( ( ((U8*)s)[0] & 0xC0 ) == 0x00 ) || ( ( ((U8*)s)[0] & 0xEF ) == 0x40 ) || ( ( ((U8*)s)[0] & 0xDF ) == 0x4B ) || ( ( ((U8*)s)[0] & 0xCC ) == 0x4C ) || ( ( ((U8*)s)[0] & 0xDE ) == 0x5A ) || ( ( ((U8*)s)[0] & 0xFE ) == 0x60 ) || ((U8*)s)[0] == 0x79 || ( ( ((U8*)s)[0] & 0xEF ) == 0x81 ) || ( ( ((U8*)s)[0] & 0xEE ) == 0x82 ) || ( ( ((U8*)s)[0] & 0xEC ) == 0x84 ) || ( ( ((U8*)s)[0] & 0xEE ) == 0x88 ) || ((U8*)s)[0] == 0xA1 || ( ( ((U8*)s)[0] & 0xBE ) == 0xA2 ) || ( ( ((U8*)s)[0] & 0xBC ) == 0xA4 ) || ( ( ((U8*)s)[0] & 0xFE ) == 0xA8 ) || ( ( ((U8*)s)[0] & 0xEF ) == 0xAD ) || ( ( ((U8*)s)[0] & 0xE8 ) == 0xC0 ) || ( ( ((U8*)s)[0] & 0xCE ) == 0xC8 ) || ((U8*)s)[0] == 0xE0 || ( ( ((U8*)s)[0] & 0xF8 ) == 0xF0 ) || ((U8*)s)[0] == 0xFF ) ? 1\ -: ( 0x80 == ((U8*)s)[0] || ( ((U8*)s)[0] & 0xFE ) == 0x8A ) ? \ - ( ( ( 0x41 <= ((U8*)s)[1] && ((U8*)s)[1] <= 0x4A ) || ( 0x51 <= ((U8*)s)[1] && ((U8*)s)[1] <= 0x59 ) || ( 0x62 <= ((U8*)s)[1] && ((U8*)s)[1] <= 0x6A ) || ( ((U8*)s)[1] & 0xFC ) == 0x70 ) ? 2 : 0 )\ -: ( 0x8D == ((U8*)s)[0] || 0x9C == ((U8*)s)[0] ) ? \ - ( ( 0x57 == ((U8*)s)[1] ) ? 2 : 0 ) \ -: ( 0x8E == ((U8*)s)[0] ) ? \ - ( ( 0x4A == ((U8*)s)[1] ) ? 2 : 0 ) \ -: ( 0x8F == ((U8*)s)[0] ) ? \ - ( ( 0x67 == ((U8*)s)[1] || 0x73 == ((U8*)s)[1] ) ? 2 : 0 ) \ -: ( 0xB3 == ((U8*)s)[0] || 0xB4 == ((U8*)s)[0] ) ? \ - ( ( 0x70 == ((U8*)s)[1] ) ? 2 : 0 ) \ -: ( 0xBF == ((U8*)s)[0] ) ? \ - ( ( ( 0x63 == ((U8*)s)[1] ) && ( ( 0x65 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x69 ) || 0x72 == ((U8*)s)[2] ) ) ? 3 : 0 )\ -: ( 0xCA == ((U8*)s)[0] ) ? \ - ( ( ( 0x4A == ((U8*)s)[1] ) && ( 0x51 == ((U8*)s)[2] || 0x52 == ((U8*)s)[2] ) ) ? 3 : 0 )\ -: ( ( ( ( 0xDD == ((U8*)s)[0] ) && ( 0x72 == ((U8*)s)[1] ) ) && ( 0x67 == ((U8*)s)[2] ) ) && ( 0x41 <= ((U8*)s)[3] && ((U8*)s)[3] <= 0x47 ) ) ? 4 : 0 ) +( ( ( ( ((const U8*)s)[0] & 0xC0 ) == 0x00 ) || ( ( ((const U8*)s)[0] & 0xEF ) == 0x40 ) || ( ( ((const U8*)s)[0] & 0xDF ) == 0x4B ) || ( ( ((const U8*)s)[0] & 0xCC ) == 0x4C ) || ( ( ((const U8*)s)[0] & 0xDE ) == 0x5A ) || ( ( ((const U8*)s)[0] & 0xFE ) == 0x60 ) || ((const U8*)s)[0] == 0x79 || ( ( ((const U8*)s)[0] & 0xEF ) == 0x81 ) || ( ( ((const U8*)s)[0] & 0xEE ) == 0x82 ) || ( ( ((const U8*)s)[0] & 0xEC ) == 0x84 ) || ( ( ((const U8*)s)[0] & 0xEE ) == 0x88 ) || ((const U8*)s)[0] == 0xA1 || ( ( ((const U8*)s)[0] & 0xBE ) == 0xA2 ) || ( ( ((const U8*)s)[0] & 0xBC ) == 0xA4 ) || ( ( ((const U8*)s)[0] & 0xFE ) == 0xA8 ) || ( ( ((const U8*)s)[0] & 0xEF ) == 0xAD ) || ( ( ((const U8*)s)[0] & 0xE8 ) == 0xC0 ) || ( ( ((const U8*)s)[0] & 0xCE ) == 0xC8 ) || ((const U8*)s)[0] == 0xE0 || ( ( ((const U8*)s)[0] & 0xF8 ) == 0xF0 ) || ((const U8*)s)[0] == 0xFF ) ? 1\ +: ( 0x80 == ((const U8*)s)[0] || ( ((const U8*)s)[0] & 0xFE ) == 0x8A ) ? \ + ( ( ( 0x41 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x6A ) || ( ((const U8*)s)[1] & 0xFC ) == 0x70 ) ? 2 : 0 )\ +: ( 0x8D == ((const U8*)s)[0] || 0x9C == ((const U8*)s)[0] ) ? \ + ( ( 0x57 == ((const U8*)s)[1] ) ? 2 : 0 ) \ +: ( 0x8E == ((const U8*)s)[0] ) ? \ + ( ( 0x4A == ((const U8*)s)[1] ) ? 2 : 0 ) \ +: ( 0x8F == ((const U8*)s)[0] ) ? \ + ( ( 0x67 == ((const U8*)s)[1] || 0x73 == ((const U8*)s)[1] ) ? 2 : 0 ) \ +: ( 0xB3 == ((const U8*)s)[0] || 0xB4 == ((const U8*)s)[0] ) ? \ + ( ( 0x70 == ((const U8*)s)[1] ) ? 2 : 0 ) \ +: ( 0xBF == ((const U8*)s)[0] ) ? \ + ( ( ( 0x63 == ((const U8*)s)[1] ) && ( ( 0x65 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x69 ) || 0x72 == ((const U8*)s)[2] ) ) ? 3 : 0 )\ +: ( 0xCA == ((const U8*)s)[0] ) ? \ + ( ( ( 0x4A == ((const U8*)s)[1] ) && ( 0x51 == ((const U8*)s)[2] || 0x52 == ((const U8*)s)[2] ) ) ? 3 : 0 )\ +: ( ( ( ( 0xDD == ((const U8*)s)[0] ) && ( 0x72 == ((const U8*)s)[1] ) ) && ( 0x67 == ((const U8*)s)[2] ) ) && ( 0x41 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x47 ) ) ? 4 : 0 ) /*** GENERATED CODE ***/ #define is_PROBLEMATIC_LOCALE_FOLD_cp(cp) \ @@ -1169,22 +1174,22 @@ */ /*** GENERATED CODE ***/ #define is_PROBLEMATIC_LOCALE_FOLDEDS_START_utf8(s) \ -( ( ( ( ((U8*)s)[0] & 0xC0 ) == 0x00 ) || ( ( ((U8*)s)[0] & 0xEF ) == 0x40 ) || ( ( ((U8*)s)[0] & 0xDF ) == 0x4B ) || ( ( ((U8*)s)[0] & 0xCC ) == 0x4C ) || ( ( ((U8*)s)[0] & 0xDE ) == 0x5A ) || ( ( ((U8*)s)[0] & 0xFE ) == 0x60 ) || ((U8*)s)[0] == 0x79 || ( ( ((U8*)s)[0] & 0xEF ) == 0x81 ) || ( ( ((U8*)s)[0] & 0xEE ) == 0x82 ) || ( ( ((U8*)s)[0] & 0xEC ) == 0x84 ) || ( ( ((U8*)s)[0] & 0xEE ) == 0x88 ) || ((U8*)s)[0] == 0xA1 || ( ( ((U8*)s)[0] & 0xBE ) == 0xA2 ) || ( ( ((U8*)s)[0] & 0xBC ) == 0xA4 ) || ( ( ((U8*)s)[0] & 0xFE ) == 0xA8 ) || ( ( ((U8*)s)[0] & 0xEF ) == 0xAD ) || ( ( ((U8*)s)[0] & 0xE8 ) == 0xC0 ) || ( ( ((U8*)s)[0] & 0xCE ) == 0xC8 ) || ((U8*)s)[0] == 0xE0 || ( ( ((U8*)s)[0] & 0xF8 ) == 0xF0 ) || ((U8*)s)[0] == 0xFF ) ? 1\ -: ( 0x80 == ((U8*)s)[0] || ( ((U8*)s)[0] & 0xFE ) == 0x8A ) ? \ - ( ( ( 0x41 <= ((U8*)s)[1] && ((U8*)s)[1] <= 0x4A ) || ( 0x51 <= ((U8*)s)[1] && ((U8*)s)[1] <= 0x59 ) || ( 0x62 <= ((U8*)s)[1] && ((U8*)s)[1] <= 0x6A ) || ( ((U8*)s)[1] & 0xFC ) == 0x70 ) ? 2 : 0 )\ -: ( 0x8D == ((U8*)s)[0] || 0x9C == ((U8*)s)[0] ) ? \ - ( ( 0x57 == ((U8*)s)[1] ) ? 2 : 0 ) \ -: ( 0x8E == ((U8*)s)[0] ) ? \ - ( ( 0x4A == ((U8*)s)[1] ) ? 2 : 0 ) \ -: ( 0x8F == ((U8*)s)[0] ) ? \ - ( ( 0x67 == ((U8*)s)[1] || 0x73 == ((U8*)s)[1] ) ? 2 : 0 ) \ -: ( 0xAB == ((U8*)s)[0] || ( 0xB3 == ((U8*)s)[0] || 0xB4 == ((U8*)s)[0] ) ) ?\ - ( ( 0x70 == ((U8*)s)[1] ) ? 2 : 0 ) \ -: ( 0xBF == ((U8*)s)[0] ) ? \ - ( ( ( 0x63 == ((U8*)s)[1] ) && ( ( 0x65 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x69 ) || 0x72 == ((U8*)s)[2] ) ) ? 3 : 0 )\ -: ( 0xCA == ((U8*)s)[0] ) ? \ - ( ( ( 0x4A == ((U8*)s)[1] ) && ( 0x51 == ((U8*)s)[2] || 0x52 == ((U8*)s)[2] ) ) ? 3 : 0 )\ -: ( ( ( ( 0xDD == ((U8*)s)[0] ) && ( 0x72 == ((U8*)s)[1] ) ) && ( 0x67 == ((U8*)s)[2] ) ) && ( 0x41 <= ((U8*)s)[3] && ((U8*)s)[3] <= 0x47 ) ) ? 4 : 0 ) +( ( ( ( ((const U8*)s)[0] & 0xC0 ) == 0x00 ) || ( ( ((const U8*)s)[0] & 0xEF ) == 0x40 ) || ( ( ((const U8*)s)[0] & 0xDF ) == 0x4B ) || ( ( ((const U8*)s)[0] & 0xCC ) == 0x4C ) || ( ( ((const U8*)s)[0] & 0xDE ) == 0x5A ) || ( ( ((const U8*)s)[0] & 0xFE ) == 0x60 ) || ((const U8*)s)[0] == 0x79 || ( ( ((const U8*)s)[0] & 0xEF ) == 0x81 ) || ( ( ((const U8*)s)[0] & 0xEE ) == 0x82 ) || ( ( ((const U8*)s)[0] & 0xEC ) == 0x84 ) || ( ( ((const U8*)s)[0] & 0xEE ) == 0x88 ) || ((const U8*)s)[0] == 0xA1 || ( ( ((const U8*)s)[0] & 0xBE ) == 0xA2 ) || ( ( ((const U8*)s)[0] & 0xBC ) == 0xA4 ) || ( ( ((const U8*)s)[0] & 0xFE ) == 0xA8 ) || ( ( ((const U8*)s)[0] & 0xEF ) == 0xAD ) || ( ( ((const U8*)s)[0] & 0xE8 ) == 0xC0 ) || ( ( ((const U8*)s)[0] & 0xCE ) == 0xC8 ) || ((const U8*)s)[0] == 0xE0 || ( ( ((const U8*)s)[0] & 0xF8 ) == 0xF0 ) || ((const U8*)s)[0] == 0xFF ) ? 1\ +: ( 0x80 == ((const U8*)s)[0] || ( ((const U8*)s)[0] & 0xFE ) == 0x8A ) ? \ + ( ( ( 0x41 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x6A ) || ( ((const U8*)s)[1] & 0xFC ) == 0x70 ) ? 2 : 0 )\ +: ( 0x8D == ((const U8*)s)[0] || 0x9C == ((const U8*)s)[0] ) ? \ + ( ( 0x57 == ((const U8*)s)[1] ) ? 2 : 0 ) \ +: ( 0x8E == ((const U8*)s)[0] ) ? \ + ( ( 0x4A == ((const U8*)s)[1] ) ? 2 : 0 ) \ +: ( 0x8F == ((const U8*)s)[0] ) ? \ + ( ( 0x67 == ((const U8*)s)[1] || 0x73 == ((const U8*)s)[1] ) ? 2 : 0 ) \ +: ( 0xAB == ((const U8*)s)[0] || ( 0xB3 == ((const U8*)s)[0] || 0xB4 == ((const U8*)s)[0] ) ) ?\ + ( ( 0x70 == ((const U8*)s)[1] ) ? 2 : 0 ) \ +: ( 0xBF == ((const U8*)s)[0] ) ? \ + ( ( ( 0x63 == ((const U8*)s)[1] ) && ( ( 0x65 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x69 ) || 0x72 == ((const U8*)s)[2] ) ) ? 3 : 0 )\ +: ( 0xCA == ((const U8*)s)[0] ) ? \ + ( ( ( 0x4A == ((const U8*)s)[1] ) && ( 0x51 == ((const U8*)s)[2] || 0x52 == ((const U8*)s)[2] ) ) ? 3 : 0 )\ +: ( ( ( ( 0xDD == ((const U8*)s)[0] ) && ( 0x72 == ((const U8*)s)[1] ) ) && ( 0x67 == ((const U8*)s)[2] ) ) && ( 0x41 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x47 ) ) ? 4 : 0 ) /*** GENERATED CODE ***/ #define is_PROBLEMATIC_LOCALE_FOLDEDS_START_cp(cp) \ @@ -1210,10 +1215,10 @@ /*** GENERATED CODE ***/ #define is_PATWS_safe(s,e,is_utf8) \ ( ( LIKELY((e) > (s)) ) ? \ - ( ( ( ( ((U8*)s)[0] & 0xEF ) == 0x05 ) || ((U8*)s)[0] == 0x0B || ( ( ((U8*)s)[0] & 0xFE ) == 0x0C ) || ((U8*)s)[0] == 0x25 || ((U8*)s)[0] == 0x40 ) ? 1\ - : ( ( is_utf8 && LIKELY(((e) - (s)) >= UTF8SKIP(s)) ) && ( 0xCA == ((U8*)s)[0] ) ) ? ( ( 0x41 == ((U8*)s)[1] ) ?\ - ( ( 0x55 == ((U8*)s)[2] || 0x56 == ((U8*)s)[2] ) ? 3 : 0 )\ - : ( ( 0x42 == ((U8*)s)[1] ) && ( 0x49 == ((U8*)s)[2] || 0x4A == ((U8*)s)[2] ) ) ? 3 : 0 ) : 0 )\ + ( ( ( ( ((const U8*)s)[0] & 0xEF ) == 0x05 ) || ((const U8*)s)[0] == 0x0B || ( ( ((const U8*)s)[0] & 0xFE ) == 0x0C ) || ((const U8*)s)[0] == 0x25 || ((const U8*)s)[0] == 0x40 ) ? 1\ + : ( ( is_utf8 && LIKELY(((e) - (s)) >= UTF8SKIP(s)) ) && ( 0xCA == ((const U8*)s)[0] ) ) ? ( ( 0x41 == ((const U8*)s)[1] ) ?\ + ( ( 0x55 == ((const U8*)s)[2] || 0x56 == ((const U8*)s)[2] ) ? 3 : 0 )\ + : ( ( 0x42 == ((const U8*)s)[1] ) && ( 0x49 == ((const U8*)s)[2] || 0x4A == ((const U8*)s)[2] ) ) ? 3 : 0 ) : 0 )\ : 0 ) /*** GENERATED CODE ***/ @@ -1242,44 +1247,44 @@ /*** GENERATED CODE ***/ #define is_LNBREAK_safe(s,e,is_utf8) \ ( ((e)-(s) > 2) ? \ - ( ( ( 0x0B == ((U8*)s)[0] || 0x0C == ((U8*)s)[0] ) || 0x15 == ((U8*)s)[0] || 0x25 == ((U8*)s)[0] ) ? 1\ - : ( 0x0D == ((U8*)s)[0] ) ? \ - ( ( 0x25 == ((U8*)s)[1] ) ? 2 : 1 ) \ - : ( ( ( ( is_utf8 ) && ( 0xCA == ((U8*)s)[0] ) ) && ( 0x42 == ((U8*)s)[1] ) ) && ( 0x49 == ((U8*)s)[2] || 0x4A == ((U8*)s)[2] ) ) ? 3 : 0 )\ + ( ( ( 0x0B == ((const U8*)s)[0] || 0x0C == ((const U8*)s)[0] ) || 0x15 == ((const U8*)s)[0] || 0x25 == ((const U8*)s)[0] ) ? 1\ + : ( 0x0D == ((const U8*)s)[0] ) ? \ + ( ( 0x25 == ((const U8*)s)[1] ) ? 2 : 1 ) \ + : ( ( ( ( is_utf8 ) && ( 0xCA == ((const U8*)s)[0] ) ) && ( 0x42 == ((const U8*)s)[1] ) ) && ( 0x49 == ((const U8*)s)[2] || 0x4A == ((const U8*)s)[2] ) ) ? 3 : 0 )\ : ((e)-(s) > 1) ? \ - ( ( ( 0x0B == ((U8*)s)[0] || 0x0C == ((U8*)s)[0] ) || 0x15 == ((U8*)s)[0] || 0x25 == ((U8*)s)[0] ) ? 1\ - : ( 0x0D == ((U8*)s)[0] ) ? \ - ( ( 0x25 == ((U8*)s)[1] ) ? 2 : 1 ) \ + ( ( ( 0x0B == ((const U8*)s)[0] || 0x0C == ((const U8*)s)[0] ) || 0x15 == ((const U8*)s)[0] || 0x25 == ((const U8*)s)[0] ) ? 1\ + : ( 0x0D == ((const U8*)s)[0] ) ? \ + ( ( 0x25 == ((const U8*)s)[1] ) ? 2 : 1 ) \ : 0 ) \ : ((e)-(s) > 0) ? \ - ( ( 0x0B <= ((U8*)s)[0] && ((U8*)s)[0] <= 0x0D ) || 0x15 == ((U8*)s)[0] || 0x25 == ((U8*)s)[0] )\ + ( ( 0x0B <= ((const U8*)s)[0] && ((const U8*)s)[0] <= 0x0D ) || 0x15 == ((const U8*)s)[0] || 0x25 == ((const U8*)s)[0] )\ : 0 ) /*** GENERATED CODE ***/ #define is_LNBREAK_utf8_safe(s,e) \ ( ((e)-(s) > 2) ? \ - ( ( ( 0x0B == ((U8*)s)[0] || 0x0C == ((U8*)s)[0] ) || 0x15 == ((U8*)s)[0] || 0x25 == ((U8*)s)[0] ) ? 1\ - : ( 0x0D == ((U8*)s)[0] ) ? \ - ( ( 0x25 == ((U8*)s)[1] ) ? 2 : 1 ) \ - : ( ( ( 0xCA == ((U8*)s)[0] ) && ( 0x42 == ((U8*)s)[1] ) ) && ( 0x49 == ((U8*)s)[2] || 0x4A == ((U8*)s)[2] ) ) ? 3 : 0 )\ + ( ( ( 0x0B == ((const U8*)s)[0] || 0x0C == ((const U8*)s)[0] ) || 0x15 == ((const U8*)s)[0] || 0x25 == ((const U8*)s)[0] ) ? 1\ + : ( 0x0D == ((const U8*)s)[0] ) ? \ + ( ( 0x25 == ((const U8*)s)[1] ) ? 2 : 1 ) \ + : ( ( ( 0xCA == ((const U8*)s)[0] ) && ( 0x42 == ((const U8*)s)[1] ) ) && ( 0x49 == ((const U8*)s)[2] || 0x4A == ((const U8*)s)[2] ) ) ? 3 : 0 )\ : ((e)-(s) > 1) ? \ - ( ( ( 0x0B == ((U8*)s)[0] || 0x0C == ((U8*)s)[0] ) || 0x15 == ((U8*)s)[0] || 0x25 == ((U8*)s)[0] ) ? 1\ - : ( 0x0D == ((U8*)s)[0] ) ? \ - ( ( 0x25 == ((U8*)s)[1] ) ? 2 : 1 ) \ + ( ( ( 0x0B == ((const U8*)s)[0] || 0x0C == ((const U8*)s)[0] ) || 0x15 == ((const U8*)s)[0] || 0x25 == ((const U8*)s)[0] ) ? 1\ + : ( 0x0D == ((const U8*)s)[0] ) ? \ + ( ( 0x25 == ((const U8*)s)[1] ) ? 2 : 1 ) \ : 0 ) \ : ((e)-(s) > 0) ? \ - ( ( 0x0B <= ((U8*)s)[0] && ((U8*)s)[0] <= 0x0D ) || 0x15 == ((U8*)s)[0] || 0x25 == ((U8*)s)[0] )\ + ( ( 0x0B <= ((const U8*)s)[0] && ((const U8*)s)[0] <= 0x0D ) || 0x15 == ((const U8*)s)[0] || 0x25 == ((const U8*)s)[0] )\ : 0 ) /*** GENERATED CODE ***/ #define is_LNBREAK_latin1_safe(s,e) \ ( ((e)-(s) > 1) ? \ - ( ( ( 0x0B == ((U8*)s)[0] || 0x0C == ((U8*)s)[0] ) || 0x15 == ((U8*)s)[0] || 0x25 == ((U8*)s)[0] ) ? 1\ - : ( 0x0D == ((U8*)s)[0] ) ? \ - ( ( 0x25 == ((U8*)s)[1] ) ? 2 : 1 ) \ + ( ( ( 0x0B == ((const U8*)s)[0] || 0x0C == ((const U8*)s)[0] ) || 0x15 == ((const U8*)s)[0] || 0x25 == ((const U8*)s)[0] ) ? 1\ + : ( 0x0D == ((const U8*)s)[0] ) ? \ + ( ( 0x25 == ((const U8*)s)[1] ) ? 2 : 1 ) \ : 0 ) \ : ((e)-(s) > 0) ? \ - ( ( 0x0B <= ((U8*)s)[0] && ((U8*)s)[0] <= 0x0D ) || 0x15 == ((U8*)s)[0] || 0x25 == ((U8*)s)[0] )\ + ( ( 0x0B <= ((const U8*)s)[0] && ((const U8*)s)[0] <= 0x0D ) || 0x15 == ((const U8*)s)[0] || 0x25 == ((const U8*)s)[0] )\ : 0 ) /* @@ -1289,15 +1294,15 @@ */ /*** GENERATED CODE ***/ #define is_HORIZWS_high(s) \ -( ( 0xBD == ((U8*)s)[0] ) ? \ - ( ( ( 0x62 == ((U8*)s)[1] ) && ( 0x41 == ((U8*)s)[2] ) ) ? 3 : 0 ) \ -: ( 0xCA == ((U8*)s)[0] ) ? \ - ( ( 0x41 == ((U8*)s)[1] ) ? \ - ( ( ( 0x41 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x4A ) || 0x51 == ((U8*)s)[2] ) ? 3 : 0 )\ - : ( 0x42 == ((U8*)s)[1] ) ? \ - ( ( 0x56 == ((U8*)s)[2] ) ? 3 : 0 ) \ - : ( ( 0x43 == ((U8*)s)[1] ) && ( 0x72 == ((U8*)s)[2] ) ) ? 3 : 0 ) \ -: ( ( ( 0xCE == ((U8*)s)[0] ) && ( 0x41 == ((U8*)s)[1] ) ) && ( 0x41 == ((U8*)s)[2] ) ) ? 3 : 0 ) +( ( 0xBD == ((const U8*)s)[0] ) ? \ + ( ( ( 0x62 == ((const U8*)s)[1] ) && ( 0x41 == ((const U8*)s)[2] ) ) ? 3 : 0 )\ +: ( 0xCA == ((const U8*)s)[0] ) ? \ + ( ( 0x41 == ((const U8*)s)[1] ) ? \ + ( ( ( 0x41 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x4A ) || 0x51 == ((const U8*)s)[2] ) ? 3 : 0 )\ + : ( 0x42 == ((const U8*)s)[1] ) ? \ + ( ( 0x56 == ((const U8*)s)[2] ) ? 3 : 0 ) \ + : ( ( 0x43 == ((const U8*)s)[1] ) && ( 0x72 == ((const U8*)s)[2] ) ) ? 3 : 0 )\ +: ( ( ( 0xCE == ((const U8*)s)[0] ) && ( 0x41 == ((const U8*)s)[1] ) ) && ( 0x41 == ((const U8*)s)[2] ) ) ? 3 : 0 ) /*** GENERATED CODE ***/ #define is_HORIZWS_cp_high(cp) \ @@ -1313,7 +1318,7 @@ */ /*** GENERATED CODE ***/ #define is_VERTWS_high(s) \ -( ( ( ( 0xCA == ((U8*)s)[0] ) && ( 0x42 == ((U8*)s)[1] ) ) && ( 0x49 == ((U8*)s)[2] || 0x4A == ((U8*)s)[2] ) ) ? 3 : 0 ) +( ( ( ( 0xCA == ((const U8*)s)[0] ) && ( 0x42 == ((const U8*)s)[1] ) ) && ( 0x49 == ((const U8*)s)[2] || 0x4A == ((const U8*)s)[2] ) ) ? 3 : 0 ) /*** GENERATED CODE ***/ #define is_VERTWS_cp_high(cp) \ @@ -1326,9 +1331,9 @@ */ /*** GENERATED CODE ***/ #define is_XDIGIT_high(s) \ -( ( ( 0xDD == ((U8*)s)[0] ) && ( 0x72 == ((U8*)s)[1] ) ) ? ( ( 0x66 == ((U8*)s)[2] ) ?\ - ( ( ( ( ((U8*)s)[3] & 0xF7 ) == 0x57 ) || ( ( ((U8*)s)[3] & 0xFE ) == 0x58 ) || ( ( ((U8*)s)[3] & 0xFE ) == 0x62 ) || ( ( ((U8*)s)[3] & 0xFC ) == 0x64 ) ) ? 4 : 0 )\ - : ( ( 0x67 == ((U8*)s)[2] || 0x68 == ((U8*)s)[2] ) && ( 0x42 <= ((U8*)s)[3] && ((U8*)s)[3] <= 0x47 ) ) ? 4 : 0 ) : 0 ) +( ( ( 0xDD == ((const U8*)s)[0] ) && ( 0x72 == ((const U8*)s)[1] ) ) ? ( ( 0x66 == ((const U8*)s)[2] ) ?\ + ( ( ( ( ((const U8*)s)[3] & 0xF7 ) == 0x57 ) || ( ( ((const U8*)s)[3] & 0xFE ) == 0x58 ) || ( ( ((const U8*)s)[3] & 0xFE ) == 0x62 ) || ( ( ((const U8*)s)[3] & 0xFC ) == 0x64 ) ) ? 4 : 0 )\ + : ( ( 0x67 == ((const U8*)s)[2] || 0x68 == ((const U8*)s)[2] ) && ( 0x42 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x47 ) ) ? 4 : 0 ) : 0 ) /*** GENERATED CODE ***/ #define is_XDIGIT_cp_high(cp) \ @@ -1342,15 +1347,15 @@ */ /*** GENERATED CODE ***/ #define is_XPERLSPACE_high(s) \ -( ( 0xBD == ((U8*)s)[0] ) ? \ - ( ( ( 0x62 == ((U8*)s)[1] ) && ( 0x41 == ((U8*)s)[2] ) ) ? 3 : 0 ) \ -: ( 0xCA == ((U8*)s)[0] ) ? \ - ( ( 0x41 == ((U8*)s)[1] ) ? \ - ( ( ( 0x41 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x4A ) || 0x51 == ((U8*)s)[2] ) ? 3 : 0 )\ - : ( 0x42 == ((U8*)s)[1] ) ? \ - ( ( ( 0x49 == ((U8*)s)[2] || 0x4A == ((U8*)s)[2] ) || 0x56 == ((U8*)s)[2] ) ? 3 : 0 )\ - : ( ( 0x43 == ((U8*)s)[1] ) && ( 0x72 == ((U8*)s)[2] ) ) ? 3 : 0 ) \ -: ( ( ( 0xCE == ((U8*)s)[0] ) && ( 0x41 == ((U8*)s)[1] ) ) && ( 0x41 == ((U8*)s)[2] ) ) ? 3 : 0 ) +( ( 0xBD == ((const U8*)s)[0] ) ? \ + ( ( ( 0x62 == ((const U8*)s)[1] ) && ( 0x41 == ((const U8*)s)[2] ) ) ? 3 : 0 )\ +: ( 0xCA == ((const U8*)s)[0] ) ? \ + ( ( 0x41 == ((const U8*)s)[1] ) ? \ + ( ( ( 0x41 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x4A ) || 0x51 == ((const U8*)s)[2] ) ? 3 : 0 )\ + : ( 0x42 == ((const U8*)s)[1] ) ? \ + ( ( ( 0x49 == ((const U8*)s)[2] || 0x4A == ((const U8*)s)[2] ) || 0x56 == ((const U8*)s)[2] ) ? 3 : 0 )\ + : ( ( 0x43 == ((const U8*)s)[1] ) && ( 0x72 == ((const U8*)s)[2] ) ) ? 3 : 0 )\ +: ( ( ( 0xCE == ((const U8*)s)[0] ) && ( 0x41 == ((const U8*)s)[1] ) ) && ( 0x41 == ((const U8*)s)[2] ) ) ? 3 : 0 ) /*** GENERATED CODE ***/ #define is_XPERLSPACE_cp_high(cp) \ @@ -1368,7 +1373,7 @@ */ /*** GENERATED CODE ***/ #define is_REPLACEMENT_utf8_safe(s,e) \ -( ( ( ( ( ( ((e) - (s)) >= 4 ) && ( 0xDD == ((U8*)s)[0] ) ) && ( 0x72 == ((U8*)s)[1] ) ) && ( 0x72 == ((U8*)s)[2] ) ) && ( 0x70 == ((U8*)s)[3] ) ) ? 4 : 0 ) +( ( ( ( ( ( ((e) - (s)) >= 4 ) && ( 0xDD == ((const U8*)s)[0] ) ) && ( 0x72 == ((const U8*)s)[1] ) ) && ( 0x72 == ((const U8*)s)[2] ) ) && ( 0x70 == ((const U8*)s)[3] ) ) ? 4 : 0 ) /* NONCHAR: Non character code points @@ -1376,40 +1381,29 @@ \p{_Perl_Nchar} */ /*** GENERATED CODE ***/ -#define is_NONCHAR_utf8(s) \ -( ( 0xDD == ((U8*)s)[0] ) ? \ - ( ( 0x72 == ((U8*)s)[1] ) ? \ - ( ( 0x55 == ((U8*)s)[2] ) ? \ - ( ( ( 0x57 <= ((U8*)s)[3] && ((U8*)s)[3] <= 0x59 ) || 0x5F == ((U8*)s)[3] || ( 0x62 <= ((U8*)s)[3] && ((U8*)s)[3] <= 0x6A ) || ( 0x70 <= ((U8*)s)[3] && ((U8*)s)[3] <= 0x72 ) ) ? 4 : 0 )\ - : ( 0x56 == ((U8*)s)[2] ) ? \ - ( ( ( 0x41 <= ((U8*)s)[3] && ((U8*)s)[3] <= 0x4A ) || ( 0x51 <= ((U8*)s)[3] && ((U8*)s)[3] <= 0x56 ) ) ? 4 : 0 )\ - : ( ( 0x72 == ((U8*)s)[2] ) && ( 0x71 == ((U8*)s)[3] || 0x72 == ((U8*)s)[3] ) ) ? 4 : 0 )\ - : 0 ) \ -: ( 0xDF == ((U8*)s)[0] || 0xEA == ((U8*)s)[0] || 0xEC == ((U8*)s)[0] ) ? \ - ( ( ( ( 0x72 == ((U8*)s)[1] ) && ( 0x72 == ((U8*)s)[2] ) ) && ( 0x71 == ((U8*)s)[3] || 0x72 == ((U8*)s)[3] ) ) ? 4 : 0 )\ -: ( 0xED == ((U8*)s)[0] ) ? \ - ( ( ( ( ( ((U8*)s)[1] == 0x4A || ((U8*)s)[1] == 0x52 || ( ( ((U8*)s)[1] & 0xFD ) == 0x54 ) || ((U8*)s)[1] == 0x58 || ((U8*)s)[1] == 0x5F || ((U8*)s)[1] == 0x63 || ( ( ((U8*)s)[1] & 0xFD ) == 0x65 ) || ((U8*)s)[1] == 0x69 || ( ( ((U8*)s)[1] & 0xFD ) == 0x70 ) ) && ( 0x72 == ((U8*)s)[2] ) ) && ( 0x72 == ((U8*)s)[3] ) ) && ( 0x71 == ((U8*)s)[4] || 0x72 == ((U8*)s)[4] ) ) ? 5 : 0 )\ -: ( ( ( ( ( 0xEE == ((U8*)s)[0] ) && ( 0x42 == ((U8*)s)[1] ) ) && ( 0x72 == ((U8*)s)[2] ) ) && ( 0x72 == ((U8*)s)[3] ) ) && ( 0x71 == ((U8*)s)[4] || 0x72 == ((U8*)s)[4] ) ) ? 5 : 0 ) +#define is_NONCHAR_utf8_safe(s,e) \ +( ( ( LIKELY((e) > (s)) ) && ( LIKELY(((e) - (s)) >= UTF8SKIP(s)) ) ) ? ( ( 0xDD == ((const U8*)s)[0] ) ?\ + ( ( 0x72 == ((const U8*)s)[1] ) ? \ + ( ( 0x55 == ((const U8*)s)[2] ) ? \ + ( ( ( 0x57 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x59 ) || 0x5F == ((const U8*)s)[3] || ( 0x62 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x72 ) ) ? 4 : 0 )\ + : ( 0x56 == ((const U8*)s)[2] ) ? \ + ( ( ( 0x41 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x56 ) ) ? 4 : 0 )\ + : ( ( 0x72 == ((const U8*)s)[2] ) && ( 0x71 == ((const U8*)s)[3] || 0x72 == ((const U8*)s)[3] ) ) ? 4 : 0 )\ + : 0 ) \ + : ( 0xDF == ((const U8*)s)[0] || 0xEA == ((const U8*)s)[0] || 0xEC == ((const U8*)s)[0] ) ?\ + ( ( ( ( 0x72 == ((const U8*)s)[1] ) && ( 0x72 == ((const U8*)s)[2] ) ) && ( 0x71 == ((const U8*)s)[3] || 0x72 == ((const U8*)s)[3] ) ) ? 4 : 0 )\ + : ( 0xED == ((const U8*)s)[0] ) ? \ + ( ( ( ( ( ((const U8*)s)[1] == 0x4A || ((const U8*)s)[1] == 0x52 || ( ( ((const U8*)s)[1] & 0xFD ) == 0x54 ) || ((const U8*)s)[1] == 0x58 || ((const U8*)s)[1] == 0x5F || ((const U8*)s)[1] == 0x63 || ( ( ((const U8*)s)[1] & 0xFD ) == 0x65 ) || ((const U8*)s)[1] == 0x69 || ( ( ((const U8*)s)[1] & 0xFD ) == 0x70 ) ) && ( 0x72 == ((const U8*)s)[2] ) ) && ( 0x72 == ((const U8*)s)[3] ) ) && ( 0x71 == ((const U8*)s)[4] || 0x72 == ((const U8*)s)[4] ) ) ? 5 : 0 )\ + : ( ( ( ( ( 0xEE == ((const U8*)s)[0] ) && ( 0x42 == ((const U8*)s)[1] ) ) && ( 0x72 == ((const U8*)s)[2] ) ) && ( 0x72 == ((const U8*)s)[3] ) ) && ( 0x71 == ((const U8*)s)[4] || 0x72 == ((const U8*)s)[4] ) ) ? 5 : 0 ) : 0 ) /* - SURROGATE: Surrogate characters + SURROGATE: Surrogate code points \p{_Perl_Surrogate} */ /*** GENERATED CODE ***/ -#define is_SURROGATE_utf8(s) \ -( ( ( ( ( 0xDD == ((U8*)s)[0] ) && ( ( ((U8*)s)[1] & 0xFE ) == 0x64 ) ) && ( ( 0x41 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x4A ) || ( 0x51 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x59 ) || 0x5F == ((U8*)s)[2] || ( 0x62 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x6A ) || ( 0x70 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x72 ) ) ) && ( ( 0x41 <= ((U8*)s)[3] && ((U8*)s)[3] <= 0x4A ) || ( 0x51 <= ((U8*)s)[3] && ((U8*)s)[3] <= 0x59 ) || 0x5F == ((U8*)s)[3] || ( 0x62 <= ((U8*)s)[3] && ((U8*)s)[3] <= 0x6A ) || ( 0x70 <= ((U8*)s)[3] && ((U8*)s)[3] <= 0x72 ) ) ) ? 4 : 0 ) - -/* - UTF8_CHAR: Matches legal UTF-EBCDIC encoded characters from 2 through 3 bytes - - 0xA0 - 0x3FFF -*/ -/*** GENERATED CODE ***/ -#define is_UTF8_CHAR_utf8_no_length_checks(s) \ -( ( 0x78 == ((U8*)s)[0] || 0x80 == ((U8*)s)[0] || ( 0x8A <= ((U8*)s)[0] && ((U8*)s)[0] <= 0x90 ) || ( 0x9A <= ((U8*)s)[0] && ((U8*)s)[0] <= 0xA0 ) || ( 0xAA <= ((U8*)s)[0] && ((U8*)s)[0] <= 0xAF ) || ( 0xB1 <= ((U8*)s)[0] && ((U8*)s)[0] <= 0xB5 ) ) ?\ - ( ( ( 0x41 <= ((U8*)s)[1] && ((U8*)s)[1] <= 0x4A ) || ( 0x51 <= ((U8*)s)[1] && ((U8*)s)[1] <= 0x59 ) || 0x5F == ((U8*)s)[1] || ( 0x62 <= ((U8*)s)[1] && ((U8*)s)[1] <= 0x6A ) || ( 0x70 <= ((U8*)s)[1] && ((U8*)s)[1] <= 0x72 ) ) ? 2 : 0 )\ -: ( ( ( ((U8*)s)[0] == 0xB7 || ( ( ((U8*)s)[0] & 0xFE ) == 0xB8 ) || ( ( ((U8*)s)[0] & 0xFC ) == 0xBC ) || ( ( ((U8*)s)[0] & 0xEE ) == 0xCA ) || ( ( ((U8*)s)[0] & 0xFC ) == 0xCC ) ) && ( ( 0x41 <= ((U8*)s)[1] && ((U8*)s)[1] <= 0x4A ) || ( 0x51 <= ((U8*)s)[1] && ((U8*)s)[1] <= 0x59 ) || 0x5F == ((U8*)s)[1] || ( 0x62 <= ((U8*)s)[1] && ((U8*)s)[1] <= 0x6A ) || ( 0x70 <= ((U8*)s)[1] && ((U8*)s)[1] <= 0x72 ) ) ) && ( ( 0x41 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x4A ) || ( 0x51 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x59 ) || 0x5F == ((U8*)s)[2] || ( 0x62 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x6A ) || ( 0x70 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x72 ) ) ) ? 3 : 0 ) +#define is_SURROGATE_utf8_safe(s,e) \ +( ( ( ( ( ( ((e) - (s)) >= 4 ) && ( 0xDD == ((const U8*)s)[0] ) ) && ( ( ((const U8*)s)[1] & 0xFE ) == 0x64 ) ) && ( ( 0x41 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x59 ) || 0x5F == ((const U8*)s)[2] || ( 0x62 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x72 ) ) ) && ( ( 0x41 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x59 ) || 0x5F == ((const U8*)s)[3] || ( 0x62 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x72 ) ) ) ? 4 : 0 ) /* QUOTEMETA: Meta-characters that \Q should quote @@ -1418,73 +1412,73 @@ */ /*** GENERATED CODE ***/ #define is_QUOTEMETA_high_part0(s) \ -( ( 0x51 == ((U8*)s)[1] ) ? \ - ( ( 0x72 == ((U8*)s)[2] ) ? 3 : 0 ) \ - : ( ( 0x52 == ((U8*)s)[1] ) && ( 0x41 == ((U8*)s)[2] ) ) ? 3 : 0 ) +( ( 0x41 == ((const U8*)s)[1] || ( 0x54 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x59 ) || 0x5F == ((const U8*)s)[1] || ( 0x62 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x72 ) ) ?\ + ( ( ( 0x41 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x59 ) || 0x5F == ((const U8*)s)[2] || ( 0x62 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x72 ) ) ? 3 : 0 )\ + : ( 0x42 == ((const U8*)s)[1] ) ? \ + ( ( ( 0x41 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x59 ) || 0x5F == ((const U8*)s)[2] || ( 0x62 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x6A ) || ( ((const U8*)s)[2] & 0xFE ) == 0x70 ) ? 3 : 0 )\ + : ( 0x43 == ((const U8*)s)[1] ) ? \ + ( ( ( 0x42 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x59 ) || 0x5F == ((const U8*)s)[2] || ( 0x63 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x72 ) ) ? 3 : 0 )\ + : ( 0x44 == ((const U8*)s)[1] ) ? \ + ( ( ( 0x41 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x56 ) ) ? 3 : 0 )\ + : ( ( 0x53 == ((const U8*)s)[1] ) && ( ( 0x57 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x59 ) || 0x5F == ((const U8*)s)[2] || ( 0x62 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x72 ) ) ) ? 3 : 0 ) /*** GENERATED CODE ***/ #define is_QUOTEMETA_high_part1(s) \ -( ( 0xBD == ((U8*)s)[0] ) ? \ - ( ( 0x62 == ((U8*)s)[1] ) ? \ - ( ( 0x41 == ((U8*)s)[2] ) ? 3 : 0 ) \ - : ( ( 0x70 == ((U8*)s)[1] ) && ( ( ((U8*)s)[2] & 0xFE ) == 0x62 ) ) ? 3 : 0 )\ -: ( 0xBE == ((U8*)s)[0] ) ? \ - ( ( ( 0x41 == ((U8*)s)[1] ) && ( 0x52 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x55 ) ) ? 3 : 0 )\ -: ( 0xCA == ((U8*)s)[0] ) ? \ - ( ( 0x41 == ((U8*)s)[1] || ( 0x54 <= ((U8*)s)[1] && ((U8*)s)[1] <= 0x59 ) || 0x5F == ((U8*)s)[1] || ( 0x62 <= ((U8*)s)[1] && ((U8*)s)[1] <= 0x6A ) || ( 0x70 <= ((U8*)s)[1] && ((U8*)s)[1] <= 0x72 ) ) ?\ - ( ( ( 0x41 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x4A ) || ( 0x51 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x59 ) || 0x5F == ((U8*)s)[2] || ( 0x62 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x6A ) || ( 0x70 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x72 ) ) ? 3 : 0 )\ - : ( 0x42 == ((U8*)s)[1] ) ? \ - ( ( ( 0x41 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x4A ) || ( 0x51 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x59 ) || 0x5F == ((U8*)s)[2] || ( 0x62 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x6A ) || ( ((U8*)s)[2] & 0xFE ) == 0x70 ) ? 3 : 0 )\ - : ( 0x43 == ((U8*)s)[1] ) ? \ - ( ( ( 0x42 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x4A ) || ( 0x51 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x59 ) || 0x5F == ((U8*)s)[2] || ( 0x63 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x6A ) || ( 0x70 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x72 ) ) ? 3 : 0 )\ - : ( 0x44 == ((U8*)s)[1] ) ? \ - ( ( ( 0x41 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x4A ) || ( 0x51 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x56 ) ) ? 3 : 0 )\ - : ( ( 0x53 == ((U8*)s)[1] ) && ( ( 0x57 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x59 ) || 0x5F == ((U8*)s)[2] || ( 0x62 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x6A ) || ( 0x70 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x72 ) ) ) ? 3 : 0 )\ -: ( 0xCB == ((U8*)s)[0] ) ? \ - ( ( ( 0x41 <= ((U8*)s)[1] && ((U8*)s)[1] <= 0x43 ) || ( 0x49 == ((U8*)s)[1] || 0x4A == ((U8*)s)[1] ) || ( 0x51 <= ((U8*)s)[1] && ((U8*)s)[1] <= 0x59 ) || 0x5F == ((U8*)s)[1] || ( 0x62 <= ((U8*)s)[1] && ((U8*)s)[1] <= 0x68 ) || ( 0x70 <= ((U8*)s)[1] && ((U8*)s)[1] <= 0x72 ) ) ?\ - ( ( ( 0x41 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x4A ) || ( 0x51 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x59 ) || 0x5F == ((U8*)s)[2] || ( 0x62 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x6A ) || ( 0x70 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x72 ) ) ? 3 : 0 )\ - : ( 0x69 == ((U8*)s)[1] ) ? \ - ( ( ( 0x41 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x4A ) || ( 0x51 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x59 ) || 0x5F == ((U8*)s)[2] || ( ((U8*)s)[2] & 0xFE ) == 0x62 ) ? 3 : 0 )\ - : ( ( 0x6A == ((U8*)s)[1] ) && ( ( 0x62 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x6A ) || ( 0x70 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x72 ) ) ) ? 3 : 0 )\ -: ( 0xCC == ((U8*)s)[0] ) ? \ - ( ( ( ( 0x41 <= ((U8*)s)[1] && ((U8*)s)[1] <= 0x4A ) || ( 0x51 <= ((U8*)s)[1] && ((U8*)s)[1] <= 0x59 ) || 0x5F == ((U8*)s)[1] || ( 0x62 <= ((U8*)s)[1] && ((U8*)s)[1] <= 0x6A ) || ( 0x70 <= ((U8*)s)[1] && ((U8*)s)[1] <= 0x72 ) ) && ( ( 0x41 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x4A ) || ( 0x51 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x59 ) || 0x5F == ((U8*)s)[2] || ( 0x62 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x6A ) || ( 0x70 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x72 ) ) ) ? 3 : 0 )\ -: ( 0xCD == ((U8*)s)[0] ) ? \ - ( ( ( ( ( ((U8*)s)[1] & 0xF7 ) == 0x57 ) || ( ( ((U8*)s)[1] & 0xFE ) == 0x58 ) ) && ( ( 0x41 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x4A ) || ( 0x51 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x59 ) || 0x5F == ((U8*)s)[2] || ( 0x62 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x6A ) || ( 0x70 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x72 ) ) ) ? 3 : 0 )\ -: ( 0xCE == ((U8*)s)[0] ) ? \ - ( ( 0x41 == ((U8*)s)[1] ) ? \ - ( ( ( 0x41 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x44 ) || ( 0x49 == ((U8*)s)[2] || 0x4A == ((U8*)s)[2] ) || ( 0x51 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x59 ) || 0x5F == ((U8*)s)[2] || ( 0x62 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x6A ) || ( 0x70 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x72 ) ) ? 3 : 0 )\ - : ( 0x42 == ((U8*)s)[1] ) ? \ - ( ( 0x41 == ((U8*)s)[2] || 0x57 == ((U8*)s)[2] ) ? 3 : 0 ) \ - : ( ( 0x52 == ((U8*)s)[1] ) && ( 0x45 == ((U8*)s)[2] ) ) ? 3 : 0 ) \ -: ( 0xDD == ((U8*)s)[0] ) ? \ - ( ( 0x72 == ((U8*)s)[1] ) ? \ - ( ( 0x4A == ((U8*)s)[2] ) ? \ - ( ( 0x71 == ((U8*)s)[3] || 0x72 == ((U8*)s)[3] ) ? 4 : 0 ) \ - : ( 0x57 == ((U8*)s)[2] ) ? \ - ( ( ( 0x41 <= ((U8*)s)[3] && ((U8*)s)[3] <= 0x4A ) || ( 0x51 <= ((U8*)s)[3] && ((U8*)s)[3] <= 0x56 ) ) ? 4 : 0 )\ - : ( 0x59 == ((U8*)s)[2] ) ? \ - ( ( ( ((U8*)s)[3] & 0xFE ) == 0x46 ) ? 4 : 0 ) \ - : ( 0x65 == ((U8*)s)[2] ) ? \ - ( ( 0x72 == ((U8*)s)[3] ) ? 4 : 0 ) \ - : ( 0x70 == ((U8*)s)[2] ) ? \ - ( ( 0x41 == ((U8*)s)[3] ) ? 4 : 0 ) \ - : ( ( 0x72 == ((U8*)s)[2] ) && ( ( 0x57 <= ((U8*)s)[3] && ((U8*)s)[3] <= 0x59 ) || 0x5F == ((U8*)s)[3] || ( 0x62 <= ((U8*)s)[3] && ((U8*)s)[3] <= 0x66 ) ) ) ? 4 : 0 )\ +( ( 0xCB == ((const U8*)s)[0] ) ? \ + ( ( ( 0x41 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x43 ) || ( 0x49 == ((const U8*)s)[1] || 0x4A == ((const U8*)s)[1] ) || ( 0x51 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x59 ) || 0x5F == ((const U8*)s)[1] || ( 0x62 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x68 ) || ( 0x70 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x72 ) ) ?\ + ( ( ( 0x41 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x59 ) || 0x5F == ((const U8*)s)[2] || ( 0x62 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x72 ) ) ? 3 : 0 )\ + : ( 0x69 == ((const U8*)s)[1] ) ? \ + ( ( ( 0x41 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x59 ) || 0x5F == ((const U8*)s)[2] || ( ((const U8*)s)[2] & 0xFE ) == 0x62 ) ? 3 : 0 )\ + : ( ( 0x6A == ((const U8*)s)[1] ) && ( ( 0x62 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x72 ) ) ) ? 3 : 0 )\ +: ( 0xCC == ((const U8*)s)[0] ) ? \ + ( ( ( ( 0x41 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x59 ) || 0x5F == ((const U8*)s)[1] || ( 0x62 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x72 ) ) && ( ( 0x41 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x59 ) || 0x5F == ((const U8*)s)[2] || ( 0x62 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x72 ) ) ) ? 3 : 0 )\ +: ( 0xCD == ((const U8*)s)[0] ) ? \ + ( ( ( ( ( ((const U8*)s)[1] & 0xF7 ) == 0x57 ) || ( ( ((const U8*)s)[1] & 0xFE ) == 0x58 ) ) && ( ( 0x41 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x59 ) || 0x5F == ((const U8*)s)[2] || ( 0x62 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x72 ) ) ) ? 3 : 0 )\ +: ( 0xCE == ((const U8*)s)[0] ) ? \ + ( ( 0x41 == ((const U8*)s)[1] ) ? \ + ( ( ( 0x41 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x44 ) || ( 0x49 == ((const U8*)s)[2] || 0x4A == ((const U8*)s)[2] ) || ( 0x51 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x59 ) || 0x5F == ((const U8*)s)[2] || ( 0x62 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x72 ) ) ? 3 : 0 )\ + : ( 0x42 == ((const U8*)s)[1] ) ? \ + ( ( 0x41 == ((const U8*)s)[2] || 0x57 == ((const U8*)s)[2] ) ? 3 : 0 )\ + : ( ( 0x52 == ((const U8*)s)[1] ) && ( 0x45 == ((const U8*)s)[2] ) ) ? 3 : 0 )\ +: ( 0xDD == ((const U8*)s)[0] ) ? \ + ( ( 0x72 == ((const U8*)s)[1] ) ? \ + ( ( 0x4A == ((const U8*)s)[2] ) ? \ + ( ( 0x71 == ((const U8*)s)[3] || 0x72 == ((const U8*)s)[3] ) ? 4 : 0 )\ + : ( 0x57 == ((const U8*)s)[2] ) ? \ + ( ( ( 0x41 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x56 ) ) ? 4 : 0 )\ + : ( 0x59 == ((const U8*)s)[2] ) ? \ + ( ( ( ((const U8*)s)[3] & 0xFE ) == 0x46 ) ? 4 : 0 ) \ + : ( 0x65 == ((const U8*)s)[2] ) ? \ + ( ( 0x72 == ((const U8*)s)[3] ) ? 4 : 0 ) \ + : ( 0x70 == ((const U8*)s)[2] ) ? \ + ( ( 0x41 == ((const U8*)s)[3] ) ? 4 : 0 ) \ + : ( ( 0x72 == ((const U8*)s)[2] ) && ( ( 0x57 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x59 ) || 0x5F == ((const U8*)s)[3] || ( 0x62 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x66 ) ) ) ? 4 : 0 )\ : 0 ) \ -: ( 0xDF == ((U8*)s)[0] ) ? \ - ( ( 0x56 == ((U8*)s)[1] ) ? \ - ( ( ( 0x46 == ((U8*)s)[2] ) && ( 0x41 <= ((U8*)s)[3] && ((U8*)s)[3] <= 0x44 ) ) ? 4 : 0 )\ - : ( ( ( 0x62 == ((U8*)s)[1] ) && ( 0x52 == ((U8*)s)[2] ) ) && ( 0x5F == ((U8*)s)[3] || ( 0x62 <= ((U8*)s)[3] && ((U8*)s)[3] <= 0x68 ) ) ) ? 4 : 0 )\ -: ( ( ( ( ( 0xED == ((U8*)s)[0] ) && ( 0x6A == ((U8*)s)[1] ) ) && ( 0x41 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x44 ) ) && ( ( 0x41 <= ((U8*)s)[3] && ((U8*)s)[3] <= 0x4A ) || ( 0x51 <= ((U8*)s)[3] && ((U8*)s)[3] <= 0x59 ) || 0x5F == ((U8*)s)[3] || ( 0x62 <= ((U8*)s)[3] && ((U8*)s)[3] <= 0x6A ) || ( 0x70 <= ((U8*)s)[3] && ((U8*)s)[3] <= 0x72 ) ) ) && ( ( 0x41 <= ((U8*)s)[4] && ((U8*)s)[4] <= 0x4A ) || ( 0x51 <= ((U8*)s)[4] && ((U8*)s)[4] <= 0x59 ) || 0x5F == ((U8*)s)[4] || ( 0x62 <= ((U8*)s)[4] && ((U8*)s)[4] <= 0x6A ) || ( 0x70 <= ((U8*)s)[4] && ((U8*)s)[4] <= 0x72 ) ) ) ? 5 : 0 ) +: ( 0xDF == ((const U8*)s)[0] ) ? \ + ( ( 0x56 == ((const U8*)s)[1] ) ? \ + ( ( ( 0x46 == ((const U8*)s)[2] ) && ( 0x41 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x44 ) ) ? 4 : 0 )\ + : ( ( ( 0x62 == ((const U8*)s)[1] ) && ( 0x52 == ((const U8*)s)[2] ) ) && ( 0x5F == ((const U8*)s)[3] || ( 0x62 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x68 ) ) ) ? 4 : 0 )\ +: ( ( ( ( ( 0xED == ((const U8*)s)[0] ) && ( 0x6A == ((const U8*)s)[1] ) ) && ( 0x41 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x44 ) ) && ( ( 0x41 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x59 ) || 0x5F == ((const U8*)s)[3] || ( 0x62 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x72 ) ) ) && ( ( 0x41 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x59 ) || 0x5F == ((const U8*)s)[4] || ( 0x62 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x72 ) ) ) ? 5 : 0 ) /*** GENERATED CODE ***/ #define is_QUOTEMETA_high(s) \ -( ( 0xAF == ((U8*)s)[0] ) ? \ - ( ( 0x56 == ((U8*)s)[1] ) ? 2 : 0 ) \ -: ( 0xB7 == ((U8*)s)[0] ) ? \ - ( ( ( 0x57 == ((U8*)s)[1] ) && ( 0x6A == ((U8*)s)[2] ) ) ? 3 : 0 ) \ -: ( 0xBC == ((U8*)s)[0] ) ? is_QUOTEMETA_high_part0(s) : is_QUOTEMETA_high_part1(s) ) +( ( 0xAF == ((const U8*)s)[0] ) ? \ + ( ( 0x56 == ((const U8*)s)[1] ) ? 2 : 0 ) \ +: ( 0xB7 == ((const U8*)s)[0] ) ? \ + ( ( ( 0x57 == ((const U8*)s)[1] ) && ( 0x6A == ((const U8*)s)[2] ) ) ? 3 : 0 )\ +: ( 0xBC == ((const U8*)s)[0] ) ? \ + ( ( 0x51 == ((const U8*)s)[1] ) ? \ + ( ( 0x72 == ((const U8*)s)[2] ) ? 3 : 0 ) \ + : ( ( 0x52 == ((const U8*)s)[1] ) && ( 0x41 == ((const U8*)s)[2] ) ) ? 3 : 0 )\ +: ( 0xBD == ((const U8*)s)[0] ) ? \ + ( ( 0x62 == ((const U8*)s)[1] ) ? \ + ( ( 0x41 == ((const U8*)s)[2] ) ? 3 : 0 ) \ + : ( ( 0x70 == ((const U8*)s)[1] ) && ( ( ((const U8*)s)[2] & 0xFE ) == 0x62 ) ) ? 3 : 0 )\ +: ( 0xBE == ((const U8*)s)[0] ) ? \ + ( ( ( 0x41 == ((const U8*)s)[1] ) && ( 0x52 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x55 ) ) ? 3 : 0 )\ +: ( 0xCA == ((const U8*)s)[0] ) ? is_QUOTEMETA_high_part0(s) : is_QUOTEMETA_high_part1(s) ) /* MULTI_CHAR_FOLD: multi-char strings that are folded to by a single character @@ -1493,207 +1487,215 @@ */ /*** GENERATED CODE ***/ #define is_MULTI_CHAR_FOLD_utf8_safe_part0(s,e) \ -( ( 0x81 == ((U8*)s)[0] ) ? \ - ( ( ( 0xAA == ((U8*)s)[1] ) && ( 0x71 == ((U8*)s)[2] ) ) ? 3 : 0 ) \ - : ( 0x86 == ((U8*)s)[0] ) ? \ - ( ( 0x86 == ((U8*)s)[1] ) ? \ - ( ( 0x89 == ((U8*)s)[2] || 0x93 == ((U8*)s)[2] ) ? 3 : 2 ) \ - : ( 0x89 == ((U8*)s)[1] || 0x93 == ((U8*)s)[1] ) ? 2 : 0 ) \ - : ( 0x88 == ((U8*)s)[0] ) ? \ - ( ( ( 0xAE == ((U8*)s)[1] ) && ( 0x58 == ((U8*)s)[2] ) ) ? 3 : 0 ) \ - : ( 0x89 == ((U8*)s)[0] ) ? \ - ( ( ( 0xAD == ((U8*)s)[1] ) && ( 0x48 == ((U8*)s)[2] ) ) ? 3 : 0 ) \ - : ( 0x8E == ((U8*)s)[0] ) ? \ - ( ( ( ( 0x72 == ((U8*)s)[1] ) && ( 0x8E == ((U8*)s)[2] ) ) && ( 0x72 == ((U8*)s)[3] ) ) ? 4 : 0 )\ - : ( 0x91 == ((U8*)s)[0] ) ? \ - ( ( ( 0xAD == ((U8*)s)[1] ) && ( 0x53 == ((U8*)s)[2] ) ) ? 3 : 0 ) \ - : ( 0xA2 == ((U8*)s)[0] ) ? \ - ( ( ( ((U8*)s)[1] & 0xFE ) == 0xA2 ) ? 2 : 0 ) \ - : ( 0xA3 == ((U8*)s)[0] ) ? \ - ( ( ( 0xAD == ((U8*)s)[1] ) && ( 0x49 == ((U8*)s)[2] ) ) ? 3 : 0 ) \ - : ( 0xA6 == ((U8*)s)[0] || 0xA8 == ((U8*)s)[0] ) ? \ - ( ( ( 0xAD == ((U8*)s)[1] ) && ( 0x51 == ((U8*)s)[2] ) ) ? 3 : 0 ) \ - : ( 0xAA == ((U8*)s)[0] ) ? \ - ( ( ( 0x6A == ((U8*)s)[1] ) && ( 0x95 == ((U8*)s)[2] ) ) ? 3 : 0 ) \ - : ( 0xB3 == ((U8*)s)[0] ) ? \ - ( ( 0x53 == ((U8*)s)[1] || 0x55 == ((U8*)s)[1] ) ? \ - ( ( ( 0xB3 == ((U8*)s)[2] ) && ( 0x67 == ((U8*)s)[3] ) ) ? 4 : 0 )\ - : ( 0x58 == ((U8*)s)[1] || 0x65 == ((U8*)s)[1] ) ? \ - ( ( 0xAF == ((U8*)s)[2] ) ? \ - ( ( 0x43 == ((U8*)s)[3] ) ? 4 : 0 ) \ - : ( ( 0xB3 == ((U8*)s)[2] ) && ( 0x67 == ((U8*)s)[3] ) ) ? 4 : 0 )\ - : ( ( ( 0x67 == ((U8*)s)[1] ) && ( 0xAF == ((U8*)s)[2] ) ) && ( 0x43 == ((U8*)s)[3] ) ) ? 4 : 0 )\ - : ( 0xB4 == ((U8*)s)[0] ) ? \ - ( ( 0x42 == ((U8*)s)[1] ) ? \ - ( ( ( 0xAD == ((U8*)s)[2] ) && ( 0x5F == ((U8*)s)[3] ) ) ? 4 : 0 )\ - : ( 0x46 == ((U8*)s)[1] ) ? \ - ( ( 0xAD == ((U8*)s)[2] ) ? \ - ( ( 0x5F == ((U8*)s)[3] ) ? 4 : 0 ) \ - : ( ( 0xAF == ((U8*)s)[2] ) && ( 0x43 == ((U8*)s)[3] ) ) ? 4 : 0 )\ - : ( 0x4A == ((U8*)s)[1] ) ? \ - ( ( 0xAF == ((U8*)s)[2] ) ? \ - ( ( 0x43 == ((U8*)s)[3] ) ? 4 : 0 ) \ - : ( ( 0xB3 == ((U8*)s)[2] ) && ( 0x67 == ((U8*)s)[3] ) ) ? 4 : 0 )\ - : ( ( ( 0x55 == ((U8*)s)[1] ) && ( 0xB3 == ((U8*)s)[2] ) ) && ( 0x67 == ((U8*)s)[3] ) ) ? 4 : 0 )\ - : ( 0xBF == ((U8*)s)[0] ) ? \ - ( ( ( ((U8*)s)[1] & 0xFE ) == 0x66 ) ? \ - ( ( ( ( 0x41 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x48 ) && ( 0xB3 == ((U8*)s)[3] ) ) && ( 0x67 == ((U8*)s)[4] ) ) ? 5 : 0 )\ - : ( ( ( ( 0x69 == ((U8*)s)[1] ) && ( ( 0x41 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x48 ) || 0x57 == ((U8*)s)[2] || 0x62 == ((U8*)s)[2] || 0x6A == ((U8*)s)[2] ) ) && ( 0xB3 == ((U8*)s)[3] ) ) && ( 0x67 == ((U8*)s)[4] ) ) ? 5 : 0 )\ - : 0 ) +( ( 0x86 == ((const U8*)s)[1] ) ? \ + ( ( 0x89 == ((const U8*)s)[2] || 0x93 == ((const U8*)s)[2] ) ? 3 : 2 )\ + : ( 0x89 == ((const U8*)s)[1] || 0x93 == ((const U8*)s)[1] ) ? 2 : 0 ) /*** GENERATED CODE ***/ #define is_MULTI_CHAR_FOLD_utf8_safe_part1(s,e) \ +( ( 0x88 == ((const U8*)s)[0] ) ? \ + ( ( ( 0xAE == ((const U8*)s)[1] ) && ( 0x58 == ((const U8*)s)[2] ) ) ? 3 : 0 )\ + : ( 0x89 == ((const U8*)s)[0] ) ? \ + ( ( ( 0xAD == ((const U8*)s)[1] ) && ( 0x48 == ((const U8*)s)[2] ) ) ? 3 : 0 )\ + : ( 0x8E == ((const U8*)s)[0] ) ? \ + ( ( ( ( 0x72 == ((const U8*)s)[1] ) && ( 0x8E == ((const U8*)s)[2] ) ) && ( 0x72 == ((const U8*)s)[3] ) ) ? 4 : 0 )\ + : ( 0x91 == ((const U8*)s)[0] ) ? \ + ( ( ( 0xAD == ((const U8*)s)[1] ) && ( 0x53 == ((const U8*)s)[2] ) ) ? 3 : 0 )\ + : ( 0xA2 == ((const U8*)s)[0] ) ? \ + ( ( ( ((const U8*)s)[1] & 0xFE ) == 0xA2 ) ? 2 : 0 ) \ + : ( 0xA3 == ((const U8*)s)[0] ) ? \ + ( ( ( 0xAD == ((const U8*)s)[1] ) && ( 0x49 == ((const U8*)s)[2] ) ) ? 3 : 0 )\ + : ( 0xA6 == ((const U8*)s)[0] || 0xA8 == ((const U8*)s)[0] ) ? \ + ( ( ( 0xAD == ((const U8*)s)[1] ) && ( 0x51 == ((const U8*)s)[2] ) ) ? 3 : 0 )\ + : ( 0xAA == ((const U8*)s)[0] ) ? \ + ( ( ( 0x6A == ((const U8*)s)[1] ) && ( 0x95 == ((const U8*)s)[2] ) ) ? 3 : 0 )\ + : ( 0xB3 == ((const U8*)s)[0] ) ? \ + ( ( 0x53 == ((const U8*)s)[1] || 0x55 == ((const U8*)s)[1] ) ? \ + ( ( ( 0xB3 == ((const U8*)s)[2] ) && ( 0x67 == ((const U8*)s)[3] ) ) ? 4 : 0 )\ + : ( 0x58 == ((const U8*)s)[1] || 0x65 == ((const U8*)s)[1] ) ? \ + ( ( 0xAF == ((const U8*)s)[2] ) ? \ + ( ( 0x43 == ((const U8*)s)[3] ) ? \ + ( ( ( 0xB3 == ((const U8*)s)[4] ) && ( 0x67 == ((const U8*)s)[5] ) ) ? 6 : 4 )\ + : 0 ) \ + : ( ( 0xB3 == ((const U8*)s)[2] ) && ( 0x67 == ((const U8*)s)[3] ) ) ? 4 : 0 )\ + : ( 0x67 == ((const U8*)s)[1] ) ? \ + ( ( 0xAD == ((const U8*)s)[2] ) ? \ + ( ( 0x49 == ((const U8*)s)[3] ) ? \ + ( ( 0xAD == ((const U8*)s)[4] ) ? \ + ( ( 0x41 == ((const U8*)s)[5] || 0x42 == ((const U8*)s)[5] ) ? 6 : 0 )\ + : ( ( 0xAF == ((const U8*)s)[4] ) && ( 0x43 == ((const U8*)s)[5] ) ) ? 6 : 0 )\ + : 0 ) \ + : ( ( 0xAF == ((const U8*)s)[2] ) && ( 0x43 == ((const U8*)s)[3] ) ) ? 4 : 0 )\ + : 0 ) \ + : ( 0xB4 == ((const U8*)s)[0] ) ? \ + ( ( 0x42 == ((const U8*)s)[1] ) ? \ + ( ( ( 0xAD == ((const U8*)s)[2] ) && ( 0x5F == ((const U8*)s)[3] ) ) ? 4 : 0 )\ + : ( 0x46 == ((const U8*)s)[1] ) ? \ + ( ( 0xAD == ((const U8*)s)[2] ) ? \ + ( ( 0x49 == ((const U8*)s)[3] ) ? \ + ( ( 0xAD == ((const U8*)s)[4] ) ? \ + ( ( 0x41 == ((const U8*)s)[5] || 0x42 == ((const U8*)s)[5] ) ? 6 : 0 )\ + : ( ( 0xAF == ((const U8*)s)[4] ) && ( 0x43 == ((const U8*)s)[5] ) ) ? 6 : 0 )\ + : ( 0x5F == ((const U8*)s)[3] ) ? \ + ( ( 0xAD == ((const U8*)s)[4] ) ? \ + ( ( 0x41 == ((const U8*)s)[5] || 0x42 == ((const U8*)s)[5] ) ? 6 : 4 )\ + : ( ( 0xAF == ((const U8*)s)[4] ) && ( 0x43 == ((const U8*)s)[5] ) ) ? 6 : 4 )\ + : 0 ) \ + : ( ( 0xAF == ((const U8*)s)[2] ) && ( 0x43 == ((const U8*)s)[3] ) ) ? 4 : 0 )\ + : ( 0x4A == ((const U8*)s)[1] ) ? \ + ( ( 0xAF == ((const U8*)s)[2] ) ? \ + ( ( 0x43 == ((const U8*)s)[3] ) ? \ + ( ( ( 0xB3 == ((const U8*)s)[4] ) && ( 0x67 == ((const U8*)s)[5] ) ) ? 6 : 4 )\ + : 0 ) \ + : ( ( 0xB3 == ((const U8*)s)[2] ) && ( 0x67 == ((const U8*)s)[3] ) ) ? 4 : 0 )\ + : ( ( ( 0x55 == ((const U8*)s)[1] ) && ( 0xB3 == ((const U8*)s)[2] ) ) && ( 0x67 == ((const U8*)s)[3] ) ) ? 4 : 0 )\ + : ( 0xB7 == ((const U8*)s)[0] ) ? \ + ( ( 0x52 == ((const U8*)s)[1] ) ? \ + ( ( 0x46 == ((const U8*)s)[2] ) ? \ + ( ( ( ( 0xB7 == ((const U8*)s)[3] ) && ( 0x53 == ((const U8*)s)[4] ) ) && ( 0x43 == ((const U8*)s)[5] ) ) ? 6 : 0 )\ + : ( 0x62 == ((const U8*)s)[2] ) ? \ + ( ( ( ( 0xB7 == ((const U8*)s)[3] ) && ( 0x52 == ((const U8*)s)[4] ) ) && ( 0x46 == ((const U8*)s)[5] || 0x52 == ((const U8*)s)[5] || 0x54 == ((const U8*)s)[5] || 0x64 == ((const U8*)s)[5] ) ) ? 6 : 0 )\ + : ( ( ( ( 0x71 == ((const U8*)s)[2] ) && ( 0xB7 == ((const U8*)s)[3] ) ) && ( 0x52 == ((const U8*)s)[4] ) ) && ( 0x64 == ((const U8*)s)[5] ) ) ? 6 : 0 )\ + : 0 ) \ + : ( 0xBF == ((const U8*)s)[0] ) ? \ + ( ( ( ((const U8*)s)[1] & 0xFE ) == 0x66 ) ? \ + ( ( ( ( 0x41 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x48 ) && ( 0xB3 == ((const U8*)s)[3] ) ) && ( 0x67 == ((const U8*)s)[4] ) ) ? 5 : 0 )\ + : ( ( ( ( 0x69 == ((const U8*)s)[1] ) && ( ( 0x41 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x48 ) || 0x57 == ((const U8*)s)[2] || 0x62 == ((const U8*)s)[2] || 0x6A == ((const U8*)s)[2] ) ) && ( 0xB3 == ((const U8*)s)[3] ) ) && ( 0x67 == ((const U8*)s)[4] ) ) ? 5 : 0 )\ + : 0 ) + + +/*** GENERATED CODE ***/ +#define is_MULTI_CHAR_FOLD_utf8_safe_part2(s,e) \ +( ( 0x81 == ((const U8*)s)[0] ) ? \ + ( ( ( 0xAA == ((const U8*)s)[1] ) && ( 0x71 == ((const U8*)s)[2] ) ) ? 3 : 0 )\ + : ( 0x86 == ((const U8*)s)[0] ) ? \ + ( ( 0x86 == ((const U8*)s)[1] ) ? \ + ( ( 0x89 == ((const U8*)s)[2] || 0x93 == ((const U8*)s)[2] ) ? 3 : 2 )\ + : ( 0x89 == ((const U8*)s)[1] || 0x93 == ((const U8*)s)[1] ) ? 2 : 0 )\ + : ( 0x88 == ((const U8*)s)[0] ) ? \ + ( ( ( 0xAE == ((const U8*)s)[1] ) && ( 0x58 == ((const U8*)s)[2] ) ) ? 3 : 0 )\ + : ( 0x89 == ((const U8*)s)[0] ) ? \ + ( ( ( 0xAD == ((const U8*)s)[1] ) && ( 0x48 == ((const U8*)s)[2] ) ) ? 3 : 0 )\ + : ( 0x8E == ((const U8*)s)[0] ) ? \ + ( ( ( ( 0x72 == ((const U8*)s)[1] ) && ( 0x8E == ((const U8*)s)[2] ) ) && ( 0x72 == ((const U8*)s)[3] ) ) ? 4 : 0 )\ + : ( 0x91 == ((const U8*)s)[0] ) ? \ + ( ( ( 0xAD == ((const U8*)s)[1] ) && ( 0x53 == ((const U8*)s)[2] ) ) ? 3 : 0 )\ + : ( 0xA2 == ((const U8*)s)[0] ) ? \ + ( ( ( ((const U8*)s)[1] & 0xFE ) == 0xA2 ) ? 2 : 0 ) \ + : ( 0xA3 == ((const U8*)s)[0] ) ? \ + ( ( ( 0xAD == ((const U8*)s)[1] ) && ( 0x49 == ((const U8*)s)[2] ) ) ? 3 : 0 )\ + : ( 0xA6 == ((const U8*)s)[0] || 0xA8 == ((const U8*)s)[0] ) ? \ + ( ( ( 0xAD == ((const U8*)s)[1] ) && ( 0x51 == ((const U8*)s)[2] ) ) ? 3 : 0 )\ + : ( 0xAA == ((const U8*)s)[0] ) ? \ + ( ( ( 0x6A == ((const U8*)s)[1] ) && ( 0x95 == ((const U8*)s)[2] ) ) ? 3 : 0 )\ + : ( 0xB3 == ((const U8*)s)[0] ) ? \ + ( ( 0x53 == ((const U8*)s)[1] || 0x55 == ((const U8*)s)[1] ) ? \ + ( ( ( 0xB3 == ((const U8*)s)[2] ) && ( 0x67 == ((const U8*)s)[3] ) ) ? 4 : 0 )\ + : ( 0x58 == ((const U8*)s)[1] || 0x65 == ((const U8*)s)[1] ) ? \ + ( ( 0xAF == ((const U8*)s)[2] ) ? \ + ( ( 0x43 == ((const U8*)s)[3] ) ? 4 : 0 ) \ + : ( ( 0xB3 == ((const U8*)s)[2] ) && ( 0x67 == ((const U8*)s)[3] ) ) ? 4 : 0 )\ + : ( ( ( 0x67 == ((const U8*)s)[1] ) && ( 0xAF == ((const U8*)s)[2] ) ) && ( 0x43 == ((const U8*)s)[3] ) ) ? 4 : 0 )\ + : ( 0xB4 == ((const U8*)s)[0] ) ? \ + ( ( 0x42 == ((const U8*)s)[1] ) ? \ + ( ( ( 0xAD == ((const U8*)s)[2] ) && ( 0x5F == ((const U8*)s)[3] ) ) ? 4 : 0 )\ + : ( 0x46 == ((const U8*)s)[1] ) ? \ + ( ( 0xAD == ((const U8*)s)[2] ) ? \ + ( ( 0x5F == ((const U8*)s)[3] ) ? 4 : 0 ) \ + : ( ( 0xAF == ((const U8*)s)[2] ) && ( 0x43 == ((const U8*)s)[3] ) ) ? 4 : 0 )\ + : ( 0x4A == ((const U8*)s)[1] ) ? \ + ( ( 0xAF == ((const U8*)s)[2] ) ? \ + ( ( 0x43 == ((const U8*)s)[3] ) ? 4 : 0 ) \ + : ( ( 0xB3 == ((const U8*)s)[2] ) && ( 0x67 == ((const U8*)s)[3] ) ) ? 4 : 0 )\ + : ( ( ( 0x55 == ((const U8*)s)[1] ) && ( 0xB3 == ((const U8*)s)[2] ) ) && ( 0x67 == ((const U8*)s)[3] ) ) ? 4 : 0 )\ + : ( 0xBF == ((const U8*)s)[0] ) ? \ + ( ( ( ((const U8*)s)[1] & 0xFE ) == 0x66 ) ? \ + ( ( ( ( 0x41 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x48 ) && ( 0xB3 == ((const U8*)s)[3] ) ) && ( 0x67 == ((const U8*)s)[4] ) ) ? 5 : 0 )\ + : ( ( ( ( 0x69 == ((const U8*)s)[1] ) && ( ( 0x41 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x48 ) || 0x57 == ((const U8*)s)[2] || 0x62 == ((const U8*)s)[2] || 0x6A == ((const U8*)s)[2] ) ) && ( 0xB3 == ((const U8*)s)[3] ) ) && ( 0x67 == ((const U8*)s)[4] ) ) ? 5 : 0 )\ + : 0 ) + + +/*** GENERATED CODE ***/ +#define is_MULTI_CHAR_FOLD_utf8_safe_part3(s,e) \ ( ((e)-(s) > 3) ? \ - ( ( 0x81 == ((U8*)s)[0] ) ? \ - ( ( ( 0xAA == ((U8*)s)[1] ) && ( 0x71 == ((U8*)s)[2] ) ) ? 3 : 0 ) \ - : ( 0x86 == ((U8*)s)[0] ) ? \ - ( ( 0x86 == ((U8*)s)[1] ) ? \ - ( ( 0x89 == ((U8*)s)[2] || 0x93 == ((U8*)s)[2] ) ? 3 : 2 ) \ - : ( 0x89 == ((U8*)s)[1] || 0x93 == ((U8*)s)[1] ) ? 2 : 0 ) \ - : ( 0x88 == ((U8*)s)[0] ) ? \ - ( ( ( 0xAE == ((U8*)s)[1] ) && ( 0x58 == ((U8*)s)[2] ) ) ? 3 : 0 ) \ - : ( 0x89 == ((U8*)s)[0] ) ? \ - ( ( ( 0xAD == ((U8*)s)[1] ) && ( 0x48 == ((U8*)s)[2] ) ) ? 3 : 0 ) \ - : ( 0x8E == ((U8*)s)[0] ) ? \ - ( ( ( ( 0x72 == ((U8*)s)[1] ) && ( 0x8E == ((U8*)s)[2] ) ) && ( 0x72 == ((U8*)s)[3] ) ) ? 4 : 0 )\ - : ( 0x91 == ((U8*)s)[0] ) ? \ - ( ( ( 0xAD == ((U8*)s)[1] ) && ( 0x53 == ((U8*)s)[2] ) ) ? 3 : 0 ) \ - : ( 0xA2 == ((U8*)s)[0] ) ? \ - ( ( ( ((U8*)s)[1] & 0xFE ) == 0xA2 ) ? 2 : 0 ) \ - : ( 0xA3 == ((U8*)s)[0] ) ? \ - ( ( ( 0xAD == ((U8*)s)[1] ) && ( 0x49 == ((U8*)s)[2] ) ) ? 3 : 0 ) \ - : ( 0xA6 == ((U8*)s)[0] || 0xA8 == ((U8*)s)[0] ) ? \ - ( ( ( 0xAD == ((U8*)s)[1] ) && ( 0x51 == ((U8*)s)[2] ) ) ? 3 : 0 ) \ - : ( 0xAA == ((U8*)s)[0] ) ? \ - ( ( ( 0x6A == ((U8*)s)[1] ) && ( 0x95 == ((U8*)s)[2] ) ) ? 3 : 0 ) \ - : ( 0xB3 == ((U8*)s)[0] ) ? \ - ( ( 0x53 == ((U8*)s)[1] || 0x55 == ((U8*)s)[1] ) ? \ - ( ( ( 0xB3 == ((U8*)s)[2] ) && ( 0x67 == ((U8*)s)[3] ) ) ? 4 : 0 )\ - : ( 0x58 == ((U8*)s)[1] || 0x65 == ((U8*)s)[1] ) ? \ - ( ( 0xAF == ((U8*)s)[2] ) ? \ - ( ( 0x43 == ((U8*)s)[3] ) ? 4 : 0 ) \ - : ( ( 0xB3 == ((U8*)s)[2] ) && ( 0x67 == ((U8*)s)[3] ) ) ? 4 : 0 )\ - : ( ( ( 0x67 == ((U8*)s)[1] ) && ( 0xAF == ((U8*)s)[2] ) ) && ( 0x43 == ((U8*)s)[3] ) ) ? 4 : 0 )\ - : ( 0xB4 == ((U8*)s)[0] ) ? \ - ( ( 0x42 == ((U8*)s)[1] ) ? \ - ( ( ( 0xAD == ((U8*)s)[2] ) && ( 0x5F == ((U8*)s)[3] ) ) ? 4 : 0 )\ - : ( 0x46 == ((U8*)s)[1] ) ? \ - ( ( 0xAD == ((U8*)s)[2] ) ? \ - ( ( 0x5F == ((U8*)s)[3] ) ? 4 : 0 ) \ - : ( ( 0xAF == ((U8*)s)[2] ) && ( 0x43 == ((U8*)s)[3] ) ) ? 4 : 0 )\ - : ( 0x4A == ((U8*)s)[1] ) ? \ - ( ( 0xAF == ((U8*)s)[2] ) ? \ - ( ( 0x43 == ((U8*)s)[3] ) ? 4 : 0 ) \ - : ( ( 0xB3 == ((U8*)s)[2] ) && ( 0x67 == ((U8*)s)[3] ) ) ? 4 : 0 )\ - : ( ( ( 0x55 == ((U8*)s)[1] ) && ( 0xB3 == ((U8*)s)[2] ) ) && ( 0x67 == ((U8*)s)[3] ) ) ? 4 : 0 )\ + ( ( 0x81 == ((const U8*)s)[0] ) ? \ + ( ( ( 0xAA == ((const U8*)s)[1] ) && ( 0x71 == ((const U8*)s)[2] ) ) ? 3 : 0 )\ + : ( 0x86 == ((const U8*)s)[0] ) ? \ + ( ( 0x86 == ((const U8*)s)[1] ) ? \ + ( ( 0x89 == ((const U8*)s)[2] || 0x93 == ((const U8*)s)[2] ) ? 3 : 2 )\ + : ( 0x89 == ((const U8*)s)[1] || 0x93 == ((const U8*)s)[1] ) ? 2 : 0 )\ + : ( 0x88 == ((const U8*)s)[0] ) ? \ + ( ( ( 0xAE == ((const U8*)s)[1] ) && ( 0x58 == ((const U8*)s)[2] ) ) ? 3 : 0 )\ + : ( 0x89 == ((const U8*)s)[0] ) ? \ + ( ( ( 0xAD == ((const U8*)s)[1] ) && ( 0x48 == ((const U8*)s)[2] ) ) ? 3 : 0 )\ + : ( 0x8E == ((const U8*)s)[0] ) ? \ + ( ( ( ( 0x72 == ((const U8*)s)[1] ) && ( 0x8E == ((const U8*)s)[2] ) ) && ( 0x72 == ((const U8*)s)[3] ) ) ? 4 : 0 )\ + : ( 0x91 == ((const U8*)s)[0] ) ? \ + ( ( ( 0xAD == ((const U8*)s)[1] ) && ( 0x53 == ((const U8*)s)[2] ) ) ? 3 : 0 )\ + : ( 0xA2 == ((const U8*)s)[0] ) ? \ + ( ( ( ((const U8*)s)[1] & 0xFE ) == 0xA2 ) ? 2 : 0 ) \ + : ( 0xA3 == ((const U8*)s)[0] ) ? \ + ( ( ( 0xAD == ((const U8*)s)[1] ) && ( 0x49 == ((const U8*)s)[2] ) ) ? 3 : 0 )\ + : ( 0xA6 == ((const U8*)s)[0] || 0xA8 == ((const U8*)s)[0] ) ? \ + ( ( ( 0xAD == ((const U8*)s)[1] ) && ( 0x51 == ((const U8*)s)[2] ) ) ? 3 : 0 )\ + : ( 0xAA == ((const U8*)s)[0] ) ? \ + ( ( ( 0x6A == ((const U8*)s)[1] ) && ( 0x95 == ((const U8*)s)[2] ) ) ? 3 : 0 )\ + : ( 0xB3 == ((const U8*)s)[0] ) ? \ + ( ( 0x53 == ((const U8*)s)[1] || 0x55 == ((const U8*)s)[1] ) ? \ + ( ( ( 0xB3 == ((const U8*)s)[2] ) && ( 0x67 == ((const U8*)s)[3] ) ) ? 4 : 0 )\ + : ( 0x58 == ((const U8*)s)[1] || 0x65 == ((const U8*)s)[1] ) ? \ + ( ( 0xAF == ((const U8*)s)[2] ) ? \ + ( ( 0x43 == ((const U8*)s)[3] ) ? 4 : 0 ) \ + : ( ( 0xB3 == ((const U8*)s)[2] ) && ( 0x67 == ((const U8*)s)[3] ) ) ? 4 : 0 )\ + : ( ( ( 0x67 == ((const U8*)s)[1] ) && ( 0xAF == ((const U8*)s)[2] ) ) && ( 0x43 == ((const U8*)s)[3] ) ) ? 4 : 0 )\ + : ( 0xB4 == ((const U8*)s)[0] ) ? \ + ( ( 0x42 == ((const U8*)s)[1] ) ? \ + ( ( ( 0xAD == ((const U8*)s)[2] ) && ( 0x5F == ((const U8*)s)[3] ) ) ? 4 : 0 )\ + : ( 0x46 == ((const U8*)s)[1] ) ? \ + ( ( 0xAD == ((const U8*)s)[2] ) ? \ + ( ( 0x5F == ((const U8*)s)[3] ) ? 4 : 0 ) \ + : ( ( 0xAF == ((const U8*)s)[2] ) && ( 0x43 == ((const U8*)s)[3] ) ) ? 4 : 0 )\ + : ( 0x4A == ((const U8*)s)[1] ) ? \ + ( ( 0xAF == ((const U8*)s)[2] ) ? \ + ( ( 0x43 == ((const U8*)s)[3] ) ? 4 : 0 ) \ + : ( ( 0xB3 == ((const U8*)s)[2] ) && ( 0x67 == ((const U8*)s)[3] ) ) ? 4 : 0 )\ + : ( ( ( 0x55 == ((const U8*)s)[1] ) && ( 0xB3 == ((const U8*)s)[2] ) ) && ( 0x67 == ((const U8*)s)[3] ) ) ? 4 : 0 )\ : 0 ) \ : ((e)-(s) > 2) ? \ - ( ( 0x81 == ((U8*)s)[0] ) ? \ - ( ( ( 0xAA == ((U8*)s)[1] ) && ( 0x71 == ((U8*)s)[2] ) ) ? 3 : 0 ) \ - : ( 0x86 == ((U8*)s)[0] ) ? \ - ( ( 0x86 == ((U8*)s)[1] ) ? \ - ( ( 0x89 == ((U8*)s)[2] || 0x93 == ((U8*)s)[2] ) ? 3 : 2 ) \ - : ( 0x89 == ((U8*)s)[1] || 0x93 == ((U8*)s)[1] ) ? 2 : 0 ) \ - : ( 0x88 == ((U8*)s)[0] ) ? \ - ( ( ( 0xAE == ((U8*)s)[1] ) && ( 0x58 == ((U8*)s)[2] ) ) ? 3 : 0 ) \ - : ( 0x89 == ((U8*)s)[0] ) ? \ - ( ( ( 0xAD == ((U8*)s)[1] ) && ( 0x48 == ((U8*)s)[2] ) ) ? 3 : 0 ) \ - : ( 0x91 == ((U8*)s)[0] ) ? \ - ( ( ( 0xAD == ((U8*)s)[1] ) && ( 0x53 == ((U8*)s)[2] ) ) ? 3 : 0 ) \ - : ( 0xA2 == ((U8*)s)[0] ) ? \ - ( ( ( ((U8*)s)[1] & 0xFE ) == 0xA2 ) ? 2 : 0 ) \ - : ( 0xA3 == ((U8*)s)[0] ) ? \ - ( ( ( 0xAD == ((U8*)s)[1] ) && ( 0x49 == ((U8*)s)[2] ) ) ? 3 : 0 ) \ - : ( 0xA6 == ((U8*)s)[0] || 0xA8 == ((U8*)s)[0] ) ? \ - ( ( ( 0xAD == ((U8*)s)[1] ) && ( 0x51 == ((U8*)s)[2] ) ) ? 3 : 0 ) \ - : ( ( ( 0xAA == ((U8*)s)[0] ) && ( 0x6A == ((U8*)s)[1] ) ) && ( 0x95 == ((U8*)s)[2] ) ) ? 3 : 0 )\ + ( ( 0x81 == ((const U8*)s)[0] ) ? \ + ( ( ( 0xAA == ((const U8*)s)[1] ) && ( 0x71 == ((const U8*)s)[2] ) ) ? 3 : 0 )\ + : ( 0x86 == ((const U8*)s)[0] ) ? \ + ( ( 0x86 == ((const U8*)s)[1] ) ? \ + ( ( 0x89 == ((const U8*)s)[2] || 0x93 == ((const U8*)s)[2] ) ? 3 : 2 )\ + : ( 0x89 == ((const U8*)s)[1] || 0x93 == ((const U8*)s)[1] ) ? 2 : 0 )\ + : ( 0x88 == ((const U8*)s)[0] ) ? \ + ( ( ( 0xAE == ((const U8*)s)[1] ) && ( 0x58 == ((const U8*)s)[2] ) ) ? 3 : 0 )\ + : ( 0x89 == ((const U8*)s)[0] ) ? \ + ( ( ( 0xAD == ((const U8*)s)[1] ) && ( 0x48 == ((const U8*)s)[2] ) ) ? 3 : 0 )\ + : ( 0x91 == ((const U8*)s)[0] ) ? \ + ( ( ( 0xAD == ((const U8*)s)[1] ) && ( 0x53 == ((const U8*)s)[2] ) ) ? 3 : 0 )\ + : ( 0xA2 == ((const U8*)s)[0] ) ? \ + ( ( ( ((const U8*)s)[1] & 0xFE ) == 0xA2 ) ? 2 : 0 ) \ + : ( 0xA3 == ((const U8*)s)[0] ) ? \ + ( ( ( 0xAD == ((const U8*)s)[1] ) && ( 0x49 == ((const U8*)s)[2] ) ) ? 3 : 0 )\ + : ( 0xA6 == ((const U8*)s)[0] || 0xA8 == ((const U8*)s)[0] ) ? \ + ( ( ( 0xAD == ((const U8*)s)[1] ) && ( 0x51 == ((const U8*)s)[2] ) ) ? 3 : 0 )\ + : ( ( ( 0xAA == ((const U8*)s)[0] ) && ( 0x6A == ((const U8*)s)[1] ) ) && ( 0x95 == ((const U8*)s)[2] ) ) ? 3 : 0 )\ : ((e)-(s) > 1) ? \ - ( ( 0x86 == ((U8*)s)[0] ) ? \ - ( ( 0x86 == ((U8*)s)[1] || 0x89 == ((U8*)s)[1] || 0x93 == ((U8*)s)[1] ) ? 2 : 0 )\ - : ( ( 0xA2 == ((U8*)s)[0] ) && ( ( ((U8*)s)[1] & 0xFE ) == 0xA2 ) ) ? 2 : 0 )\ + ( ( 0x86 == ((const U8*)s)[0] ) ? \ + ( ( 0x86 == ((const U8*)s)[1] || 0x89 == ((const U8*)s)[1] || 0x93 == ((const U8*)s)[1] ) ? 2 : 0 )\ + : ( ( 0xA2 == ((const U8*)s)[0] ) && ( ( ((const U8*)s)[1] & 0xFE ) == 0xA2 ) ) ? 2 : 0 )\ : 0 ) /*** GENERATED CODE ***/ #define is_MULTI_CHAR_FOLD_utf8_safe(s,e) \ ( ((e)-(s) > 5) ? \ - ( ( 0x81 == ((U8*)s)[0] ) ? \ - ( ( ( 0xAA == ((U8*)s)[1] ) && ( 0x71 == ((U8*)s)[2] ) ) ? 3 : 0 ) \ - : ( 0x86 == ((U8*)s)[0] ) ? \ - ( ( 0x86 == ((U8*)s)[1] ) ? \ - ( ( 0x89 == ((U8*)s)[2] || 0x93 == ((U8*)s)[2] ) ? 3 : 2 ) \ - : ( 0x89 == ((U8*)s)[1] || 0x93 == ((U8*)s)[1] ) ? 2 : 0 ) \ - : ( 0x88 == ((U8*)s)[0] ) ? \ - ( ( ( 0xAE == ((U8*)s)[1] ) && ( 0x58 == ((U8*)s)[2] ) ) ? 3 : 0 ) \ - : ( 0x89 == ((U8*)s)[0] ) ? \ - ( ( ( 0xAD == ((U8*)s)[1] ) && ( 0x48 == ((U8*)s)[2] ) ) ? 3 : 0 ) \ - : ( 0x8E == ((U8*)s)[0] ) ? \ - ( ( ( ( 0x72 == ((U8*)s)[1] ) && ( 0x8E == ((U8*)s)[2] ) ) && ( 0x72 == ((U8*)s)[3] ) ) ? 4 : 0 )\ - : ( 0x91 == ((U8*)s)[0] ) ? \ - ( ( ( 0xAD == ((U8*)s)[1] ) && ( 0x53 == ((U8*)s)[2] ) ) ? 3 : 0 ) \ - : ( 0xA2 == ((U8*)s)[0] ) ? \ - ( ( ( ((U8*)s)[1] & 0xFE ) == 0xA2 ) ? 2 : 0 ) \ - : ( 0xA3 == ((U8*)s)[0] ) ? \ - ( ( ( 0xAD == ((U8*)s)[1] ) && ( 0x49 == ((U8*)s)[2] ) ) ? 3 : 0 ) \ - : ( 0xA6 == ((U8*)s)[0] || 0xA8 == ((U8*)s)[0] ) ? \ - ( ( ( 0xAD == ((U8*)s)[1] ) && ( 0x51 == ((U8*)s)[2] ) ) ? 3 : 0 ) \ - : ( 0xAA == ((U8*)s)[0] ) ? \ - ( ( ( 0x6A == ((U8*)s)[1] ) && ( 0x95 == ((U8*)s)[2] ) ) ? 3 : 0 ) \ - : ( 0xB3 == ((U8*)s)[0] ) ? \ - ( ( 0x53 == ((U8*)s)[1] || 0x55 == ((U8*)s)[1] ) ? \ - ( ( ( 0xB3 == ((U8*)s)[2] ) && ( 0x67 == ((U8*)s)[3] ) ) ? 4 : 0 )\ - : ( 0x58 == ((U8*)s)[1] || 0x65 == ((U8*)s)[1] ) ? \ - ( ( 0xAF == ((U8*)s)[2] ) ? \ - ( ( 0x43 == ((U8*)s)[3] ) ? \ - ( ( ( 0xB3 == ((U8*)s)[4] ) && ( 0x67 == ((U8*)s)[5] ) ) ? 6 : 4 )\ - : 0 ) \ - : ( ( 0xB3 == ((U8*)s)[2] ) && ( 0x67 == ((U8*)s)[3] ) ) ? 4 : 0 )\ - : ( 0x67 == ((U8*)s)[1] ) ? \ - ( ( 0xAD == ((U8*)s)[2] ) ? \ - ( ( 0x49 == ((U8*)s)[3] ) ? \ - ( ( 0xAD == ((U8*)s)[4] ) ? \ - ( ( 0x41 == ((U8*)s)[5] || 0x42 == ((U8*)s)[5] ) ? 6 : 0 )\ - : ( ( 0xAF == ((U8*)s)[4] ) && ( 0x43 == ((U8*)s)[5] ) ) ? 6 : 0 )\ - : 0 ) \ - : ( ( 0xAF == ((U8*)s)[2] ) && ( 0x43 == ((U8*)s)[3] ) ) ? 4 : 0 )\ - : 0 ) \ - : ( 0xB4 == ((U8*)s)[0] ) ? \ - ( ( 0x42 == ((U8*)s)[1] ) ? \ - ( ( ( 0xAD == ((U8*)s)[2] ) && ( 0x5F == ((U8*)s)[3] ) ) ? 4 : 0 )\ - : ( 0x46 == ((U8*)s)[1] ) ? \ - ( ( 0xAD == ((U8*)s)[2] ) ? \ - ( ( 0x49 == ((U8*)s)[3] ) ? \ - ( ( 0xAD == ((U8*)s)[4] ) ? \ - ( ( 0x41 == ((U8*)s)[5] || 0x42 == ((U8*)s)[5] ) ? 6 : 0 )\ - : ( ( 0xAF == ((U8*)s)[4] ) && ( 0x43 == ((U8*)s)[5] ) ) ? 6 : 0 )\ - : ( 0x5F == ((U8*)s)[3] ) ? \ - ( ( 0xAD == ((U8*)s)[4] ) ? \ - ( ( 0x41 == ((U8*)s)[5] || 0x42 == ((U8*)s)[5] ) ? 6 : 4 )\ - : ( ( 0xAF == ((U8*)s)[4] ) && ( 0x43 == ((U8*)s)[5] ) ) ? 6 : 4 )\ - : 0 ) \ - : ( ( 0xAF == ((U8*)s)[2] ) && ( 0x43 == ((U8*)s)[3] ) ) ? 4 : 0 )\ - : ( 0x4A == ((U8*)s)[1] ) ? \ - ( ( 0xAF == ((U8*)s)[2] ) ? \ - ( ( 0x43 == ((U8*)s)[3] ) ? \ - ( ( ( 0xB3 == ((U8*)s)[4] ) && ( 0x67 == ((U8*)s)[5] ) ) ? 6 : 4 )\ - : 0 ) \ - : ( ( 0xB3 == ((U8*)s)[2] ) && ( 0x67 == ((U8*)s)[3] ) ) ? 4 : 0 )\ - : ( ( ( 0x55 == ((U8*)s)[1] ) && ( 0xB3 == ((U8*)s)[2] ) ) && ( 0x67 == ((U8*)s)[3] ) ) ? 4 : 0 )\ - : ( 0xB7 == ((U8*)s)[0] ) ? \ - ( ( 0x52 == ((U8*)s)[1] ) ? \ - ( ( 0x46 == ((U8*)s)[2] ) ? \ - ( ( ( ( 0xB7 == ((U8*)s)[3] ) && ( 0x53 == ((U8*)s)[4] ) ) && ( 0x43 == ((U8*)s)[5] ) ) ? 6 : 0 )\ - : ( 0x62 == ((U8*)s)[2] ) ? \ - ( ( ( ( 0xB7 == ((U8*)s)[3] ) && ( 0x52 == ((U8*)s)[4] ) ) && ( 0x46 == ((U8*)s)[5] || 0x52 == ((U8*)s)[5] || 0x54 == ((U8*)s)[5] || 0x64 == ((U8*)s)[5] ) ) ? 6 : 0 )\ - : ( ( ( ( 0x71 == ((U8*)s)[2] ) && ( 0xB7 == ((U8*)s)[3] ) ) && ( 0x52 == ((U8*)s)[4] ) ) && ( 0x64 == ((U8*)s)[5] ) ) ? 6 : 0 )\ - : 0 ) \ - : ( 0xBF == ((U8*)s)[0] ) ? \ - ( ( ( ((U8*)s)[1] & 0xFE ) == 0x66 ) ? \ - ( ( ( ( 0x41 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x48 ) && ( 0xB3 == ((U8*)s)[3] ) ) && ( 0x67 == ((U8*)s)[4] ) ) ? 5 : 0 )\ - : ( ( ( ( 0x69 == ((U8*)s)[1] ) && ( ( 0x41 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x48 ) || 0x57 == ((U8*)s)[2] || 0x62 == ((U8*)s)[2] || 0x6A == ((U8*)s)[2] ) ) && ( 0xB3 == ((U8*)s)[3] ) ) && ( 0x67 == ((U8*)s)[4] ) ) ? 5 : 0 )\ - : 0 ) \ -: ((e)-(s) > 4) ? is_MULTI_CHAR_FOLD_utf8_safe_part0(s,e) : is_MULTI_CHAR_FOLD_utf8_safe_part1(s,e) ) + ( ( 0x81 == ((const U8*)s)[0] ) ? \ + ( ( ( 0xAA == ((const U8*)s)[1] ) && ( 0x71 == ((const U8*)s)[2] ) ) ? 3 : 0 )\ + : ( 0x86 == ((const U8*)s)[0] ) ? is_MULTI_CHAR_FOLD_utf8_safe_part0(s,e) : is_MULTI_CHAR_FOLD_utf8_safe_part1(s,e) )\ +: ((e)-(s) > 4) ? is_MULTI_CHAR_FOLD_utf8_safe_part2(s,e) : is_MULTI_CHAR_FOLD_utf8_safe_part3(s,e) ) /* MULTI_CHAR_FOLD: multi-char strings that are folded to by a single character @@ -1703,15 +1705,15 @@ /*** GENERATED CODE ***/ #define is_MULTI_CHAR_FOLD_latin1_safe(s,e) \ ( ((e)-(s) > 2) ? \ - ( ( ( ((U8*)s)[0] & 0xBF ) == 0x86 ) ? \ - ( ( ( ((U8*)s)[1] & 0xBF ) == 0x86 ) ? \ - ( ( ( ( ((U8*)s)[2] & 0xBF ) == 0x89 ) || ( ( ((U8*)s)[2] & 0xBF ) == 0x93 ) ) ? 3 : 2 )\ - : ( ( ( ((U8*)s)[1] & 0xBF ) == 0x89 ) || ( ( ((U8*)s)[1] & 0xBF ) == 0x93 ) ) ? 2 : 0 )\ - : ( ( ( ((U8*)s)[0] & 0xBF ) == 0xA2 ) && ( ( ((U8*)s)[1] & 0xBE ) == 0xA2 ) ) ? 2 : 0 )\ + ( ( ( ((const U8*)s)[0] & 0xBF ) == 0x86 ) ? \ + ( ( ( ((const U8*)s)[1] & 0xBF ) == 0x86 ) ? \ + ( ( ( ( ((const U8*)s)[2] & 0xBF ) == 0x89 ) || ( ( ((const U8*)s)[2] & 0xBF ) == 0x93 ) ) ? 3 : 2 )\ + : ( ( ( ((const U8*)s)[1] & 0xBF ) == 0x89 ) || ( ( ((const U8*)s)[1] & 0xBF ) == 0x93 ) ) ? 2 : 0 )\ + : ( ( ( ((const U8*)s)[0] & 0xBF ) == 0xA2 ) && ( ( ((const U8*)s)[1] & 0xBE ) == 0xA2 ) ) ? 2 : 0 )\ : ((e)-(s) > 1) ? \ - ( ( ( ((U8*)s)[0] & 0xBF ) == 0x86 ) ? \ - ( ( ( ( ((U8*)s)[1] & 0xBF ) == 0x86 ) || ( ( ((U8*)s)[1] & 0xBF ) == 0x89 ) || ( ( ((U8*)s)[1] & 0xBF ) == 0x93 ) ) ? 2 : 0 )\ - : ( ( ( ((U8*)s)[0] & 0xBF ) == 0xA2 ) && ( ( ((U8*)s)[1] & 0xBE ) == 0xA2 ) ) ? 2 : 0 )\ + ( ( ( ((const U8*)s)[0] & 0xBF ) == 0x86 ) ? \ + ( ( ( ( ((const U8*)s)[1] & 0xBF ) == 0x86 ) || ( ( ((const U8*)s)[1] & 0xBF ) == 0x89 ) || ( ( ((const U8*)s)[1] & 0xBF ) == 0x93 ) ) ? 2 : 0 )\ + : ( ( ( ((const U8*)s)[0] & 0xBF ) == 0xA2 ) && ( ( ((const U8*)s)[1] & 0xBE ) == 0xA2 ) ) ? 2 : 0 )\ : 0 ) /* @@ -1721,27 +1723,27 @@ */ /*** GENERATED CODE ***/ #define is_FOLDS_TO_MULTI_utf8(s) \ -( ( 0x80 == ((U8*)s)[0] ) ? \ - ( ( 0x72 == ((U8*)s)[1] ) ? 2 : 0 ) \ -: ( 0x8C == ((U8*)s)[0] || 0x9B == ((U8*)s)[0] || ( ((U8*)s)[0] & 0xFE ) == 0xB2 ) ?\ - ( ( 0x57 == ((U8*)s)[1] ) ? 2 : 0 ) \ -: ( 0x8D == ((U8*)s)[0] ) ? \ - ( ( 0x4A == ((U8*)s)[1] ) ? 2 : 0 ) \ -: ( 0xB7 == ((U8*)s)[0] ) ? \ - ( ( ( 0x53 == ((U8*)s)[1] ) && ( 0x48 == ((U8*)s)[2] ) ) ? 3 : 0 ) \ -: ( 0xBF == ((U8*)s)[0] ) ? \ - ( ( 0x62 == ((U8*)s)[1] ) ? \ - ( ( ( 0x64 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x68 ) || 0x71 == ((U8*)s)[2] ) ? 3 : 0 )\ - : ( 0x68 == ((U8*)s)[1] ) ? \ - ( ( 0x57 == ((U8*)s)[2] || 0x59 == ((U8*)s)[2] || 0x62 == ((U8*)s)[2] || 0x64 == ((U8*)s)[2] ) ? 3 : 0 )\ - : ( 0x6A == ((U8*)s)[1] ) ? \ - ( ( ( 0x41 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x4A ) || ( 0x51 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x59 ) || 0x5F == ((U8*)s)[2] || ( 0x62 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x6A ) || ( 0x70 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x72 ) ) ? 3 : 0 )\ - : ( 0x70 == ((U8*)s)[1] ) ? \ - ( ( ( 0x41 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x4A ) || ( 0x51 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x56 ) || 0x59 == ((U8*)s)[2] || 0x5F == ((U8*)s)[2] || 0x62 == ((U8*)s)[2] || ( ((U8*)s)[2] & 0xFE ) == 0x64 || 0x6A == ((U8*)s)[2] ) ? 3 : 0 )\ - : ( 0x71 == ((U8*)s)[1] ) ? \ - ( ( ( ( ((U8*)s)[2] & 0xFB ) == 0x43 ) || ( ( ((U8*)s)[2] & 0xDE ) == 0x44 ) || ((U8*)s)[2] == 0x48 || ((U8*)s)[2] == 0x53 || ((U8*)s)[2] == 0x59 || ((U8*)s)[2] == 0x5F ) ? 3 : 0 )\ - : ( ( 0x72 == ((U8*)s)[1] ) && ( ( ( ((U8*)s)[2] & 0xFB ) == 0x43 ) || ( ( ((U8*)s)[2] & 0xDE ) == 0x44 ) || ((U8*)s)[2] == 0x48 || ((U8*)s)[2] == 0x59 || ((U8*)s)[2] == 0x5F || ( ( ((U8*)s)[2] & 0xF7 ) == 0x62 ) ) ) ? 3 : 0 )\ -: ( ( ( ( 0xDD == ((U8*)s)[0] ) && ( 0x71 == ((U8*)s)[1] ) ) && ( 0x66 == ((U8*)s)[2] ) ) && ( ( 0x41 <= ((U8*)s)[3] && ((U8*)s)[3] <= 0x47 ) || 0x5F == ((U8*)s)[3] || ( 0x62 <= ((U8*)s)[3] && ((U8*)s)[3] <= 0x65 ) ) ) ? 4 : 0 ) +( ( 0x80 == ((const U8*)s)[0] ) ? \ + ( ( 0x72 == ((const U8*)s)[1] ) ? 2 : 0 ) \ +: ( 0x8C == ((const U8*)s)[0] || 0x9B == ((const U8*)s)[0] || ( ((const U8*)s)[0] & 0xFE ) == 0xB2 ) ?\ + ( ( 0x57 == ((const U8*)s)[1] ) ? 2 : 0 ) \ +: ( 0x8D == ((const U8*)s)[0] ) ? \ + ( ( 0x4A == ((const U8*)s)[1] ) ? 2 : 0 ) \ +: ( 0xB7 == ((const U8*)s)[0] ) ? \ + ( ( ( 0x53 == ((const U8*)s)[1] ) && ( 0x48 == ((const U8*)s)[2] ) ) ? 3 : 0 )\ +: ( 0xBF == ((const U8*)s)[0] ) ? \ + ( ( 0x62 == ((const U8*)s)[1] ) ? \ + ( ( ( 0x64 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x68 ) || 0x71 == ((const U8*)s)[2] ) ? 3 : 0 )\ + : ( 0x68 == ((const U8*)s)[1] ) ? \ + ( ( 0x57 == ((const U8*)s)[2] || 0x59 == ((const U8*)s)[2] || 0x62 == ((const U8*)s)[2] || 0x64 == ((const U8*)s)[2] ) ? 3 : 0 )\ + : ( 0x6A == ((const U8*)s)[1] ) ? \ + ( ( ( 0x41 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x59 ) || 0x5F == ((const U8*)s)[2] || ( 0x62 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x72 ) ) ? 3 : 0 )\ + : ( 0x70 == ((const U8*)s)[1] ) ? \ + ( ( ( 0x41 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x56 ) || 0x59 == ((const U8*)s)[2] || 0x5F == ((const U8*)s)[2] || 0x62 == ((const U8*)s)[2] || ( ((const U8*)s)[2] & 0xFE ) == 0x64 || 0x6A == ((const U8*)s)[2] ) ? 3 : 0 )\ + : ( 0x71 == ((const U8*)s)[1] ) ? \ + ( ( ( ( ((const U8*)s)[2] & 0xFB ) == 0x43 ) || ( ( ((const U8*)s)[2] & 0xDE ) == 0x44 ) || ((const U8*)s)[2] == 0x48 || ((const U8*)s)[2] == 0x53 || ((const U8*)s)[2] == 0x59 || ((const U8*)s)[2] == 0x5F ) ? 3 : 0 )\ + : ( ( 0x72 == ((const U8*)s)[1] ) && ( ( ( ((const U8*)s)[2] & 0xFB ) == 0x43 ) || ( ( ((const U8*)s)[2] & 0xDE ) == 0x44 ) || ((const U8*)s)[2] == 0x48 || ((const U8*)s)[2] == 0x59 || ((const U8*)s)[2] == 0x5F || ( ( ((const U8*)s)[2] & 0xF7 ) == 0x62 ) ) ) ? 3 : 0 )\ +: ( ( ( ( 0xDD == ((const U8*)s)[0] ) && ( 0x71 == ((const U8*)s)[1] ) ) && ( 0x66 == ((const U8*)s)[2] ) ) && ( ( 0x41 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x47 ) || 0x5F == ((const U8*)s)[3] || ( 0x62 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x65 ) ) ) ? 4 : 0 ) /* PROBLEMATIC_LOCALE_FOLD: characters whose fold is problematic under locale @@ -1750,22 +1752,22 @@ */ /*** GENERATED CODE ***/ #define is_PROBLEMATIC_LOCALE_FOLD_utf8(s) \ -( ( ( ( ((U8*)s)[0] & 0xC0 ) == 0x00 ) || ( ( ((U8*)s)[0] & 0xEF ) == 0x40 ) || ( ( ((U8*)s)[0] & 0xDF ) == 0x4B ) || ( ( ((U8*)s)[0] & 0xFC ) == 0x4C ) || ( ( ((U8*)s)[0] & 0xDE ) == 0x5A ) || ( ( ((U8*)s)[0] & 0xFE ) == 0x5C ) || ((U8*)s)[0] == 0x5E || ( ( ((U8*)s)[0] & 0xFE ) == 0x60 ) || ( ( ((U8*)s)[0] & 0xEC ) == 0x6C ) || ((U8*)s)[0] == 0x79 || ( ( ((U8*)s)[0] & 0xEF ) == 0x81 ) || ( ( ((U8*)s)[0] & 0xEE ) == 0x82 ) || ( ( ((U8*)s)[0] & 0xEC ) == 0x84 ) || ( ( ((U8*)s)[0] & 0xEE ) == 0x88 ) || ((U8*)s)[0] == 0xA1 || ( ( ((U8*)s)[0] & 0xBE ) == 0xA2 ) || ( ( ((U8*)s)[0] & 0xBC ) == 0xA4 ) || ( ( ((U8*)s)[0] & 0xFE ) == 0xA8 ) || ((U8*)s)[0] == 0xB0 || ( ( ((U8*)s)[0] & 0xFE ) == 0xBA ) || ( ( ((U8*)s)[0] & 0xE8 ) == 0xC0 ) || ( ( ((U8*)s)[0] & 0xCE ) == 0xC8 ) || ((U8*)s)[0] == 0xE0 || ( ( ((U8*)s)[0] & 0xF8 ) == 0xF0 ) || ((U8*)s)[0] == 0xFF ) ? 1\ -: ( 0x78 == ((U8*)s)[0] || 0x80 == ((U8*)s)[0] || 0x8A == ((U8*)s)[0] ) ? \ - ( ( ( 0x41 <= ((U8*)s)[1] && ((U8*)s)[1] <= 0x4A ) || ( 0x51 <= ((U8*)s)[1] && ((U8*)s)[1] <= 0x59 ) || 0x5F == ((U8*)s)[1] || ( 0x62 <= ((U8*)s)[1] && ((U8*)s)[1] <= 0x6A ) || ( 0x70 <= ((U8*)s)[1] && ((U8*)s)[1] <= 0x72 ) ) ? 2 : 0 )\ -: ( 0x8C == ((U8*)s)[0] || 0x9B == ((U8*)s)[0] ) ? \ - ( ( 0x57 == ((U8*)s)[1] ) ? 2 : 0 ) \ -: ( 0x8D == ((U8*)s)[0] ) ? \ - ( ( 0x4A == ((U8*)s)[1] ) ? 2 : 0 ) \ -: ( 0x8E == ((U8*)s)[0] ) ? \ - ( ( 0x66 == ((U8*)s)[1] || 0x72 == ((U8*)s)[1] ) ? 2 : 0 ) \ -: ( ( ((U8*)s)[0] & 0xFE ) == 0xB2 ) ? \ - ( ( 0x6A == ((U8*)s)[1] ) ? 2 : 0 ) \ -: ( 0xBF == ((U8*)s)[0] ) ? \ - ( ( ( 0x62 == ((U8*)s)[1] ) && ( ( 0x64 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x68 ) || 0x71 == ((U8*)s)[2] ) ) ? 3 : 0 )\ -: ( 0xCA == ((U8*)s)[0] ) ? \ - ( ( ( 0x4A == ((U8*)s)[1] ) && ( 0x51 == ((U8*)s)[2] || 0x52 == ((U8*)s)[2] ) ) ? 3 : 0 )\ -: ( ( ( ( 0xDD == ((U8*)s)[0] ) && ( 0x71 == ((U8*)s)[1] ) ) && ( 0x66 == ((U8*)s)[2] ) ) && ( 0x41 <= ((U8*)s)[3] && ((U8*)s)[3] <= 0x47 ) ) ? 4 : 0 ) +( ( ( ( ((const U8*)s)[0] & 0xC0 ) == 0x00 ) || ( ( ((const U8*)s)[0] & 0xEF ) == 0x40 ) || ( ( ((const U8*)s)[0] & 0xDF ) == 0x4B ) || ( ( ((const U8*)s)[0] & 0xFC ) == 0x4C ) || ( ( ((const U8*)s)[0] & 0xDE ) == 0x5A ) || ( ( ((const U8*)s)[0] & 0xFE ) == 0x5C ) || ((const U8*)s)[0] == 0x5E || ( ( ((const U8*)s)[0] & 0xFE ) == 0x60 ) || ( ( ((const U8*)s)[0] & 0xEC ) == 0x6C ) || ((const U8*)s)[0] == 0x79 || ( ( ((const U8*)s)[0] & 0xEF ) == 0x81 ) || ( ( ((const U8*)s)[0] & 0xEE ) == 0x82 ) || ( ( ((const U8*)s)[0] & 0xEC ) == 0x84 ) || ( ( ((const U8*)s)[0] & 0xEE ) == 0x88 ) || ((const U8*)s)[0] == 0xA1 || ( ( ((const U8*)s)[0] & 0xBE ) == 0xA2 ) || ( ( ((const U8*)s)[0] & 0xBC ) == 0xA4 ) || ( ( ((const U8*)s)[0] & 0xFE ) == 0xA8 ) || ((const U8*)s)[0] == 0xB0 || ( ( ((const U8*)s)[0] & 0xFE ) == 0xBA ) || ( ( ((const U8*)s)[0] & 0xE8 ) == 0xC0 ) || ( ( ((const U8*)s)[0] & 0xCE ) == 0xC8 ) || ((const U8*)s)[0] == 0xE0 || ( ( ((const U8*)s)[0] & 0xF8 ) == 0xF0 ) || ((const U8*)s)[0] == 0xFF ) ? 1\ +: ( 0x78 == ((const U8*)s)[0] || 0x80 == ((const U8*)s)[0] || 0x8A == ((const U8*)s)[0] ) ?\ + ( ( ( 0x41 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x59 ) || 0x5F == ((const U8*)s)[1] || ( 0x62 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x72 ) ) ? 2 : 0 )\ +: ( 0x8C == ((const U8*)s)[0] || 0x9B == ((const U8*)s)[0] ) ? \ + ( ( 0x57 == ((const U8*)s)[1] ) ? 2 : 0 ) \ +: ( 0x8D == ((const U8*)s)[0] ) ? \ + ( ( 0x4A == ((const U8*)s)[1] ) ? 2 : 0 ) \ +: ( 0x8E == ((const U8*)s)[0] ) ? \ + ( ( 0x66 == ((const U8*)s)[1] || 0x72 == ((const U8*)s)[1] ) ? 2 : 0 ) \ +: ( ( ((const U8*)s)[0] & 0xFE ) == 0xB2 ) ? \ + ( ( 0x6A == ((const U8*)s)[1] ) ? 2 : 0 ) \ +: ( 0xBF == ((const U8*)s)[0] ) ? \ + ( ( ( 0x62 == ((const U8*)s)[1] ) && ( ( 0x64 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x68 ) || 0x71 == ((const U8*)s)[2] ) ) ? 3 : 0 )\ +: ( 0xCA == ((const U8*)s)[0] ) ? \ + ( ( ( 0x4A == ((const U8*)s)[1] ) && ( 0x51 == ((const U8*)s)[2] || 0x52 == ((const U8*)s)[2] ) ) ? 3 : 0 )\ +: ( ( ( ( 0xDD == ((const U8*)s)[0] ) && ( 0x71 == ((const U8*)s)[1] ) ) && ( 0x66 == ((const U8*)s)[2] ) ) && ( 0x41 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x47 ) ) ? 4 : 0 ) /*** GENERATED CODE ***/ #define is_PROBLEMATIC_LOCALE_FOLD_cp(cp) \ @@ -1789,22 +1791,22 @@ */ /*** GENERATED CODE ***/ #define is_PROBLEMATIC_LOCALE_FOLDEDS_START_utf8(s) \ -( ( ( ( ((U8*)s)[0] & 0xC0 ) == 0x00 ) || ( ( ((U8*)s)[0] & 0xEF ) == 0x40 ) || ( ( ((U8*)s)[0] & 0xDF ) == 0x4B ) || ( ( ((U8*)s)[0] & 0xFC ) == 0x4C ) || ( ( ((U8*)s)[0] & 0xDE ) == 0x5A ) || ( ( ((U8*)s)[0] & 0xFE ) == 0x5C ) || ((U8*)s)[0] == 0x5E || ( ( ((U8*)s)[0] & 0xFE ) == 0x60 ) || ( ( ((U8*)s)[0] & 0xEC ) == 0x6C ) || ((U8*)s)[0] == 0x79 || ( ( ((U8*)s)[0] & 0xEF ) == 0x81 ) || ( ( ((U8*)s)[0] & 0xEE ) == 0x82 ) || ( ( ((U8*)s)[0] & 0xEC ) == 0x84 ) || ( ( ((U8*)s)[0] & 0xEE ) == 0x88 ) || ((U8*)s)[0] == 0xA1 || ( ( ((U8*)s)[0] & 0xBE ) == 0xA2 ) || ( ( ((U8*)s)[0] & 0xBC ) == 0xA4 ) || ( ( ((U8*)s)[0] & 0xFE ) == 0xA8 ) || ((U8*)s)[0] == 0xB0 || ( ( ((U8*)s)[0] & 0xFE ) == 0xBA ) || ( ( ((U8*)s)[0] & 0xE8 ) == 0xC0 ) || ( ( ((U8*)s)[0] & 0xCE ) == 0xC8 ) || ((U8*)s)[0] == 0xE0 || ( ( ((U8*)s)[0] & 0xF8 ) == 0xF0 ) || ((U8*)s)[0] == 0xFF ) ? 1\ -: ( 0x78 == ((U8*)s)[0] || 0x80 == ((U8*)s)[0] || 0x8A == ((U8*)s)[0] ) ? \ - ( ( ( 0x41 <= ((U8*)s)[1] && ((U8*)s)[1] <= 0x4A ) || ( 0x51 <= ((U8*)s)[1] && ((U8*)s)[1] <= 0x59 ) || 0x5F == ((U8*)s)[1] || ( 0x62 <= ((U8*)s)[1] && ((U8*)s)[1] <= 0x6A ) || ( 0x70 <= ((U8*)s)[1] && ((U8*)s)[1] <= 0x72 ) ) ? 2 : 0 )\ -: ( 0x8C == ((U8*)s)[0] || 0x9B == ((U8*)s)[0] ) ? \ - ( ( 0x57 == ((U8*)s)[1] ) ? 2 : 0 ) \ -: ( 0x8D == ((U8*)s)[0] ) ? \ - ( ( 0x4A == ((U8*)s)[1] ) ? 2 : 0 ) \ -: ( 0x8E == ((U8*)s)[0] ) ? \ - ( ( 0x66 == ((U8*)s)[1] || 0x72 == ((U8*)s)[1] ) ? 2 : 0 ) \ -: ( 0xAA == ((U8*)s)[0] || ( ((U8*)s)[0] & 0xFE ) == 0xB2 ) ? \ - ( ( 0x6A == ((U8*)s)[1] ) ? 2 : 0 ) \ -: ( 0xBF == ((U8*)s)[0] ) ? \ - ( ( ( 0x62 == ((U8*)s)[1] ) && ( ( 0x64 <= ((U8*)s)[2] && ((U8*)s)[2] <= 0x68 ) || 0x71 == ((U8*)s)[2] ) ) ? 3 : 0 )\ -: ( 0xCA == ((U8*)s)[0] ) ? \ - ( ( ( 0x4A == ((U8*)s)[1] ) && ( 0x51 == ((U8*)s)[2] || 0x52 == ((U8*)s)[2] ) ) ? 3 : 0 )\ -: ( ( ( ( 0xDD == ((U8*)s)[0] ) && ( 0x71 == ((U8*)s)[1] ) ) && ( 0x66 == ((U8*)s)[2] ) ) && ( 0x41 <= ((U8*)s)[3] && ((U8*)s)[3] <= 0x47 ) ) ? 4 : 0 ) +( ( ( ( ((const U8*)s)[0] & 0xC0 ) == 0x00 ) || ( ( ((const U8*)s)[0] & 0xEF ) == 0x40 ) || ( ( ((const U8*)s)[0] & 0xDF ) == 0x4B ) || ( ( ((const U8*)s)[0] & 0xFC ) == 0x4C ) || ( ( ((const U8*)s)[0] & 0xDE ) == 0x5A ) || ( ( ((const U8*)s)[0] & 0xFE ) == 0x5C ) || ((const U8*)s)[0] == 0x5E || ( ( ((const U8*)s)[0] & 0xFE ) == 0x60 ) || ( ( ((const U8*)s)[0] & 0xEC ) == 0x6C ) || ((const U8*)s)[0] == 0x79 || ( ( ((const U8*)s)[0] & 0xEF ) == 0x81 ) || ( ( ((const U8*)s)[0] & 0xEE ) == 0x82 ) || ( ( ((const U8*)s)[0] & 0xEC ) == 0x84 ) || ( ( ((const U8*)s)[0] & 0xEE ) == 0x88 ) || ((const U8*)s)[0] == 0xA1 || ( ( ((const U8*)s)[0] & 0xBE ) == 0xA2 ) || ( ( ((const U8*)s)[0] & 0xBC ) == 0xA4 ) || ( ( ((const U8*)s)[0] & 0xFE ) == 0xA8 ) || ((const U8*)s)[0] == 0xB0 || ( ( ((const U8*)s)[0] & 0xFE ) == 0xBA ) || ( ( ((const U8*)s)[0] & 0xE8 ) == 0xC0 ) || ( ( ((const U8*)s)[0] & 0xCE ) == 0xC8 ) || ((const U8*)s)[0] == 0xE0 || ( ( ((const U8*)s)[0] & 0xF8 ) == 0xF0 ) || ((const U8*)s)[0] == 0xFF ) ? 1\ +: ( 0x78 == ((const U8*)s)[0] || 0x80 == ((const U8*)s)[0] || 0x8A == ((const U8*)s)[0] ) ?\ + ( ( ( 0x41 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x59 ) || 0x5F == ((const U8*)s)[1] || ( 0x62 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x72 ) ) ? 2 : 0 )\ +: ( 0x8C == ((const U8*)s)[0] || 0x9B == ((const U8*)s)[0] ) ? \ + ( ( 0x57 == ((const U8*)s)[1] ) ? 2 : 0 ) \ +: ( 0x8D == ((const U8*)s)[0] ) ? \ + ( ( 0x4A == ((const U8*)s)[1] ) ? 2 : 0 ) \ +: ( 0x8E == ((const U8*)s)[0] ) ? \ + ( ( 0x66 == ((const U8*)s)[1] || 0x72 == ((const U8*)s)[1] ) ? 2 : 0 ) \ +: ( 0xAA == ((const U8*)s)[0] || ( ((const U8*)s)[0] & 0xFE ) == 0xB2 ) ? \ + ( ( 0x6A == ((const U8*)s)[1] ) ? 2 : 0 ) \ +: ( 0xBF == ((const U8*)s)[0] ) ? \ + ( ( ( 0x62 == ((const U8*)s)[1] ) && ( ( 0x64 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x68 ) || 0x71 == ((const U8*)s)[2] ) ) ? 3 : 0 )\ +: ( 0xCA == ((const U8*)s)[0] ) ? \ + ( ( ( 0x4A == ((const U8*)s)[1] ) && ( 0x51 == ((const U8*)s)[2] || 0x52 == ((const U8*)s)[2] ) ) ? 3 : 0 )\ +: ( ( ( ( 0xDD == ((const U8*)s)[0] ) && ( 0x71 == ((const U8*)s)[1] ) ) && ( 0x66 == ((const U8*)s)[2] ) ) && ( 0x41 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x47 ) ) ? 4 : 0 ) /*** GENERATED CODE ***/ #define is_PROBLEMATIC_LOCALE_FOLDEDS_START_cp(cp) \ @@ -1830,10 +1832,10 @@ /*** GENERATED CODE ***/ #define is_PATWS_safe(s,e,is_utf8) \ ( ( LIKELY((e) > (s)) ) ? \ - ( ( ( ( ((U8*)s)[0] & 0xEF ) == 0x05 ) || ((U8*)s)[0] == 0x0B || ( ( ((U8*)s)[0] & 0xFE ) == 0x0C ) || ((U8*)s)[0] == 0x25 || ((U8*)s)[0] == 0x40 ) ? 1\ - : ( ( is_utf8 && LIKELY(((e) - (s)) >= UTF8SKIP(s)) ) && ( 0xCA == ((U8*)s)[0] ) ) ? ( ( 0x41 == ((U8*)s)[1] ) ?\ - ( ( 0x55 == ((U8*)s)[2] || 0x56 == ((U8*)s)[2] ) ? 3 : 0 )\ - : ( ( 0x42 == ((U8*)s)[1] ) && ( 0x49 == ((U8*)s)[2] || 0x4A == ((U8*)s)[2] ) ) ? 3 : 0 ) : 0 )\ + ( ( ( ( ((const U8*)s)[0] & 0xEF ) == 0x05 ) || ((const U8*)s)[0] == 0x0B || ( ( ((const U8*)s)[0] & 0xFE ) == 0x0C ) || ((const U8*)s)[0] == 0x25 || ((const U8*)s)[0] == 0x40 ) ? 1\ + : ( ( is_utf8 && LIKELY(((e) - (s)) >= UTF8SKIP(s)) ) && ( 0xCA == ((const U8*)s)[0] ) ) ? ( ( 0x41 == ((const U8*)s)[1] ) ?\ + ( ( 0x55 == ((const U8*)s)[2] || 0x56 == ((const U8*)s)[2] ) ? 3 : 0 )\ + : ( ( 0x42 == ((const U8*)s)[1] ) && ( 0x49 == ((const U8*)s)[2] || 0x4A == ((const U8*)s)[2] ) ) ? 3 : 0 ) : 0 )\ : 0 ) /*** GENERATED CODE ***/ @@ -1852,52 +1854,52 @@ #endif /* H_REGCHARCLASS */ /* Generated from: - * cb3170dd603ad12ba0299440e99e8f50a8afde60ade2ffcbf1ff4a8a53854b90 lib/Unicode/UCD.pm - * ae98bec7e4f0564758eed81eca5015481ba32581f8a735a825b71b3bba714450 lib/unicore/ArabicShaping.txt - * 1687fe5994eb7e5c0dab8503fc2a1b3b479d91af9d3b8055941c9bd791f7d0b5 lib/unicore/BidiBrackets.txt - * 350d1302116194b0b21def287434b55c5088098fbc726e879f7420a391965643 lib/unicore/BidiMirroring.txt - * 288fc7b85c76bda296e296c8465f1f4baeb456cb814430dfaa0f546bfbe86b4a lib/unicore/Blocks.txt - * 86e075f2ede997b3fa5965516c75190b5a88bb82d302272d9c3179b7a57af03f lib/unicore/CaseFolding.txt - * 2fafee5be73bf2817ee669c53c504a6c4aa02ac7344194af18511aea2e05d750 lib/unicore/CompositionExclusions.txt - * 302f6d6171dc9c6165db86d0226b7923a64cea06c493d339d35436bf137606a3 lib/unicore/DAge.txt - * ff666dece87dfdbdbf04a2e26a0bfb52c4ba98db1f8965b0b01ddb9e15f97476 lib/unicore/DCoreProperties.txt - * 6cc76100d402d7dd12bd769ac61158b91e71aad58c8333abb848f1b9c9fdde2d lib/unicore/DNormalizationProps.txt - * ccc571829b384b8a2c24b7a62f8aa6a891a6e8c48f08513ef84fd6da26dba4bb lib/unicore/EastAsianWidth.txt - * 2320db06cf88c755ec7b9cfec96dd9e1d774173521dbc3ee7985377c2ab90d32 lib/unicore/HangulSyllableType.txt - * e52216b5fdb04910e06e94f01cabdf70656b0077c92b756c7b38822626d572f2 lib/unicore/IndicPositionalCategory.txt - * 4db71a39102e173095cb8bda8b4c35e78fe6b365e443c584b19f081d8c4894fc lib/unicore/IndicSyllabicCategory.txt - * eeb30346bb545bb45ff16486d9234397bfe1a195bb12b54fc1d9f48f87e8aa5e lib/unicore/Jamo.txt - * 13e2b7087bcca3163272e64e34e480534bd2f8353a0245c26e6642566f59a60d lib/unicore/LineBreak.txt - * 9bb54cd7b5509779f269fa60341bcbfca8da8f17d3c4999e44a5a51671d3c402 lib/unicore/NameAliases.txt - * e4c29d9ceefbe2382af819ac7646265a9e4ea599ce04a90d31bec97cfaa2848f lib/unicore/NamedSequences.txt - * 70d40297f1bf91397fbdab5a770c12100733e67c5c3398446c5e950715d5e535 lib/unicore/PropList.txt - * 03a440f2a4b9151043a6bb53d4a4e528b73238079f9d686dc2a5846e6895588a lib/unicore/PropValueAliases.txt - * 8e8b48c2080d31aa6713f5535aad94a1f7bc9a65cc52563724e5e69b0a3b4196 lib/unicore/PropertyAliases.txt - * 45d42b1ecbac2263c1c63c95104e63ea64313eb99be94542e040aea11c449f6c lib/unicore/ScriptExtensions.txt - * 79fbd73ad82c30fdb67d36a349d12667bd58d3e9da6a8ce7dd26383b637ba85f lib/unicore/Scripts.txt - * fb2025dae3b9b17649b6e379c1cdbddf50641267ca6d2446caeccf4a141fe167 lib/unicore/SpecialCasing.txt - * 38b17e1118206489a7e0ab5d29d7932212d38838df7d3ec025ecb58e8798ec20 lib/unicore/UnicodeData.txt - * 0cedd6e0f5cadf57ce9cfc96beccfd083b0faa0809a631a777cd25f0316bfabb lib/unicore/auxiliary/GCBTest.txt - * 230005412f9a47128e37bc52330766aaa0b5522a53737a89cff66e891e14527a lib/unicore/auxiliary/GraphemeBreakProperty.txt - * 149b14ab93b06c887a958fb16d0ad01193063ef69cc14f10338ae4d0accd6c28 lib/unicore/auxiliary/LBTest.txt - * 41bf82452d71ce15eda8c9bb1bb0c20b72205acaaf503e3cb84734ed8e85d33a lib/unicore/auxiliary/SBTest.txt - * d3b45cdb0a73eeb9d25158336583dfc1e6f64da59537acb0008988b40e6b3b63 lib/unicore/auxiliary/SentenceBreakProperty.txt - * a661f42a54f7cc4dded72a61c508be2b482f912d4b6cf140335010f0c684dbb9 lib/unicore/auxiliary/WBTest.txt - * c255bd2e1f163373510679bf4b272eee97b635bfce2a6550d6c10fe5c917f01a lib/unicore/auxiliary/WordBreakProperty.txt - * 16dac6f1c164a4f52741b71221a8aafb6acb52cd8a436af139da6e93d86efdfb lib/unicore/extracted/DBidiClass.txt - * c4e78efc041668548117f7462af03b28dfbb2caca5d46a1ae78ae0ce0bb26c4a lib/unicore/extracted/DBinaryProperties.txt - * 5886bb44aae8f2821663f742793cb91d4ed0923c6840f3bfb73530e37030abf8 lib/unicore/extracted/DCombiningClass.txt - * 9edba3785ed0e6e46e10f67e2dd0ec3cb0799b7f75f526fe918429576060352e lib/unicore/extracted/DDecompositionType.txt - * b774387f79b27ae4268ae89450f971408dc9bbbb523426482ab4375c962bd922 lib/unicore/extracted/DEastAsianWidth.txt - * ba4207d2464077e807b20caf063041142afc0a8a38c328c5c23b3417c9f2da33 lib/unicore/extracted/DGeneralCategory.txt - * 29fdd151266595eb1b37715937afe0727bb632a2bc1130f0d2314040175df82e lib/unicore/extracted/DJoinGroup.txt - * 7725fe247da06986e43e89fd316b8b22a0619546d0c1ed499a94b25e9164c150 lib/unicore/extracted/DJoinType.txt - * 1a0687fb9c6c4567e853913549df0944fe40821279a3e9cdaa6ab8679bc286fd lib/unicore/extracted/DLineBreak.txt - * 40bcfed3ca727c19e1331f6c33806231d5f7eeeabd2e6a9e06a3740c85d0c250 lib/unicore/extracted/DNumType.txt - * a18d502bad39d527ac5586d7bc93e29f565859e3bcc24ada627eff606d6f5fed lib/unicore/extracted/DNumValues.txt - * 285aef7ed2bf69724b1fa9bba177640636f666e1a5dd0ba5e538d4790129bbfe lib/unicore/mktables - * 462c9aaa608fb2014cd9649af1c5c009485c60b9c8b15b89401fdc10cf6161c6 lib/unicore/version + * 59e717586b720a821ee0d7397679d5322e38b49f6fb7840545aedf669c733b70 lib/Unicode/UCD.pm + * 47cb62a53beea6d0263e2147331c7e751853c9327225d95bbe2d9e1dc3e1aa44 lib/unicore/ArabicShaping.txt + * 153f0a100c315f9f3945e78f57137611d36c44b3a975919c499fd403413fede8 lib/unicore/BidiBrackets.txt + * fbe806975c1bf9fc9960bbaa39ff6290c42c7da8315f9cd459109b024cc1c485 lib/unicore/BidiMirroring.txt + * 612127d4889032e55d82522e4a0c19793bda8aa8da14ecb3c696d17c83e6be13 lib/unicore/Blocks.txt + * 37d40cf8c2c35637f4a04e746814e1fc4eb764c272bed9238a87ee96a4866857 lib/unicore/CaseFolding.txt + * 5623df16856ad4007c60bdfff6f054e087521becd24cb4006be69c3a1d851aee lib/unicore/CompositionExclusions.txt + * 5cb15b04693c43df16e0d304deca049e93b001445d163184e0ff1b7c8c852146 lib/unicore/DAge.txt + * 6662c7e30b572df5d948c092692f52bcc79ab36d49a063a73d6435042db6fb3b lib/unicore/DCoreProperties.txt + * 02d8e12cea7c61a9f3cc5fbf8eaceadf8da23fe83d60c64cf647088830b810cc lib/unicore/DNormalizationProps.txt + * 3382cb4980e0021e9d4312f2d099315cfab6100ce0ff63a22d6937bfa720bcb7 lib/unicore/EastAsianWidth.txt + * cb02ff25c375e78c82afffc852180eae7fc17c2f4434e697107720d05c52b26e lib/unicore/HangulSyllableType.txt + * 850043bc9db08eddb271e43ed9176b865df76745a5fb6e9a4a1d9e54e5036471 lib/unicore/IndicPositionalCategory.txt + * 90a3a00a5f5810850986c9279849b03c2f3133cfeeefb0554e851dd5ad7324dc lib/unicore/IndicSyllabicCategory.txt + * bbd36a8d27f76e0fe0f2b0ca2827ac80da4b4a8d5247f0b0670fcaaac68ae6e1 lib/unicore/Jamo.txt + * e2698584982ccd96e0c688bbcd4d2c48a23805baa0a0084388ef2e50ebd30aad lib/unicore/LineBreak.txt + * 9d5353b1d318e72a63a49aa6a6a051d350382ea44b2cf31fe925bb94ce7e129b lib/unicore/NameAliases.txt + * 009477f536f63016d901aeb1a4c820ad291e30e72ee9eb9ac1dfb6294a8a9bcc lib/unicore/NamedSequences.txt + * f413ea8dbd3858de72f3148b47dd0586019761357d1481e3b65f3a025bc27f82 lib/unicore/PropList.txt + * 56582d9875c1997876cf09305ccfc83448195de5d84d6374c78efaffeca4dfd7 lib/unicore/PropValueAliases.txt + * 047ab0f815b6d1b30a863d6fcbd49e6358e168a3bd6c7189e80ab9863957d222 lib/unicore/PropertyAliases.txt + * cde011921972dffe3e30dcbc7afbf069bf2eb01269097111dd7533b4c524caac lib/unicore/ScriptExtensions.txt + * fba415952f5654145acad220dc2b878f815c673474d2bb4928934e3ba6ccca1d lib/unicore/Scripts.txt + * dfc4f159c5c68328114ff17cd520451714a72ff48657287e5fe2f64344980695 lib/unicore/SpecialCasing.txt + * 68dfc414d28257b9b5d6ddbb8b466c768c00ebdf6cbf7784364a9b6cad55ee8f lib/unicore/UnicodeData.txt + * c76e7ed44a602f85161758ec54d2bcbcb7baf38f97720605a3e81ce02af47061 lib/unicore/auxiliary/GCBTest.txt + * 4bb8931857e0a698fd2ec4a51a84c6de33e48a50d8b4bf0b57d960c41d77a191 lib/unicore/auxiliary/GraphemeBreakProperty.txt + * 0c609ae4a32a89905c004010ef29885df3c60a941311a1a6e16003333d7fcdc8 lib/unicore/auxiliary/LBTest.txt + * 26afdd5f38561167807b0f191af55b05761029ae6be2b7fe85b88f28effc66b5 lib/unicore/auxiliary/SBTest.txt + * 53982766eeaf26674e7e2ec956c52846d52992ea9f4f1a202d488fb5cd76dd10 lib/unicore/auxiliary/SentenceBreakProperty.txt + * 7f60beacc5ec5671edb56db36defc90cfc0016de4fd2bdfde7a3e4ec209840ce lib/unicore/auxiliary/WBTest.txt + * cb2db065c77287e0f1d35b8c9b473d848b7566a1670439f67c357ca393084043 lib/unicore/auxiliary/WordBreakProperty.txt + * 73573a4bee7f7377d936bc1710cd578001d00ba516e72ee54e906ae51a8c1fcb lib/unicore/extracted/DBidiClass.txt + * ae8f55d8bb2bb69a63f70eef38cf5921fc3ba8e06d4d88f37950d32313a14754 lib/unicore/extracted/DBinaryProperties.txt + * cf263ac4848d47264300139f97ed15c2c22896d2cef411483cbe292098c08bea lib/unicore/extracted/DCombiningClass.txt + * 5bac89caf8d1fa23fcbbbf4d49ea0699b680ef1a73cbfa0daaac38c993906a74 lib/unicore/extracted/DDecompositionType.txt + * e17138d36cd91f0e0d16437780a887c5ac637bde0de370b96f08a3424fcc322f lib/unicore/extracted/DEastAsianWidth.txt + * fad25c183f4d439622c6be33c22ed709cdc4ac19feef0250527cf319a06952fe lib/unicore/extracted/DGeneralCategory.txt + * c0d080b188fbe67dead10a3897dd2ca23da862c7f0b03508a92dcf27cd7e1f41 lib/unicore/extracted/DJoinGroup.txt + * 3a8f8642084ed23b0de52af72dea0ff3d0b6928e6c7442832c663899e2b85e9d lib/unicore/extracted/DJoinType.txt + * 37f6186253da9824bdb27f4ad867bfe8c25d4dc6bdb2f05585e40a034675a348 lib/unicore/extracted/DLineBreak.txt + * ef24061b5a5dc93d7e90c2e34530ec757180ee75d872cba65ffc946e52624ae8 lib/unicore/extracted/DNumType.txt + * a197371fec9a1b517058b440841f60f9378d81682084eef8db22a88cb2f96e90 lib/unicore/extracted/DNumValues.txt + * 79a7216aceb1d291f2857085545fdda289518bc540a09bc0a15cde105d76028d lib/unicore/mktables + * cdecb300baad839a6f62791229f551a4fa33f3cbdca08e378dc976466354e778 lib/unicore/version * 913d2f93f3cb6cdf1664db888bf840bc4eb074eef824e082fceda24a9445e60c regen/charset_translations.pl - * d9c04ac46bdd81bb3e26519f2b8eb6242cb12337205add3f7cf092b0c58dccc4 regen/regcharclass.pl + * c468aea5062ef84422219d74e83b6f3216f2823544b445f53ee1af71deeb2044 regen/regcharclass.pl * 393f8d882713a3ba227351ad0f00ea4839fda74fcf77dcd1cdf31519925adba5 regen/regcharclass_multi_char_folds.pl * ex: set ro: */ diff --git a/Master/tlpkg/tlperl/lib/CORE/regcomp.h b/Master/tlpkg/tlperl/lib/CORE/regcomp.h index a8842a1bc79..14599fac007 100644 --- a/Master/tlpkg/tlperl/lib/CORE/regcomp.h +++ b/Master/tlpkg/tlperl/lib/CORE/regcomp.h @@ -107,8 +107,7 @@ Used to make it easier to clone and free arbitrary data that the regops need. Often the ARG field of a regop is an index into this structure */ - struct reg_code_block *code_blocks;/* positions of literal (?{}) */ - int num_code_blocks; /* size of code_blocks[] */ + struct reg_code_blocks *code_blocks;/* positions of literal (?{}) */ regnode program[1]; /* Unwarranted chumminess with compiler. */ } regexp_internal; @@ -522,7 +521,7 @@ struct regnode_ssc { |ANYOFL_SHARED_UTF8_LOCALE_fold_HAS_MATCHES_nonfold_REQD)) \ == ANYOFL_SHARED_UTF8_LOCALE_fold_HAS_MATCHES_nonfold_REQD) -/* Spare: 0x10 */ +/* Spare: Be sure to change ANYOF_FLAGS_ALL if this gets used 0x10 */ /* If set, the node matches every code point NUM_ANYOF_CODE_POINTS and above. * Can be in an SSC */ @@ -1054,7 +1053,7 @@ re.pm, especially to the documentation. /* get_sv() can return NULL during global destruction. */ #define GET_RE_DEBUG_FLAGS DEBUG_r({ \ SV * re_debug_flags_sv = NULL; \ - re_debug_flags_sv = PL_curcop ? get_sv(RE_DEBUG_FLAGS, 1) : NULL; \ + re_debug_flags_sv = PL_curcop ? get_sv(RE_DEBUG_FLAGS, GV_ADD) : NULL; \ if (re_debug_flags_sv) { \ if (!SvIOK(re_debug_flags_sv)) \ sv_setuv(re_debug_flags_sv, RE_DEBUG_COMPILE_DUMP | RE_DEBUG_EXECUTE_MASK ); \ diff --git a/Master/tlpkg/tlperl/lib/CORE/regexp.h b/Master/tlpkg/tlperl/lib/CORE/regexp.h index 78aa899625e..9a2b61a18ef 100644 --- a/Master/tlpkg/tlperl/lib/CORE/regexp.h +++ b/Master/tlpkg/tlperl/lib/CORE/regexp.h @@ -85,6 +85,14 @@ struct reg_code_block { REGEXP *src_regex; }; +/* array of reg_code_block's plus header info */ + +struct reg_code_blocks { + int refcnt; /* we may be pointed to from a regex and from the savestack */ + int count; /* how many code blocks */ + struct reg_code_block *cb; /* array of reg_code_block's */ +}; + /* The regexp/REGEXP struct, see L<perlreapi> for further documentation @@ -262,7 +270,7 @@ and check for NULL. */ #define SvRX(sv) (Perl_get_re_arg(aTHX_ sv)) -#define SvRXOK(sv) (Perl_get_re_arg(aTHX_ sv) ? TRUE : FALSE) +#define SvRXOK(sv) cBOOL(Perl_get_re_arg(aTHX_ sv)) /* Flags stored in regexp->extflags @@ -278,25 +286,26 @@ and check for NULL. #include "op_reg_common.h" -#define RXf_PMf_STD_PMMOD (RXf_PMf_MULTILINE|RXf_PMf_SINGLELINE|RXf_PMf_FOLD|RXf_PMf_EXTENDED|RXf_PMf_NOCAPTURE) +#define RXf_PMf_STD_PMMOD (RXf_PMf_MULTILINE|RXf_PMf_SINGLELINE|RXf_PMf_FOLD|RXf_PMf_EXTENDED|RXf_PMf_EXTENDED_MORE|RXf_PMf_NOCAPTURE) #define CASE_STD_PMMOD_FLAGS_PARSE_SET(pmfl, x_count) \ case IGNORE_PAT_MOD: *(pmfl) |= RXf_PMf_FOLD; break; \ case MULTILINE_PAT_MOD: *(pmfl) |= RXf_PMf_MULTILINE; break; \ case SINGLE_PAT_MOD: *(pmfl) |= RXf_PMf_SINGLELINE; break; \ - case XTENDED_PAT_MOD: *(pmfl) |= RXf_PMf_EXTENDED; (x_count)++; break;\ + case XTENDED_PAT_MOD: if (x_count == 0) { \ + *(pmfl) |= RXf_PMf_EXTENDED; \ + *(pmfl) &= ~RXf_PMf_EXTENDED_MORE; \ + } \ + else { \ + *(pmfl) |= RXf_PMf_EXTENDED \ + |RXf_PMf_EXTENDED_MORE; \ + } \ + (x_count)++; break; \ case NOCAPTURE_PAT_MOD: *(pmfl) |= RXf_PMf_NOCAPTURE; break; -#define STD_PMMOD_FLAGS_PARSE_X_WARN(x_count) \ - if (UNLIKELY((x_count) > 1)) { \ - Perl_ck_warner_d(aTHX_ packWARN2(WARN_DEPRECATED, WARN_REGEXP), \ - "Having more than one /%c regexp modifier is deprecated", \ - XTENDED_PAT_MOD); \ - } - /* Note, includes charset ones, assumes 0 is the default for them */ #define STD_PMMOD_FLAGS_CLEAR(pmfl) \ - *(pmfl) &= ~(RXf_PMf_FOLD|RXf_PMf_MULTILINE|RXf_PMf_SINGLELINE|RXf_PMf_EXTENDED|RXf_PMf_CHARSET|RXf_PMf_NOCAPTURE) + *(pmfl) &= ~(RXf_PMf_FOLD|RXf_PMf_MULTILINE|RXf_PMf_SINGLELINE|RXf_PMf_EXTENDED|RXf_PMf_EXTENDED_MORE|RXf_PMf_CHARSET|RXf_PMf_NOCAPTURE) /* chars and strings used as regex pattern modifiers * Singular is a 'c'har, plural is a "string" @@ -358,9 +367,8 @@ and check for NULL. */ /* - Set in Perl_pmruntime if op_flags & OPf_SPECIAL, i.e. split. Will - be used by regex engines to check whether they should set - RXf_SKIPWHITE + Set in Perl_pmruntime for a split. Will be used by regex engines to + check whether they should set RXf_SKIPWHITE */ #define RXf_SPLIT RXf_PMf_SPLIT diff --git a/Master/tlpkg/tlperl/lib/CORE/regnodes.h b/Master/tlpkg/tlperl/lib/CORE/regnodes.h index f820c5684e6..8fe0f41d1be 100644 --- a/Master/tlpkg/tlperl/lib/CORE/regnodes.h +++ b/Master/tlpkg/tlperl/lib/CORE/regnodes.h @@ -7,7 +7,7 @@ /* Regops and State definitions */ #define REGNODE_MAX 92 -#define REGMATCH_STATE_MAX 132 +#define REGMATCH_STATE_MAX 134 #define END 0 /* 0000 End of program. */ #define SUCCEED 1 /* 0x01 Return from a subroutine, basically. */ @@ -107,44 +107,46 @@ /* ------------ States ------------- */ #define TRIE_next (REGNODE_MAX + 1) /* state for TRIE */ #define TRIE_next_fail (REGNODE_MAX + 2) /* state for TRIE */ -#define EVAL_AB (REGNODE_MAX + 3) /* state for EVAL */ -#define EVAL_AB_fail (REGNODE_MAX + 4) /* state for EVAL */ -#define CURLYX_end (REGNODE_MAX + 5) /* state for CURLYX */ -#define CURLYX_end_fail (REGNODE_MAX + 6) /* state for CURLYX */ -#define WHILEM_A_pre (REGNODE_MAX + 7) /* state for WHILEM */ -#define WHILEM_A_pre_fail (REGNODE_MAX + 8) /* state for WHILEM */ -#define WHILEM_A_min (REGNODE_MAX + 9) /* state for WHILEM */ -#define WHILEM_A_min_fail (REGNODE_MAX + 10) /* state for WHILEM */ -#define WHILEM_A_max (REGNODE_MAX + 11) /* state for WHILEM */ -#define WHILEM_A_max_fail (REGNODE_MAX + 12) /* state for WHILEM */ -#define WHILEM_B_min (REGNODE_MAX + 13) /* state for WHILEM */ -#define WHILEM_B_min_fail (REGNODE_MAX + 14) /* state for WHILEM */ -#define WHILEM_B_max (REGNODE_MAX + 15) /* state for WHILEM */ -#define WHILEM_B_max_fail (REGNODE_MAX + 16) /* state for WHILEM */ -#define BRANCH_next (REGNODE_MAX + 17) /* state for BRANCH */ -#define BRANCH_next_fail (REGNODE_MAX + 18) /* state for BRANCH */ -#define CURLYM_A (REGNODE_MAX + 19) /* state for CURLYM */ -#define CURLYM_A_fail (REGNODE_MAX + 20) /* state for CURLYM */ -#define CURLYM_B (REGNODE_MAX + 21) /* state for CURLYM */ -#define CURLYM_B_fail (REGNODE_MAX + 22) /* state for CURLYM */ -#define IFMATCH_A (REGNODE_MAX + 23) /* state for IFMATCH */ -#define IFMATCH_A_fail (REGNODE_MAX + 24) /* state for IFMATCH */ -#define CURLY_B_min_known (REGNODE_MAX + 25) /* state for CURLY */ -#define CURLY_B_min_known_fail (REGNODE_MAX + 26) /* state for CURLY */ -#define CURLY_B_min (REGNODE_MAX + 27) /* state for CURLY */ -#define CURLY_B_min_fail (REGNODE_MAX + 28) /* state for CURLY */ -#define CURLY_B_max (REGNODE_MAX + 29) /* state for CURLY */ -#define CURLY_B_max_fail (REGNODE_MAX + 30) /* state for CURLY */ -#define COMMIT_next (REGNODE_MAX + 31) /* state for COMMIT */ -#define COMMIT_next_fail (REGNODE_MAX + 32) /* state for COMMIT */ -#define MARKPOINT_next (REGNODE_MAX + 33) /* state for MARKPOINT */ -#define MARKPOINT_next_fail (REGNODE_MAX + 34) /* state for MARKPOINT */ -#define SKIP_next (REGNODE_MAX + 35) /* state for SKIP */ -#define SKIP_next_fail (REGNODE_MAX + 36) /* state for SKIP */ -#define CUTGROUP_next (REGNODE_MAX + 37) /* state for CUTGROUP */ -#define CUTGROUP_next_fail (REGNODE_MAX + 38) /* state for CUTGROUP */ -#define KEEPS_next (REGNODE_MAX + 39) /* state for KEEPS */ -#define KEEPS_next_fail (REGNODE_MAX + 40) /* state for KEEPS */ +#define EVAL_B (REGNODE_MAX + 3) /* state for EVAL */ +#define EVAL_B_fail (REGNODE_MAX + 4) /* state for EVAL */ +#define EVAL_postponed_AB (REGNODE_MAX + 5) /* state for EVAL */ +#define EVAL_postponed_AB_fail (REGNODE_MAX + 6) /* state for EVAL */ +#define CURLYX_end (REGNODE_MAX + 7) /* state for CURLYX */ +#define CURLYX_end_fail (REGNODE_MAX + 8) /* state for CURLYX */ +#define WHILEM_A_pre (REGNODE_MAX + 9) /* state for WHILEM */ +#define WHILEM_A_pre_fail (REGNODE_MAX + 10) /* state for WHILEM */ +#define WHILEM_A_min (REGNODE_MAX + 11) /* state for WHILEM */ +#define WHILEM_A_min_fail (REGNODE_MAX + 12) /* state for WHILEM */ +#define WHILEM_A_max (REGNODE_MAX + 13) /* state for WHILEM */ +#define WHILEM_A_max_fail (REGNODE_MAX + 14) /* state for WHILEM */ +#define WHILEM_B_min (REGNODE_MAX + 15) /* state for WHILEM */ +#define WHILEM_B_min_fail (REGNODE_MAX + 16) /* state for WHILEM */ +#define WHILEM_B_max (REGNODE_MAX + 17) /* state for WHILEM */ +#define WHILEM_B_max_fail (REGNODE_MAX + 18) /* state for WHILEM */ +#define BRANCH_next (REGNODE_MAX + 19) /* state for BRANCH */ +#define BRANCH_next_fail (REGNODE_MAX + 20) /* state for BRANCH */ +#define CURLYM_A (REGNODE_MAX + 21) /* state for CURLYM */ +#define CURLYM_A_fail (REGNODE_MAX + 22) /* state for CURLYM */ +#define CURLYM_B (REGNODE_MAX + 23) /* state for CURLYM */ +#define CURLYM_B_fail (REGNODE_MAX + 24) /* state for CURLYM */ +#define IFMATCH_A (REGNODE_MAX + 25) /* state for IFMATCH */ +#define IFMATCH_A_fail (REGNODE_MAX + 26) /* state for IFMATCH */ +#define CURLY_B_min_known (REGNODE_MAX + 27) /* state for CURLY */ +#define CURLY_B_min_known_fail (REGNODE_MAX + 28) /* state for CURLY */ +#define CURLY_B_min (REGNODE_MAX + 29) /* state for CURLY */ +#define CURLY_B_min_fail (REGNODE_MAX + 30) /* state for CURLY */ +#define CURLY_B_max (REGNODE_MAX + 31) /* state for CURLY */ +#define CURLY_B_max_fail (REGNODE_MAX + 32) /* state for CURLY */ +#define COMMIT_next (REGNODE_MAX + 33) /* state for COMMIT */ +#define COMMIT_next_fail (REGNODE_MAX + 34) /* state for COMMIT */ +#define MARKPOINT_next (REGNODE_MAX + 35) /* state for MARKPOINT */ +#define MARKPOINT_next_fail (REGNODE_MAX + 36) /* state for MARKPOINT */ +#define SKIP_next (REGNODE_MAX + 37) /* state for SKIP */ +#define SKIP_next_fail (REGNODE_MAX + 38) /* state for SKIP */ +#define CUTGROUP_next (REGNODE_MAX + 39) /* state for CUTGROUP */ +#define CUTGROUP_next_fail (REGNODE_MAX + 40) /* state for CUTGROUP */ +#define KEEPS_next (REGNODE_MAX + 41) /* state for KEEPS */ +#define KEEPS_next_fail (REGNODE_MAX + 42) /* state for KEEPS */ /* PL_regkind[] What type of regop or state is this. */ @@ -248,8 +250,10 @@ EXTCONST U8 PL_regkind[] = { /* ------------ States ------------- */ TRIE, /* TRIE_next */ TRIE, /* TRIE_next_fail */ - EVAL, /* EVAL_AB */ - EVAL, /* EVAL_AB_fail */ + EVAL, /* EVAL_B */ + EVAL, /* EVAL_B_fail */ + EVAL, /* EVAL_postponed_AB */ + EVAL, /* EVAL_postponed_AB_fail */ CURLYX, /* CURLYX_end */ CURLYX, /* CURLYX_end_fail */ WHILEM, /* WHILEM_A_pre */ @@ -592,44 +596,46 @@ EXTCONST char * const PL_reg_name[] = { /* ------------ States ------------- */ "TRIE_next", /* REGNODE_MAX +0x01 */ "TRIE_next_fail", /* REGNODE_MAX +0x02 */ - "EVAL_AB", /* REGNODE_MAX +0x03 */ - "EVAL_AB_fail", /* REGNODE_MAX +0x04 */ - "CURLYX_end", /* REGNODE_MAX +0x05 */ - "CURLYX_end_fail", /* REGNODE_MAX +0x06 */ - "WHILEM_A_pre", /* REGNODE_MAX +0x07 */ - "WHILEM_A_pre_fail", /* REGNODE_MAX +0x08 */ - "WHILEM_A_min", /* REGNODE_MAX +0x09 */ - "WHILEM_A_min_fail", /* REGNODE_MAX +0x0a */ - "WHILEM_A_max", /* REGNODE_MAX +0x0b */ - "WHILEM_A_max_fail", /* REGNODE_MAX +0x0c */ - "WHILEM_B_min", /* REGNODE_MAX +0x0d */ - "WHILEM_B_min_fail", /* REGNODE_MAX +0x0e */ - "WHILEM_B_max", /* REGNODE_MAX +0x0f */ - "WHILEM_B_max_fail", /* REGNODE_MAX +0x10 */ - "BRANCH_next", /* REGNODE_MAX +0x11 */ - "BRANCH_next_fail", /* REGNODE_MAX +0x12 */ - "CURLYM_A", /* REGNODE_MAX +0x13 */ - "CURLYM_A_fail", /* REGNODE_MAX +0x14 */ - "CURLYM_B", /* REGNODE_MAX +0x15 */ - "CURLYM_B_fail", /* REGNODE_MAX +0x16 */ - "IFMATCH_A", /* REGNODE_MAX +0x17 */ - "IFMATCH_A_fail", /* REGNODE_MAX +0x18 */ - "CURLY_B_min_known", /* REGNODE_MAX +0x19 */ - "CURLY_B_min_known_fail", /* REGNODE_MAX +0x1a */ - "CURLY_B_min", /* REGNODE_MAX +0x1b */ - "CURLY_B_min_fail", /* REGNODE_MAX +0x1c */ - "CURLY_B_max", /* REGNODE_MAX +0x1d */ - "CURLY_B_max_fail", /* REGNODE_MAX +0x1e */ - "COMMIT_next", /* REGNODE_MAX +0x1f */ - "COMMIT_next_fail", /* REGNODE_MAX +0x20 */ - "MARKPOINT_next", /* REGNODE_MAX +0x21 */ - "MARKPOINT_next_fail", /* REGNODE_MAX +0x22 */ - "SKIP_next", /* REGNODE_MAX +0x23 */ - "SKIP_next_fail", /* REGNODE_MAX +0x24 */ - "CUTGROUP_next", /* REGNODE_MAX +0x25 */ - "CUTGROUP_next_fail", /* REGNODE_MAX +0x26 */ - "KEEPS_next", /* REGNODE_MAX +0x27 */ - "KEEPS_next_fail", /* REGNODE_MAX +0x28 */ + "EVAL_B", /* REGNODE_MAX +0x03 */ + "EVAL_B_fail", /* REGNODE_MAX +0x04 */ + "EVAL_postponed_AB", /* REGNODE_MAX +0x05 */ + "EVAL_postponed_AB_fail", /* REGNODE_MAX +0x06 */ + "CURLYX_end", /* REGNODE_MAX +0x07 */ + "CURLYX_end_fail", /* REGNODE_MAX +0x08 */ + "WHILEM_A_pre", /* REGNODE_MAX +0x09 */ + "WHILEM_A_pre_fail", /* REGNODE_MAX +0x0a */ + "WHILEM_A_min", /* REGNODE_MAX +0x0b */ + "WHILEM_A_min_fail", /* REGNODE_MAX +0x0c */ + "WHILEM_A_max", /* REGNODE_MAX +0x0d */ + "WHILEM_A_max_fail", /* REGNODE_MAX +0x0e */ + "WHILEM_B_min", /* REGNODE_MAX +0x0f */ + "WHILEM_B_min_fail", /* REGNODE_MAX +0x10 */ + "WHILEM_B_max", /* REGNODE_MAX +0x11 */ + "WHILEM_B_max_fail", /* REGNODE_MAX +0x12 */ + "BRANCH_next", /* REGNODE_MAX +0x13 */ + "BRANCH_next_fail", /* REGNODE_MAX +0x14 */ + "CURLYM_A", /* REGNODE_MAX +0x15 */ + "CURLYM_A_fail", /* REGNODE_MAX +0x16 */ + "CURLYM_B", /* REGNODE_MAX +0x17 */ + "CURLYM_B_fail", /* REGNODE_MAX +0x18 */ + "IFMATCH_A", /* REGNODE_MAX +0x19 */ + "IFMATCH_A_fail", /* REGNODE_MAX +0x1a */ + "CURLY_B_min_known", /* REGNODE_MAX +0x1b */ + "CURLY_B_min_known_fail", /* REGNODE_MAX +0x1c */ + "CURLY_B_min", /* REGNODE_MAX +0x1d */ + "CURLY_B_min_fail", /* REGNODE_MAX +0x1e */ + "CURLY_B_max", /* REGNODE_MAX +0x1f */ + "CURLY_B_max_fail", /* REGNODE_MAX +0x20 */ + "COMMIT_next", /* REGNODE_MAX +0x21 */ + "COMMIT_next_fail", /* REGNODE_MAX +0x22 */ + "MARKPOINT_next", /* REGNODE_MAX +0x23 */ + "MARKPOINT_next_fail", /* REGNODE_MAX +0x24 */ + "SKIP_next", /* REGNODE_MAX +0x25 */ + "SKIP_next_fail", /* REGNODE_MAX +0x26 */ + "CUTGROUP_next", /* REGNODE_MAX +0x27 */ + "CUTGROUP_next_fail", /* REGNODE_MAX +0x28 */ + "KEEPS_next", /* REGNODE_MAX +0x29 */ + "KEEPS_next_fail", /* REGNODE_MAX +0x2a */ }; #endif /* DOINIT */ diff --git a/Master/tlpkg/tlperl/lib/CORE/scope.h b/Master/tlpkg/tlperl/lib/CORE/scope.h index 9a504f1bfd8..88c182dc032 100644 --- a/Master/tlpkg/tlperl/lib/CORE/scope.h +++ b/Master/tlpkg/tlperl/lib/CORE/scope.h @@ -8,7 +8,7 @@ * */ -/* *** these are ordered by number of of auto-popped args */ +/* *** Update arg_counts[] in scope.c if you modify these */ /* zero args */ @@ -17,8 +17,6 @@ #define SAVEt_CLEARSV 2 #define SAVEt_REGCONTEXT 3 -#define SAVEt_ARG0_MAX 3 - /* one arg */ #define SAVEt_TMPSFLOOR 4 @@ -41,8 +39,6 @@ #define SAVEt_READONLY_OFF 21 #define SAVEt_FREEPADNAME 22 -#define SAVEt_ARG1_MAX 22 - /* two args */ #define SAVEt_AV 23 @@ -71,8 +67,6 @@ #define SAVEt_ADELETE 46 #define SAVEt_APTR 47 -#define SAVEt_ARG2_MAX 47 - /* three args */ #define SAVEt_HELEM 48 @@ -173,20 +167,16 @@ Opening bracket on a callback. See C<L</LEAVE>> and L<perlcall>. =for apidoc Ams||LEAVE Closing bracket on a callback. See C<L</ENTER>> and L<perlcall>. -=over +=for apidoc Ams||ENTER_with_name(name) -=item ENTER_with_name(name) - -Same as C<ENTER>, but when debugging is enabled it also associates the +Same as C<L</ENTER>>, but when debugging is enabled it also associates the given literal string with the new scope. -=item LEAVE_with_name(name) +=for apidoc Ams||LEAVE_with_name(name) -Same as C<LEAVE>, but when debugging is enabled it first checks that the +Same as C<L</LEAVE>>, but when debugging is enabled it first checks that the scope has the given name. C<name> must be a C<NUL>-terminated literal string. -=back - =cut */ diff --git a/Master/tlpkg/tlperl/lib/CORE/sv.h b/Master/tlpkg/tlperl/lib/CORE/sv.h index bfda6bf6cb1..51e9b0ba664 100644 --- a/Master/tlpkg/tlperl/lib/CORE/sv.h +++ b/Master/tlpkg/tlperl/lib/CORE/sv.h @@ -155,14 +155,15 @@ typedef enum { /* *** any alterations to the SV types above need to be reflected in * SVt_MASK and the various PL_valid_types_* tables. As of this writing those * tables are in perl.h. There are also two affected names tables in dump.c, - * one in B.xs, and 'bodies_by_type[]' in sv.c */ + * one in B.xs, and 'bodies_by_type[]' in sv.c. + * + * The bits that match 0xf0 are CURRENTLY UNUSED, except that 0xFF means a + * freed SV. The bits above that are for flags, like SVf_IOK */ #define SVt_MASK 0xf /* smallest bitmask that covers all types */ #ifndef PERL_CORE -/* Although Fast Boyer Moore tables are now being stored in PVGVs, for most - purposes external code wanting to consider PVBM probably needs to think of - PVMG instead. */ +/* Fast Boyer Moore tables are now stored in magic attached to PVMGs */ # define SVt_PVBM SVt_PVMG /* Anything wanting to create a reference from clean should ensure that it has a scalar of type SVt_IV now: */ @@ -269,7 +270,8 @@ struct p5rx { =head1 SV Manipulation Functions =for apidoc Am|U32|SvREFCNT|SV* sv -Returns the value of the object's reference count. +Returns the value of the object's reference count. Exposed +to perl code via Internals::SvREFCNT(). =for apidoc Am|SV*|SvREFCNT_inc|SV* sv Increments the reference count of the given SV, returning the SV. @@ -368,14 +370,22 @@ perform the upgrade if necessary. See C<L</svtype>>. #define SVp_IOK 0x00001000 /* has valid non-public integer value */ #define SVp_NOK 0x00002000 /* has valid non-public numeric value */ #define SVp_POK 0x00004000 /* has valid non-public pointer value */ -#define SVp_SCREAM 0x00008000 /* method name is DOES */ - /* eval cx text is ref counted */ +#define SVp_SCREAM 0x00008000 /* currently unused on plain scalars */ #define SVphv_CLONEABLE SVp_SCREAM /* PVHV (stashes) clone its objects */ #define SVpgv_GP SVp_SCREAM /* GV has a valid GP */ #define SVprv_PCS_IMPORTED SVp_SCREAM /* RV is a proxy for a constant subroutine in another package. Set the GvIMPORTED_CV_on() if it needs to be expanded to a real GV */ + +/* SVf_PROTECT is what SVf_READONLY should have been: i.e. modifying + * this SV is completely illegal. However, SVf_READONLY (via + * Internals::SvREADONLY()) has come to be seen as a flag that can be + * temporarily set and unset by the user to indicate e.g. whether a hash + * is "locked". Now, Hash::Util et al only set SVf_READONLY, while core + * sets both (SVf_READONLY|SVf_PROTECT) to indicate both to core and user + * code that this SV should not be messed with. + */ #define SVf_PROTECT 0x00010000 /* very read-only */ #define SVs_PADTMP 0x00020000 /* in use as tmp */ #define SVs_PADSTALE 0x00040000 /* lexical has gone out of scope; @@ -415,7 +425,12 @@ perform the upgrade if necessary. See C<L</svtype>>. #define PRIVSHIFT 4 /* (SVp_?OK >> PRIVSHIFT) == SVf_?OK */ -/* Note that SVf_AMAGIC is now only set on stashes. */ +/* SVf_AMAGIC means that the stash *may* have have overload methods. It's + * set each time a function is compiled into a stash, and is reset by the + * overload code when called for the first time and finds that there are + * no overload methods. Note that this used to be set on the object; but + * is now only set on stashes. + */ #define SVf_AMAGIC 0x10000000 /* has magical overloaded methods */ #define SVf_IsCOW 0x10000000 /* copy on write (shared hash key if SvLEN == 0) */ @@ -437,28 +452,10 @@ perform the upgrade if necessary. See C<L</svtype>>. /* Some private flags. */ -/* The SVp_SCREAM|SVpbm_VALID (0x40008000) combination is up for grabs. - Formerly it was used for pad names, but now it is available. The core - is careful to avoid setting both flags. - - SVf_POK, SVp_POK also set: - 0x00004400 Normal - 0x0000C400 method name for DOES (SvSCREAM) - 0x40004400 FBM compiled (SvVALID) - 0x4000C400 *** Formerly used for pad names *** - - 0x00008000 GV with GP - 0x00008800 RV with PCS imported -*/ /* PVAV */ #define SVpav_REAL 0x40000000 /* free old entries */ /* PVHV */ #define SVphv_LAZYDEL 0x40000000 /* entry in xhv_eiter must be deleted */ -/* This is only set true on a PVGV when it's playing "PVBM", but is tested for - on any regular scalar (anything <= PVLV) */ -#define SVpbm_VALID 0x40000000 -/* Only used in toke.c on an SV stored in PL_lex_repl */ -#define SVrepl_EVAL 0x40000000 /* Replacement part of s///e */ /* IV, PVIV, PVNV, PVMG, PVGV and (I assume) PVLV */ #define SVf_IVisUV 0x80000000 /* use XPVUV instead of XPVIV */ @@ -466,8 +463,6 @@ perform the upgrade if necessary. See C<L</svtype>>. #define SVpav_REIFY 0x80000000 /* can become real */ /* PVHV */ #define SVphv_HASKFLAGS 0x80000000 /* keys have flag byte after hash */ -/* PVGV when SVpbm_VALID is true */ -#define SVpbm_TAIL 0x80000000 /* string has a fake "\n" appended */ /* RV upwards. However, SVf_ROK and SVp_IOK are exclusive */ #define SVprv_WEAKREF 0x80000000 /* Weak reference */ /* pad name vars only */ @@ -486,16 +481,16 @@ perform the upgrade if necessary. See C<L</svtype>>. union _xnvu { NV xnv_nv; /* numeric value, if any */ HV * xgv_stash; - struct { - U32 xlow; - U32 xhigh; - } xpad_cop_seq; /* used by pad.c for cop_sequence */ + line_t xnv_lines; /* used internally by S_scan_subst() */ + bool xnv_bm_tail; /* an SvVALID (BM) SV has an implicit "\n" */ }; union _xivu { IV xivu_iv; /* integer value */ UV xivu_uv; HEK * xivu_namehek; /* xpvlv, xpvgv: GvNAME */ + bool xivu_eval_seen; /* used internally by S_scan_subst() */ + }; union _xmgu { @@ -546,7 +541,8 @@ struct xpvlv { SV* xlv_targ; char xlv_type; /* k=keys .=pos x=substr v=vec /=join/re * y=alem/helem/iter t=tie T=tied HE */ - char xlv_flags; /* 1 = negative offset 2 = negative len */ + char xlv_flags; /* 1 = negative offset 2 = negative len + 4 = out of range (vec) */ }; #define xlv_targoff xlv_targoff_u.xlvu_targoff @@ -563,8 +559,8 @@ struct xpvinvlist { the list, merely toggle this flag */ }; -/* This structure works in 3 ways - regular scalar, GV with GP, or fast - Boyer-Moore. */ +/* This structure works in 2 ways - regular scalar, or GV with GP */ + struct xpvgv { _XPV_HEAD; union _xivu xiv_u; @@ -617,7 +613,7 @@ struct xpvio { * Perl_filter_add() tries to do with the dirp), hence the * following union trick (as suggested by Gurusamy Sarathy). * For further information see Geir Johansen's problem report - * titled [ID 20000612.002] Perl problem on Cray system + * titled [ID 20000612.002 (#3366)] Perl problem on Cray system * The any pointer (known as IoANY()) will also be a good place * to hang any IO disciplines to. */ @@ -1089,6 +1085,22 @@ C<sv_force_normal> does nothing. #define SvOBJECT_on(sv) (SvFLAGS(sv) |= SVs_OBJECT) #define SvOBJECT_off(sv) (SvFLAGS(sv) &= ~SVs_OBJECT) +/* +=for apidoc Am|U32|SvREADONLY|SV* sv +Returns true if the argument is readonly, otherwise returns false. +Exposed to to perl code via Internals::SvREADONLY(). + +=for apidoc Am|U32|SvREADONLY_on|SV* sv +Mark an object as readonly. Exactly what this means depends on the object +type. Exposed to perl code via Internals::SvREADONLY(). + +=for apidoc Am|U32|SvREADONLY_off|SV* sv +Mark an object as not-readonly. Exactly what this mean depends on the +object type. Exposed to perl code via Internals::SvREADONLY(). + +=cut +*/ + #define SvREADONLY(sv) (SvFLAGS(sv) & (SVf_READONLY|SVf_PROTECT)) #ifdef PERL_CORE # define SvREADONLY_on(sv) (SvFLAGS(sv) |= (SVf_READONLY|SVf_PROTECT)) @@ -1108,44 +1120,28 @@ C<sv_force_normal> does nothing. # define SvCOMPILED_off(sv) #endif -#define SvEVALED(sv) (SvFLAGS(sv) & SVrepl_EVAL) -#define SvEVALED_on(sv) (SvFLAGS(sv) |= SVrepl_EVAL) -#define SvEVALED_off(sv) (SvFLAGS(sv) &= ~SVrepl_EVAL) #if defined (DEBUGGING) && defined(__GNUC__) && !defined(PERL_GCC_BRACE_GROUPS_FORBIDDEN) -# define SvVALID(sv) ({ const SV *const _svvalid = (const SV*)(sv); \ - if (SvFLAGS(_svvalid) & SVpbm_VALID && !SvSCREAM(_svvalid)) \ - assert(!isGV_with_GP(_svvalid)); \ - (SvFLAGS(_svvalid) & SVpbm_VALID); \ - }) -# define SvVALID_on(sv) ({ SV *const _svvalid = MUTABLE_SV(sv); \ - assert(!isGV_with_GP(_svvalid)); \ - assert(!SvSCREAM(_svvalid)); \ - (SvFLAGS(_svvalid) |= SVpbm_VALID); \ - }) -# define SvVALID_off(sv) ({ SV *const _svvalid = MUTABLE_SV(sv); \ - assert(!isGV_with_GP(_svvalid)); \ - assert(!SvSCREAM(_svvalid)); \ - (SvFLAGS(_svvalid) &= ~SVpbm_VALID); \ - }) - # define SvTAIL(sv) ({ const SV *const _svtail = (const SV *)(sv); \ assert(SvTYPE(_svtail) != SVt_PVAV); \ assert(SvTYPE(_svtail) != SVt_PVHV); \ - assert(!SvSCREAM(_svtail)); \ - (SvFLAGS(sv) & (SVpbm_TAIL|SVpbm_VALID)) \ - == (SVpbm_TAIL|SVpbm_VALID); \ + assert(!(SvFLAGS(_svtail) & (SVf_NOK|SVp_NOK))); \ + assert(SvVALID(_svtail)); \ + ((XPVNV*)SvANY(_svtail))->xnv_u.xnv_bm_tail; \ }) #else -# define SvVALID(sv) ((SvFLAGS(sv) & SVpbm_VALID) && !SvSCREAM(sv)) -# define SvVALID_on(sv) (SvFLAGS(sv) |= SVpbm_VALID) -# define SvVALID_off(sv) (SvFLAGS(sv) &= ~SVpbm_VALID) -# define SvTAIL(sv) ((SvFLAGS(sv) & (SVpbm_TAIL|SVpbm_VALID)) \ - == (SVpbm_TAIL|SVpbm_VALID)) - +# define SvTAIL(_svtail) (((XPVNV*)SvANY(_svtail))->xnv_u.xnv_bm_tail) #endif -#define SvTAIL_on(sv) (SvFLAGS(sv) |= SVpbm_TAIL) -#define SvTAIL_off(sv) (SvFLAGS(sv) &= ~SVpbm_TAIL) + +/* Does the SV have a Boyer-Moore table attached as magic? + * 'VALID' is a poor name, but is kept for historical reasons. */ +#define SvVALID(_svvalid) ( \ + SvPOKp(_svvalid) \ + && SvSMAGICAL(_svvalid) \ + && SvMAGIC(_svvalid) \ + && (SvMAGIC(_svvalid)->mg_type == PERL_MAGIC_bm \ + || mg_find(_svvalid, PERL_MAGIC_bm)) \ + ) #define SvRVx(sv) SvRV(sv) @@ -1525,43 +1521,58 @@ Like C<SvPV> but doesn't set a length variable. Like C<SvPV_nolen> but doesn't process magic. =for apidoc Am|IV|SvIV|SV* sv -Coerces the given SV to an integer and returns it. See C<L</SvIVx>> for a -version which guarantees to evaluate C<sv> only once. +Coerces the given SV to IV and returns it. The returned value in many +circumstances will get stored in C<sv>'s IV slot, but not in all cases. (Use +C<L</sv_setiv>> to make sure it does). + +See C<L</SvIVx>> for a version which guarantees to evaluate C<sv> only once. =for apidoc Am|IV|SvIV_nomg|SV* sv Like C<SvIV> but doesn't process magic. =for apidoc Am|IV|SvIVx|SV* sv -Coerces the given SV to an integer and returns it. -Guarantees to evaluate C<sv> only once. Only use -this if C<sv> is an expression with side effects, -otherwise use the more efficient C<SvIV>. +Coerces the given SV to IV and returns it. The returned value in many +circumstances will get stored in C<sv>'s IV slot, but not in all cases. (Use +C<L</sv_setiv>> to make sure it does). + +This form guarantees to evaluate C<sv> only once. Only use this if C<sv> is an +expression with side effects, otherwise use the more efficient C<SvIV>. =for apidoc Am|NV|SvNV|SV* sv -Coerce the given SV to a double and return it. See C<L</SvNVx>> for a version -which guarantees to evaluate C<sv> only once. +Coerces the given SV to NV and returns it. The returned value in many +circumstances will get stored in C<sv>'s NV slot, but not in all cases. (Use +C<L</sv_setnv>> to make sure it does). + +See C<L</SvNVx>> for a version which guarantees to evaluate C<sv> only once. =for apidoc Am|NV|SvNV_nomg|SV* sv Like C<SvNV> but doesn't process magic. =for apidoc Am|NV|SvNVx|SV* sv -Coerces the given SV to a double and returns it. -Guarantees to evaluate C<sv> only once. Only use -this if C<sv> is an expression with side effects, -otherwise use the more efficient C<SvNV>. +Coerces the given SV to NV and returns it. The returned value in many +circumstances will get stored in C<sv>'s NV slot, but not in all cases. (Use +C<L</sv_setnv>> to make sure it does). + +This form guarantees to evaluate C<sv> only once. Only use this if C<sv> is an +expression with side effects, otherwise use the more efficient C<SvNV>. =for apidoc Am|UV|SvUV|SV* sv -Coerces the given SV to an unsigned integer and returns it. See C<L</SvUVx>> -for a version which guarantees to evaluate C<sv> only once. +Coerces the given SV to UV and returns it. The returned value in many +circumstances will get stored in C<sv>'s UV slot, but not in all cases. (Use +C<L</sv_setuv>> to make sure it does). + +See C<L</SvUVx>> for a version which guarantees to evaluate C<sv> only once. =for apidoc Am|UV|SvUV_nomg|SV* sv Like C<SvUV> but doesn't process magic. =for apidoc Am|UV|SvUVx|SV* sv -Coerces the given SV to an unsigned integer and -returns it. Guarantees to evaluate C<sv> only once. Only -use this if C<sv> is an expression with side effects, -otherwise use the more efficient C<SvUV>. +Coerces the given SV to UV and returns it. The returned value in many +circumstances will get stored in C<sv>'s UV slot, but not in all cases. (Use +C<L</sv_setuv>> to make sure it does). + +This form guarantees to evaluate C<sv> only once. Only use this if C<sv> is an +expression with side effects, otherwise use the more efficient C<SvUV>. =for apidoc Am|bool|SvTRUE|SV* sv Returns a boolean indicating whether Perl would evaluate the SV as true or @@ -1814,10 +1825,10 @@ Like C<sv_utf8_upgrade>, but doesn't do magic on C<sv>. #define SvSHARED_HASH(sv) (0 + SvSHARED_HEK_FROM_PV(SvPVX_const(sv))->hek_hash) /* flag values for sv_*_flags functions */ +#define SV_UTF8_NO_ENCODING 0 /* No longer used */ #define SV_IMMEDIATE_UNREF 1 #define SV_GMAGIC 2 #define SV_COW_DROP_PV 4 -#define SV_UTF8_NO_ENCODING 8 #define SV_NOSTEAL 16 #define SV_CONST_RETURN 32 #define SV_MUTABLE_RETURN 64 @@ -2021,9 +2032,17 @@ Returns a pointer to the character buffer. SV must be of type >= C<SVt_PV>. One alternative is to call C<sv_grow> if you are not sure of the type of SV. +You might mistakenly think that C<len> is the number of bytes to add to the +existing size, but instead it is the total size C<sv> should be. + +=for apidoc Am|char *|SvPVCLEAR|SV* sv +Ensures that sv is a SVt_PV and that its SvCUR is 0, and that it is +properly null terminated. Equivalent to sv_setpvs(""), but more efficient. + =cut */ +#define SvPVCLEAR(sv) sv_setpv_bufsize(sv,0,0) #define SvSHARE(sv) PL_sharehook(aTHX_ sv) #define SvLOCK(sv) PL_lockhook(aTHX_ sv) #define SvUNLOCK(sv) PL_unlockhook(aTHX_ sv) diff --git a/Master/tlpkg/tlperl/lib/CORE/time64.h b/Master/tlpkg/tlperl/lib/CORE/time64.h index 6f60bce8330..78efc73489b 100644 --- a/Master/tlpkg/tlperl/lib/CORE/time64.h +++ b/Master/tlpkg/tlperl/lib/CORE/time64.h @@ -32,7 +32,8 @@ struct TM64 { * Otherwise, if we are on android, use const but * not with g++. */ -# if defined(__GLIBC__) || (defined(__ANDROID__) && !defined(__cplusplus)) || defined(__QNX__) +# if defined(__GLIBC__) || (defined(__ANDROID__) && !defined(__cplusplus)) \ + || defined(__QNX__) || defined(__CYGWIN__) const # endif char *tm_zone; diff --git a/Master/tlpkg/tlperl/lib/CORE/uconfig.h b/Master/tlpkg/tlperl/lib/CORE/uconfig.h index c050a08328e..6832f6f73d7 100644 --- a/Master/tlpkg/tlperl/lib/CORE/uconfig.h +++ b/Master/tlpkg/tlperl/lib/CORE/uconfig.h @@ -182,7 +182,7 @@ /*#define HAS_GETLOGIN / **/ /* HAS_GETPGID: - * This symbol, if defined, indicates to the C program that + * This symbol, if defined, indicates to the C program that * the getpgid(pid) function is available to get the * process group id. */ @@ -641,8 +641,8 @@ * This symbol holds the type used for the second argument to * getgroups() and setgroups(). Usually, this is the same as * gidtype (gid_t) , but sometimes it isn't. - * It can be int, ushort, gid_t, etc... - * It may be necessary to include <sys/types.h> to get any + * It can be int, ushort, gid_t, etc... + * It may be necessary to include <sys/types.h> to get any * typedef'ed information. This is only required if you have * getgroups() or setgroups().. */ @@ -1398,8 +1398,8 @@ * This symbol contains the ~name expanded version of ARCHLIB, to be used * in programs that are not prepared to deal with ~ expansion at run-time. */ -/*#define ARCHLIB "/usr/local/lib/perl5/5.24/unknown" / **/ -/*#define ARCHLIB_EXP "/usr/local/lib/perl5/5.24/unknown" / **/ +/*#define ARCHLIB "/usr/local/lib/perl5/5.26/unknown" / **/ +/*#define ARCHLIB_EXP "/usr/local/lib/perl5/5.26/unknown" / **/ /* BIN: * This symbol holds the path of the bin directory where the package will @@ -1452,8 +1452,8 @@ * This symbol contains the ~name expanded version of PRIVLIB, to be used * in programs that are not prepared to deal with ~ expansion at run-time. */ -#define PRIVLIB "/usr/local/lib/perl5/5.24" /**/ -#define PRIVLIB_EXP "/usr/local/lib/perl5/5.24" /**/ +#define PRIVLIB "/usr/local/lib/perl5/5.26" /**/ +#define PRIVLIB_EXP "/usr/local/lib/perl5/5.26" /**/ /* SITEARCH: * This symbol contains the name of the private library for this package. @@ -1470,8 +1470,8 @@ * This symbol contains the ~name expanded version of SITEARCH, to be used * in programs that are not prepared to deal with ~ expansion at run-time. */ -/*#define SITEARCH "/usr/local/lib/perl5/5.24/unknown" / **/ -/*#define SITEARCH_EXP "/usr/local/lib/perl5/5.24/unknown" / **/ +/*#define SITEARCH "/usr/local/lib/perl5/5.26/unknown" / **/ +/*#define SITEARCH_EXP "/usr/local/lib/perl5/5.26/unknown" / **/ /* SITELIB: * This symbol contains the name of the private library for this package. @@ -1493,8 +1493,8 @@ * removed. The elements in inc_version_list (inc_version_list.U) can * be tacked onto this variable to generate a list of directories to search. */ -#define SITELIB "/usr/local/lib/perl5/5.24" /**/ -#define SITELIB_EXP "/usr/local/lib/perl5/5.24" /**/ +#define SITELIB "/usr/local/lib/perl5/5.26" /**/ +#define SITELIB_EXP "/usr/local/lib/perl5/5.26" /**/ #define SITELIB_STEM "/usr/local/lib/perl5" /**/ /* PERL_VENDORARCH: @@ -1907,9 +1907,34 @@ * LONG_DOUBLE_IS_DOUBLEDOUBLE_128_BIT_BE_BE * LONG_DOUBLE_IS_DOUBLEDOUBLE_128_BIT_LE_BE * LONG_DOUBLE_IS_DOUBLEDOUBLE_128_BIT_BE_LE + * LONG_DOUBLE_IS_VAX_H_FLOAT * LONG_DOUBLE_IS_UNKNOWN_FORMAT * It is only defined if the system supports long doubles. */ +/* LONG_DOUBLE_STYLE_IEEE: + * This symbol, if defined, indicates that the long double + * is any of the IEEE 754 style long doubles: + * LONG_DOUBLE_STYLE_IEEE_STD, LONG_DOUBLE_STYLE_IEEE_EXTENDED, + * LONG_DOUBLE_STYLE_IEEE_DOUBLEDOUBLE. + */ +/* LONG_DOUBLE_STYLE_IEEE_DOUBLEDOUBLE: + * This symbol, if defined, indicates that the long double is + * the 128-bit double-double. + */ +/* LONG_DOUBLE_STYLE_IEEE_EXTENDED: + * This symbol, if defined, indicates that the long double is + * the 80-bit IEEE 754. Note that despite the 'extended' this + * is less than the 'std', since this is an extension of + * the double precision. + */ +/* LONG_DOUBLE_STYLE_IEEE_STD: + * This symbol, if defined, indicates that the long double is + * the 128-bit IEEE 754. + */ +/* LONG_DOUBLE_STYLE_VAX: + * This symbol, if defined, indicates that the long double is + * the 128-bit VAX format H. + */ /*#define HAS_LDEXPL / **/ /*#define HAS_LONG_DOUBLE / **/ #ifdef HAS_LONG_DOUBLE @@ -1924,9 +1949,15 @@ #define LONG_DOUBLE_IS_DOUBLEDOUBLE_128_BIT_BE_BE 6 #define LONG_DOUBLE_IS_DOUBLEDOUBLE_128_BIT_LE_BE 7 #define LONG_DOUBLE_IS_DOUBLEDOUBLE_128_BIT_BE_LE 8 +#define LONG_DOUBLE_IS_VAX_H_FLOAT 9 #define LONG_DOUBLE_IS_UNKNOWN_FORMAT -1 #define LONG_DOUBLE_IS_DOUBLEDOUBLE_128_BIT_LITTLE_ENDIAN LONG_DOUBLE_IS_DOUBLEDOUBLE_128_BIT_LE_LE /* back-compat */ #define LONG_DOUBLE_IS_DOUBLEDOUBLE_128_BIT_BIG_ENDIAN LONG_DOUBLE_IS_DOUBLEDOUBLE_128_BIT_BE_BE /* back-compat */ +#undef LONG_DOUBLE_STYLE_IEEE +#undef LONG_DOUBLE_STYLE_IEEE_DOUBLEDOUBLE +#undef LONG_DOUBLE_STYLE_IEEE_EXTENDED +#undef LONG_DOUBLE_STYLE_IEEE_STD +#undef LONG_DOUBLE_STYLE_VAX #endif /* HAS_LONG_LONG: @@ -2845,6 +2876,13 @@ */ /*#define HAS_FUTIMES / **/ +/* HAS_GAI_STRERROR: + * This symbol, if defined, indicates that the gai_strerror routine + * is available to translate error codes returned by getaddrinfo() + * into human readable strings. + */ +/*#define HAS_GAI_STRERROR / **/ + /* HAS_GETADDRINFO: * This symbol, if defined, indicates that the getaddrinfo() function * is available for use. @@ -3211,9 +3249,19 @@ * This symbol, if defined, indicates that the uselocale routine is * available to set the current locale for the calling thread. */ +/* HAS_QUERYLOCALE: + * This symbol, if defined, indicates that the querylocale routine is + * available to return the name of the locale for a category mask. + */ +/* I_XLOCALE: + * This symbol, if defined, indicates to the C program that it should + * include <xlocale.h> to get uselocale() and its friends. + */ /*#define HAS_NEWLOCALE / **/ /*#define HAS_FREELOCALE / **/ /*#define HAS_USELOCALE / **/ +/*#define HAS_QUERYLOCALE / **/ +/*#define I_XLOCALE / **/ /* HAS_NEXTAFTER: * This symbol, if defined, indicates that the nextafter routine is @@ -3467,6 +3515,13 @@ */ /*#define HAS_FSTATVFS / **/ +/* HAS_STRERROR_L: + * This symbol, if defined, indicates that the strerror_l routine is + * available to return the error message for a given errno value in + * a particular locale (identified by a locale_t object). + */ +/*#define HAS_STRERROR_L / **/ + /* HAS_STRFTIME: * This symbol, if defined, indicates that the strftime routine is * available to do time formatting. @@ -3646,6 +3701,12 @@ */ /*#define HAS_WRITEV / **/ +/* DEFAULT_INC_EXCLUDES_DOT: + * This symbol, if defined, removes the legacy default behavior of + * including '.' at the end of @INC. + */ +/*#define DEFAULT_INC_EXCLUDES_DOT / **/ + /* USE_DYNAMIC_LOADING: * This symbol, if defined, indicates that dynamic loading of * some sort is available. @@ -3918,8 +3979,46 @@ * DOUBLE_IS_IEEE_754_128_BIT_BIG_ENDIAN * DOUBLE_IS_IEEE_754_64_BIT_MIXED_ENDIAN_LE_BE * DOUBLE_IS_IEEE_754_64_BIT_MIXED_ENDIAN_BE_LE + * DOUBLE_IS_VAX_F_FLOAT + * DOUBLE_IS_VAX_D_FLOAT + * DOUBLE_IS_VAX_G_FLOAT + * DOUBLE_IS_IBM_SINGLE_32_BIT + * DOUBLE_IS_IBM_DOUBLE_64_BIT + * DOUBLE_IS_CRAY_SINGLE_64_BIT * DOUBLE_IS_UNKNOWN_FORMAT */ +/* DOUBLE_HAS_INF: + * This symbol, if defined, indicates that the double has + * the infinity. + */ +/* DOUBLE_HAS_NAN: + * This symbol, if defined, indicates that the double has + * the not-a-number. + */ +/* DOUBLE_HAS_NEGATIVE_ZERO: + * This symbol, if defined, indicates that the double has + * the negative_zero. + */ +/* DOUBLE_HAS_SUBNORMALS: + * This symbol, if defined, indicates that the double has + * the subnormals (denormals). + */ +/* DOUBLE_STYLE_CRAY: + * This symbol, if defined, indicates that the double is + * the 64-bit CRAY mainframe format. + */ +/* DOUBLE_STYLE_IBM: + * This symbol, if defined, indicates that the double is + * the 64-bit IBM mainframe format. + */ +/* DOUBLE_STYLE_IEEE: + * This symbol, if defined, indicates that the double is + * the 64-bit IEEE 754. + */ +/* DOUBLE_STYLE_VAX: + * This symbol, if defined, indicates that the double is + * the 64-bit VAX format D or G. + */ #define DOUBLEKIND 3 /**/ #define DOUBLE_IS_IEEE_754_32_BIT_LITTLE_ENDIAN 1 #define DOUBLE_IS_IEEE_754_32_BIT_BIG_ENDIAN 2 @@ -3929,11 +4028,25 @@ #define DOUBLE_IS_IEEE_754_128_BIT_BIG_ENDIAN 6 #define DOUBLE_IS_IEEE_754_64_BIT_MIXED_ENDIAN_LE_BE 7 #define DOUBLE_IS_IEEE_754_64_BIT_MIXED_ENDIAN_BE_LE 8 +#define DOUBLE_IS_VAX_F_FLOAT 9 +#define DOUBLE_IS_VAX_D_FLOAT 10 +#define DOUBLE_IS_VAX_G_FLOAT 11 +#define DOUBLE_IS_IBM_SINGLE_32_BIT 12 +#define DOUBLE_IS_IBM_DOUBLE_64_BIT 13 +#define DOUBLE_IS_CRAY_SINGLE_64_BIT 14 #define DOUBLE_IS_UNKNOWN_FORMAT -1 /*#define PERL_PRIfldbl "llf" / **/ /*#define PERL_PRIgldbl "llg" / **/ /*#define PERL_PRIeldbl "lle" / **/ /*#define PERL_SCNfldbl "llf" / **/ +#define DOUBLE_HAS_INF +#define DOUBLE_HAS_NAN +#define DOUBLE_HAS_NEGATIVE_ZERO +#define DOUBLE_HAS_SUBNORMALS +#undef DOUBLE_STYLE_CRAY +#undef DOUBLE_STYLE_IBM +#define DOUBLE_STYLE_IEEE +#undef DOUBLE_STYLE_VAX /* DOUBLEMANTBITS: * This symbol, if defined, tells how many mantissa bits @@ -5241,6 +5354,6 @@ #endif /* Generated from: - * ce61c4f18e82f6356cdae44c5336ceac1d3253033d7449651927f5633be5c3c2 config_h.SH - * fc611849cb5b1e14ec1687b255dac15414cc5e2e11b192d94e08136cfe277f75 uconfig.sh + * a0cea6273c16c1c5d8625665c84bda01926ce960c26873d4e5596b5b02a53e92 config_h.SH + * b1c042726e6a17692921b6947c4e7c196c5c0cee011667ba719b15af7c31e669 uconfig.sh * ex: set ro: */ diff --git a/Master/tlpkg/tlperl/lib/CORE/unicode_constants.h b/Master/tlpkg/tlperl/lib/CORE/unicode_constants.h index bffaffedb2e..1c0e62e3569 100755 --- a/Master/tlpkg/tlperl/lib/CORE/unicode_constants.h +++ b/Master/tlpkg/tlperl/lib/CORE/unicode_constants.h @@ -21,7 +21,31 @@ * "_TAIL" if instead it represents all but the first byte. This, and * with no additional suffix are both string constants */ -#define UNICODE_MAJOR_VERSION 8 +/* +=head1 Unicode Support + +=for apidoc AmU|placeholder|BOM_UTF8 + +This is a macro that evaluates to a string constant of the UTF-8 bytes that +define the Unicode BYTE ORDER MARK (U+FEFF) for the platform that perl +is compiled on. This allows code to use a mnemonic for this character that +works on both ASCII and EBCDIC platforms. +S<C<sizeof(BOM_UTF8) - 1>> can be used to get its length in +bytes. + +=for apidoc AmU|placeholder|REPLACEMENT_CHARACTER_UTF8 + +This is a macro that evaluates to a string constant of the UTF-8 bytes that +define the Unicode REPLACEMENT CHARACTER (U+FFFD) for the platform that perl +is compiled on. This allows code to use a mnemonic for this character that +works on both ASCII and EBCDIC platforms. +S<C<sizeof(REPLACEMENT_CHARACTER_UTF8) - 1>> can be used to get its length in +bytes. + +=cut +*/ + +#define UNICODE_MAJOR_VERSION 9 #define UNICODE_DOT_VERSION 0 #define UNICODE_DOT_DOT_VERSION 0 @@ -45,6 +69,10 @@ # define BOM_UTF8_FIRST_BYTE 0xEF /* U+FEFF */ # define BOM_UTF8_TAIL "\xBB\xBF" /* U+FEFF */ +# define BOM_UTF8 "\xEF\xBB\xBF" /* U+FEFF */ + +# define REPLACEMENT_CHARACTER_UTF8 "\xEF\xBF\xBD" /* U+FFFD */ + # define NBSP_NATIVE 0xA0 /* U+00A0 */ # define NBSP_UTF8 "\xC2\xA0" /* U+00A0 */ @@ -84,6 +112,10 @@ # define BOM_UTF8_FIRST_BYTE 0xDD /* U+FEFF */ # define BOM_UTF8_TAIL "\x73\x66\x73" /* U+FEFF */ +# define BOM_UTF8 "\xDD\x73\x66\x73" /* U+FEFF */ + +# define REPLACEMENT_CHARACTER_UTF8 "\xDD\x73\x73\x71" /* U+FFFD */ + # define NBSP_NATIVE 0x41 /* U+00A0 */ # define NBSP_UTF8 "\x80\x41" /* U+00A0 */ @@ -123,6 +155,10 @@ # define BOM_UTF8_FIRST_BYTE 0xDD /* U+FEFF */ # define BOM_UTF8_TAIL "\x72\x65\x72" /* U+FEFF */ +# define BOM_UTF8 "\xDD\x72\x65\x72" /* U+FEFF */ + +# define REPLACEMENT_CHARACTER_UTF8 "\xDD\x72\x72\x70" /* U+FFFD */ + # define NBSP_NATIVE 0x41 /* U+00A0 */ # define NBSP_UTF8 "\x78\x41" /* U+00A0 */ @@ -141,10 +177,10 @@ #endif /* EBCDIC 037 */ /* The number of code points not matching \pC */ -#define NON_OTHER_COUNT_FOR_USE_ONLY_BY_REGCOMP_DOT_C 120522 +#define NON_OTHER_COUNT_FOR_USE_ONLY_BY_REGCOMP_DOT_C 128021 /* The highest code point that has any type of case change */ -#define HIGHEST_CASE_CHANGING_CP_FOR_USE_ONLY_BY_UTF8_DOT_C 0x118DF +#define HIGHEST_CASE_CHANGING_CP_FOR_USE_ONLY_BY_UTF8_DOT_C 0x1E943 #endif /* H_UNICODE_CONSTANTS */ diff --git a/Master/tlpkg/tlperl/lib/CORE/unixish.h b/Master/tlpkg/tlperl/lib/CORE/unixish.h index e05cb6a4f34..4cd8e438339 100644 --- a/Master/tlpkg/tlperl/lib/CORE/unixish.h +++ b/Master/tlpkg/tlperl/lib/CORE/unixish.h @@ -159,7 +159,7 @@ int afstat(int fd, struct stat *statb); #define BIT_BUCKET "/dev/null" -#define dXSUB_SYS +#define dXSUB_SYS dNOOP #ifndef NO_ENVIRON_ARRAY #define USE_ENVIRON_ARRAY diff --git a/Master/tlpkg/tlperl/lib/CORE/utf8.h b/Master/tlpkg/tlperl/lib/CORE/utf8.h index c954b42ff5d..59e8972822f 100644 --- a/Master/tlpkg/tlperl/lib/CORE/utf8.h +++ b/Master/tlpkg/tlperl/lib/CORE/utf8.h @@ -50,14 +50,21 @@ Search for the string "utf8" in this document. =for apidoc is_ascii_string -This is a misleadingly-named synonym for L</is_invariant_string>. +This is a misleadingly-named synonym for L</is_utf8_invariant_string>. On ASCII-ish platforms, the name isn't misleading: the ASCII-range characters are exactly the UTF-8 invariants. But EBCDIC machines have more invariants -than just the ASCII characters, so C<is_invariant_string> is preferred. +than just the ASCII characters, so C<is_utf8_invariant_string> is preferred. + +=for apidoc is_invariant_string + +This is a somewhat misleadingly-named synonym for L</is_utf8_invariant_string>. +C<is_utf8_invariant_string> is preferred, as it indicates under what conditions +the string is invariant. =cut */ -#define is_ascii_string(s, len) is_invariant_string(s, len) +#define is_ascii_string(s, len) is_utf8_invariant_string(s, len) +#define is_invariant_string(s, len) is_utf8_invariant_string(s, len) #define uvchr_to_utf8(a,b) uvchr_to_utf8_flags(a,b,0) #define uvchr_to_utf8_flags(d,uv,flags) \ @@ -65,15 +72,19 @@ than just the ASCII characters, so C<is_invariant_string> is preferred. #define utf8_to_uvchr_buf(s, e, lenp) \ utf8n_to_uvchr(s, (U8*)(e) - (U8*)(s), lenp, \ ckWARN_d(WARN_UTF8) ? 0 : UTF8_ALLOW_ANY) +#define utf8n_to_uvchr(s, len, lenp, flags) \ + utf8n_to_uvchr_error(s, len, lenp, flags, 0) #define to_uni_fold(c, p, lenp) _to_uni_fold_flags(c, p, lenp, FOLD_FLAGS_FULL) -#define to_utf8_fold(c, p, lenp) _to_utf8_fold_flags(c, p, lenp, FOLD_FLAGS_FULL) -#define to_utf8_lower(a,b,c) _to_utf8_lower_flags(a,b,c,0) -#define to_utf8_upper(a,b,c) _to_utf8_upper_flags(a,b,c,0) -#define to_utf8_title(a,b,c) _to_utf8_title_flags(a,b,c,0) -/* Source backward compatibility. */ -#define is_utf8_string_loc(s, len, ep) is_utf8_string_loclen(s, len, ep, 0) +#define to_utf8_fold(s, r, lenr) \ + _to_utf8_fold_flags (s, NULL, r, lenr, FOLD_FLAGS_FULL, __FILE__, __LINE__) +#define to_utf8_lower(s, r, lenr) \ + _to_utf8_lower_flags(s, NULL, r ,lenr, 0, __FILE__, __LINE__) +#define to_utf8_upper(s, r, lenr) \ + _to_utf8_upper_flags(s, NULL, r, lenr, 0, __FILE__, __LINE__) +#define to_utf8_title(s, r, lenr) \ + _to_utf8_title_flags(s, NULL, r, lenr ,0, __FILE__, __LINE__) #define foldEQ_utf8(s1, pe1, l1, u1, s2, pe2, l2, u2) \ foldEQ_utf8_flags(s1, pe1, l1, u1, s2, pe2, l2, u2, 0) @@ -156,8 +167,8 @@ END_EXTERN_C * rarely do we need to distinguish them. The term "NATIVE_UTF8" applies to * whichever one is applicable on the current platform */ #ifdef PERL_SMALL_MACRO_BUFFER -#define NATIVE_UTF8_TO_I8(ch) (ch) -#define I8_TO_NATIVE_UTF8(ch) (ch) +#define NATIVE_UTF8_TO_I8(ch) ((U8) (ch)) +#define I8_TO_NATIVE_UTF8(ch) ((U8) (ch)) #else #define NATIVE_UTF8_TO_I8(ch) (__ASSERT_(FITS_IN_8_BITS(ch)) ((U8) (ch))) #define I8_TO_NATIVE_UTF8(ch) (__ASSERT_(FITS_IN_8_BITS(ch)) ((U8) (ch))) @@ -169,24 +180,30 @@ END_EXTERN_C /* - The following table is from Unicode 3.2. + The following table is from Unicode 3.2, plus the Perl extensions for above + U+10FFFF - Code Points 1st Byte 2nd Byte 3rd Byte 4th Byte + Code Points 1st Byte 2nd Byte 3rd 4th 5th 6th 7th 8th-13th U+0000..U+007F 00..7F U+0080..U+07FF * C2..DF 80..BF - U+0800..U+0FFF E0 * A0..BF 80..BF - U+1000..U+CFFF E1..EC 80..BF 80..BF - U+D000..U+D7FF ED 80..9F 80..BF - U+D800..U+DFFF ED A0..BF 80..BF (surrogates) - U+E000..U+FFFF EE..EF 80..BF 80..BF - U+10000..U+3FFFF F0 * 90..BF 80..BF 80..BF - U+40000..U+FFFFF F1..F3 80..BF 80..BF 80..BF - U+100000..U+10FFFF F4 80..8F 80..BF 80..BF - Below are non-Unicode code points - U+110000..U+13FFFF F4 90..BF 80..BF 80..BF - U+110000..U+1FFFFF F5..F7 80..BF 80..BF 80..BF - U+200000..: F8.. * 88..BF 80..BF 80..BF 80..BF + U+0800..U+0FFF E0 * A0..BF 80..BF + U+1000..U+CFFF E1..EC 80..BF 80..BF + U+D000..U+D7FF ED 80..9F 80..BF + U+D800..U+DFFF ED A0..BF 80..BF (surrogates) + U+E000..U+FFFF EE..EF 80..BF 80..BF + U+10000..U+3FFFF F0 * 90..BF 80..BF 80..BF + U+40000..U+FFFFF F1..F3 80..BF 80..BF 80..BF + U+100000..U+10FFFF F4 80..8F 80..BF 80..BF + Below are above-Unicode code points + U+110000..U+13FFFF F4 90..BF 80..BF 80..BF + U+110000..U+1FFFFF F5..F7 80..BF 80..BF 80..BF + U+200000..U+FFFFFF F8 * 88..BF 80..BF 80..BF 80..BF +U+1000000..U+3FFFFFF F9..FB 80..BF 80..BF 80..BF 80..BF +U+4000000..U+3FFFFFFF FC * 84..BF 80..BF 80..BF 80..BF 80..BF +U+40000000..U+7FFFFFFF FD 80..BF 80..BF 80..BF 80..BF 80..BF +U+80000000..U+FFFFFFFFF FE * 82..BF 80..BF 80..BF 80..BF 80..BF 80..BF +U+1000000000.. FF 80..BF 80..BF 80..BF 80..BF 80..BF * 81..BF 80..BF Note the gaps before several of the byte entries above marked by '*'. These are caused by legal UTF-8 avoiding non-shortest encodings: it is technically @@ -210,17 +227,36 @@ As you can see, the continuation bytes all begin with C<10>, and the leading bits of the start byte tell how many bytes there are in the encoded character. -Perl's extended UTF-8 means we can have start bytes up to FF. +Perl's extended UTF-8 means we can have start bytes up through FF, though any +beginning with FF yields a code point that is too large for 32-bit ASCII +platforms. FF signals to use 13 bytes for the encoded character. This breaks +the paradigm that the number of leading bits gives how many total bytes there +are in the character. */ +/* Anything larger than this will overflow the word if it were converted into a UV */ +#if defined(UV_IS_QUAD) +# define HIGHEST_REPRESENTABLE_UTF8 "\xFF\x80\x8F\xBF\xBF\xBF\xBF\xBF\xBF\xBF\xBF\xBF\xBF" +#else +# define HIGHEST_REPRESENTABLE_UTF8 "\xFE\x83\xBF\xBF\xBF\xBF\xBF" +#endif + /* Is the representation of the Unicode code point 'cp' the same regardless of * being encoded in UTF-8 or not? */ #define OFFUNI_IS_INVARIANT(cp) isASCII(cp) -/* Is the representation of the code point 'cp' the same regardless of - * being encoded in UTF-8 or not? 'cp' is native if < 256; Unicode otherwise - * */ +/* +=for apidoc Am|bool|UVCHR_IS_INVARIANT|UV cp + +Evaluates to 1 if the representation of code point C<cp> is the same whether or +not it is encoded in UTF-8; otherwise evaluates to 0. UTF-8 invariant +characters can be copied as-is when converting to/from UTF-8, saving time. +C<cp> is Unicode if above 255; otherwise is platform-native. + +=cut + */ + #define UVCHR_IS_INVARIANT(cp) OFFUNI_IS_INVARIANT(cp) /* This defines the bits that are to be in the continuation bytes of a multi-byte @@ -275,6 +311,104 @@ Perl's extended UTF-8 means we can have start bytes up to FF. * encounter */ #define isUTF8_POSSIBLY_PROBLEMATIC(c) ((U8) c >= 0xED) +/* A helper macro for isUTF8_CHAR, so use that one instead of this. This was + * generated by regen/regcharclass.pl, and then moved here. Then it was + * hand-edited to add some LIKELY() calls, presuming that malformations are + * unlikely. The lines that generated it were then commented out. This was + * done because it takes on the order of 10 minutes to generate, and is never + * going to change, unless the generated code is improved, and figuring out + * the LIKELYs there would be hard. + * + UTF8_CHAR: Matches legal UTF-8 variant code points up through 0x1FFFFFF + + 0x80 - 0x1FFFFF +*/ +/*** GENERATED CODE ***/ +#define is_UTF8_CHAR_utf8_no_length_checks(s) \ +( ( 0xC2 <= ((const U8*)s)[0] && ((const U8*)s)[0] <= 0xDF ) ? \ + ( LIKELY( ( ((const U8*)s)[1] & 0xC0 ) == 0x80 ) ? 2 : 0 ) \ +: ( 0xE0 == ((const U8*)s)[0] ) ? \ + ( LIKELY( ( ( ((const U8*)s)[1] & 0xE0 ) == 0xA0 ) && ( ( ((const U8*)s)[2] & 0xC0 ) == 0x80 ) ) ? 3 : 0 )\ +: ( 0xE1 <= ((const U8*)s)[0] && ((const U8*)s)[0] <= 0xEF ) ? \ + ( LIKELY( ( ( ((const U8*)s)[1] & 0xC0 ) == 0x80 ) && ( ( ((const U8*)s)[2] & 0xC0 ) == 0x80 ) ) ? 3 : 0 )\ +: ( 0xF0 == ((const U8*)s)[0] ) ? \ + ( LIKELY( ( ( 0x90 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0xBF ) && ( ( ((const U8*)s)[2] & 0xC0 ) == 0x80 ) ) && ( ( ((const U8*)s)[3] & 0xC0 ) == 0x80 ) ) ? 4 : 0 )\ +: ( ( ( ( 0xF1 <= ((const U8*)s)[0] && ((const U8*)s)[0] <= 0xF7 ) && LIKELY( ( ((const U8*)s)[1] & 0xC0 ) == 0x80 ) ) && LIKELY( ( ((const U8*)s)[2] & 0xC0 ) == 0x80 ) ) && LIKELY( ( ((const U8*)s)[3] & 0xC0 ) == 0x80 ) ) ? 4 : 0 ) + +/* The above macro handles UTF-8 that has this start byte as the maximum */ +#define _IS_UTF8_CHAR_HIGHEST_START_BYTE 0xF7 + +/* A helper macro for isSTRICT_UTF8_CHAR, so use that one instead of this. + * Like is_UTF8_CHAR_utf8_no_length_checks(), this was moved here and LIKELYs + * added manually. + * + STRICT_UTF8_CHAR: Matches legal Unicode UTF-8 variant code points, no + surrrogates nor non-character code points +*/ +/*** GENERATED CODE ***/ +#define is_STRICT_UTF8_CHAR_utf8_no_length_checks(s) \ +( ( 0xC2 <= ((const U8*)s)[0] && ((const U8*)s)[0] <= 0xDF ) ? \ + ( LIKELY( ( ((const U8*)s)[1] & 0xC0 ) == 0x80 ) ? 2 : 0 ) \ +: ( 0xE0 == ((const U8*)s)[0] ) ? \ + ( LIKELY( ( ( ((const U8*)s)[1] & 0xE0 ) == 0xA0 ) && ( ( ((const U8*)s)[2] & 0xC0 ) == 0x80 ) ) ? 3 : 0 )\ +: ( ( 0xE1 <= ((const U8*)s)[0] && ((const U8*)s)[0] <= 0xEC ) || 0xEE == ((const U8*)s)[0] ) ?\ + ( ( ( ( ((const U8*)s)[1] & 0xC0 ) == 0x80 ) && ( ( ((const U8*)s)[2] & 0xC0 ) == 0x80 ) ) ? 3 : 0 )\ +: ( 0xED == ((const U8*)s)[0] ) ? \ + ( LIKELY( ( ( ((const U8*)s)[1] & 0xE0 ) == 0x80 ) && ( ( ((const U8*)s)[2] & 0xC0 ) == 0x80 ) ) ? 3 : 0 )\ +: ( 0xEF == ((const U8*)s)[0] ) ? \ + ( ( ( 0x80 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0xB6 ) || ( 0xB8 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0xBE ) ) ?\ + ( LIKELY( ( ((const U8*)s)[2] & 0xC0 ) == 0x80 ) ? 3 : 0 ) \ + : ( 0xB7 == ((const U8*)s)[1] ) ? \ + ( LIKELY( ( ((const U8*)s)[2] & 0xF0 ) == 0x80 || ( ((const U8*)s)[2] & 0xF0 ) == 0xB0 ) ? 3 : 0 )\ + : ( ( 0xBF == ((const U8*)s)[1] ) && ( 0x80 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0xBD ) ) ? 3 : 0 )\ +: ( 0xF0 == ((const U8*)s)[0] ) ? \ + ( ( ( 0x90 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x9E ) || ( 0xA0 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0xAE ) || ( 0xB0 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0xBE ) ) ?\ + ( LIKELY( ( ( ((const U8*)s)[2] & 0xC0 ) == 0x80 ) && ( ( ((const U8*)s)[3] & 0xC0 ) == 0x80 ) ) ? 4 : 0 )\ + : ( ((const U8*)s)[1] == 0x9F || ( ( ((const U8*)s)[1] & 0xEF ) == 0xAF ) ) ? \ + ( ( 0x80 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0xBE ) ? \ + ( LIKELY( ( ((const U8*)s)[3] & 0xC0 ) == 0x80 ) ? 4 : 0 ) \ + : LIKELY( ( 0xBF == ((const U8*)s)[2] ) && ( 0x80 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0xBD ) ) ? 4 : 0 )\ + : 0 ) \ +: ( 0xF1 <= ((const U8*)s)[0] && ((const U8*)s)[0] <= 0xF3 ) ? \ + ( ( ( ( ((const U8*)s)[1] & 0xC8 ) == 0x80 ) || ( ( ((const U8*)s)[1] & 0xCC ) == 0x88 ) || ( ( ((const U8*)s)[1] & 0xCE ) == 0x8C ) || ( ( ((const U8*)s)[1] & 0xCF ) == 0x8E ) ) ?\ + ( LIKELY( ( ( ((const U8*)s)[2] & 0xC0 ) == 0x80 ) && ( ( ((const U8*)s)[3] & 0xC0 ) == 0x80 ) ) ? 4 : 0 )\ + : ( ( ((const U8*)s)[1] & 0xCF ) == 0x8F ) ? \ + ( ( 0x80 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0xBE ) ? \ + ( LIKELY( ( ((const U8*)s)[3] & 0xC0 ) == 0x80 ) ? 4 : 0 ) \ + : LIKELY( ( 0xBF == ((const U8*)s)[2] ) && ( 0x80 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0xBD ) ) ? 4 : 0 )\ + : 0 ) \ +: ( 0xF4 == ((const U8*)s)[0] ) ? \ + ( ( 0x80 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x8E ) ? \ + ( LIKELY( ( ( ((const U8*)s)[2] & 0xC0 ) == 0x80 ) && ( ( ((const U8*)s)[3] & 0xC0 ) == 0x80 ) ) ? 4 : 0 )\ + : ( 0x8F == ((const U8*)s)[1] ) ? \ + ( ( 0x80 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0xBE ) ? \ + ( LIKELY( ( ((const U8*)s)[3] & 0xC0 ) == 0x80 ) ? 4 : 0 ) \ + : LIKELY( ( 0xBF == ((const U8*)s)[2] ) && ( 0x80 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0xBD ) ) ? 4 : 0 )\ + : 0 ) \ +: 0 ) + +/* Similarly, + C9_STRICT_UTF8_CHAR: Matches legal Unicode UTF-8 variant code + points, no surrogates + 0x0080 - 0xD7FF + 0xE000 - 0x10FFFF +*/ +/*** GENERATED CODE ***/ +#define is_C9_STRICT_UTF8_CHAR_utf8_no_length_checks(s) \ +( ( 0xC2 <= ((const U8*)s)[0] && ((const U8*)s)[0] <= 0xDF ) ? \ + ( LIKELY( ( ((const U8*)s)[1] & 0xC0 ) == 0x80 ) ? 2 : 0 ) \ +: ( 0xE0 == ((const U8*)s)[0] ) ? \ + ( LIKELY( ( ( ((const U8*)s)[1] & 0xE0 ) == 0xA0 ) && ( ( ((const U8*)s)[2] & 0xC0 ) == 0x80 ) ) ? 3 : 0 )\ +: ( ( 0xE1 <= ((const U8*)s)[0] && ((const U8*)s)[0] <= 0xEC ) || ( ((const U8*)s)[0] & 0xFE ) == 0xEE ) ?\ + ( LIKELY( ( ( ((const U8*)s)[1] & 0xC0 ) == 0x80 ) && ( ( ((const U8*)s)[2] & 0xC0 ) == 0x80 ) ) ? 3 : 0 )\ +: ( 0xED == ((const U8*)s)[0] ) ? \ + ( LIKELY( ( ( ((const U8*)s)[1] & 0xE0 ) == 0x80 ) && ( ( ((const U8*)s)[2] & 0xC0 ) == 0x80 ) ) ? 3 : 0 )\ +: ( 0xF0 == ((const U8*)s)[0] ) ? \ + ( LIKELY( ( ( 0x90 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0xBF ) && ( ( ((const U8*)s)[2] & 0xC0 ) == 0x80 ) ) && ( ( ((const U8*)s)[3] & 0xC0 ) == 0x80 ) ) ? 4 : 0 )\ +: ( 0xF1 <= ((const U8*)s)[0] && ((const U8*)s)[0] <= 0xF3 ) ? \ + ( LIKELY( ( ( ( ((const U8*)s)[1] & 0xC0 ) == 0x80 ) && ( ( ((const U8*)s)[2] & 0xC0 ) == 0x80 ) ) && ( ( ((const U8*)s)[3] & 0xC0 ) == 0x80 ) ) ? 4 : 0 )\ +: LIKELY( ( ( ( 0xF4 == ((const U8*)s)[0] ) && ( ( ((const U8*)s)[1] & 0xF0 ) == 0x80 ) ) && ( ( ((const U8*)s)[2] & 0xC0 ) == 0x80 ) ) && ( ( ((const U8*)s)[3] & 0xC0 ) == 0x80 ) ) ? 4 : 0 ) + #endif /* EBCDIC vs ASCII */ /* 2**UTF_ACCUMULATION_SHIFT - 1 */ @@ -338,11 +472,14 @@ encoded as UTF-8. C<cp> is a native (ASCII or EBCDIC) code point if less than */ #define UVCHR_SKIP(uv) ( UVCHR_IS_INVARIANT(uv) ? 1 : __BASE_UNI_SKIP(uv)) -/* As explained in the comments for __COMMON_UNI_SKIP, 32 start bytes with +/* The largest code point representable by two UTF-8 bytes on this platform. + * As explained in the comments for __COMMON_UNI_SKIP, 32 start bytes with * UTF_ACCUMULATION_SHIFT bits of information each */ #define MAX_UTF8_TWO_BYTE (32 * (1U << UTF_ACCUMULATION_SHIFT) - 1) -/* constrained by EBCDIC which has 5 bits per continuation byte */ +/* The largest code point representable by two UTF-8 bytes on any platform that + * Perl runs on. This value is constrained by EBCDIC which has 5 bits per + * continuation byte */ #define MAX_PORTABLE_UTF8_TWO_BYTE (32 * (1U << 5) - 1) /* The maximum number of UTF-8 bytes a single Unicode character can @@ -396,17 +533,11 @@ encoded as UTF-8. C<cp> is a native (ASCII or EBCDIC) code point if less than | ((NATIVE_UTF8_TO_I8((U8)new)) \ & UTF_CONTINUATION_MASK)) -/* If a value is anded with this, and the result is non-zero, then using the - * original value in UTF8_ACCUMULATE will overflow, shifting bits off the left - * */ -#define UTF_ACCUMULATION_OVERFLOW_MASK \ - (((UV) UTF_CONTINUATION_MASK) << ((sizeof(UV) * CHARBITS) \ - - UTF_ACCUMULATION_SHIFT)) - /* This works in the face of malformed UTF-8. */ -#define UTF8_IS_NEXT_CHAR_DOWNGRADEABLE(s, e) (UTF8_IS_DOWNGRADEABLE_START(*s) \ - && ( (e) - (s) > 1) \ - && UTF8_IS_CONTINUATION(*((s)+1))) +#define UTF8_IS_NEXT_CHAR_DOWNGRADEABLE(s, e) \ + ( UTF8_IS_DOWNGRADEABLE_START(*(s)) \ + && ( (e) - (s) > 1) \ + && UTF8_IS_CONTINUATION(*((s)+1))) /* Number of bytes a code point occupies in UTF-8. */ #define NATIVE_SKIP(uv) UVCHR_SKIP(uv) @@ -464,13 +595,27 @@ only) byte is pointed to by C<s>. * through 255 */ #define UNI_IS_INVARIANT(cp) UVCHR_IS_INVARIANT(cp) -/* Is the byte 'c' the same character when encoded in UTF-8 as when not. This - * works on both UTF-8 encoded strings and non-encoded, as it returns TRUE in - * each for the exact same set of bit patterns. It is valid on a subset of - * what UVCHR_IS_INVARIANT is valid on, so can just use that; and the compiler - * should optimize out anything extraneous given the implementation of the - * latter. The |0 makes sure this isn't mistakenly called with a ptr argument. - * */ +/* +=for apidoc Am|bool|UTF8_IS_INVARIANT|char c + +Evaluates to 1 if the byte C<c> represents the same character when encoded in +UTF-8 as when not; otherwise evaluates to 0. UTF-8 invariant characters can be +copied as-is when converting to/from UTF-8, saving time. + +In spite of the name, this macro gives the correct result if the input string +from which C<c> comes is not encoded in UTF-8. + +See C<L</UVCHR_IS_INVARIANT>> for checking if a UV is invariant. + +=cut + +The reason it works on both UTF-8 encoded strings and non-UTF-8 encoded, is +that it returns TRUE in each for the exact same set of bit patterns. It is +valid on a subset of what UVCHR_IS_INVARIANT is valid on, so can just use that; +and the compiler should optimize out anything extraneous given the +implementation of the latter. The |0 makes sure this isn't mistakenly called +with a ptr argument. +*/ #define UTF8_IS_INVARIANT(c) UVCHR_IS_INVARIANT((c) | 0) /* Like the above, but its name implies a non-UTF8 input, which as the comments @@ -533,20 +678,37 @@ only) byte is pointed to by C<s>. * beginning of a utf8 character. Now that foo_utf8() determines that itself, * no need to do it again here */ -#define isIDFIRST_lazy_if(p,UTF) ((IN_BYTES || !UTF) \ - ? isIDFIRST(*(p)) \ - : isIDFIRST_utf8((const U8*)p)) -#define isWORDCHAR_lazy_if(p,UTF) ((IN_BYTES || (!UTF)) \ - ? isWORDCHAR(*(p)) \ - : isWORDCHAR_utf8((const U8*)p)) -#define isALNUM_lazy_if(p,UTF) isWORDCHAR_lazy_if(p,UTF) +#define isIDFIRST_lazy_if(p,UTF) \ + _is_utf8_FOO(_CC_IDFIRST, (const U8 *) p, "isIDFIRST_lazy_if", \ + "isIDFIRST_lazy_if_safe", \ + cBOOL(UTF && ! IN_BYTES), 0, __FILE__,__LINE__) + +#define isIDFIRST_lazy_if_safe(p, e, UTF) \ + ((IN_BYTES || !UTF) \ + ? isIDFIRST(*(p)) \ + : isIDFIRST_utf8_safe(p, e)) + +#define isWORDCHAR_lazy_if(p,UTF) \ + _is_utf8_FOO(_CC_IDFIRST, (const U8 *) p, "isWORDCHAR_lazy_if", \ + "isWORDCHAR_lazy_if_safe", \ + cBOOL(UTF && ! IN_BYTES), 0, __FILE__,__LINE__) + +#define isWORDCHAR_lazy_if_safe(p, e, UTF) \ + ((IN_BYTES || !UTF) \ + ? isWORDCHAR(*(p)) \ + : isWORDCHAR_utf8_safe((U8 *) p, (U8 *) e)) + +#define isALNUM_lazy_if(p,UTF) \ + _is_utf8_FOO(_CC_IDFIRST, (const U8 *) p, "isALNUM_lazy_if", \ + "isWORDCHAR_lazy_if_safe", \ + cBOOL(UTF && ! IN_BYTES), 0, __FILE__,__LINE__) #define UTF8_MAXLEN UTF8_MAXBYTES /* A Unicode character can fold to up to 3 characters */ #define UTF8_MAX_FOLD_CHAR_EXPAND 3 -#define IN_BYTES (CopHINTS_get(PL_curcop) & HINT_BYTES) +#define IN_BYTES UNLIKELY(CopHINTS_get(PL_curcop) & HINT_BYTES) /* @@ -565,49 +727,65 @@ case any call to string overloading updates the internal UTF-8 encoding flag. * Is so within 'feature unicode_strings' or 'locale :not_characters', and not * within 'use bytes'. UTF-8 locales are not tested for here, but perhaps * could be */ -#define IN_UNI_8_BIT \ - (((CopHINTS_get(PL_curcop) & (HINT_UNI_8_BIT)) \ - || (CopHINTS_get(PL_curcop) & HINT_LOCALE_PARTIAL \ - /* -1 below is for :not_characters */ \ - && _is_in_locale_category(FALSE, -1))) \ - && ! IN_BYTES) +#define IN_UNI_8_BIT \ + (( ( (CopHINTS_get(PL_curcop) & HINT_UNI_8_BIT)) \ + || ( CopHINTS_get(PL_curcop) & HINT_LOCALE_PARTIAL \ + /* -1 below is for :not_characters */ \ + && _is_in_locale_category(FALSE, -1))) \ + && (! IN_BYTES)) #define UTF8_ALLOW_EMPTY 0x0001 /* Allow a zero length string */ +#define UTF8_GOT_EMPTY UTF8_ALLOW_EMPTY /* Allow first byte to be a continuation byte */ #define UTF8_ALLOW_CONTINUATION 0x0002 +#define UTF8_GOT_CONTINUATION UTF8_ALLOW_CONTINUATION -/* Allow second... bytes to be non-continuation bytes */ +/* Unexpected continuation byte */ #define UTF8_ALLOW_NON_CONTINUATION 0x0004 +#define UTF8_GOT_NON_CONTINUATION UTF8_ALLOW_NON_CONTINUATION /* expecting more bytes than were available in the string */ #define UTF8_ALLOW_SHORT 0x0008 +#define UTF8_GOT_SHORT UTF8_ALLOW_SHORT -/* Overlong sequence; i.e., the code point can be specified in fewer bytes. */ +/* Overlong sequence; i.e., the code point can be specified in fewer bytes. + * First one will convert the overlong to the REPLACEMENT CHARACTER; second + * will return what the overlong evaluates to */ #define UTF8_ALLOW_LONG 0x0010 +#define UTF8_ALLOW_LONG_AND_ITS_VALUE (UTF8_ALLOW_LONG|0x0020) +#define UTF8_GOT_LONG UTF8_ALLOW_LONG + +#define UTF8_ALLOW_OVERFLOW 0x0080 +#define UTF8_GOT_OVERFLOW UTF8_ALLOW_OVERFLOW -#define UTF8_DISALLOW_SURROGATE 0x0020 /* Unicode surrogates */ -#define UTF8_WARN_SURROGATE 0x0040 +#define UTF8_DISALLOW_SURROGATE 0x0100 /* Unicode surrogates */ +#define UTF8_GOT_SURROGATE UTF8_DISALLOW_SURROGATE +#define UTF8_WARN_SURROGATE 0x0200 -#define UTF8_DISALLOW_NONCHAR 0x0080 /* Unicode non-character */ -#define UTF8_WARN_NONCHAR 0x0100 /* code points */ +#define UTF8_DISALLOW_NONCHAR 0x0400 /* Unicode non-character */ +#define UTF8_GOT_NONCHAR UTF8_DISALLOW_NONCHAR +#define UTF8_WARN_NONCHAR 0x0800 /* code points */ -#define UTF8_DISALLOW_SUPER 0x0200 /* Super-set of Unicode: code */ -#define UTF8_WARN_SUPER 0x0400 /* points above the legal max */ +#define UTF8_DISALLOW_SUPER 0x1000 /* Super-set of Unicode: code */ +#define UTF8_GOT_SUPER UTF8_DISALLOW_SUPER +#define UTF8_WARN_SUPER 0x2000 /* points above the legal max */ /* Code points which never were part of the original UTF-8 standard, which only * went up to 2 ** 31 - 1. Note that these all overflow a signed 32-bit word, * The first byte of these code points is FE or FF on ASCII platforms. If the * first byte is FF, it will overflow a 32-bit word. */ -#define UTF8_DISALLOW_ABOVE_31_BIT 0x0800 -#define UTF8_WARN_ABOVE_31_BIT 0x1000 +#define UTF8_DISALLOW_ABOVE_31_BIT 0x4000 +#define UTF8_GOT_ABOVE_31_BIT UTF8_DISALLOW_ABOVE_31_BIT +#define UTF8_WARN_ABOVE_31_BIT 0x8000 /* For back compat, these old names are misleading for UTF_EBCDIC */ #define UTF8_DISALLOW_FE_FF UTF8_DISALLOW_ABOVE_31_BIT #define UTF8_WARN_FE_FF UTF8_WARN_ABOVE_31_BIT -#define UTF8_CHECK_ONLY 0x2000 +#define UTF8_CHECK_ONLY 0x10000 +#define _UTF8_NO_CONFIDENCE_IN_CURLEN 0x20000 /* Internal core use only */ /* For backwards source compatibility. They do nothing, as the default now * includes what they used to mean. The first one's meaning was to allow the @@ -615,47 +793,107 @@ case any call to string overloading updates the internal UTF-8 encoding flag. #define UTF8_ALLOW_FFFF 0 #define UTF8_ALLOW_SURROGATE 0 +/* C9 refers to Unicode Corrigendum #9: allows but discourages non-chars */ +#define UTF8_DISALLOW_ILLEGAL_C9_INTERCHANGE \ + (UTF8_DISALLOW_SUPER|UTF8_DISALLOW_SURROGATE) +#define UTF8_WARN_ILLEGAL_C9_INTERCHANGE (UTF8_WARN_SUPER|UTF8_WARN_SURROGATE) + #define UTF8_DISALLOW_ILLEGAL_INTERCHANGE \ - ( UTF8_DISALLOW_SUPER|UTF8_DISALLOW_NONCHAR \ - |UTF8_DISALLOW_SURROGATE) + (UTF8_DISALLOW_ILLEGAL_C9_INTERCHANGE|UTF8_DISALLOW_NONCHAR) #define UTF8_WARN_ILLEGAL_INTERCHANGE \ - (UTF8_WARN_SUPER|UTF8_WARN_NONCHAR|UTF8_WARN_SURROGATE) -#define UTF8_ALLOW_ANY \ - (~( UTF8_DISALLOW_ILLEGAL_INTERCHANGE|UTF8_DISALLOW_ABOVE_31_BIT \ - |UTF8_WARN_ILLEGAL_INTERCHANGE|UTF8_WARN_ABOVE_31_BIT)) -#define UTF8_ALLOW_ANYUV \ - (UTF8_ALLOW_EMPTY \ - & ~(UTF8_DISALLOW_ILLEGAL_INTERCHANGE|UTF8_WARN_ILLEGAL_INTERCHANGE)) -#define UTF8_ALLOW_DEFAULT (ckWARN(WARN_UTF8) ? 0 : \ - UTF8_ALLOW_ANYUV) - -/* Several of the macros below have a second parameter that is currently - * unused; but could be used in the future to make sure that the input is - * well-formed. */ - -#define UTF8_IS_SURROGATE(s, e) cBOOL(is_SURROGATE_utf8(s)) -#define UTF8_IS_REPLACEMENT(s, send) cBOOL(is_REPLACEMENT_utf8_safe(s,send)) - -/* ASCII EBCDIC I8 + (UTF8_WARN_ILLEGAL_C9_INTERCHANGE|UTF8_WARN_NONCHAR) + +/* This is typically used for code that processes UTF-8 input and doesn't want + * to have to deal with any malformations that might be present. All such will + * be safely replaced by the REPLACEMENT CHARACTER, unless other flags + * overriding this are also present. */ +#define UTF8_ALLOW_ANY ( UTF8_ALLOW_CONTINUATION \ + |UTF8_ALLOW_NON_CONTINUATION \ + |UTF8_ALLOW_SHORT \ + |UTF8_ALLOW_LONG \ + |UTF8_ALLOW_OVERFLOW) + +/* Accept any Perl-extended UTF-8 that evaluates to any UV on the platform, but + * not any malformed. This is the default. (Note that UVs above IV_MAX are + * deprecated. */ +#define UTF8_ALLOW_ANYUV 0 +#define UTF8_ALLOW_DEFAULT UTF8_ALLOW_ANYUV + +/* +=for apidoc Am|bool|UTF8_IS_SURROGATE|const U8 *s|const U8 *e + +Evaluates to non-zero if the first few bytes of the string starting at C<s> and +looking no further than S<C<e - 1>> are well-formed UTF-8 that represents one +of the Unicode surrogate code points; otherwise it evaluates to 0. If +non-zero, the value gives how many bytes starting at C<s> comprise the code +point's representation. + +=cut + */ +#define UTF8_IS_SURROGATE(s, e) is_SURROGATE_utf8_safe(s, e) + + +#define UTF8_IS_REPLACEMENT(s, send) is_REPLACEMENT_utf8_safe(s,send) + +/* +=for apidoc Am|bool|UTF8_IS_SUPER|const U8 *s|const U8 *e + +Recall that Perl recognizes an extension to UTF-8 that can encode code +points larger than the ones defined by Unicode, which are 0..0x10FFFF. + +This macro evaluates to non-zero if the first few bytes of the string starting +at C<s> and looking no further than S<C<e - 1>> are from this UTF-8 extension; +otherwise it evaluates to 0. If non-zero, the value gives how many bytes +starting at C<s> comprise the code point's representation. + +0 is returned if the bytes are not well-formed extended UTF-8, or if they +represent a code point that cannot fit in a UV on the current platform. Hence +this macro can give different results when run on a 64-bit word machine than on +one with a 32-bit word size. + +Note that it is deprecated to have code points that are larger than what can +fit in an IV on the current machine. + +=cut + + * ASCII EBCDIC I8 * U+10FFFF: \xF4\x8F\xBF\xBF \xF9\xA1\xBF\xBF\xBF max legal Unicode * U+110000: \xF4\x90\x80\x80 \xF9\xA2\xA0\xA0\xA0 * U+110001: \xF4\x90\x80\x81 \xF9\xA2\xA0\xA0\xA1 - * - * BE AWARE that this test doesn't rule out malformed code points, in - * particular overlongs */ -#ifdef EBCDIC /* Both versions assume well-formed UTF8 */ -# define UTF8_IS_SUPER(s, e) (NATIVE_UTF8_TO_I8(* (U8*) (s)) >= 0xF9 \ - && (NATIVE_UTF8_TO_I8(* (U8*) (s)) > 0xF9 \ - || (NATIVE_UTF8_TO_I8(* ((U8*) (s) + 1)) >= 0xA2))) + */ +#ifdef EBCDIC +# define UTF8_IS_SUPER(s, e) \ + (( LIKELY((e) > (s) + 4) \ + && NATIVE_UTF8_TO_I8(*(s)) >= 0xF9 \ + && ( NATIVE_UTF8_TO_I8(*(s)) > 0xF9 \ + || (NATIVE_UTF8_TO_I8(*((s) + 1)) >= 0xA2)) \ + && LIKELY((s) + UTF8SKIP(s) <= (e))) \ + ? _is_utf8_char_helper(s, s + UTF8SKIP(s), 0) : 0) #else -# define UTF8_IS_SUPER(s, e) (*(U8*) (s) >= 0xF4 \ - && (*(U8*) (s) > 0xF4 || (*((U8*) (s) + 1) >= 0x90))) +# define UTF8_IS_SUPER(s, e) \ + (( LIKELY((e) > (s) + 3) \ + && (*(U8*) (s)) >= 0xF4 \ + && ((*(U8*) (s)) > 0xF4 || (*((U8*) (s) + 1) >= 0x90))\ + && LIKELY((s) + UTF8SKIP(s) <= (e))) \ + ? _is_utf8_char_helper(s, s + UTF8SKIP(s), 0) : 0) #endif /* These are now machine generated, and the 'given' clause is no longer * applicable */ #define UTF8_IS_NONCHAR_GIVEN_THAT_NON_SUPER_AND_GE_PROBLEMATIC(s, e) \ - cBOOL(is_NONCHAR_utf8(s)) + cBOOL(is_NONCHAR_utf8_safe(s,e)) + +/* +=for apidoc Am|bool|UTF8_IS_NONCHAR|const U8 *s|const U8 *e + +Evaluates to non-zero if the first few bytes of the string starting at C<s> and +looking no further than S<C<e - 1>> are well-formed UTF-8 that represents one +of the Unicode non-character code points; otherwise it evaluates to 0. If +non-zero, the value gives how many bytes starting at C<s> comprise the code +point's representation. + +=cut + */ #define UTF8_IS_NONCHAR(s, e) \ UTF8_IS_NONCHAR_GIVEN_THAT_NON_SUPER_AND_GE_PROBLEMATIC(s, e) @@ -676,10 +914,14 @@ case any call to string overloading updates the internal UTF-8 encoding flag. #define UNICODE_DISALLOW_NONCHAR 0x0020 #define UNICODE_DISALLOW_SUPER 0x0040 #define UNICODE_DISALLOW_ABOVE_31_BIT 0x0080 +#define UNICODE_WARN_ILLEGAL_C9_INTERCHANGE \ + (UNICODE_WARN_SURROGATE|UNICODE_WARN_SUPER) #define UNICODE_WARN_ILLEGAL_INTERCHANGE \ - (UNICODE_WARN_SURROGATE|UNICODE_WARN_NONCHAR|UNICODE_WARN_SUPER) + (UNICODE_WARN_ILLEGAL_C9_INTERCHANGE|UNICODE_WARN_NONCHAR) +#define UNICODE_DISALLOW_ILLEGAL_C9_INTERCHANGE \ + (UNICODE_DISALLOW_SURROGATE|UNICODE_DISALLOW_SUPER) #define UNICODE_DISALLOW_ILLEGAL_INTERCHANGE \ - (UNICODE_DISALLOW_SURROGATE|UNICODE_DISALLOW_NONCHAR|UNICODE_DISALLOW_SUPER) + (UNICODE_DISALLOW_ILLEGAL_C9_INTERCHANGE|UNICODE_DISALLOW_NONCHAR) /* For backward source compatibility, as are now the default */ #define UNICODE_ALLOW_SURROGATE 0 @@ -752,75 +994,168 @@ case any call to string overloading updates the internal UTF-8 encoding flag. #define SHARP_S_SKIP 2 -/* If you want to exclude surrogates, and beyond legal Unicode, see the blame - * log for earlier versions which gave details for these */ +/* -/* A helper macro for isUTF8_CHAR, so use that one, and not this one. This is - * retained solely for backwards compatibility and may be deprecated and - * removed in a future Perl version. - * - * regen/regcharclass.pl generates is_UTF8_CHAR_utf8() macros for up to these - * number of bytes. So this has to be coordinated with that file */ -#ifdef EBCDIC -# define IS_UTF8_CHAR_FAST(n) ((n) <= 3) -#else -# define IS_UTF8_CHAR_FAST(n) ((n) <= 4) -#endif +=for apidoc Am|STRLEN|isUTF8_CHAR|const U8 *s|const U8 *e + +Evaluates to non-zero if the first few bytes of the string starting at C<s> and +looking no further than S<C<e - 1>> are well-formed UTF-8, as extended by Perl, +that represents some code point; otherwise it evaluates to 0. If non-zero, the +value gives how many bytes starting at C<s> comprise the code point's +representation. Any bytes remaining before C<e>, but beyond the ones needed to +form the first code point in C<s>, are not examined. + +The code point can be any that will fit in a UV on this machine, using Perl's +extension to official UTF-8 to represent those higher than the Unicode maximum +of 0x10FFFF. That means that this macro is used to efficiently decide if the +next few bytes in C<s> is legal UTF-8 for a single character. + +Use C<L</isSTRICT_UTF8_CHAR>> to restrict the acceptable code points to those +defined by Unicode to be fully interchangeable across applications; +C<L</isC9_STRICT_UTF8_CHAR>> to use the L<Unicode Corrigendum +#9|http://www.unicode.org/versions/corrigendum9.html> definition of allowable +code points; and C<L</isUTF8_CHAR_flags>> for a more customized definition. + +Use C<L</is_utf8_string>>, C<L</is_utf8_string_loc>>, and +C<L</is_utf8_string_loclen>> to check entire strings. + +Note that it is deprecated to use code points higher than what will fit in an +IV. This macro does not raise any warnings for such code points, treating them +as valid. + +Note also that a UTF-8 INVARIANT character (i.e. ASCII on non-EBCDIC machines) +is a valid UTF-8 character. + +=cut +*/ + +#define isUTF8_CHAR(s, e) \ + (UNLIKELY((e) <= (s)) \ + ? 0 \ + : (UTF8_IS_INVARIANT(*s)) \ + ? 1 \ + : UNLIKELY(((e) - (s)) < UTF8SKIP(s)) \ + ? 0 \ + : LIKELY(NATIVE_UTF8_TO_I8(*s) <= _IS_UTF8_CHAR_HIGHEST_START_BYTE) \ + ? is_UTF8_CHAR_utf8_no_length_checks(s) \ + : _is_utf8_char_helper(s, e, 0)) + +#define is_utf8_char_buf(buf, buf_end) isUTF8_CHAR(buf, buf_end) -#ifndef EBCDIC -/* A helper macro for isUTF8_CHAR, so use that one instead of this. This was - * generated by regen/regcharclass.pl, and then moved here. The lines that - * generated it were then commented out. This was done solely because it takes - * on the order of 10 minutes to generate, and is never going to change, unless - * the generated code is improved. - * - * The EBCDIC versions have been cut to not cover all of legal Unicode, - * otherwise they take too long to generate; besides there is a separate one - * for each code page, so they are in regcharclass.h instead of here */ /* - UTF8_CHAR: Matches legal UTF-8 encoded characters from 2 through 4 bytes - 0x80 - 0x1FFFFF +=for apidoc Am|STRLEN|isSTRICT_UTF8_CHAR|const U8 *s|const U8 *e + +Evaluates to non-zero if the first few bytes of the string starting at C<s> and +looking no further than S<C<e - 1>> are well-formed UTF-8 that represents some +Unicode code point completely acceptable for open interchange between all +applications; otherwise it evaluates to 0. If non-zero, the value gives how +many bytes starting at C<s> comprise the code point's representation. Any +bytes remaining before C<e>, but beyond the ones needed to form the first code +point in C<s>, are not examined. + +The largest acceptable code point is the Unicode maximum 0x10FFFF, and must not +be a surrogate nor a non-character code point. Thus this excludes any code +point from Perl's extended UTF-8. + +This is used to efficiently decide if the next few bytes in C<s> is +legal Unicode-acceptable UTF-8 for a single character. + +Use C<L</isC9_STRICT_UTF8_CHAR>> to use the L<Unicode Corrigendum +#9|http://www.unicode.org/versions/corrigendum9.html> definition of allowable +code points; C<L</isUTF8_CHAR>> to check for Perl's extended UTF-8; +and C<L</isUTF8_CHAR_flags>> for a more customized definition. + +Use C<L</is_strict_utf8_string>>, C<L</is_strict_utf8_string_loc>>, and +C<L</is_strict_utf8_string_loclen>> to check entire strings. + +=cut */ -/*** GENERATED CODE ***/ -#define is_UTF8_CHAR_utf8_no_length_checks(s) \ -( ( 0xC2 <= ((U8*)s)[0] && ((U8*)s)[0] <= 0xDF ) ? \ - ( ( ( ((U8*)s)[1] & 0xC0 ) == 0x80 ) ? 2 : 0 ) \ -: ( 0xE0 == ((U8*)s)[0] ) ? \ - ( ( ( ( ((U8*)s)[1] & 0xE0 ) == 0xA0 ) && ( ( ((U8*)s)[2] & 0xC0 ) == 0x80 ) ) ? 3 : 0 )\ -: ( 0xE1 <= ((U8*)s)[0] && ((U8*)s)[0] <= 0xEF ) ? \ - ( ( ( ( ((U8*)s)[1] & 0xC0 ) == 0x80 ) && ( ( ((U8*)s)[2] & 0xC0 ) == 0x80 ) ) ? 3 : 0 )\ -: ( 0xF0 == ((U8*)s)[0] ) ? \ - ( ( ( ( 0x90 <= ((U8*)s)[1] && ((U8*)s)[1] <= 0xBF ) && ( ( ((U8*)s)[2] & 0xC0 ) == 0x80 ) ) && ( ( ((U8*)s)[3] & 0xC0 ) == 0x80 ) ) ? 4 : 0 )\ -: ( ( ( ( 0xF1 <= ((U8*)s)[0] && ((U8*)s)[0] <= 0xF7 ) && ( ( ((U8*)s)[1] & 0xC0 ) == 0x80 ) ) && ( ( ((U8*)s)[2] & 0xC0 ) == 0x80 ) ) && ( ( ((U8*)s)[3] & 0xC0 ) == 0x80 ) ) ? 4 : 0 ) -#endif + +#define isSTRICT_UTF8_CHAR(s, e) \ + (UNLIKELY((e) <= (s)) \ + ? 0 \ + : (UTF8_IS_INVARIANT(*s)) \ + ? 1 \ + : UNLIKELY(((e) - (s)) < UTF8SKIP(s)) \ + ? 0 \ + : is_STRICT_UTF8_CHAR_utf8_no_length_checks(s)) /* -=for apidoc Am|STRLEN|isUTF8_CHAR|const U8 *s|const U8 *e +=for apidoc Am|STRLEN|isC9_STRICT_UTF8_CHAR|const U8 *s|const U8 *e -Returns the number of bytes beginning at C<s> which form a legal UTF-8 (or -UTF-EBCDIC) encoded character, looking no further than S<C<e - s>> bytes into -C<s>. Returns 0 if the sequence starting at C<s> through S<C<e - 1>> is not -well-formed UTF-8. +Evaluates to non-zero if the first few bytes of the string starting at C<s> and +looking no further than S<C<e - 1>> are well-formed UTF-8 that represents some +Unicode non-surrogate code point; otherwise it evaluates to 0. If non-zero, +the value gives how many bytes starting at C<s> comprise the code point's +representation. Any bytes remaining before C<e>, but beyond the ones needed to +form the first code point in C<s>, are not examined. -Note that an INVARIANT character (i.e. ASCII on non-EBCDIC -machines) is a valid UTF-8 character. +The largest acceptable code point is the Unicode maximum 0x10FFFF. This +differs from C<L</isSTRICT_UTF8_CHAR>> only in that it accepts non-character +code points. This corresponds to +L<Unicode Corrigendum #9|http://www.unicode.org/versions/corrigendum9.html>. +which said that non-character code points are merely discouraged rather than +completely forbidden in open interchange. See +L<perlunicode/Noncharacter code points>. + +Use C<L</isUTF8_CHAR>> to check for Perl's extended UTF-8; and +C<L</isUTF8_CHAR_flags>> for a more customized definition. + +Use C<L</is_c9strict_utf8_string>>, C<L</is_c9strict_utf8_string_loc>>, and +C<L</is_c9strict_utf8_string_loclen>> to check entire strings. =cut */ -#define isUTF8_CHAR(s, e) (UNLIKELY((e) <= (s)) \ - ? 0 \ - : (UTF8_IS_INVARIANT(*s)) \ - ? 1 \ - : UNLIKELY(((e) - (s)) < UTF8SKIP(s)) \ - ? 0 \ - : LIKELY(IS_UTF8_CHAR_FAST(UTF8SKIP(s))) \ - ? is_UTF8_CHAR_utf8_no_length_checks(s) \ - : _is_utf8_char_slow(s, e)) +#define isC9_STRICT_UTF8_CHAR(s, e) \ + (UNLIKELY((e) <= (s)) \ + ? 0 \ + : (UTF8_IS_INVARIANT(*s)) \ + ? 1 \ + : UNLIKELY(((e) - (s)) < UTF8SKIP(s)) \ + ? 0 \ + : is_C9_STRICT_UTF8_CHAR_utf8_no_length_checks(s)) -#define is_utf8_char_buf(buf, buf_end) isUTF8_CHAR(buf, buf_end) +/* + +=for apidoc Am|STRLEN|isUTF8_CHAR_flags|const U8 *s|const U8 *e| const U32 flags + +Evaluates to non-zero if the first few bytes of the string starting at C<s> and +looking no further than S<C<e - 1>> are well-formed UTF-8, as extended by Perl, +that represents some code point, subject to the restrictions given by C<flags>; +otherwise it evaluates to 0. If non-zero, the value gives how many bytes +starting at C<s> comprise the code point's representation. Any bytes remaining +before C<e>, but beyond the ones needed to form the first code point in C<s>, +are not examined. + +If C<flags> is 0, this gives the same results as C<L</isUTF8_CHAR>>; +if C<flags> is C<UTF8_DISALLOW_ILLEGAL_INTERCHANGE>, this gives the same results +as C<L</isSTRICT_UTF8_CHAR>>; +and if C<flags> is C<UTF8_DISALLOW_ILLEGAL_C9_INTERCHANGE>, this gives +the same results as C<L</isC9_STRICT_UTF8_CHAR>>. +Otherwise C<flags> may be any combination of the C<UTF8_DISALLOW_I<foo>> flags +understood by C<L</utf8n_to_uvchr>>, with the same meanings. + +The three alternative macros are for the most commonly needed validations; they +are likely to run somewhat faster than this more general one, as they can be +inlined into your code. + +Use L</is_utf8_string_flags>, L</is_utf8_string_loc_flags>, and +L</is_utf8_string_loclen_flags> to check entire strings. + +=cut +*/ + +#define isUTF8_CHAR_flags(s, e, flags) \ + (UNLIKELY((e) <= (s)) \ + ? 0 \ + : (UTF8_IS_INVARIANT(*s)) \ + ? 1 \ + : UNLIKELY(((e) - (s)) < UTF8SKIP(s)) \ + ? 0 \ + : _is_utf8_char_helper(s, e, flags)) /* Do not use; should be deprecated. Use isUTF8_CHAR() instead; this is * retained solely for backwards compatibility */ diff --git a/Master/tlpkg/tlperl/lib/CORE/utfebcdic.h b/Master/tlpkg/tlperl/lib/CORE/utfebcdic.h index 10b666afe27..08b934b129f 100644 --- a/Master/tlpkg/tlperl/lib/CORE/utfebcdic.h +++ b/Master/tlpkg/tlperl/lib/CORE/utfebcdic.h @@ -185,8 +185,36 @@ U+40000000..U+FFFFFFFF ttuuuuuvvvvvwwwwwzzzzzyyyyyxxxxx 11111111 10100000 101000 For 32-bit words, the 2nd through 7th bytes effectively function as leading zeros. Above 32 bits, these fill up, with each byte yielding 5 bits of information, so that with 13 continuation bytes, we can handle 65 bits, just -above what a 64 bit word can hold */ +above what a 64 bit word can hold + The following table gives the I8: + + I8 Code Points 1st Byte 2nd Byte 3rd 4th 5th 6th 7th 8th 9th-14th + + 0x0000..0x009F 00..9F + 0x00A0..0x00FF * C5..C7 A0..BF + U+0100..U+03FF C8..DF A0..BF + U+0400..U+3FFF * E1..EF A0..BF A0..BF + U+4000..U+7FFF F0 * B0..BF A0..BF A0..BF + U+8000..U+D7FF F1 A0..B5 A0..BF A0..BF + U+D800..U+DFFF F1 B6..B7 A0..BF A0..BF (surrogates) + U+E000..U+FFFF F1 B8..BF A0..BF A0..BF + U+10000..U+3FFFF F2..F7 A0..BF A0..BF A0..BF + U+40000..U+FFFFF F8 * A8..BF A0..BF A0..BF A0..BF + U+100000..U+10FFFF F9 A0..A1 A0..BF A0..BF A0..BF + Below are above-Unicode code points + U+110000..U+1FFFFF F9 A2..BF A0..BF A0..BF A0..BF + U+200000..U+3FFFFF FA..FB A0..BF A0..BF A0..BF A0..BF + U+400000..U+1FFFFFF FC * A4..BF A0..BF A0..BF A0..BF A0..BF +U+2000000..U+3FFFFFF FD A0..BF A0..BF A0..BF A0..BF A0..BF +U+4000000..U+3FFFFFFF FE * A2..BF A0..BF A0..BF A0..BF A0..BF A0..BF +U+40000000.. FF A0..BF A0..BF A0..BF A0..BF A0..BF A0..BF * A1..BF A0..BF + +Note the gaps before several of the byte entries above marked by '*'. These are +caused by legal UTF-8 avoiding non-shortest encodings: it is technically +possible to UTF-8-encode a single code point in different ways, but that is +explicitly forbidden, and the shortest possible encoding should always be used +(and that is what Perl does). */ /* This is a fundamental property of UTF-EBCDIC */ #define OFFUNI_IS_INVARIANT(c) (((UV)(c)) < 0xA0) @@ -240,6 +268,256 @@ above what a 64 bit word can hold */ * for more */ #define QUESTION_MARK_CTRL LATIN1_TO_NATIVE(0x9F) +/* Any I8 string larger than this will overflow the word if it were converted into a UV */ +#if defined(UV_IS_QUAD) +# define HIGHEST_REPRESENTABLE_UTF8 "\xFF\xAF\xBF\xBF\xBF\xBF\xBF\xBF\xBF\xBF\xBF\xBF\xBF\xBF" +#else +# define HIGHEST_REPRESENTABLE_UTF8 "\xFF\xA0\xA0\xA0\xA0\xA0\xA0\xA3\xBF\xBF\xBF\xBF\xBF\xBF" +#endif + +/* Helper macros for isUTF8_CHAR_foo, so use those instead of this. These were + * generated by regen/regcharclass.pl, and then moved here. Then they were + * hand-edited to add some LIKELY() calls, presuming that malformations are + * unlikely. The lines that generated it were then commented out. This was + * done because it takes on the order of 10 minutes to generate, and is never + * going to change, unless the generated code is improved, and figuring out the + * LIKELYs there would be hard. + * + */ + +#if '^' == 95 /* CP 1047 */ +/* UTF8_CHAR: Matches legal UTF-EBCDIC variant code points up through 0x1FFFFFF + + 0xA0 - 0x1FFFFF +*/ + +/*** GENERATED CODE ***/ +#define is_UTF8_CHAR_utf8_no_length_checks(s) \ +( ( 0x80 == ((const U8*)s)[0] || ( 0x8A <= ((const U8*)s)[0] && ((const U8*)s)[0] <= 0x90 ) || ( 0x9A <= ((const U8*)s)[0] && ((const U8*)s)[0] <= 0xA0 ) || ( 0xAA <= ((const U8*)s)[0] && ((const U8*)s)[0] <= 0xAC ) || ( 0xAE <= ((const U8*)s)[0] && ((const U8*)s)[0] <= 0xB6 ) ) ?\ + ( LIKELY( ( 0x41 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x6A ) || ( ((const U8*)s)[1] & 0xFC ) == 0x70 ) ? 2 : 0 )\ +: ( ( ( ((const U8*)s)[0] & 0xFC ) == 0xB8 ) || ((const U8*)s)[0] == 0xBC || ( ( ((const U8*)s)[0] & 0xFE ) == 0xBE ) || ( ( ((const U8*)s)[0] & 0xEE ) == 0xCA ) || ( ( ((const U8*)s)[0] & 0xFC ) == 0xCC ) ) ?\ + ( LIKELY( ( ( 0x41 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x6A ) || ( ((const U8*)s)[1] & 0xFC ) == 0x70 ) && ( ( 0x41 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x6A ) || ( ((const U8*)s)[2] & 0xFC ) == 0x70 ) ) ? 3 : 0 )\ +: ( 0xDC == ((const U8*)s)[0] ) ? \ + ( LIKELY( ( ( ( 0x57 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x6A ) || ( ((const U8*)s)[1] & 0xFC ) == 0x70 ) && ( ( 0x41 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x6A ) || ( ((const U8*)s)[2] & 0xFC ) == 0x70 ) ) && ( ( 0x41 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x6A ) || ( ((const U8*)s)[3] & 0xFC ) == 0x70 ) ) ? 4 : 0 )\ +: ( ( 0xDD <= ((const U8*)s)[0] && ((const U8*)s)[0] <= 0xDF ) || 0xE1 == ((const U8*)s)[0] || ( 0xEA <= ((const U8*)s)[0] && ((const U8*)s)[0] <= 0xEC ) ) ?\ + ( LIKELY( ( ( ( 0x41 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x6A ) || ( ((const U8*)s)[1] & 0xFC ) == 0x70 ) && ( ( 0x41 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x6A ) || ( ((const U8*)s)[2] & 0xFC ) == 0x70 ) ) && ( ( 0x41 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x6A ) || ( ((const U8*)s)[3] & 0xFC ) == 0x70 ) ) ? 4 : 0 )\ +: ( 0xED == ((const U8*)s)[0] ) ? \ + ( LIKELY( ( ( ( ( 0x49 == ((const U8*)s)[1] || 0x4A == ((const U8*)s)[1] ) || ( 0x51 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x6A ) || ( ((const U8*)s)[1] & 0xFC ) == 0x70 ) && ( ( 0x41 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x6A ) || ( ((const U8*)s)[2] & 0xFC ) == 0x70 ) ) && ( ( 0x41 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x6A ) || ( ((const U8*)s)[3] & 0xFC ) == 0x70 ) ) && ( ( 0x41 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x6A ) || ( ((const U8*)s)[4] & 0xFC ) == 0x70 ) ) ? 5 : 0 )\ +: ( ( ( ( ( 0xEE == ((const U8*)s)[0] ) && LIKELY( ( 0x41 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x6A ) || ( ((const U8*)s)[1] & 0xFC ) == 0x70 ) ) && LIKELY( ( 0x41 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x6A ) || ( ((const U8*)s)[2] & 0xFC ) == 0x70 ) ) && LIKELY( ( 0x41 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x6A ) || ( ((const U8*)s)[3] & 0xFC ) == 0x70 ) ) && LIKELY( ( 0x41 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x6A ) || ( ((const U8*)s)[4] & 0xFC ) == 0x70 ) ) ? 5 : 0 ) + +/* UTF8_CHAR_STRICT: Matches legal Unicode UTF-8 variant code points, no + surrrogates nor non-character code points */ +/*** GENERATED CODE ***/ +#define is_STRICT_UTF8_CHAR_utf8_no_length_checks_part0(s) \ +( ( ( 0x41 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x72 ) ) ?\ + ( LIKELY( ( ( 0x41 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x6A ) || ( ((const U8*)s)[2] & 0xFC ) == 0x70 ) && ( ( 0x41 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x6A ) || ( ((const U8*)s)[3] & 0xFC ) == 0x70 ) ) ? 4 : 0 )\ + : ( 0x73 == ((const U8*)s)[1] ) ? \ + ( ( ( 0x41 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x72 ) ) ?\ + ( LIKELY( ( 0x41 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x6A ) || ( ((const U8*)s)[3] & 0xFC ) == 0x70 ) ? 4 : 0 )\ + : LIKELY( ( 0x73 == ((const U8*)s)[2] ) && ( ( 0x41 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x6A ) || ( ((const U8*)s)[3] & 0xFE ) == 0x70 ) ) ? 4 : 0 )\ + : 0 ) + + +/*** GENERATED CODE ***/ +#define is_STRICT_UTF8_CHAR_utf8_no_length_checks_part1(s) \ +( ( 0xED == ((const U8*)s)[0] ) ? \ + ( ( ( ( ((const U8*)s)[1] & 0xEF ) == 0x49 ) || ( ( ((const U8*)s)[1] & 0xF9 ) == 0x51 ) || ((const U8*)s)[1] == 0x63 || ( ( ((const U8*)s)[1] & 0xFD ) == 0x65 ) || ((const U8*)s)[1] == 0x69 || ( ( ((const U8*)s)[1] & 0xFD ) == 0x70 ) ) ?\ + ( LIKELY( ( ( ( 0x41 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x6A ) || ( ((const U8*)s)[2] & 0xFC ) == 0x70 ) && ( ( 0x41 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x6A ) || ( ((const U8*)s)[3] & 0xFC ) == 0x70 ) ) && ( ( 0x41 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x6A ) || ( ((const U8*)s)[4] & 0xFC ) == 0x70 ) ) ? 5 : 0 )\ + : ( ((const U8*)s)[1] == 0x4A || ((const U8*)s)[1] == 0x52 || ( ( ((const U8*)s)[1] & 0xFD ) == 0x54 ) || ((const U8*)s)[1] == 0x58 || ((const U8*)s)[1] == 0x62 || ( ( ((const U8*)s)[1] & 0xFD ) == 0x64 ) || ( ( ((const U8*)s)[1] & 0xFD ) == 0x68 ) || ( ( ((const U8*)s)[1] & 0xFD ) == 0x71 ) ) ?\ + ( ( ( 0x41 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x72 ) ) ?\ + ( LIKELY( ( ( 0x41 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x6A ) || ( ((const U8*)s)[3] & 0xFC ) == 0x70 ) && ( ( 0x41 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x6A ) || ( ((const U8*)s)[4] & 0xFC ) == 0x70 ) ) ? 5 : 0 )\ + : ( 0x73 == ((const U8*)s)[2] ) ? \ + ( ( ( 0x41 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x72 ) ) ?\ + ( LIKELY( ( 0x41 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x6A ) || ( ((const U8*)s)[4] & 0xFC ) == 0x70 ) ? 5 : 0 )\ + : LIKELY( ( 0x73 == ((const U8*)s)[3] ) && ( ( 0x41 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x6A ) || ( ((const U8*)s)[4] & 0xFE ) == 0x70 ) ) ? 5 : 0 )\ + : 0 ) \ + : 0 ) \ +: ( 0xEE == ((const U8*)s)[0] ) ? \ + ( ( 0x41 == ((const U8*)s)[1] ) ? \ + ( LIKELY( ( ( ( 0x41 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x6A ) || ( ((const U8*)s)[2] & 0xFC ) == 0x70 ) && ( ( 0x41 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x6A ) || ( ((const U8*)s)[3] & 0xFC ) == 0x70 ) ) && ( ( 0x41 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x6A ) || ( ((const U8*)s)[4] & 0xFC ) == 0x70 ) ) ? 5 : 0 )\ + : ( 0x42 == ((const U8*)s)[1] ) ? \ + ( ( ( 0x41 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x72 ) ) ?\ + ( LIKELY( ( ( 0x41 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x6A ) || ( ((const U8*)s)[3] & 0xFC ) == 0x70 ) && ( ( 0x41 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x6A ) || ( ((const U8*)s)[4] & 0xFC ) == 0x70 ) ) ? 5 : 0 )\ + : ( 0x73 == ((const U8*)s)[2] ) ? \ + ( ( ( 0x41 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x72 ) ) ?\ + ( LIKELY( ( 0x41 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x6A ) || ( ((const U8*)s)[4] & 0xFC ) == 0x70 ) ? 5 : 0 )\ + : LIKELY( ( 0x73 == ((const U8*)s)[3] ) && ( ( 0x41 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x6A ) || ( ((const U8*)s)[4] & 0xFE ) == 0x70 ) ) ? 5 : 0 )\ + : 0 ) \ + : 0 ) \ +: 0 ) + + +/*** GENERATED CODE ***/ +#define is_STRICT_UTF8_CHAR_utf8_no_length_checks(s) \ +( ( 0x80 == ((const U8*)s)[0] || ( 0x8A <= ((const U8*)s)[0] && ((const U8*)s)[0] <= 0x90 ) || ( 0x9A <= ((const U8*)s)[0] && ((const U8*)s)[0] <= 0xA0 ) || ( 0xAA <= ((const U8*)s)[0] && ((const U8*)s)[0] <= 0xAC ) || ( 0xAE <= ((const U8*)s)[0] && ((const U8*)s)[0] <= 0xB6 ) ) ?\ + ( LIKELY( ( 0x41 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x6A ) || ( ((const U8*)s)[1] & 0xFC ) == 0x70 ) ? 2 : 0 )\ +: ( ( ( ((const U8*)s)[0] & 0xFC ) == 0xB8 ) || ((const U8*)s)[0] == 0xBC || ( ( ((const U8*)s)[0] & 0xFE ) == 0xBE ) || ( ( ((const U8*)s)[0] & 0xEE ) == 0xCA ) || ( ( ((const U8*)s)[0] & 0xFC ) == 0xCC ) ) ?\ + ( LIKELY( ( ( 0x41 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x6A ) || ( ((const U8*)s)[1] & 0xFC ) == 0x70 ) && ( ( 0x41 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x6A ) || ( ((const U8*)s)[2] & 0xFC ) == 0x70 ) ) ? 3 : 0 )\ +: ( 0xDC == ((const U8*)s)[0] ) ? \ + ( LIKELY( ( ( ( 0x57 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x6A ) || ( ((const U8*)s)[1] & 0xFC ) == 0x70 ) && ( ( 0x41 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x6A ) || ( ((const U8*)s)[2] & 0xFC ) == 0x70 ) ) && ( ( 0x41 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x6A ) || ( ((const U8*)s)[3] & 0xFC ) == 0x70 ) ) ? 4 : 0 )\ +: ( 0xDD == ((const U8*)s)[0] ) ? \ + ( ( ( 0x41 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x64 ) || ( 0x67 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x72 ) ) ?\ + ( LIKELY( ( ( 0x41 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x6A ) || ( ((const U8*)s)[2] & 0xFC ) == 0x70 ) && ( ( 0x41 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x6A ) || ( ((const U8*)s)[3] & 0xFC ) == 0x70 ) ) ? 4 : 0 )\ + : ( 0x73 == ((const U8*)s)[1] ) ? \ + ( ( ( 0x41 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x54 ) || ( 0x57 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x72 ) ) ?\ + ( LIKELY( ( 0x41 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x6A ) || ( ((const U8*)s)[3] & 0xFC ) == 0x70 ) ? 4 : 0 )\ + : ( 0x55 == ((const U8*)s)[2] ) ? \ + ( LIKELY( ( 0x41 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x56 ) ) ? 4 : 0 )\ + : ( 0x56 == ((const U8*)s)[2] ) ? \ + ( LIKELY( ( 0x57 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x6A ) || ( ((const U8*)s)[3] & 0xFC ) == 0x70 ) ? 4 : 0 )\ + : LIKELY( ( 0x73 == ((const U8*)s)[2] ) && ( ( 0x41 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x6A ) || ( ((const U8*)s)[3] & 0xFE ) == 0x70 ) ) ? 4 : 0 )\ + : 0 ) \ +: ( 0xDE == ((const U8*)s)[0] || 0xE1 == ((const U8*)s)[0] || 0xEB == ((const U8*)s)[0] ) ? \ + ( LIKELY( ( ( ( 0x41 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x6A ) || ( ((const U8*)s)[1] & 0xFC ) == 0x70 ) && ( ( 0x41 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x6A ) || ( ((const U8*)s)[2] & 0xFC ) == 0x70 ) ) && ( ( 0x41 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x6A ) || ( ((const U8*)s)[3] & 0xFC ) == 0x70 ) ) ? 4 : 0 )\ +: ( 0xDF == ((const U8*)s)[0] || 0xEA == ((const U8*)s)[0] || 0xEC == ((const U8*)s)[0] ) ? is_STRICT_UTF8_CHAR_utf8_no_length_checks_part0(s) : is_STRICT_UTF8_CHAR_utf8_no_length_checks_part1(s) ) + +/* C9_STRICT_UTF8_CHAR: Matches legal Unicode UTF-8 variant code points + including non-character code points, no surrogates + 0x00A0 - 0xD7FF + 0xE000 - 0x10FFFF +*/ +/*** GENERATED CODE ***/ +#define is_C9_STRICT_UTF8_CHAR_utf8_no_length_checks(s) \ +( ( 0x80 == ((const U8*)s)[0] || ( 0x8A <= ((const U8*)s)[0] && ((const U8*)s)[0] <= 0x90 ) || ( 0x9A <= ((const U8*)s)[0] && ((const U8*)s)[0] <= 0xA0 ) || ( 0xAA <= ((const U8*)s)[0] && ((const U8*)s)[0] <= 0xAC ) || ( 0xAE <= ((const U8*)s)[0] && ((const U8*)s)[0] <= 0xB6 ) ) ?\ + ( LIKELY( ( 0x41 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x6A ) || ( ((const U8*)s)[1] & 0xFC ) == 0x70 ) ? 2 : 0 )\ +: ( ( ( ((const U8*)s)[0] & 0xFC ) == 0xB8 ) || ((const U8*)s)[0] == 0xBC || ( ( ((const U8*)s)[0] & 0xFE ) == 0xBE ) || ( ( ((const U8*)s)[0] & 0xEE ) == 0xCA ) || ( ( ((const U8*)s)[0] & 0xFC ) == 0xCC ) ) ?\ + ( LIKELY( ( ( 0x41 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x6A ) || ( ((const U8*)s)[1] & 0xFC ) == 0x70 ) && ( ( 0x41 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x6A ) || ( ((const U8*)s)[2] & 0xFC ) == 0x70 ) ) ? 3 : 0 )\ +: ( 0xDC == ((const U8*)s)[0] ) ? \ + ( LIKELY( ( ( ( 0x57 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x6A ) || ( ((const U8*)s)[1] & 0xFC ) == 0x70 ) && ( ( 0x41 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x6A ) || ( ((const U8*)s)[2] & 0xFC ) == 0x70 ) ) && ( ( 0x41 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x6A ) || ( ((const U8*)s)[3] & 0xFC ) == 0x70 ) ) ? 4 : 0 )\ +: ( 0xDD == ((const U8*)s)[0] ) ? \ + ( LIKELY( ( ( ( 0x41 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x64 ) || ( 0x67 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x6A ) || ( ((const U8*)s)[1] & 0xFC ) == 0x70 ) && ( ( 0x41 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x6A ) || ( ((const U8*)s)[2] & 0xFC ) == 0x70 ) ) && ( ( 0x41 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x6A ) || ( ((const U8*)s)[3] & 0xFC ) == 0x70 ) ) ? 4 : 0 )\ +: ( ( ((const U8*)s)[0] & 0xFE ) == 0xDE || 0xE1 == ((const U8*)s)[0] || ( 0xEA <= ((const U8*)s)[0] && ((const U8*)s)[0] <= 0xEC ) ) ?\ + ( LIKELY( ( ( ( 0x41 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x6A ) || ( ((const U8*)s)[1] & 0xFC ) == 0x70 ) && ( ( 0x41 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x6A ) || ( ((const U8*)s)[2] & 0xFC ) == 0x70 ) ) && ( ( 0x41 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x6A ) || ( ((const U8*)s)[3] & 0xFC ) == 0x70 ) ) ? 4 : 0 )\ +: ( 0xED == ((const U8*)s)[0] ) ? \ + ( LIKELY( ( ( ( ( 0x49 == ((const U8*)s)[1] || 0x4A == ((const U8*)s)[1] ) || ( 0x51 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x6A ) || ( ((const U8*)s)[1] & 0xFC ) == 0x70 ) && ( ( 0x41 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x6A ) || ( ((const U8*)s)[2] & 0xFC ) == 0x70 ) ) && ( ( 0x41 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x6A ) || ( ((const U8*)s)[3] & 0xFC ) == 0x70 ) ) && ( ( 0x41 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x6A ) || ( ((const U8*)s)[4] & 0xFC ) == 0x70 ) ) ? 5 : 0 )\ +: LIKELY( ( ( ( ( 0xEE == ((const U8*)s)[0] ) && ( 0x41 == ((const U8*)s)[1] || 0x42 == ((const U8*)s)[1] ) ) && ( ( 0x41 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x6A ) || ( ((const U8*)s)[2] & 0xFC ) == 0x70 ) ) && ( ( 0x41 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x6A ) || ( ((const U8*)s)[3] & 0xFC ) == 0x70 ) ) && ( ( 0x41 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x6A ) || ( ((const U8*)s)[4] & 0xFC ) == 0x70 ) ) ? 5 : 0 ) + +#endif + +#if '^' == 176 /* CP 037 */ + +/*** GENERATED CODE ***/ +#define is_UTF8_CHAR_utf8_no_length_checks(s) \ +( ( 0x78 == ((const U8*)s)[0] || 0x80 == ((const U8*)s)[0] || ( 0x8A <= ((const U8*)s)[0] && ((const U8*)s)[0] <= 0x90 ) || ( 0x9A <= ((const U8*)s)[0] && ((const U8*)s)[0] <= 0xA0 ) || ( 0xAA <= ((const U8*)s)[0] && ((const U8*)s)[0] <= 0xAF ) || ( 0xB1 <= ((const U8*)s)[0] && ((const U8*)s)[0] <= 0xB5 ) ) ?\ + ( LIKELY( ( 0x41 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x59 ) || 0x5F == ((const U8*)s)[1] || ( 0x62 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x72 ) ) ? 2 : 0 )\ +: ( ((const U8*)s)[0] == 0xB7 || ( ( ((const U8*)s)[0] & 0xFE ) == 0xB8 ) || ( ( ((const U8*)s)[0] & 0xFC ) == 0xBC ) || ( ( ((const U8*)s)[0] & 0xEE ) == 0xCA ) || ( ( ((const U8*)s)[0] & 0xFC ) == 0xCC ) ) ?\ + ( LIKELY( ( ( 0x41 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x59 ) || 0x5F == ((const U8*)s)[1] || ( 0x62 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x72 ) ) && ( ( 0x41 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x59 ) || 0x5F == ((const U8*)s)[2] || ( 0x62 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x72 ) ) ) ? 3 : 0 )\ +: ( 0xDC == ((const U8*)s)[0] ) ? \ + ( LIKELY( ( ( ( 0x57 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x59 ) || 0x5F == ((const U8*)s)[1] || ( 0x62 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x72 ) ) && ( ( 0x41 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x59 ) || 0x5F == ((const U8*)s)[2] || ( 0x62 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x72 ) ) ) && ( ( 0x41 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x59 ) || 0x5F == ((const U8*)s)[3] || ( 0x62 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x72 ) ) ) ? 4 : 0 )\ +: ( ( 0xDD <= ((const U8*)s)[0] && ((const U8*)s)[0] <= 0xDF ) || 0xE1 == ((const U8*)s)[0] || ( 0xEA <= ((const U8*)s)[0] && ((const U8*)s)[0] <= 0xEC ) ) ?\ + ( LIKELY( ( ( ( 0x41 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x59 ) || 0x5F == ((const U8*)s)[1] || ( 0x62 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x72 ) ) && ( ( 0x41 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x59 ) || 0x5F == ((const U8*)s)[2] || ( 0x62 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x72 ) ) ) && ( ( 0x41 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x59 ) || 0x5F == ((const U8*)s)[3] || ( 0x62 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x72 ) ) ) ? 4 : 0 )\ +: ( 0xED == ((const U8*)s)[0] ) ? \ + ( LIKELY( ( ( ( ( 0x49 == ((const U8*)s)[1] || 0x4A == ((const U8*)s)[1] ) || ( 0x51 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x59 ) || 0x5F == ((const U8*)s)[1] || ( 0x62 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x72 ) ) && ( ( 0x41 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x59 ) || 0x5F == ((const U8*)s)[2] || ( 0x62 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x72 ) ) ) && ( ( 0x41 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x59 ) || 0x5F == ((const U8*)s)[3] || ( 0x62 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x72 ) ) ) && ( ( 0x41 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x59 ) || 0x5F == ((const U8*)s)[4] || ( 0x62 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x72 ) ) ) ? 5 : 0 )\ +: ( ( ( ( ( 0xEE == ((const U8*)s)[0] ) && LIKELY( ( 0x41 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x59 ) || 0x5F == ((const U8*)s)[1] || ( 0x62 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x72 ) ) ) && LIKELY( ( 0x41 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x59 ) || 0x5F == ((const U8*)s)[2] || ( 0x62 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x72 ) ) ) && LIKELY( ( 0x41 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x59 ) || 0x5F == ((const U8*)s)[3] || ( 0x62 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x72 ) ) ) && LIKELY( ( 0x41 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x59 ) || 0x5F == ((const U8*)s)[4] || ( 0x62 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x72 ) ) ) ? 5 : 0 ) + +/* XXX Below do not have LIKELY() added */ +/*** GENERATED CODE ***/ +#define is_STRICT_UTF8_CHAR_utf8_no_length_checks_part0(s) \ +( ( ( ( ((const U8*)s)[1] & 0xEF ) == 0x49 ) || ( ( ((const U8*)s)[1] & 0xF9 ) == 0x51 ) || ((const U8*)s)[1] == 0x62 || ( ( ((const U8*)s)[1] & 0xFD ) == 0x64 ) || ( ( ((const U8*)s)[1] & 0xFD ) == 0x68 ) || ((const U8*)s)[1] == 0x71 ) ?\ + ( ( ( ( ( 0x41 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x59 ) || 0x5F == ((const U8*)s)[2] || ( 0x62 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x72 ) ) && ( ( 0x41 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x59 ) || 0x5F == ((const U8*)s)[3] || ( 0x62 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x72 ) ) ) && ( ( 0x41 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x59 ) || 0x5F == ((const U8*)s)[4] || ( 0x62 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x72 ) ) ) ? 5 : 0 )\ + : ( ((const U8*)s)[1] == 0x4A || ((const U8*)s)[1] == 0x52 || ( ( ((const U8*)s)[1] & 0xFD ) == 0x54 ) || ((const U8*)s)[1] == 0x58 || ((const U8*)s)[1] == 0x5F || ((const U8*)s)[1] == 0x63 || ( ( ((const U8*)s)[1] & 0xFD ) == 0x65 ) || ((const U8*)s)[1] == 0x69 || ( ( ((const U8*)s)[1] & 0xFD ) == 0x70 ) ) ?\ + ( ( ( 0x41 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x59 ) || 0x5F == ((const U8*)s)[2] || ( 0x62 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x6A ) || ( ((const U8*)s)[2] & 0xFE ) == 0x70 ) ?\ + ( ( ( ( 0x41 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x59 ) || 0x5F == ((const U8*)s)[3] || ( 0x62 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x72 ) ) && ( ( 0x41 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x59 ) || 0x5F == ((const U8*)s)[4] || ( 0x62 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x72 ) ) ) ? 5 : 0 )\ + : ( 0x72 == ((const U8*)s)[2] ) ? \ + ( ( ( 0x41 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x59 ) || 0x5F == ((const U8*)s)[3] || ( 0x62 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x6A ) || ( ((const U8*)s)[3] & 0xFE ) == 0x70 ) ?\ + ( ( ( 0x41 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x59 ) || 0x5F == ((const U8*)s)[4] || ( 0x62 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x72 ) ) ? 5 : 0 )\ + : ( ( 0x72 == ((const U8*)s)[3] ) && ( ( 0x41 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x59 ) || 0x5F == ((const U8*)s)[4] || ( 0x62 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x6A ) || 0x70 == ((const U8*)s)[4] ) ) ? 5 : 0 )\ + : 0 ) \ + : 0 ) + + +/*** GENERATED CODE ***/ +#define is_STRICT_UTF8_CHAR_utf8_no_length_checks_part1(s) \ +( ( 0xEE == ((const U8*)s)[0] ) ? \ + ( ( 0x41 == ((const U8*)s)[1] ) ? \ + ( ( ( ( ( 0x41 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x59 ) || 0x5F == ((const U8*)s)[2] || ( 0x62 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x72 ) ) && ( ( 0x41 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x59 ) || 0x5F == ((const U8*)s)[3] || ( 0x62 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x72 ) ) ) && ( ( 0x41 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x59 ) || 0x5F == ((const U8*)s)[4] || ( 0x62 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x72 ) ) ) ? 5 : 0 )\ + : ( 0x42 == ((const U8*)s)[1] ) ? \ + ( ( ( 0x41 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x59 ) || 0x5F == ((const U8*)s)[2] || ( 0x62 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x6A ) || ( ((const U8*)s)[2] & 0xFE ) == 0x70 ) ?\ + ( ( ( ( 0x41 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x59 ) || 0x5F == ((const U8*)s)[3] || ( 0x62 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x72 ) ) && ( ( 0x41 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x59 ) || 0x5F == ((const U8*)s)[4] || ( 0x62 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x72 ) ) ) ? 5 : 0 )\ + : ( 0x72 == ((const U8*)s)[2] ) ? \ + ( ( ( 0x41 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x59 ) || 0x5F == ((const U8*)s)[3] || ( 0x62 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x6A ) || ( ((const U8*)s)[3] & 0xFE ) == 0x70 ) ?\ + ( ( ( 0x41 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x59 ) || 0x5F == ((const U8*)s)[4] || ( 0x62 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x72 ) ) ? 5 : 0 )\ + : ( ( 0x72 == ((const U8*)s)[3] ) && ( ( 0x41 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x59 ) || 0x5F == ((const U8*)s)[4] || ( 0x62 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x6A ) || 0x70 == ((const U8*)s)[4] ) ) ? 5 : 0 )\ + : 0 ) \ + : 0 ) \ +: 0 ) + + +/*** GENERATED CODE ***/ +#define is_STRICT_UTF8_CHAR_utf8_no_length_checks_part2(s) \ +( ( ( ( ( 0x57 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x59 ) || 0x5F == ((const U8*)s)[1] || ( 0x62 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x72 ) ) && ( ( 0x41 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x59 ) || 0x5F == ((const U8*)s)[2] || ( 0x62 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x72 ) ) ) && ( ( 0x41 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x59 ) || 0x5F == ((const U8*)s)[3] || ( 0x62 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x72 ) ) ) ? 4 : 0 ) + + +/*** GENERATED CODE ***/ +#define is_STRICT_UTF8_CHAR_utf8_no_length_checks_part3(s) \ +( ( 0xDD == ((const U8*)s)[0] ) ? \ + ( ( ( 0x41 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x59 ) || 0x5F == ((const U8*)s)[1] || ( ((const U8*)s)[1] & 0xFE ) == 0x62 || ( 0x66 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x6A ) || ( ((const U8*)s)[1] & 0xFE ) == 0x70 ) ?\ + ( ( ( ( 0x41 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x59 ) || 0x5F == ((const U8*)s)[2] || ( 0x62 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x72 ) ) && ( ( 0x41 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x59 ) || 0x5F == ((const U8*)s)[3] || ( 0x62 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x72 ) ) ) ? 4 : 0 )\ + : ( 0x72 == ((const U8*)s)[1] ) ? \ + ( ( ( 0x41 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x54 ) || ( 0x57 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x59 ) || 0x5F == ((const U8*)s)[2] || ( 0x62 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x6A ) || ( ((const U8*)s)[2] & 0xFE ) == 0x70 ) ?\ + ( ( ( 0x41 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x59 ) || 0x5F == ((const U8*)s)[3] || ( 0x62 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x72 ) ) ? 4 : 0 )\ + : ( 0x55 == ((const U8*)s)[2] ) ? \ + ( ( ( 0x41 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x56 ) ) ? 4 : 0 )\ + : ( 0x56 == ((const U8*)s)[2] ) ? \ + ( ( ( 0x57 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x59 ) || 0x5F == ((const U8*)s)[3] || ( 0x62 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x72 ) ) ? 4 : 0 )\ + : ( ( 0x72 == ((const U8*)s)[2] ) && ( ( 0x41 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x59 ) || 0x5F == ((const U8*)s)[3] || ( 0x62 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x6A ) || 0x70 == ((const U8*)s)[3] ) ) ? 4 : 0 )\ + : 0 ) \ +: ( 0xDE == ((const U8*)s)[0] || 0xE1 == ((const U8*)s)[0] || 0xEB == ((const U8*)s)[0] ) ?\ + ( ( ( ( ( 0x41 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x59 ) || 0x5F == ((const U8*)s)[1] || ( 0x62 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x72 ) ) && ( ( 0x41 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x59 ) || 0x5F == ((const U8*)s)[2] || ( 0x62 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x72 ) ) ) && ( ( 0x41 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x59 ) || 0x5F == ((const U8*)s)[3] || ( 0x62 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x72 ) ) ) ? 4 : 0 )\ +: ( 0xDF == ((const U8*)s)[0] || 0xEA == ((const U8*)s)[0] || 0xEC == ((const U8*)s)[0] ) ?\ + ( ( ( 0x41 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x59 ) || 0x5F == ((const U8*)s)[1] || ( 0x62 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x6A ) || ( ((const U8*)s)[1] & 0xFE ) == 0x70 ) ?\ + ( ( ( ( 0x41 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x59 ) || 0x5F == ((const U8*)s)[2] || ( 0x62 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x72 ) ) && ( ( 0x41 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x59 ) || 0x5F == ((const U8*)s)[3] || ( 0x62 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x72 ) ) ) ? 4 : 0 )\ + : ( 0x72 == ((const U8*)s)[1] ) ? \ + ( ( ( 0x41 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x59 ) || 0x5F == ((const U8*)s)[2] || ( 0x62 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x6A ) || ( ((const U8*)s)[2] & 0xFE ) == 0x70 ) ?\ + ( ( ( 0x41 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x59 ) || 0x5F == ((const U8*)s)[3] || ( 0x62 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x72 ) ) ? 4 : 0 )\ + : ( ( 0x72 == ((const U8*)s)[2] ) && ( ( 0x41 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x59 ) || 0x5F == ((const U8*)s)[3] || ( 0x62 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x6A ) || 0x70 == ((const U8*)s)[3] ) ) ? 4 : 0 )\ + : 0 ) \ +: ( 0xED == ((const U8*)s)[0] ) ? is_STRICT_UTF8_CHAR_utf8_no_length_checks_part0(s) : is_STRICT_UTF8_CHAR_utf8_no_length_checks_part1(s) ) + + +/*** GENERATED CODE ***/ +#define is_STRICT_UTF8_CHAR_utf8_no_length_checks(s) \ +( ( 0x78 == ((const U8*)s)[0] || 0x80 == ((const U8*)s)[0] || ( 0x8A <= ((const U8*)s)[0] && ((const U8*)s)[0] <= 0x90 ) || ( 0x9A <= ((const U8*)s)[0] && ((const U8*)s)[0] <= 0xA0 ) || ( 0xAA <= ((const U8*)s)[0] && ((const U8*)s)[0] <= 0xAF ) || ( 0xB1 <= ((const U8*)s)[0] && ((const U8*)s)[0] <= 0xB5 ) ) ?\ + ( ( ( 0x41 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x59 ) || 0x5F == ((const U8*)s)[1] || ( 0x62 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x72 ) ) ? 2 : 0 )\ +: ( ((const U8*)s)[0] == 0xB7 || ( ( ((const U8*)s)[0] & 0xFE ) == 0xB8 ) || ( ( ((const U8*)s)[0] & 0xFC ) == 0xBC ) || ( ( ((const U8*)s)[0] & 0xEE ) == 0xCA ) || ( ( ((const U8*)s)[0] & 0xFC ) == 0xCC ) ) ?\ + ( ( ( ( 0x41 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x59 ) || 0x5F == ((const U8*)s)[1] || ( 0x62 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x72 ) ) && ( ( 0x41 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x59 ) || 0x5F == ((const U8*)s)[2] || ( 0x62 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x72 ) ) ) ? 3 : 0 )\ +: ( 0xDC == ((const U8*)s)[0] ) ? is_STRICT_UTF8_CHAR_utf8_no_length_checks_part2(s) : is_STRICT_UTF8_CHAR_utf8_no_length_checks_part3(s) ) + +/* C9_STRICT_UTF8_CHAR: Matches legal Unicode UTF-8 variant code points + including non-character code points, no surrogates + 0x00A0 - 0xD7FF + 0xE000 - 0x10FFFF +*/ +/*** GENERATED CODE ***/ +#define is_C9_STRICT_UTF8_CHAR_utf8_no_length_checks_part0(s) \ +( ( ( 0x41 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x59 ) || 0x5F == ((const U8*)s)[1] || ( 0x62 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x72 ) ) ? 2 : 0 ) + + +/*** GENERATED CODE ***/ +#define is_C9_STRICT_UTF8_CHAR_utf8_no_length_checks_part1(s) \ +( ( ((const U8*)s)[0] == 0xB7 || ( ( ((const U8*)s)[0] & 0xFE ) == 0xB8 ) || ( ( ((const U8*)s)[0] & 0xFC ) == 0xBC ) || ( ( ((const U8*)s)[0] & 0xEE ) == 0xCA ) || ( ( ((const U8*)s)[0] & 0xFC ) == 0xCC ) ) ?\ + ( ( ( ( 0x41 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x59 ) || 0x5F == ((const U8*)s)[1] || ( 0x62 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x72 ) ) && ( ( 0x41 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x59 ) || 0x5F == ((const U8*)s)[2] || ( 0x62 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x72 ) ) ) ? 3 : 0 )\ +: ( 0xDC == ((const U8*)s)[0] ) ? \ + ( ( ( ( ( 0x57 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x59 ) || 0x5F == ((const U8*)s)[1] || ( 0x62 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x72 ) ) && ( ( 0x41 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x59 ) || 0x5F == ((const U8*)s)[2] || ( 0x62 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x72 ) ) ) && ( ( 0x41 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x59 ) || 0x5F == ((const U8*)s)[3] || ( 0x62 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x72 ) ) ) ? 4 : 0 )\ +: ( 0xDD == ((const U8*)s)[0] ) ? \ + ( ( ( ( ( 0x41 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x59 ) || 0x5F == ((const U8*)s)[1] || ( ((const U8*)s)[1] & 0xFE ) == 0x62 || ( 0x66 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x72 ) ) && ( ( 0x41 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x59 ) || 0x5F == ((const U8*)s)[2] || ( 0x62 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x72 ) ) ) && ( ( 0x41 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x59 ) || 0x5F == ((const U8*)s)[3] || ( 0x62 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x72 ) ) ) ? 4 : 0 )\ +: ( ( ((const U8*)s)[0] & 0xFE ) == 0xDE || 0xE1 == ((const U8*)s)[0] || ( 0xEA <= ((const U8*)s)[0] && ((const U8*)s)[0] <= 0xEC ) ) ?\ + ( ( ( ( ( 0x41 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x59 ) || 0x5F == ((const U8*)s)[1] || ( 0x62 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x72 ) ) && ( ( 0x41 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x59 ) || 0x5F == ((const U8*)s)[2] || ( 0x62 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x72 ) ) ) && ( ( 0x41 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x59 ) || 0x5F == ((const U8*)s)[3] || ( 0x62 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x72 ) ) ) ? 4 : 0 )\ +: ( 0xED == ((const U8*)s)[0] ) ? \ + ( ( ( ( ( ( 0x49 == ((const U8*)s)[1] || 0x4A == ((const U8*)s)[1] ) || ( 0x51 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x59 ) || 0x5F == ((const U8*)s)[1] || ( 0x62 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x72 ) ) && ( ( 0x41 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x59 ) || 0x5F == ((const U8*)s)[2] || ( 0x62 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x72 ) ) ) && ( ( 0x41 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x59 ) || 0x5F == ((const U8*)s)[3] || ( 0x62 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x72 ) ) ) && ( ( 0x41 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x59 ) || 0x5F == ((const U8*)s)[4] || ( 0x62 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x72 ) ) ) ? 5 : 0 )\ +: ( ( ( ( ( 0xEE == ((const U8*)s)[0] ) && ( 0x41 == ((const U8*)s)[1] || 0x42 == ((const U8*)s)[1] ) ) && ( ( 0x41 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x59 ) || 0x5F == ((const U8*)s)[2] || ( 0x62 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x72 ) ) ) && ( ( 0x41 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x59 ) || 0x5F == ((const U8*)s)[3] || ( 0x62 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x72 ) ) ) && ( ( 0x41 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x59 ) || 0x5F == ((const U8*)s)[4] || ( 0x62 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x72 ) ) ) ? 5 : 0 ) + + +/*** GENERATED CODE ***/ +#define is_C9_STRICT_UTF8_CHAR_utf8_no_length_checks(s) \ +( ( 0x78 == ((const U8*)s)[0] || 0x80 == ((const U8*)s)[0] || ( 0x8A <= ((const U8*)s)[0] && ((const U8*)s)[0] <= 0x90 ) || ( 0x9A <= ((const U8*)s)[0] && ((const U8*)s)[0] <= 0xA0 ) || ( 0xAA <= ((const U8*)s)[0] && ((const U8*)s)[0] <= 0xAF ) || ( 0xB1 <= ((const U8*)s)[0] && ((const U8*)s)[0] <= 0xB5 ) ) ? is_C9_STRICT_UTF8_CHAR_utf8_no_length_checks_part0(s) : is_C9_STRICT_UTF8_CHAR_utf8_no_length_checks_part1(s) ) + +#endif + +/* is_UTF8_CHAR_utf8_no_length_checks() in both code pages handles UTF-8 that + * has this start byte (expressed in I8) as the maximum */ +#define _IS_UTF8_CHAR_HIGHEST_START_BYTE 0xF9 + /* * ex: set ts=8 sts=4 sw=4 et: */ diff --git a/Master/tlpkg/tlperl/lib/CORE/util.h b/Master/tlpkg/tlperl/lib/CORE/util.h index 3310b119d8e..12a1c470eef 100644 --- a/Master/tlpkg/tlperl/lib/CORE/util.h +++ b/Master/tlpkg/tlperl/lib/CORE/util.h @@ -8,6 +8,10 @@ * */ +#ifndef PERL_UTIL_H_ +#define PERL_UTIL_H_ + + #ifdef VMS # define PERL_FILE_IS_ABSOLUTE(f) \ (*(f) == '/' \ @@ -229,6 +233,15 @@ means arg not present, 1 is empty string/null byte */ # define HS_CXT cv #endif +#define instr(haystack, needle) strstr(haystack, needle) + +#ifdef HAS_MEMMEM +# define ninstr(big, bigend, little, lend) \ + ((char *) memmem(big, bigend - big, little, lend - little)) +#endif + +#endif /* PERL_UTIL_H_ */ + /* * ex: set ts=8 sts=4 sw=4 et: */ diff --git a/Master/tlpkg/tlperl/lib/CORE/vdir.h b/Master/tlpkg/tlperl/lib/CORE/vdir.h index b5c6bc6f454..9ff225eb16b 100644 --- a/Master/tlpkg/tlperl/lib/CORE/vdir.h +++ b/Master/tlpkg/tlperl/lib/CORE/vdir.h @@ -203,7 +203,8 @@ int VDir::SetDirA(char const *pPath, int index) void VDir::FromEnvA(char *pEnv, int index) { /* gets the directory for index from the environment variable. */ while (*pEnv != '\0') { - if ((pEnv[0] == '=') && (DriveIndex(pEnv[1]) == index)) { + if ((pEnv[0] == '=') && (DriveIndex(pEnv[1]) == index) + && pEnv[2] == ':' && pEnv[3] == '=') { SetDirA(&pEnv[4], index); break; } @@ -215,7 +216,8 @@ void VDir::FromEnvA(char *pEnv, int index) void VDir::FromEnvW(WCHAR *pEnv, int index) { /* gets the directory for index from the environment variable. */ while (*pEnv != '\0') { - if ((pEnv[0] == '=') && (DriveIndex((char)pEnv[1]) == index)) { + if ((pEnv[0] == '=') && (DriveIndex((char)pEnv[1]) == index) + && pEnv[2] == ':' && pEnv[3] == '=') { SetDirW(&pEnv[4], index); break; } diff --git a/Master/tlpkg/tlperl/lib/CORE/warnings.h b/Master/tlpkg/tlperl/lib/CORE/warnings.h index 337bef374c0..01668377fce 100644 --- a/Master/tlpkg/tlperl/lib/CORE/warnings.h +++ b/Master/tlpkg/tlperl/lib/CORE/warnings.h @@ -111,12 +111,18 @@ #define WARN_MISSING 64 #define WARN_REDUNDANT 65 +/* Warnings Categories added in Perl 5.025 */ + +#define WARN_EXPERIMENTAL__DECLARED_REFS 66 + #define WARNsize 17 #define WARN_ALLstring "\125\125\125\125\125\125\125\125\125\125\125\125\125\125\125\125\125" #define WARN_NONEstring "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -#define isLEXWARN_on cBOOL(PL_curcop->cop_warnings != pWARN_STD) -#define isLEXWARN_off cBOOL(PL_curcop->cop_warnings == pWARN_STD) +#define isLEXWARN_on \ + cBOOL(PL_curcop && PL_curcop->cop_warnings != pWARN_STD) +#define isLEXWARN_off \ + cBOOL(!PL_curcop || PL_curcop->cop_warnings == pWARN_STD) #define isWARN_ONCE (PL_dowarn & (G_WARN_ON|G_WARN_ONCE)) #define isWARN_on(c,x) (IsSet((U8 *)(c + 1), 2*(x))) #define isWARNf_on(c,x) (IsSet((U8 *)(c + 1), 2*(x)+1)) @@ -126,6 +132,64 @@ : (STRLEN*)CopyD(p, PerlMemShared_malloc(sizeof(*p)+*p), sizeof(*p)+*p, \ char)) +/* + +=head1 Warning and Dieing + +=for apidoc Am|bool|ckWARN|U32 w + +Returns a boolean as to whether or not warnings are enabled for the warning +category C<w>. If the category is by default enabled even if not within the +scope of S<C<use warnings>>, instead use the L</ckWARN_d> macro. + +=for apidoc Am|bool|ckWARN_d|U32 w + +Like C<L</ckWARN>>, but for use if and only if the warning category is by +default enabled even if not within the scope of S<C<use warnings>>. + +=for apidoc Am|bool|ckWARN2|U32 w1|U32 w2 + +Like C<L</ckWARN>>, but takes two warnings categories as input, and returns +TRUE if either is enabled. If either category is by default enabled even if +not within the scope of S<C<use warnings>>, instead use the L</ckWARN2_d> +macro. The categories must be completely independent, one may not be +subclassed from the other. + +=for apidoc Am|bool|ckWARN2_d|U32 w1|U32 w2 + +Like C<L</ckWARN2>>, but for use if and only if either warning category is by +default enabled even if not within the scope of S<C<use warnings>>. + +=for apidoc Am|bool|ckWARN3|U32 w1|U32 w2|U32 w3 + +Like C<L</ckWARN2>>, but takes three warnings categories as input, and returns +TRUE if any is enabled. If any of the categories is by default enabled even +if not within the scope of S<C<use warnings>>, instead use the L</ckWARN3_d> +macro. The categories must be completely independent, one may not be +subclassed from any other. + +=for apidoc Am|bool|ckWARN3_d|U32 w1|U32 w2|U32 w3 + +Like C<L</ckWARN3>>, but for use if and only if any of the warning categories +is by default enabled even if not within the scope of S<C<use warnings>>. + +=for apidoc Am|bool|ckWARN4|U32 w1|U32 w2|U32 w3|U32 w4 + +Like C<L</ckWARN3>>, but takes four warnings categories as input, and returns +TRUE if any is enabled. If any of the categories is by default enabled even +if not within the scope of S<C<use warnings>>, instead use the L</ckWARN4_d> +macro. The categories must be completely independent, one may not be +subclassed from any other. + +=for apidoc Am|bool|ckWARN4_d|U32 w1|U32 w2|U32 w3|U32 w4 + +Like C<L</ckWARN4>>, but for use if and only if any of the warning categories +is by default enabled even if not within the scope of S<C<use warnings>>. + +=cut + +*/ + #define ckWARN(w) Perl_ckwarn(aTHX_ packWARN(w)) /* The w1, w2 ... should be independent warnings categories; one shouldn't be @@ -157,7 +221,8 @@ #define unpackWARN4(x) (((x) >>24) & 0xFF) #define ckDEAD(x) \ - ( ! specialWARN(PL_curcop->cop_warnings) && \ + (PL_curcop && \ + !specialWARN(PL_curcop->cop_warnings) && \ ( isWARNf_on(PL_curcop->cop_warnings, WARN_ALL) || \ isWARNf_on(PL_curcop->cop_warnings, unpackWARN1(x)) || \ isWARNf_on(PL_curcop->cop_warnings, unpackWARN2(x)) || \ diff --git a/Master/tlpkg/tlperl/lib/CORE/win32.h b/Master/tlpkg/tlperl/lib/CORE/win32.h index 9b79e009f1e..6de9c9b7264 100644 --- a/Master/tlpkg/tlperl/lib/CORE/win32.h +++ b/Master/tlpkg/tlperl/lib/CORE/win32.h @@ -262,13 +262,13 @@ typedef unsigned short mode_t; #define snprintf _snprintf #define vsnprintf _vsnprintf -/* on VC2003, msvcrt.lib is missing these symbols */ +/* on VS2003, msvcrt.lib is missing these symbols */ #if _MSC_VER >= 1300 && _MSC_VER < 1400 # pragma intrinsic(_rotl64,_rotr64) #endif -# pragma warning(push) -# pragma warning(disable:4756;disable:4056) +#pragma warning(push) +#pragma warning(disable:4756;disable:4056) PERL_STATIC_INLINE double S_Infinity() { /* this is a real C literal which can get further constant folded @@ -277,8 +277,8 @@ double S_Infinity() { folding INF is creating -INF */ return (DBL_MAX+DBL_MAX); } -# pragma warning(pop) -# define NV_INF S_Infinity() +#pragma warning(pop) +#define NV_INF S_Infinity() /* selectany allows duplicate and unused data symbols to be removed by VC linker, if this were static, each translation unit will have its own, @@ -290,10 +290,64 @@ double S_Infinity() { that DLL actually uses __PL_nan_u */ extern const __declspec(selectany) union { unsigned __int64 __q; double __d; } __PL_nan_u = { 0x7FF8000000000000UI64 }; -# define NV_NAN ((NV)__PL_nan_u.__d) +#define NV_NAN ((NV)__PL_nan_u.__d) + +/* The CRT was rewritten in VS2015. */ +#if _MSC_VER >= 1900 + +/* No longer declared in stdio.h */ +char *gets(char* buffer); + +#define tzname _tzname + +/* From corecrt_internal_stdio.h: */ +typedef struct +{ + union + { + FILE _public_file; + char* _ptr; + }; + + char* _base; + int _cnt; + long _flags; + long _file; + int _charbuf; + int _bufsiz; + char* _tmpfname; + CRITICAL_SECTION _lock; +} __crt_stdio_stream_data; + +#define PERLIO_FILE_flag_RD 0x0001 /* _IOREAD */ +#define PERLIO_FILE_flag_WR 0x0002 /* _IOWRITE */ +#define PERLIO_FILE_flag_RW 0x0004 /* _IOUPDATE */ +#define PERLIO_FILE_ptr(f) (((__crt_stdio_stream_data*)(f))->_ptr) +#define PERLIO_FILE_base(f) (((__crt_stdio_stream_data*)(f))->_base) +#define PERLIO_FILE_cnt(f) (((__crt_stdio_stream_data*)(f))->_cnt) +#define PERLIO_FILE_flag(f) ((int)(((__crt_stdio_stream_data*)(f))->_flags)) +#define PERLIO_FILE_file(f) ((int)(((__crt_stdio_stream_data*)(f))->_file)) + +#endif #endif /* _MSC_VER */ +#if (!defined(_MSC_VER)) || (defined(_MSC_VER) && _MSC_VER < 1900) + +/* Note: PERLIO_FILE_ptr/base/cnt are not actually used for GCC or <VS2015 + * since FILE_ptr/base/cnt do the same thing anyway but it doesn't hurt to + * define them all here for completeness. */ +#define PERLIO_FILE_flag_RD _IOREAD /* 0x001 */ +#define PERLIO_FILE_flag_WR _IOWRT /* 0x002 */ +#define PERLIO_FILE_flag_RW _IORW /* 0x080 */ +#define PERLIO_FILE_ptr(f) ((f)->_ptr) +#define PERLIO_FILE_base(f) ((f)->_base) +#define PERLIO_FILE_cnt(f) ((f)->_cnt) +#define PERLIO_FILE_flag(f) ((f)->_flag) +#define PERLIO_FILE_file(f) ((f)->_file) + +#endif + #ifdef __MINGW32__ /* Minimal Gnu-Win32 */ typedef long uid_t; @@ -545,21 +599,31 @@ void win32_wait_for_children(pTHX); # define PERL_WAIT_FOR_CHILDREN win32_wait_for_children(aTHX) #endif +/* The following ioinfo struct manipulations had been removed but were + * reinstated to fix RT#120091/118059. However, they do not work with + * the rewritten CRT in VS2015 so they are removed once again for VS2015 + * onwards, which will therefore suffer from the reintroduction of the + * close socket bug. */ +#if (!defined(_MSC_VER)) || (defined(_MSC_VER) && _MSC_VER < 1900) + #ifdef PERL_CORE + /* C doesn't like repeat struct definitions */ #if defined(__MINGW32__) && (__MINGW32_MAJOR_VERSION>=3) -#undef _CRTIMP +# undef _CRTIMP #endif #ifndef _CRTIMP -#define _CRTIMP __declspec(dllimport) +# define _CRTIMP __declspec(dllimport) #endif -/* VV 2005 has multiple ioinfo struct definitions through VC 2005's release life - * VC 2008-2012 have been stable but do not assume future VCs will have the +/* VS2005 has multiple ioinfo struct definitions through VS2005's release life + * VS2008-2012 have been stable but do not assume future VSs will have the * same ioinfo struct, just because past struct stability. If research is done - * on the CRTs of future VS, the version check can be bumped up so the newer - * VC uses a fixed ioinfo size. + * on the CRTs of future VSs, the version check can be bumped up so the newer + * VS uses a fixed ioinfo size. (Actually, only VS2013 (_MSC_VER 1800) hasn't + * been looked at; after that we cannot use the ioinfo struct anyway (see the + * #if above).) */ #if ! (_MSC_VER < 1400 || (_MSC_VER >= 1500 && _MSC_VER <= 1700) \ || defined(__MINGW32__)) @@ -582,7 +646,7 @@ typedef struct { # if _MSC_VER >= 1400 && _MSC_VER < 1500 # error "This ioinfo struct is incomplete for Visual C 2005" # endif -/* VC 2005 CRT has at least 3 different definitions of this struct based on the +/* VS2005 CRT has at least 3 different definitions of this struct based on the * CRT DLL's build number. */ # if _MSC_VER >= 1500 # ifndef _SAFECRT_IMPL @@ -636,9 +700,12 @@ EXTERN_C _CRTIMP ioinfo* __pioinfo[]; #endif /* since we are not doing a dup2(), this works fine */ -# define _set_osfhnd(fh, osfh) (void)(_osfhnd(fh) = (intptr_t)osfh) +#define _set_osfhnd(fh, osfh) (void)(_osfhnd(fh) = (intptr_t)osfh) + #endif /* PERL_CORE */ +#endif /* !defined(_MSC_VER) || _MSC_VER<1900 */ + /* IO.xs and POSIX.xs define PERLIO_NOT_STDIO to 1 */ #if defined(PERL_EXT_IO) || defined(PERL_EXT_POSIX) #undef PERLIO_NOT_STDIO |