diff options
author | Karl Williamson <khw@cpan.org> | 2022-02-14 15:25:40 -0700 |
---|---|---|
committer | Karl Williamson <khw@cpan.org> | 2022-03-19 23:17:51 -0600 |
commit | 9c9853e81d56a8abb664dd3e6332722675cc9a7c (patch) | |
tree | 037008c8765e0e8f02a99bde1a3144e3df3bf4b1 /feature.h | |
parent | dce1e563ba694cbba6b45aaa354e0e0bacb26f69 (diff) | |
download | perl-9c9853e81d56a8abb664dd3e6332722675cc9a7c.tar.gz |
Add 'extra paired delimiters' feature
When this feature is enabled, one can use many more string delimiters
that have an opening version and a mirrored closing one.
Diffstat (limited to 'feature.h')
-rw-r--r-- | feature.h | 52 |
1 files changed, 32 insertions, 20 deletions
@@ -12,25 +12,26 @@ #define HINT_FEATURE_SHIFT 26 -#define FEATURE_BAREWORD_FILEHANDLES_BIT 0x0001 -#define FEATURE_BITWISE_BIT 0x0002 -#define FEATURE___SUB___BIT 0x0004 -#define FEATURE_MYREF_BIT 0x0008 -#define FEATURE_DEFER_BIT 0x0010 -#define FEATURE_EVALBYTES_BIT 0x0020 -#define FEATURE_FC_BIT 0x0040 -#define FEATURE_INDIRECT_BIT 0x0080 -#define FEATURE_ISA_BIT 0x0100 -#define FEATURE_MULTIDIMENSIONAL_BIT 0x0200 -#define FEATURE_POSTDEREF_QQ_BIT 0x0400 -#define FEATURE_REFALIASING_BIT 0x0800 -#define FEATURE_SAY_BIT 0x1000 -#define FEATURE_SIGNATURES_BIT 0x2000 -#define FEATURE_STATE_BIT 0x4000 -#define FEATURE_SWITCH_BIT 0x8000 -#define FEATURE_TRY_BIT 0x10000 -#define FEATURE_UNIEVAL_BIT 0x20000 -#define FEATURE_UNICODE_BIT 0x40000 +#define FEATURE_BAREWORD_FILEHANDLES_BIT 0x0001 +#define FEATURE_BITWISE_BIT 0x0002 +#define FEATURE___SUB___BIT 0x0004 +#define FEATURE_MYREF_BIT 0x0008 +#define FEATURE_DEFER_BIT 0x0010 +#define FEATURE_EVALBYTES_BIT 0x0020 +#define FEATURE_MORE_DELIMS_BIT 0x0040 +#define FEATURE_FC_BIT 0x0080 +#define FEATURE_INDIRECT_BIT 0x0100 +#define FEATURE_ISA_BIT 0x0200 +#define FEATURE_MULTIDIMENSIONAL_BIT 0x0400 +#define FEATURE_POSTDEREF_QQ_BIT 0x0800 +#define FEATURE_REFALIASING_BIT 0x1000 +#define FEATURE_SAY_BIT 0x2000 +#define FEATURE_SIGNATURES_BIT 0x4000 +#define FEATURE_STATE_BIT 0x8000 +#define FEATURE_SWITCH_BIT 0x10000 +#define FEATURE_TRY_BIT 0x20000 +#define FEATURE_UNIEVAL_BIT 0x40000 +#define FEATURE_UNICODE_BIT 0x80000 #define FEATURE_BUNDLE_DEFAULT 0 #define FEATURE_BUNDLE_510 1 @@ -192,6 +193,12 @@ FEATURE_IS_ENABLED_MASK(FEATURE_BAREWORD_FILEHANDLES_BIT)) \ ) +#define FEATURE_MORE_DELIMS_IS_ENABLED \ + ( \ + CURRENT_FEATURE_BUNDLE == FEATURE_BUNDLE_CUSTOM && \ + FEATURE_IS_ENABLED_MASK(FEATURE_MORE_DELIMS_BIT) \ + ) + #define SAVEFEATUREBITS() SAVEI32(PL_compiling.cop_features) @@ -315,7 +322,12 @@ S_magic_sethint_feature(pTHX_ SV *keysv, const char *keypv, STRLEN keylen, return; case 'm': - if (keylen == sizeof("feature_multidimensional")-1 + if (keylen == sizeof("feature_more_delims")-1 + && memcmp(subf+1, "ore_delims", keylen - sizeof("feature_")) == 0) { + mask = FEATURE_MORE_DELIMS_BIT; + break; + } + else if (keylen == sizeof("feature_multidimensional")-1 && memcmp(subf+1, "ultidimensional", keylen - sizeof("feature_")) == 0) { mask = FEATURE_MULTIDIMENSIONAL_BIT; break; |