pub fn FeatureSetFns(comptime F: type) type pub fn featureSet(features: []const F) SetPopulates only the feature bits specified.
pub fn featureSetHas(set: Set, feature: F) boolReturns true if the specified feature is enabled.
pub fn featureSetHasAny(set: Set, features: anytype) boolReturns true if any specified feature is enabled.
pub fn featureSetHasAll(set: Set, features: anytype) boolReturns true if every specified feature is enabled.
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356 pub fn FeatureSetFns(comptime F: type) type {
return struct {
/// Populates only the feature bits specified.
pub fn featureSet(features: []const F) Set {
var x = Set.empty;
for (features) |feature| {
x.addFeature(@backingInt(feature));
}
return x;
}
/// Returns true if the specified feature is enabled.
pub fn featureSetHas(set: Set, feature: F) bool {
return set.isEnabled(@backingInt(feature));
}
/// Returns true if any specified feature is enabled.
pub fn featureSetHasAny(set: Set, features: anytype) bool {
inline for (features) |feature| {
if (set.isEnabled(@backingInt(@as(F, feature)))) return true;
}
return false;
}
/// Returns true if every specified feature is enabled.
pub fn featureSetHasAll(set: Set, features: anytype) bool {
inline for (features) |feature| {
if (!set.isEnabled(@backingInt(@as(F, feature)))) return false;
}
return true;
}
};
}