This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
embed.fnc: ckwarn(), ckwarn_d() not API
[perl5.git] / feature.h
index 2f2f23c..20f7996 100644 (file)
--- a/feature.h
+++ b/feature.h
 
 #define HINT_FEATURE_SHIFT     26
 
-#define FEATURE_BITWISE_BIT         0x0001
-#define FEATURE___SUB___BIT         0x0002
-#define FEATURE_MYREF_BIT           0x0004
-#define FEATURE_EVALBYTES_BIT       0x0008
-#define FEATURE_FC_BIT              0x0010
-#define FEATURE_INDIRECT_BIT        0x0020
-#define FEATURE_ISA_BIT             0x0040
-#define FEATURE_POSTDEREF_QQ_BIT    0x0080
-#define FEATURE_REFALIASING_BIT     0x0100
-#define FEATURE_SAY_BIT             0x0200
-#define FEATURE_SIGNATURES_BIT      0x0400
-#define FEATURE_STATE_BIT           0x0800
-#define FEATURE_SWITCH_BIT          0x1000
-#define FEATURE_UNIEVAL_BIT         0x2000
-#define FEATURE_UNICODE_BIT         0x4000
+#define FEATURE_BITWISE_BIT          0x0001
+#define FEATURE___SUB___BIT          0x0002
+#define FEATURE_MYREF_BIT            0x0004
+#define FEATURE_EVALBYTES_BIT        0x0008
+#define FEATURE_FC_BIT               0x0010
+#define FEATURE_INDIRECT_BIT         0x0020
+#define FEATURE_ISA_BIT              0x0040
+#define FEATURE_MULTIDIMENSIONAL_BIT 0x0080
+#define FEATURE_POSTDEREF_QQ_BIT     0x0100
+#define FEATURE_REFALIASING_BIT      0x0200
+#define FEATURE_SAY_BIT              0x0400
+#define FEATURE_SIGNATURES_BIT       0x0800
+#define FEATURE_STATE_BIT            0x1000
+#define FEATURE_SWITCH_BIT           0x2000
+#define FEATURE_UNIEVAL_BIT          0x4000
+#define FEATURE_UNICODE_BIT          0x8000
 
 #define FEATURE_BUNDLE_DEFAULT 0
 #define FEATURE_BUNDLE_510     1
@@ -46,7 +47,7 @@
     ? (PL_curcop->cop_features & (mask)) : FALSE)
 
 /* The longest string we pass in.  */
-#define MAX_FEATURE_LEN (sizeof("postderef_qq")-1)
+#define MAX_FEATURE_LEN (sizeof("multidimensional")-1)
 
 #define FEATURE_FC_IS_ENABLED \
     ( \
         FEATURE_IS_ENABLED_MASK(FEATURE_UNICODE_BIT)) \
     )
 
+#define FEATURE_MULTIDIMENSIONAL_IS_ENABLED \
+    ( \
+       CURRENT_FEATURE_BUNDLE <= FEATURE_BUNDLE_527 \
+     || (CURRENT_FEATURE_BUNDLE == FEATURE_BUNDLE_CUSTOM && \
+        FEATURE_IS_ENABLED_MASK(FEATURE_MULTIDIMENSIONAL_BIT)) \
+    )
+
 
 #define SAVEFEATUREBITS() SAVEI32(PL_compiling.cop_features)
 
@@ -265,7 +273,12 @@ S_magic_sethint_feature(pTHX_ SV *keysv, const char *keypv, STRLEN keylen,
             return;
 
         case 'm':
-            if (keylen == sizeof("feature_myref")-1
+            if (keylen == sizeof("feature_multidimensional")-1
+                 && memcmp(subf+1, "ultidimensional", keylen - sizeof("feature_")) == 0) {
+                mask = FEATURE_MULTIDIMENSIONAL_BIT;
+                break;
+            }
+            else if (keylen == sizeof("feature_myref")-1
                  && memcmp(subf+1, "yref", keylen - sizeof("feature_")) == 0) {
                 mask = FEATURE_MYREF_BIT;
                 break;