2323#include " openPMD/Error.hpp"
2424#include " openPMD/IO/ADIOS/ADIOS2IOHandler.hpp"
2525#include " openPMD/auxiliary/Environment.hpp"
26+ #include < optional>
2627
2728#if openPMD_USE_VERIFY
2829#define VERIFY (CONDITION, TEXT ) \
@@ -55,8 +56,8 @@ void DatasetReader::call(
5556 adios2::Engine &engine,
5657 std::string const &fileName)
5758{
58- adios2::Variable<T> var =
59- impl-> verifyDataset <T>( bp.param .offset , bp.param .extent , IO, bp.name );
59+ adios2::Variable<T> var = impl-> verifyDataset <T>(
60+ bp.param .offset , bp.param .extent , std:: nullopt , IO, bp.name );
6061 if (!var)
6162 {
6263 throw std::runtime_error (
@@ -85,7 +86,11 @@ void WriteDataset::call(ADIOS2File &ba, detail::BufferedPut &bp)
8586 auto ptr = static_cast <T const *>(arg.get ());
8687
8788 adios2::Variable<T> var = ba.m_impl ->verifyDataset <T>(
88- bp.param .offset , bp.param .extent , ba.m_IO , bp.name );
89+ bp.param .offset ,
90+ bp.param .extent ,
91+ bp.param .memorySelection ,
92+ ba.m_IO ,
93+ bp.name );
8994
9095 ba.getEngine ().Put (var, ptr);
9196 }
@@ -97,6 +102,7 @@ void WriteDataset::call(ADIOS2File &ba, detail::BufferedPut &bp)
97102 bput.name = std::move (bp.name );
98103 bput.offset = std::move (bp.param .offset );
99104 bput.extent = std::move (bp.param .extent );
105+ bput.memorySelection = std::move (bp.param .memorySelection );
100106 /*
101107 * Note: Moving is required here since it's a unique_ptr.
102108 * std::forward<>() would theoretically work, but it
@@ -143,7 +149,11 @@ struct RunUniquePtrPut
143149 {
144150 auto ptr = static_cast <T const *>(bufferedPut.data .get ());
145151 adios2::Variable<T> var = ba.m_impl ->verifyDataset <T>(
146- bufferedPut.offset , bufferedPut.extent , ba.m_IO , bufferedPut.name );
152+ bufferedPut.offset ,
153+ bufferedPut.extent ,
154+ bufferedPut.memorySelection ,
155+ ba.m_IO ,
156+ bufferedPut.name );
147157 ba.getEngine ().Put (var, ptr);
148158 }
149159
0 commit comments