(PL_curcop == &PL_compiling ? PL_hints : PL_curcop->cop_hints)
#define CURRENT_FEATURE_BUNDLE (CURRENT_HINTS >> HINT_FEATURE_SHIFT)
+#define FEATURE_SAY_IS_ENABLED \
+ ( \
+ (CURRENT_FEATURE_BUNDLE >= FEATURE_BUNDLE_510 && \
+ CURRENT_FEATURE_BUNDLE <= FEATURE_BUNDLE_515) \
+ || (CURRENT_FEATURE_BUNDLE == FEATURE_BUNDLE_CUSTOM && \
+ FEATURE_IS_ENABLED("say")) \
+ )
+
+#define FEATURE_STATE_IS_ENABLED \
+ ( \
+ (CURRENT_FEATURE_BUNDLE >= FEATURE_BUNDLE_510 && \
+ CURRENT_FEATURE_BUNDLE <= FEATURE_BUNDLE_515) \
+ || (CURRENT_FEATURE_BUNDLE == FEATURE_BUNDLE_CUSTOM && \
+ FEATURE_IS_ENABLED("state")) \
+ )
+
+#define FEATURE_SWITCH_IS_ENABLED \
+ ( \
+ (CURRENT_FEATURE_BUNDLE >= FEATURE_BUNDLE_510 && \
+ CURRENT_FEATURE_BUNDLE <= FEATURE_BUNDLE_515) \
+ || (CURRENT_FEATURE_BUNDLE == FEATURE_BUNDLE_CUSTOM && \
+ FEATURE_IS_ENABLED("switch")) \
+ )
+
+#define FEATURE_EVALBYTES_IS_ENABLED \
+ ( \
+ CURRENT_FEATURE_BUNDLE == FEATURE_BUNDLE_515 \
+ || (CURRENT_FEATURE_BUNDLE == FEATURE_BUNDLE_CUSTOM && \
+ FEATURE_IS_ENABLED("evalbytes")) \
+ )
+
+#define FEATURE_ARYBASE_IS_ENABLED \
+ ( \
+ (CURRENT_FEATURE_BUNDLE >= FEATURE_BUNDLE_DEFAULT && \
+ CURRENT_FEATURE_BUNDLE <= FEATURE_BUNDLE_511) \
+ || (CURRENT_FEATURE_BUNDLE == FEATURE_BUNDLE_CUSTOM && \
+ FEATURE_IS_ENABLED_d("arybase")) \
+ )
+
+#define FEATURE___SUB___IS_ENABLED \
+ ( \
+ CURRENT_FEATURE_BUNDLE == FEATURE_BUNDLE_515 \
+ || (CURRENT_FEATURE_BUNDLE == FEATURE_BUNDLE_CUSTOM && \
+ FEATURE_IS_ENABLED("__SUB__")) \
+ )
+
+#define FEATURE_UNIEVAL_IS_ENABLED \
+ ( \
+ CURRENT_FEATURE_BUNDLE == FEATURE_BUNDLE_515 \
+ || (CURRENT_FEATURE_BUNDLE == FEATURE_BUNDLE_CUSTOM && \
+ FEATURE_IS_ENABLED("unieval")) \
+ )
+
+#define FEATURE_UNICODE_IS_ENABLED \
+ ( \
+ (CURRENT_FEATURE_BUNDLE >= FEATURE_BUNDLE_511 && \
+ CURRENT_FEATURE_BUNDLE <= FEATURE_BUNDLE_515) \
+ || (CURRENT_FEATURE_BUNDLE == FEATURE_BUNDLE_CUSTOM && \
+ FEATURE_IS_ENABLED("unicode")) \
+ )
+
+
#endif /* PERL_CORE or PERL_EXT */
/* ex: set ro: */
sort { $a eq 'default' ? -1 : $b eq 'default' ? 1 : $a cmp $b }
values %UniqueBundles
) {
+ next if $bund =~ /[^\d.]/ and $bund ne 'default';
for (@{$feature_bundle{$bund}}) {
if (@{$BundleRanges{$_} ||= []} == 2) {
$BundleRanges{$_}[1] = $bund
(PL_curcop == &PL_compiling ? PL_hints : PL_curcop->cop_hints)
#define CURRENT_FEATURE_BUNDLE (CURRENT_HINTS >> HINT_FEATURE_SHIFT)
+EOH
+
+for (
+ sort { length $a <=> length $b } keys %feature, keys %default_feature
+) {
+ my($first,$last) =
+ map { (my $__ = uc) =~ y/.//d; $__ } @{$BundleRanges{$_}};
+ my $default = '';
+ my $name = $feature{$_} # skip "no"
+ || ($default = '_d', substr $default_feature{$_}, 2);
+ my $NAME = uc $name;
+ if ($last) {
+ print $h <<EOH3;
+#define FEATURE_$NAME\_IS_ENABLED \\
+ ( \\
+ (CURRENT_FEATURE_BUNDLE >= FEATURE_BUNDLE_$first && \\
+ CURRENT_FEATURE_BUNDLE <= FEATURE_BUNDLE_$last) \\
+ || (CURRENT_FEATURE_BUNDLE == FEATURE_BUNDLE_CUSTOM && \\
+ FEATURE_IS_ENABLED$default("$name")) \\
+ )
+
+EOH3
+ }
+ else {
+ print $h <<EOH4;
+#define FEATURE_$NAME\_IS_ENABLED \\
+ ( \\
+ CURRENT_FEATURE_BUNDLE == FEATURE_BUNDLE_$first \\
+ || (CURRENT_FEATURE_BUNDLE == FEATURE_BUNDLE_CUSTOM && \\
+ FEATURE_IS_ENABLED$default("$name")) \\
+ )
+
+EOH4
+ }
+}
+
+print $h <<EOH;
+
#endif /* PERL_CORE or PERL_EXT */
EOH