Rename h5_utils to H5Format

This commit is contained in:
2018-01-21 16:36:27 +01:00
parent a40ae1c3ac
commit 8635cbba0c
7 changed files with 47 additions and 48 deletions
+31 -32
View File
@@ -3,12 +3,11 @@
#include <stdexcept>
#include <iostream>
#include "h5_utils.hpp"
#include "config.hpp"
#include "H5Format.hpp"
using namespace std;
hsize_t h5_utils::expand_dataset(const H5::DataSet& dataset, hsize_t frame_index, hsize_t dataset_increase_step)
hsize_t H5Format::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];
@@ -17,7 +16,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 << "[h5_utils::expand_dataset] Expanding dataspace to size (";
cout << "[H5Format::expand_dataset] Expanding dataspace to size (";
for (hsize_t i=0; i<dataset_rank; ++i) {
cout << dataset_dimension[i] << ",";
}
@@ -29,7 +28,7 @@ hsize_t h5_utils::expand_dataset(const H5::DataSet& dataset, hsize_t frame_index
return dataset_dimension[0];
}
void h5_utils::compact_dataset(const H5::DataSet& dataset, hsize_t max_frame_index)
void H5Format::compact_dataset(const H5::DataSet& dataset, hsize_t max_frame_index)
{
hsize_t dataset_rank = 3;
hsize_t dataset_dimension[dataset_rank];
@@ -38,7 +37,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 << "[h5_utils::compact_dataset] Compacting dataspace to size (";
cout << "[H5Format::compact_dataset] Compacting dataspace to size (";
for (hsize_t i=0; i<dataset_rank; ++i) {
cout << dataset_dimension[i] << ",";
}
@@ -48,12 +47,12 @@ void h5_utils::compact_dataset(const H5::DataSet& dataset, hsize_t max_frame_ind
dataset.extend(dataset_dimension);
}
H5::Group h5_utils::create_group(H5::CommonFG& target, std::string name)
H5::Group H5Format::create_group(H5::CommonFG& target, std::string name)
{
return target.createGroup(name);
}
boost::any h5_utils::get_value_from_reference(string& dataset_name, boost::any value_reference, map<string, boost::any>& values)
boost::any H5Format::get_value_from_reference(string& dataset_name, boost::any value_reference, map<string, boost::any>& values)
{
try {
auto reference_string = boost::any_cast<string>(value_reference);
@@ -73,10 +72,10 @@ boost::any h5_utils::get_value_from_reference(string& dataset_name, boost::any v
}
}
H5::PredType h5_utils::get_dataset_data_type(string& type){
H5::PredType H5Format::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;
cout << "[H5Format::get_dataset_data_type] Getting dataset type for received frame type " << type << endl;
#endif
if (type == "uint8") {
@@ -106,7 +105,7 @@ H5::PredType h5_utils::get_dataset_data_type(string& type){
}
}
H5::DataSet h5_utils::write_dataset(H5::Group& target, h5_dataset& dataset, map<string, boost::any>& values){
H5::DataSet H5Format::write_dataset(H5::Group& target, h5_dataset& dataset, map<string, boost::any>& values){
string name = dataset.name;
boost::any value;
@@ -115,18 +114,18 @@ H5::DataSet h5_utils::write_dataset(H5::Group& target, h5_dataset& dataset, map<
value = dataset.value;
// Value in struct is just a string reference to into the values map.
} else {
value = h5_utils::get_value_from_reference(name, dataset.value, values);
value = H5Format::get_value_from_reference(name, dataset.value, values);
}
if (dataset.data_type == NX_CHAR || dataset.data_type == NX_DATE_TIME || dataset.data_type == NXnote) {
// Attempt to convert to const char * (string "literals" cause that).
try {
return h5_utils::write_dataset(target, name, string(boost::any_cast<const char*>(value)));
return H5Format::write_dataset(target, name, string(boost::any_cast<const char*>(value)));
} catch (const boost::bad_any_cast& exception) {}
// Atempt to convert to string.
try {
return h5_utils::write_dataset(target, name, boost::any_cast<string>(value));
return H5Format::write_dataset(target, name, boost::any_cast<string>(value));
} catch (const boost::bad_any_cast& exception) {}
// We cannot really convert this attribute.
@@ -137,7 +136,7 @@ H5::DataSet h5_utils::write_dataset(H5::Group& target, h5_dataset& dataset, map<
} else if (dataset.data_type == NX_INT) {
try {
return h5_utils::write_dataset(target, name, boost::any_cast<int>(value));
return H5Format::write_dataset(target, name, boost::any_cast<int>(value));
} catch (const boost::bad_any_cast& exception) {}
// We cannot really convert this attribute.
@@ -147,7 +146,7 @@ H5::DataSet h5_utils::write_dataset(H5::Group& target, h5_dataset& dataset, map<
throw runtime_error(error_message.str());
} else if (dataset.data_type == NX_FLOAT || dataset.data_type == NX_NUMBER) {
try {
return h5_utils::write_dataset(target, name, boost::any_cast<double>(value));
return H5Format::write_dataset(target, name, boost::any_cast<double>(value));
} catch (const boost::bad_any_cast& exception) {}
// We cannot really convert this attribute.
@@ -163,7 +162,7 @@ H5::DataSet h5_utils::write_dataset(H5::Group& target, h5_dataset& dataset, map<
}
}
H5::DataSet h5_utils::write_dataset(H5::Group& target, string name, double value)
H5::DataSet H5Format::write_dataset(H5::Group& target, string name, double value)
{
H5::DataSpace att_space(H5S_SCALAR);
auto data_type = H5::PredType::NATIVE_DOUBLE;
@@ -174,7 +173,7 @@ H5::DataSet h5_utils::write_dataset(H5::Group& target, string name, double value
return dataset;
}
H5::DataSet h5_utils::write_dataset(H5::Group& target, string name, int value)
H5::DataSet H5Format::write_dataset(H5::Group& target, string name, int value)
{
H5::DataSpace att_space(H5S_SCALAR);
auto data_type = H5::PredType::NATIVE_INT;
@@ -185,7 +184,7 @@ H5::DataSet h5_utils::write_dataset(H5::Group& target, string name, int value)
return dataset;
}
H5::DataSet h5_utils::write_dataset(H5::Group& target, string name, string value)
H5::DataSet H5Format::write_dataset(H5::Group& target, string name, string value)
{
H5::DataSpace att_space(H5S_SCALAR);
H5::DataType data_type = H5::StrType(0, H5T_VARIABLE);
@@ -196,7 +195,7 @@ H5::DataSet h5_utils::write_dataset(H5::Group& target, string name, string value
return dataset;
}
void h5_utils::write_attribute(H5::H5Object& target, string name, string value)
void H5Format::write_attribute(H5::H5Object& target, string name, string value)
{
H5::DataSpace att_space(H5S_SCALAR);
H5::DataType data_type = H5::StrType(0, H5T_VARIABLE);
@@ -205,7 +204,7 @@ void h5_utils::write_attribute(H5::H5Object& target, string name, string value)
h5_attribute.write(data_type, value);
}
void h5_utils::write_attribute(H5::H5Object& target, string name, int value)
void H5Format::write_attribute(H5::H5Object& target, string name, int value)
{
H5::DataSpace att_space(H5S_SCALAR);
auto data_type = H5::PredType::NATIVE_INT;
@@ -214,7 +213,7 @@ void h5_utils::write_attribute(H5::H5Object& target, string name, int value)
h5_attribute.write(data_type, &value);
}
void h5_utils::write_attribute(H5::H5Object& target, h5_attr& attribute, map<string, boost::any>& values)
void H5Format::write_attribute(H5::H5Object& target, h5_attr& attribute, map<string, boost::any>& values)
{
string name = attribute.name;
boost::any value;
@@ -224,19 +223,19 @@ void h5_utils::write_attribute(H5::H5Object& target, h5_attr& attribute, map<str
value = attribute.value;
// Value in struct is just a string reference to into the values map.
} else {
value = h5_utils::get_value_from_reference(name, attribute.value, values);
value = H5Format::get_value_from_reference(name, attribute.value, values);
}
if (attribute.data_type == NX_CHAR) {
// Attempt to convert to const char * (string "literals" cause that).
try {
h5_utils::write_attribute(target, name, string(boost::any_cast<const char*>(value)));
H5Format::write_attribute(target, name, string(boost::any_cast<const char*>(value)));
return;
} catch (const boost::bad_any_cast& exception) {}
// Atempt to convert to string.
try {
h5_utils::write_attribute(target, name, boost::any_cast<string>(value));
H5Format::write_attribute(target, name, boost::any_cast<string>(value));
return;
} catch (const boost::bad_any_cast& exception) {}
@@ -248,7 +247,7 @@ void h5_utils::write_attribute(H5::H5Object& target, h5_attr& attribute, map<str
} else if (attribute.data_type == NX_INT) {
try {
h5_utils::write_attribute(target, name, boost::any_cast<int>(value));
H5Format::write_attribute(target, name, boost::any_cast<int>(value));
return;
} catch (const boost::bad_any_cast& exception) {}
@@ -260,8 +259,8 @@ void h5_utils::write_attribute(H5::H5Object& target, h5_attr& attribute, map<str
}
}
void h5_utils::write_format_data(H5::CommonFG& file_node, h5_parent& format_node, std::map<std::string, h5_value>& values) {
auto node_group = h5_utils::create_group(file_node, format_node.name);
void H5Format::write_format_data(H5::CommonFG& file_node, h5_parent& format_node, std::map<std::string, h5_value>& values) {
auto node_group = H5Format::create_group(file_node, format_node.name);
for (auto item : format_node.items) {
@@ -272,10 +271,10 @@ void h5_utils::write_format_data(H5::CommonFG& file_node, h5_parent& format_node
} else if (item->node_type == ATTRIBUTE) {
auto sub_attribute = dynamic_cast<h5_attr*>(item);
h5_utils::write_attribute(node_group, *sub_attribute, values);
H5Format::write_attribute(node_group, *sub_attribute, values);
} else if (item->node_type == DATASET) {
auto sub_dataset = dynamic_cast<h5_dataset*>(item);
auto current_dataset = h5_utils::write_dataset(node_group, *sub_dataset, values);
auto current_dataset = H5Format::write_dataset(node_group, *sub_dataset, values);
for (auto dataset_attr : sub_dataset->items) {
@@ -289,13 +288,13 @@ void h5_utils::write_format_data(H5::CommonFG& file_node, h5_parent& format_node
auto sub_attribute = dynamic_cast<h5_attr*>(dataset_attr);
h5_utils::write_attribute(current_dataset, *sub_attribute, values);
H5Format::write_attribute(current_dataset, *sub_attribute, values);
}
}
}
}
void h5_utils::write_format(H5::H5File& file, std::map<std::string, h5_value>& input_values){
void H5Format::write_format(H5::H5File& file, std::map<std::string, h5_value>& input_values){
auto format = get_format_definition();
auto values = get_default_values();
+3 -4
View File
@@ -4,9 +4,8 @@
#include <string>
#include <list>
#include <map>
#include <boost/any.hpp>
#include <H5Cpp.h>
#include <boost/any.hpp>
typedef boost::any h5_value;
@@ -67,7 +66,7 @@ struct h5_attr : public h5_base, public h5_data_base {
h5_value value;
};
namespace h5_utils{
namespace H5Format {
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);
@@ -89,6 +88,7 @@ namespace h5_utils{
void write_format(H5::H5File& file, std::map<std::string, h5_value>& input_values);
};
// Move this somewhere else.
std::map<std::string, DATA_TYPE>* get_input_value_type();
std::map<std::string, boost::any>* get_default_values();
h5_group* get_format_definition();
@@ -96,5 +96,4 @@ void add_calculated_values(std::map<std::string, boost::any>& values);
void add_input_values(std::map<std::string, boost::any>& values, std::map<std::string, boost::any>& input_values);
#endif
+7 -6
View File
@@ -1,8 +1,9 @@
#include "h5_utils.hpp"
#include <sstream>
#include <stdexcept>
#include <iostream>
#include "H5Writer.hpp"
#include "H5Format.hpp"
extern "C"
{
@@ -45,7 +46,7 @@ void H5Writer::close_file()
cout << "[H5Writer::close_file] Closing file." << endl;
#endif
h5_utils::compact_dataset(dataset, max_frame_index);
H5Format::compact_dataset(dataset, max_frame_index);
hsize_t min_frame_in_dataset = 0;
if (frames_per_file) {
@@ -63,8 +64,8 @@ void H5Writer::close_file()
cout << "[H5Writer::close_file] Setting dataset attribute image_nr_low=" << image_nr_low << " and image_nr_high=" << image_nr_high << endl;
#endif
h5_utils::write_attribute(dataset, "image_nr_low", image_nr_low);
h5_utils::write_attribute(dataset, "image_nr_high", image_nr_high);
H5Format::write_attribute(dataset, "image_nr_low", image_nr_low);
H5Format::write_attribute(dataset, "image_nr_high", image_nr_high);
// Cleanup.
file.close();
@@ -139,7 +140,7 @@ void H5Writer::create_file(size_t* frame_shape, hsize_t frame_chunk, string& typ
const hsize_t dataset_chunking[] = {1, frame_shape[0], frame_shape[1]};
dataset_properties.setChunk(dataset_rank, dataset_chunking);
H5::AtomType data_type(h5_utils::get_dataset_data_type(type));
H5::AtomType data_type(H5Format::get_dataset_data_type(type));
if (endianness == "big") {
data_type.setOrder(H5T_ORDER_BE);
@@ -190,7 +191,7 @@ hsize_t H5Writer::prepare_storage_for_frame(size_t frame_index, size_t* frame_sh
// Expand the dataset if needed.
if (relative_frame_index > current_dataset_size) {
current_dataset_size = h5_utils::expand_dataset(dataset, relative_frame_index, dataset_increase_step);
current_dataset_size = H5Format::expand_dataset(dataset, relative_frame_index, dataset_increase_step);
}
// Keep track of the max index in this file - needed for shrinking the dataset at the end.
+2 -2
View File
@@ -11,7 +11,7 @@
#include "H5Writer.hpp"
#include "RingBuffer.hpp"
#include "rest_interface.hpp"
#include "h5_utils.hpp"
#include "H5Format.hpp"
using namespace std;
namespace pt = boost::property_tree;
@@ -52,7 +52,7 @@ void write_h5(WriterManager *manager, RingBuffer *ring_buffer, string output_fil
cout << "[h5_zmq_writer::write] Writing file format." << endl;
#endif
h5_utils::write_format(writer.get_h5_file(), manager->get_parameters());
H5Format::write_format(writer.get_h5_file(), manager->get_parameters());
}
#ifdef DEBUG_OUTPUT
+2 -1
View File
@@ -1,9 +1,10 @@
#include "h5_utils.hpp"
#include <iostream>
#include <sstream>
#include <stdexcept>
#include <iostream>
#include "H5Format.hpp"
using namespace std;
h5_group* get_format_definition(){
+1 -2
View File
@@ -1,9 +1,8 @@
#include <sstream>
#include <string>
#include "rest_interface.hpp"
#include "crow_all.h"
#include "h5_utils.hpp"
#include "rest_interface.hpp"
using namespace std;
+1 -1
View File
@@ -2,7 +2,7 @@
#define REST_INTERFACE_H
#include "WriterManager.hpp"
#include "h5_utils.hpp"
#include "H5Format.hpp"
void start_rest_api(WriterManager& writer_manager, uint16_t port, std::map<std::string, DATA_TYPE>* input_value_type);