diff --git a/core-buffer/include/FastH5Writer.hpp b/core-buffer/include/FastH5Writer.hpp index d351317..a34136c 100644 --- a/core-buffer/include/FastH5Writer.hpp +++ b/core-buffer/include/FastH5Writer.hpp @@ -50,8 +50,10 @@ public: void set_pulse_id(const uint64_t pulse_id); void write_data(const char* buffer); - template void write_scalar_metadata( - const std::string& name, const T* value); + void write_scalar_metadata( + const std::string& name, + const void* value, + const size_t value_n_bytes); }; diff --git a/core-buffer/src/FastH5Writer.cpp b/core-buffer/src/FastH5Writer.cpp index b08be91..8fdf769 100644 --- a/core-buffer/src/FastH5Writer.cpp +++ b/core-buffer/src/FastH5Writer.cpp @@ -4,6 +4,7 @@ #include #include #include +#include extern "C" { @@ -109,7 +110,6 @@ void FastH5Writer::set_pulse_id(const uint64_t pulse_id) latest_filename_, new_output_filename); current_output_filename_ = new_output_filename; - } } @@ -144,11 +144,16 @@ void FastH5Writer::write_data(const char *buffer) } } -template void FastH5Writer::write_scalar_metadata( - const std::string& name, const T* value) +void FastH5Writer::write_scalar_metadata( + const std::string& name, + const void* value, + const size_t value_n_bytes) { - auto buffer_ptr = buffers_.at(name); - buffer_ptr.get()[current_frame_index_] = value; + char* buffer_ptr = (buffers_.at(name)).get(); + ::memcpy( + buffer_ptr+(current_frame_index_*value_n_bytes), + value, + value_n_bytes); } template <>