/**
* Group access mode
*/
- enum class Mode
+ enum class GroupAccessMode
{
/**
* Creates a new group
* parallel. This is an internal constructor, the functions group() and
* create_group() should be used to open or create a group.
*/
- Group(const std::string &name,
- const Group & parent_group,
- const bool mpi,
- const Mode mode);
+ Group(const std::string & name,
+ const Group & parent_group,
+ const bool mpi,
+ const GroupAccessMode mode);
/**
* Internal constructor used by File. The constructor sets the protected
/**
* File access mode
*/
- enum class Mode
+ enum class FileAccessMode
{
/**
* Create file, truncate if exists
* File(const std::string &, const Mode)
* should be used to open or create HDF5 files.
*/
- File(const std::string &name,
- const bool mpi,
- const MPI_Comm mpi_communicator,
- const Mode mode);
+ File(const std::string & name,
+ const bool mpi,
+ const MPI_Comm mpi_communicator,
+ const FileAccessMode mode);
public:
/**
* defines the processes that participate in this call; `MPI_COMM_WORLD` is
* a common value for the MPI communicator.
*/
- File(const std::string &name,
- const MPI_Comm mpi_communicator,
- const Mode mode = Mode::create);
+ File(const std::string & name,
+ const MPI_Comm mpi_communicator,
+ const FileAccessMode mode = FileAccessMode::create);
/**
* Creates or opens a hdf5 file for serial operations. This call does not
* require MPI support. It creates or opens a HDF5 file depending on the
* value of @p mode.
*/
- File(const std::string &name, const Mode mode = Mode::create);
+ File(const std::string & name,
+ const FileAccessMode mode = FileAccessMode::create);
};
} // namespace HDF5
- Group::Group(const std::string &name,
- const Group & parentGroup,
- const bool mpi,
- const Mode mode)
+ Group::Group(const std::string & name,
+ const Group & parentGroup,
+ const bool mpi,
+ const GroupAccessMode mode)
: HDF5Object(name, mpi)
{
hdf5_reference = std::shared_ptr<hid_t>(new hid_t, [](auto pointer) {
});
switch (mode)
{
- case (Mode::create):
+ case (GroupAccessMode::create):
*hdf5_reference = H5Gcreate2(*(parentGroup.hdf5_reference),
name.data(),
H5P_DEFAULT,
H5P_DEFAULT);
Assert(*hdf5_reference >= 0, ExcMessage("Error at H5Gcreate2"));
break;
- case (Mode::open):
+ case (GroupAccessMode::open):
*hdf5_reference =
H5Gopen2(*(parentGroup.hdf5_reference), name.data(), H5P_DEFAULT);
Assert(*hdf5_reference >= 0, ExcMessage("Error at H5Gopen2"));
Group
Group::group(const std::string &name)
{
- return Group(name, *this, mpi, Mode::open);
+ return Group(name, *this, mpi, GroupAccessMode::open);
}
Group
Group::create_group(const std::string &name)
{
- return Group(name, *this, mpi, Mode::create);
+ return Group(name, *this, mpi, GroupAccessMode::create);
}
dataset.write(data);
}
- File::File(const std::string &name,
- const bool mpi,
- const MPI_Comm mpi_communicator,
- const Mode mode)
+ File::File(const std::string & name,
+ const bool mpi,
+ const MPI_Comm mpi_communicator,
+ const FileAccessMode mode)
: Group(name, mpi)
{
hdf5_reference = std::shared_ptr<hid_t>(new hid_t, [](auto pointer) {
switch (mode)
{
- case (Mode::create):
+ case (FileAccessMode::create):
*hdf5_reference =
H5Fcreate(name.data(), H5F_ACC_TRUNC, H5P_DEFAULT, plist);
Assert(*hdf5_reference >= 0, ExcMessage("Error at H5Fcreate"));
break;
- case (Mode::open):
+ case (FileAccessMode::open):
*hdf5_reference = H5Fopen(name.data(), H5F_ACC_RDWR, plist);
Assert(*hdf5_reference >= 0, ExcMessage("Error at H5Fopen"));
break;
- File::File(const std::string &name,
- const MPI_Comm mpi_communicator,
- const Mode mode)
+ File::File(const std::string & name,
+ const MPI_Comm mpi_communicator,
+ const FileAccessMode mode)
: File(name, true, mpi_communicator, mode)
{}
- File::File(const std::string &name, const Mode mode)
+ File::File(const std::string &name, const FileAccessMode mode)
: File(name, false, MPI_COMM_NULL, mode)
{}
// Write data
{
// Create file
- HDF5::File data_file(filename, HDF5::File::Mode::create);
+ HDF5::File data_file(filename, HDF5::File::FileAccessMode::create);
// Create attributes attached to the root
const float root_float = 2.45681934e5;
// Read data
{
// Read attributes attached to the root
- HDF5::File data_file(filename, HDF5::File::Mode::open);
+ HDF5::File data_file(filename, HDF5::File::FileAccessMode::open);
auto root_float = data_file.get_attribute<float>("root_float");
auto root_double = data_file.get_attribute<double>("root_double");
auto root_int = data_file.get_attribute<int>("root_int");
// Write data
{
// Create file
- HDF5::File data_file(filename, MPI_COMM_WORLD, HDF5::File::Mode::create);
+ HDF5::File data_file(filename,
+ MPI_COMM_WORLD,
+ HDF5::File::FileAccessMode::create);
// Create attributes attached to the root
const float root_float = 2.45681934e5;
// Read data
{
// Read attributes attached to the root
- HDF5::File data_file(filename, MPI_COMM_WORLD, HDF5::File::Mode::open);
+ HDF5::File data_file(filename,
+ MPI_COMM_WORLD,
+ HDF5::File::FileAccessMode::open);
auto root_float = data_file.get_attribute<float>("root_float");
auto root_double = data_file.get_attribute<double>("root_double");
auto root_int = data_file.get_attribute<int>("root_int");
{
HDF5::File data_file(filename,
mpi_communicator,
- HDF5::File::Mode::create);
+ HDF5::File::FileAccessMode::create);
write_test<std::vector, float>(data_file,
dataset_dimensions,
{
HDF5::File data_file(filename,
mpi_communicator,
- HDF5::File::Mode::open);
+ HDF5::File::FileAccessMode::open);
read_test<std::vector, float>(data_file, mpi_communicator, pcout);
read_test<std::vector, double>(data_file, mpi_communicator, pcout);
const std::vector<hsize_t> dataset_dimensions = {50, 30};
{
- HDF5::File data_file(filename, HDF5::File::Mode::create);
+ HDF5::File data_file(filename, HDF5::File::FileAccessMode::create);
write_test<std::vector, float>(data_file, dataset_dimensions);
write_test<std::vector, double>(data_file, dataset_dimensions);
}
{
- HDF5::File data_file(filename, HDF5::File::Mode::open);
+ HDF5::File data_file(filename, HDF5::File::FileAccessMode::open);
read_test<std::vector, float>(data_file);
read_test<std::vector, double>(data_file);
{
HDF5::File data_file(filename,
mpi_communicator,
- HDF5::File::Mode::create);
+ HDF5::File::FileAccessMode::create);
write_test<float>(data_file, mpi_communicator, pcout);
write_test<double>(data_file, mpi_communicator, pcout);
{
HDF5::File data_file(filename,
mpi_communicator,
- HDF5::File::Mode::open);
+ HDF5::File::FileAccessMode::open);
read_test<float>(data_file, mpi_communicator, pcout);
read_test<double>(data_file, mpi_communicator, pcout);