diff --git a/source/adios2/core/ADIOS.cpp b/source/adios2/core/ADIOS.cpp index d6e10f6b562528f05c190ac0c72206e77656feb1..acd211aae52fccafae890d727a2ada7a630be3f7 100644 --- a/source/adios2/core/ADIOS.cpp +++ b/source/adios2/core/ADIOS.cpp @@ -79,6 +79,18 @@ IO &ADIOS::DeclareIO(const std::string ioName) return ioPair.first->second; } +IO &ADIOS::GetIO(const std::string name) +{ + auto itIO = m_IOs.find(name); + if (itIO == m_IOs.end()) + { + throw std::invalid_argument( + "ERROR: Unable to find previously defined IO object with name \"" + + name + "\" in call to GetIO."); + } + return itIO->second; +} + // PRIVATE FUNCTIONS void ADIOS::CheckMPI() const { diff --git a/source/adios2/core/ADIOS.h b/source/adios2/core/ADIOS.h index 6a5f9770f195216660cc51646a5717870547b3b4..c9e9937076f33f3d15f06c0d4cc02f304f38a2ef 100644 --- a/source/adios2/core/ADIOS.h +++ b/source/adios2/core/ADIOS.h @@ -80,6 +80,11 @@ public: */ IO &DeclareIO(const std::string ioName); + /** + * Retrieve an already defined IO object + */ + IO &GetIO(const std::string name); + protected: // no const member to allow default empty and copy constructors /** XML File to be read containing configuration information */ std::string m_ConfigFile; diff --git a/source/adios2/core/IO.cpp b/source/adios2/core/IO.cpp index 3210b5b97499e7012d0799890b69ae131c92951b..968d42e63545f5e4c7fad0c2ae621f3a2779234e 100644 --- a/source/adios2/core/IO.cpp +++ b/source/adios2/core/IO.cpp @@ -45,6 +45,8 @@ void IO::SetIOMode(const IOMode ioMode) { m_IOMode = ioMode; }; void IO::SetParameters(const Params ¶meters) { m_Parameters = parameters; } +const Params &IO::GetParameters() const { return m_Parameters; } + unsigned int IO::AddTransport(const std::string type, const std::vector<std::string> ¶metersVector) { diff --git a/source/adios2/core/IO.h b/source/adios2/core/IO.h index c2854aea1c34cdebec64f6b39b1f91b2d9c0bb8a..bf13346d8a2bf387a36e26a772937115036df511 100644 --- a/source/adios2/core/IO.h +++ b/source/adios2/core/IO.h @@ -87,6 +87,11 @@ public: */ void SetParameters(const Params ¶meters = Params()); + /** + * Retrieve existing parameter set + */ + const Params &GetParameters() const; + /** * Adds a transport and its parameters for the method * @param type must be a supported transport type under /include/transport