56 void TIOFeatures::Clear(Experimental::EIOFeatures input_bits)
 
   58    Clear(static_cast<EIOFeatures>(input_bits));
 
   67 void TIOFeatures::Clear(Experimental::EIOUnsupportedFeatures input_bits)
 
   69    Clear(static_cast<EIOFeatures>(input_bits));
 
   78 void TIOFeatures::Clear(EIOFeatures input_bits)
 
   80    TBasket::EIOBits enum_bits = 
static_cast<TBasket::EIOBits
>(input_bits);
 
   81    auto bits = 
static_cast<UChar_t
>(enum_bits);
 
   82    if (R__unlikely((bits & static_cast<UChar_t>(TBasket::EIOBits::kSupported)) != bits)) {
 
   83       Error(
"TestFeature", 
"A feature is being cleared that is not supported.");
 
   89 static std::string GetUnsupportedName(TBasket::EUnsupportedIOBits enum_flag)
 
   91    UChar_t flag = 
static_cast<UChar_t
>(enum_flag);
 
   93    std::string retval = 
"unknown";
 
   95    TClass *cl = TBasket::Class();
 
  100    TEnum *eUnsupportedIOBits = (TEnum *)cl->GetListOfEnums()->FindObject(
"EUnsupportedIOBits");
 
  101    if (eUnsupportedIOBits == 
nullptr) {
 
  105    for (
auto constant : ROOT::Detail::TRangeStaticCast<TEnumConstant>(eUnsupportedIOBits->GetConstants())) {
 
  106       if (constant->GetValue() == flag) {
 
  107          retval = constant->GetName();
 
  123 bool TIOFeatures::Set(Experimental::EIOFeatures input_bits)
 
  125    return Set(static_cast<EIOFeatures>(input_bits));
 
  137 bool TIOFeatures::Set(EIOFeatures input_bits)
 
  139    TBasket::EIOBits enum_bits = 
static_cast<TBasket::EIOBits
>(input_bits);
 
  140    auto bits = 
static_cast<UChar_t
>(enum_bits);
 
  141    if (R__unlikely((bits & static_cast<UChar_t>(TBasket::EIOBits::kSupported)) != bits)) {
 
  142       UChar_t unsupported = bits & 
static_cast<UChar_t
>(TBasket::EUnsupportedIOBits::kUnsupported);
 
  144          Error(
"SetFeature", 
"A feature was request (%s) but this feature is no longer supported.",
 
  145                GetUnsupportedName(static_cast<TBasket::EUnsupportedIOBits>(unsupported)).c_str());
 
  147          Error(
"SetFeature", 
"An unknown feature was requested (flag=%s); cannot enable it.",
 
  148                std::bitset<32>(unsupported).to_string().c_str());
 
  170 bool TIOFeatures::Set(
const std::string &value)
 
  172    TClass *cl = TBasket::Class();
 
  174       Error(
"Set", 
"Could not retrieve TBasket's class");
 
  177    TEnum *eIOBits = 
static_cast<TEnum*
>(cl->GetListOfEnums()->FindObject(
"EIOBits"));
 
  178    if (eIOBits == 
nullptr) {
 
  179       Error(
"Set", 
"Could not locate TBasket::EIOBits enum");
 
  182    for (
auto constant : ROOT::Detail::TRangeStaticCast<TEnumConstant>(eIOBits->GetConstants())) {
 
  183       if (!strcmp(constant->GetName(), value.c_str())) {
 
  184          return Set(static_cast<EIOFeatures>(constant->GetValue()));
 
  187    Error(
"Set", 
"Could not locate %s in TBasket::EIOBits", value.c_str());
 
  195 void TIOFeatures::Print()
 const 
  197    TClass *cl = TBasket::Class();
 
  199       Error(
"Print", 
"Could not retrieve TBasket's class");
 
  202    TEnum *eIOBits = 
static_cast<TEnum *
>(cl->GetListOfEnums()->FindObject(
"EIOBits"));
 
  203    if (eIOBits == 
nullptr) {
 
  204       Error(
"Print", 
"Could not locate TBasket::EIOBits enum");
 
  207    std::stringstream ss;
 
  208    bool hasFeatures = 
false;
 
  209    ss << 
"TIOFeatures{";
 
  210    for (
auto constant : ROOT::Detail::TRangeStaticCast<TEnumConstant>(eIOBits->GetConstants())) {
 
  211       if ((constant->GetValue() & fIOBits) == constant->GetValue()) {
 
  212          ss << (hasFeatures ? 
", " : 
"") << constant->GetName();
 
  217    Printf(
"%s", ss.str().c_str());
 
  226 bool TIOFeatures::Test(Experimental::EIOFeatures input_bits)
 const 
  228    return Test(static_cast<EIOFeatures>(input_bits));
 
  237 bool TIOFeatures::Test(EIOFeatures input_bits)
 const 
  239    TBasket::EIOBits enum_bits = 
static_cast<TBasket::EIOBits
>(input_bits);
 
  240    auto bits = 
static_cast<UChar_t
>(enum_bits);
 
  241    if (R__unlikely((bits & static_cast<UChar_t>(TBasket::EIOBits::kSupported)) != bits)) {
 
  242       Error(
"TestFeature", 
"A feature is being tested for that is not supported or known.");
 
  245    return (fIOBits & bits) == bits;
 
  248 UChar_t TIOFeatures::GetFeatures()
 const