Moved common operations to h5_utils

This commit is contained in:
2018-01-16 16:30:38 +01:00
parent 7b41a743c8
commit 9a486a0dd6
3 changed files with 46 additions and 43 deletions
+3 -43
View File
@@ -1,4 +1,4 @@
#include <H5Cpp.h>
#include "h5_utils.hpp"
#include <sstream>
#include <stdexcept>
#include <iostream>
@@ -11,46 +11,6 @@ extern "C"
using namespace std;
hsize_t expand_dataset(const H5::DataSet& dataset, hsize_t frame_index, hsize_t dataset_increase_step)
{
hsize_t dataset_rank = 3;
hsize_t dataset_dimension[dataset_rank];
dataset.getSpace().getSimpleExtentDims(dataset_dimension);
dataset_dimension[0] = frame_index + dataset_increase_step;
#ifdef DEBUG_OUTPUT
cout << "[expand_dataset] Expanding dataspace to size (";
for (hsize_t i=0; i<dataset_rank; ++i) {
cout << dataset_dimension[i] << ",";
}
cout << ")" << endl;
#endif
dataset.extend(dataset_dimension);
return dataset_dimension[0];
}
void compact_dataset(const H5::DataSet& dataset, hsize_t max_frame_index)
{
hsize_t dataset_rank = 3;
hsize_t dataset_dimension[dataset_rank];
dataset.getSpace().getSimpleExtentDims(dataset_dimension);
dataset_dimension[0] = max_frame_index + 1;
#ifdef DEBUG_OUTPUT
cout << "[compact_dataset] Compacting dataspace to size (";
for (hsize_t i=0; i<dataset_rank; ++i) {
cout << dataset_dimension[i] << ",";
}
cout << ")" << endl;
#endif
dataset.extend(dataset_dimension);
}
HDF5ChunkedWriter::HDF5ChunkedWriter(const string filename, const string dataset_name, hsize_t frames_per_file, hsize_t initial_dataset_size) :
filename(filename), dataset_name(dataset_name), frames_per_file(frames_per_file), initial_dataset_size(initial_dataset_size)
{
@@ -83,7 +43,7 @@ void HDF5ChunkedWriter::close_file()
cout << "[HDF5ChunkedWriter::close_file] Closing file." << endl;
#endif
compact_dataset(dataset, max_frame_index);
h5_utils::compact_dataset(dataset, max_frame_index);
hsize_t min_frame_in_dataset = 0;
if (frames_per_file) {
@@ -216,7 +176,7 @@ hsize_t HDF5ChunkedWriter::prepare_storage_for_frame(size_t frame_index, size_t*
// Expand the dataset if needed.
if (relative_frame_index > current_dataset_size) {
current_dataset_size = expand_dataset(dataset, relative_frame_index, config::dataset_increase_step);
current_dataset_size = h5_utils::expand_dataset(dataset, relative_frame_index, config::dataset_increase_step);
}
// Keep track of the max index in this file - needed for shrinking the dataset at the end.
+40
View File
@@ -7,6 +7,46 @@
using namespace std;
hsize_t h5_utils::expand_dataset(const H5::DataSet& dataset, hsize_t frame_index, hsize_t dataset_increase_step)
{
hsize_t dataset_rank = 3;
hsize_t dataset_dimension[dataset_rank];
dataset.getSpace().getSimpleExtentDims(dataset_dimension);
dataset_dimension[0] = frame_index + dataset_increase_step;
#ifdef DEBUG_OUTPUT
cout << "[expand_dataset] Expanding dataspace to size (";
for (hsize_t i=0; i<dataset_rank; ++i) {
cout << dataset_dimension[i] << ",";
}
cout << ")" << endl;
#endif
dataset.extend(dataset_dimension);
return dataset_dimension[0];
}
void h5_utils::compact_dataset(const H5::DataSet& dataset, hsize_t max_frame_index)
{
hsize_t dataset_rank = 3;
hsize_t dataset_dimension[dataset_rank];
dataset.getSpace().getSimpleExtentDims(dataset_dimension);
dataset_dimension[0] = max_frame_index + 1;
#ifdef DEBUG_OUTPUT
cout << "[compact_dataset] Compacting dataspace to size (";
for (hsize_t i=0; i<dataset_rank; ++i) {
cout << dataset_dimension[i] << ",";
}
cout << ")" << endl;
#endif
dataset.extend(dataset_dimension);
}
H5::Group h5_utils::create_group(H5::CommonFG& target, std::string name)
{
return target.createGroup(name);
+3
View File
@@ -66,6 +66,9 @@ struct h5_attr : public h5_base, public h5_data_base {
};
namespace h5_utils{
hsize_t expand_dataset(const H5::DataSet& dataset, hsize_t frame_index, hsize_t dataset_increase_step);
void compact_dataset(const H5::DataSet& dataset, hsize_t max_frame_index);
H5::Group create_group(H5::CommonFG& target, std::string name);
H5::DataSet write_dataset(H5::Group& target, h5_dataset& dataset, std::map<std::string, boost::any>& values);