@@ -1509,37 +1509,30 @@ namespace
15091509 }
15101510 static constexpr char const *errorMsg = " DistributeToAllRanks" ;
15111511 };
1512+ #endif
15121513
1513- void warn_ignored_modifiable_attributes (
1514- adios2::IO &IO, std::string const &exempt_this_from_warnings)
1514+ void warn_ignored_modifiable_attributes (adios2::IO &IO)
15151515 {
1516- auto all_attributes = IO.AvailableAttributes ();
1517- std::deque<std::string> modifiable_attributes;
1518- for (auto const &[identifier, params] : all_attributes)
1519- {
1520- if (params.at (" Modifiable" ) == " 1" )
1521- {
1522- modifiable_attributes.emplace_back (identifier);
1523- }
1524- }
1525- if (modifiable_attributes.size () > 1 ||
1526- (modifiable_attributes.size () == 1 &&
1527- *modifiable_attributes.begin () != exempt_this_from_warnings))
1528- {
1529- std::cerr << &R"(
1530- Warning: Random-access for variable-encoding in ADIOS2 is currently
1516+ auto modifiable_flag = IO.InquireAttribute <detail::bool_representation>(
1517+ adios_defaults::str_useModifiableAttributes);
1518+ auto print_warning = [](std::string const ¬e) {
1519+ std::cerr << " Warning: " << note << R"(
1520+ Random-access for variable-encoding in ADIOS2 is currently
15311521experimental. Support for modifiable attributes is currently not implemented
15321522yet, meaning that attributes such as /data/time will show useless values.
15331523Use Access::READ_LINEAR to retrieve those values if needed.
15341524The following modifiable attributes have been found:
1535- )" [1 ];
1536- for (auto const &identifier : modifiable_attributes)
1537- {
1538- std::cerr << ' \t ' << identifier << ' \n ' ;
1539- }
1525+ )" ;
1526+ };
1527+ if (!modifiable_flag)
1528+ {
1529+ print_warning (" File might be using modifiable attributes." );
1530+ }
1531+ else if (modifiable_flag.Data ().at (0 ) != 0 )
1532+ {
1533+ print_warning (" File uses modifiable attributes." );
15401534 }
15411535 }
1542- #endif
15431536} // namespace
15441537
15451538void ADIOS2IOHandlerImpl::readAttributeAllsteps (
@@ -1557,7 +1550,7 @@ void ADIOS2IOHandlerImpl::readAttributeAllsteps(
15571550 IO.SetParameter (" StreamReader" , " ON" ); // this be for BP4
15581551 auto engine = IO.Open (fullPath (*file), adios2::Mode::Read);
15591552 auto status = engine.BeginStep ();
1560- warn_ignored_modifiable_attributes (IO, name );
1553+ warn_ignored_modifiable_attributes (IO);
15611554 auto type = detail::attributeInfo (IO, name, /* verbose = */ true );
15621555 switchType<ReadAttributeAllsteps>(
15631556 type, IO, engine, name, status, *param.resource );
0 commit comments