From 619cffe0d540e83c8c0b7a85c9c563165c75666c Mon Sep 17 00:00:00 2001 From: Andrej Babic Date: Wed, 15 Apr 2020 15:49:17 +0200 Subject: [PATCH] Add method for changing filename to H5 writer --- core-writer/include/H5Writer.hpp | 3 ++- core-writer/src/writer/H5Writer.cpp | 18 ++++++++++++------ 2 files changed, 14 insertions(+), 7 deletions(-) diff --git a/core-writer/include/H5Writer.hpp b/core-writer/include/H5Writer.hpp index c74a201..ee9cd58 100644 --- a/core-writer/include/H5Writer.hpp +++ b/core-writer/include/H5Writer.hpp @@ -12,7 +12,7 @@ class H5Writer { protected: // Initialized in constructor. - const std::string filename; + std::string filename_; hsize_t frames_per_file; hsize_t initial_dataset_size; hsize_t dataset_increase_step = 0; @@ -38,6 +38,7 @@ class H5Writer virtual ~H5Writer(); virtual bool is_file_open() const; virtual void create_file(const hsize_t frame_chunk=1); + virtual void create_file(const std::string& filename, const hsize_t frame_chunk=1); virtual void close_file(); virtual void write_data(const std::string& dataset_name, const size_t data_index, const char* data, const std::vector& data_shape, const size_t data_bytes_size, const std::string& data_type, const std::string& endianness); diff --git a/core-writer/src/writer/H5Writer.cpp b/core-writer/src/writer/H5Writer.cpp index 711a920..064a931 100644 --- a/core-writer/src/writer/H5Writer.cpp +++ b/core-writer/src/writer/H5Writer.cpp @@ -15,7 +15,7 @@ using namespace std; H5Writer::H5Writer(const std::string& filename, hsize_t frames_per_file, hsize_t initial_dataset_size, hsize_t dataset_increase_step) : - filename(filename), frames_per_file(frames_per_file), + filename_(filename), frames_per_file(frames_per_file), initial_dataset_size(initial_dataset_size), dataset_increase_step(dataset_increase_step) { #ifdef DEBUG_OUTPUT @@ -191,27 +191,33 @@ void H5Writer::create_dataset(const string& dataset_name, const vector& datasets_current_size.insert({dataset_name, initial_dataset_size}); } -void H5Writer::create_file(hsize_t frame_chunk) +void H5Writer::create_file(const string& filename, const hsize_t frame_chunk) +{ + filename_ = filename; + create_file(frame_chunk); +} + +void H5Writer::create_file(hsize_t frame_chunk) { if (file.getId() != -1) { close_file(); } - auto target_filename = filename; + auto target_filename = filename_; // In case frames_per_file is > 0, the filename variable is a template for the filename. if (frames_per_file) { #ifdef DEBUG_OUTPUT using namespace date; cout << "[" << std::chrono::system_clock::now() << "]"; - cout << "[H5Writer::create_file] Frames per file is defined. Format " << filename << " with frame_chunk " << frame_chunk << endl; + cout << "[H5Writer::create_file] Frames per file is defined. Format " << filename_ << " with frame_chunk " << frame_chunk << endl; #endif // Space for 10 digits should be enough. - char buffer[filename.length() + 10]; + char buffer[filename_.length() + 10]; - sprintf(buffer, filename.c_str(), frame_chunk); + sprintf(buffer, filename_.c_str(), frame_chunk); target_filename = string(buffer); }