Unverified Commit 8776d5d0 authored by Rupert Nash's avatar Rupert Nash Committed by GitHub
Browse files

Have HDF5 write raise error if operator(s) requested (#3951)

parent ab70f165
Loading
Loading
Loading
Loading
+10 −0
Original line number Diff line number Diff line
@@ -1709,6 +1709,16 @@ void HDF5Common::StaticGetAdiosStepString(std::string &stepName, size_t ts)
    stepName = "/Step" + std::to_string(ts);
}

void HDF5Common::CheckVariableOperations(const core::VariableBase &variable) const
{
    if (!variable.m_Operations.empty())
    {
        helper::Throw<std::runtime_error>("Toolkit", "interop::hdf5::HDF5Common",
                                          "CheckVariableOperations",
                                          "ADIOS2 Operators are not supported for HDF5 engine");
    }
}

#define declare_template_instantiation(T)                                                          \
    template void HDF5Common::Write(core::Variable<T> &, const T *);

+2 −0
Original line number Diff line number Diff line
@@ -245,6 +245,8 @@ private:
    void GetHDF5SpaceSpec(const core::Variable<T> &variable, std::vector<hsize_t> &,
                          std::vector<hsize_t> &, std::vector<hsize_t> &);

    void CheckVariableOperations(const core::VariableBase &variable) const;

    bool m_WriteMode = false;

    size_t m_NumAdiosSteps = 0;
+2 −0
Original line number Diff line number Diff line
@@ -25,6 +25,7 @@ namespace interop
template <class T>
void HDF5Common::DefineDataset(core::Variable<T> &variable)
{
    CheckVariableOperations(variable);
    size_t dimSize = std::max(variable.m_Shape.size(), variable.m_Count.size());
    hid_t h5Type = GetHDF5Type<T>();

@@ -118,6 +119,7 @@ template <class T>
void HDF5Common::Write(core::Variable<T> &variable, const T *values)
{
    CheckWriteGroup();
    CheckVariableOperations(variable);
    size_t dimSize = std::max(variable.m_Shape.size(), variable.m_Count.size());
    hid_t h5Type = GetHDF5Type<T>();