diff options
Diffstat (limited to 'feature.h')
-rw-r--r-- | feature.h | 35 |
1 files changed, 24 insertions, 11 deletions
@@ -22,16 +22,17 @@ #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_MODULE_TRUE_BIT 0x0400 +#define FEATURE_MULTIDIMENSIONAL_BIT 0x0800 +#define FEATURE_POSTDEREF_QQ_BIT 0x1000 +#define FEATURE_REFALIASING_BIT 0x2000 +#define FEATURE_SAY_BIT 0x4000 +#define FEATURE_SIGNATURES_BIT 0x8000 +#define FEATURE_STATE_BIT 0x10000 +#define FEATURE_SWITCH_BIT 0x20000 +#define FEATURE_TRY_BIT 0x40000 +#define FEATURE_UNIEVAL_BIT 0x80000 +#define FEATURE_UNICODE_BIT 0x100000 #define FEATURE_BUNDLE_DEFAULT 0 #define FEATURE_BUNDLE_510 1 @@ -151,6 +152,13 @@ FEATURE_IS_ENABLED_MASK(FEATURE___SUB___BIT)) \ ) +#define FEATURE_MODULE_TRUE_IS_ENABLED \ + ( \ + CURRENT_FEATURE_BUNDLE == FEATURE_BUNDLE_537 \ + || (CURRENT_FEATURE_BUNDLE == FEATURE_BUNDLE_CUSTOM && \ + FEATURE_IS_ENABLED_MASK(FEATURE_MODULE_TRUE_BIT)) \ + ) + #define FEATURE_REFALIASING_IS_ENABLED \ ( \ CURRENT_FEATURE_BUNDLE == FEATURE_BUNDLE_CUSTOM && \ @@ -333,7 +341,12 @@ S_magic_sethint_feature(pTHX_ SV *keysv, const char *keypv, STRLEN keylen, return; case 'm': - if (keylen == sizeof("feature_more_delims")-1 + if (keylen == sizeof("feature_module_true")-1 + && memcmp(subf+1, "odule_true", keylen - sizeof("feature_")) == 0) { + mask = FEATURE_MODULE_TRUE_BIT; + break; + } + else if (keylen == sizeof("feature_more_delims")-1 && memcmp(subf+1, "ore_delims", keylen - sizeof("feature_")) == 0) { mask = FEATURE_MORE_DELIMS_BIT; break; |