From e1cfc457b143b2d34d3f08e424f6bf5339bfb094 Mon Sep 17 00:00:00 2001 From: Andrej Babic Date: Mon, 12 Feb 2018 16:55:26 +0100 Subject: [PATCH] Add dataset move logic to format --- src/H5Format.cpp | 4 +++- src/H5Format.hpp | 4 ++-- src/format/NXmxFormat.cpp | 15 +++++++++++---- 3 files changed, 16 insertions(+), 7 deletions(-) diff --git a/src/H5Format.cpp b/src/H5Format.cpp index dc63080..956f844 100644 --- a/src/H5Format.cpp +++ b/src/H5Format.cpp @@ -340,5 +340,7 @@ void H5FormatUtils::write_format(H5::H5File& file, const H5Format& format, write_format_data(file, format_definition, format_values); - file.move(config::raw_image_dataset_name.c_str(), format.get_frames_dataset_name().c_str()); + for (const auto& mapping : format.get_dataset_move_mapping()) { + file.move(mapping.first.c_str(), mapping.second.c_str()); + } } \ No newline at end of file diff --git a/src/H5Format.hpp b/src/H5Format.hpp index 098bf25..dad8d46 100644 --- a/src/H5Format.hpp +++ b/src/H5Format.hpp @@ -100,13 +100,13 @@ class H5Format virtual void add_input_values(std::unordered_map& values, const std::unordered_map& input_values) const = 0; - virtual std::string get_frames_dataset_name() const = 0; + virtual const std::unordered_map& get_dataset_move_mapping() const = 0; }; namespace H5FormatUtils { hsize_t expand_dataset(H5::DataSet& dataset, hsize_t frame_index, hsize_t dataset_increase_step); - + void compact_dataset(H5::DataSet& dataset, hsize_t max_frame_index); H5::Group create_group(H5::Group& target, const std::string& name); diff --git a/src/format/NXmxFormat.cpp b/src/format/NXmxFormat.cpp index 7c65628..3879038 100644 --- a/src/format/NXmxFormat.cpp +++ b/src/format/NXmxFormat.cpp @@ -4,6 +4,7 @@ #include #include +#include "../config.hpp" #include "../H5Format.hpp" using namespace std; @@ -13,6 +14,7 @@ class NXmxFormat : public H5Format { shared_ptr> input_value_type = NULL; shared_ptr> default_values = NULL; + shared_ptr> dataset_move_mapping = NULL; shared_ptr file_format = NULL; public: @@ -93,6 +95,11 @@ class NXmxFormat : public H5Format {"samz", NX_FLOAT}, })); + dataset_move_mapping.reset(new std::unordered_map( + { + {config::raw_image_dataset_name, "entry/plottable_data/image"}, + })); + // Default values used in the file format. default_values.reset(new std::unordered_map( { @@ -897,10 +904,6 @@ class NXmxFormat : public H5Format })); } - string get_frames_dataset_name() const override { - return "entry/plottable_data/data"; - } - const h5_group& get_format_definition() const override { return *file_format; } @@ -1052,4 +1055,8 @@ class NXmxFormat : public H5Format return *input_value_type; } + const unordered_map& get_dataset_move_mapping() const override { + return *dataset_move_mapping; + } + }; \ No newline at end of file