Add dataset type resolution to helper

This commit is contained in:
2018-01-17 14:30:29 +01:00
parent c2f866dbb7
commit ac72aa5760
2 changed files with 37 additions and 2 deletions
+36 -2
View File
@@ -4,6 +4,7 @@
#include <iostream>
#include "h5_utils.hpp"
#include "config.hpp"
using namespace std;
@@ -16,7 +17,7 @@ hsize_t h5_utils::expand_dataset(const H5::DataSet& dataset, hsize_t frame_index
dataset_dimension[0] = frame_index + dataset_increase_step;
#ifdef DEBUG_OUTPUT
cout << "[expand_dataset] Expanding dataspace to size (";
cout << "[h5_utils::expand_dataset] Expanding dataspace to size (";
for (hsize_t i=0; i<dataset_rank; ++i) {
cout << dataset_dimension[i] << ",";
}
@@ -37,7 +38,7 @@ void h5_utils::compact_dataset(const H5::DataSet& dataset, hsize_t max_frame_ind
dataset_dimension[0] = max_frame_index + 1;
#ifdef DEBUG_OUTPUT
cout << "[compact_dataset] Compacting dataspace to size (";
cout << "[h5_utils::compact_dataset] Compacting dataspace to size (";
for (hsize_t i=0; i<dataset_rank; ++i) {
cout << dataset_dimension[i] << ",";
}
@@ -72,6 +73,39 @@ boost::any h5_utils::get_value_from_reference(string& dataset_name, boost::any v
}
}
H5::PredType h5_utils::get_dataset_data_type(string& type){
#ifdef DEBUG_OUTPUT
cout << "[h5_utils::get_dataset_data_type] Getting dataset type for received frame type " << type << endl;
#endif
if (type == "uint8") {
return H5::PredType::NATIVE_UINT8;
} else if (type == "uint16") {
return H5::PredType::NATIVE_UINT16;
} else if (type == "uint32") {
return H5::PredType::NATIVE_UINT32;
}if (type == "int8") {
return H5::PredType::NATIVE_INT8;
} else if (type == "int16") {
return H5::PredType::NATIVE_INT16;
} else if (type == "int32") {
return H5::PredType::NATIVE_INT32;
} else {
// We cannot really convert this attribute.
stringstream error_message;
error_message << "Unsupported array data_type " << type << endl;
throw runtime_error(error_message.str());
}
}
H5::DataSet h5_utils::write_dataset(H5::Group& target, h5_dataset& dataset, map<string, boost::any>& values){
string name = dataset.name;
boost::any value;
+1
View File
@@ -72,6 +72,7 @@ namespace h5_utils{
void compact_dataset(const H5::DataSet& dataset, hsize_t max_frame_index);
H5::Group create_group(H5::CommonFG& target, std::string name);
H5::PredType get_dataset_data_type(std::string& type);
H5::DataSet write_dataset(H5::Group& target, h5_dataset& dataset, std::map<std::string, boost::any>& values);
H5::DataSet write_dataset(H5::Group& target, std::string name, double value);