RTC Toolkit 6.0.0
Loading...
Searching...
No Matches
dataRecorder.hpp
Go to the documentation of this file.
1
11#ifndef RTCTK_COMPONENTFRAMEWORK_DATARECORDER_HPP
12#define RTCTK_COMPONENTFRAMEWORK_DATARECORDER_HPP
13
14#include <array>
15#include <filesystem>
16#include <gsl/span>
17#include <string_view>
18#include <tuple>
19
21
27template <class... T>
29public:
31 std::string_view name;
32 std::string_view unit;
33
34 constexpr ColumnMetaData(const std::string_view& new_name, const std::string_view& new_unit)
35 : name(new_name), unit(new_unit) {
36 }
37 };
38
42 using TupleType = std::tuple<T...>;
43
47 using DisabledFields = std::array<bool, sizeof...(T)>;
48 using ColumnDescription = const std::array<ColumnMetaData, sizeof...(T)>;
49
56 explicit DataRecorder(const ColumnDescription& columns, const DisabledFields& disable = {})
57 : m_disabled_fields(disable), m_column_description(columns) {
58 }
59
60 virtual ~DataRecorder() = default;
61
68 void SetDisabledFields(const DisabledFields& disable) {
69 m_disabled_fields = disable;
70 }
71
76 virtual void Write(const std::tuple<T...>& data) = 0;
77
82 virtual void Write(const gsl::span<const std::tuple<T...>> data) {
83 for (const auto& element : data) {
84 Write(element);
85 }
86 }
87
92 virtual void Open(const std::filesystem::path& file) = 0;
93
97 virtual void Close() = 0;
98
102 virtual std::string DefaultFileExtension() = 0;
103
104protected:
110};
111
112} // namespace rtctk::componentFramework
113
114#endif // RTCTK_COMPONENTFRAMEWORK_DATARECORDER_HPP
virtual void Close()=0
Close the currently open file.
DisabledFields m_disabled_fields
Array of fields that should not be recorded.
Definition dataRecorder.hpp:108
const ColumnDescription m_column_description
Definition dataRecorder.hpp:109
virtual std::string DefaultFileExtension()=0
Default filename extension for the recorder.
std::tuple< T... > TupleType
Definition dataRecorder.hpp:42
const std::array< ColumnMetaData, sizeof...(T)> ColumnDescription
Definition dataRecorder.hpp:48
std::array< bool, sizeof...(T)> DisabledFields
Definition dataRecorder.hpp:47
virtual void Write(const gsl::span< const std::tuple< T... > > data)
Write multiple rows of data.
Definition dataRecorder.hpp:82
virtual void Write(const std::tuple< T... > &data)=0
Write a single row of data.
void SetDisabledFields(const DisabledFields &disable)
Disable certain fields so that they are not recorded.
Definition dataRecorder.hpp:68
virtual void Open(const std::filesystem::path &file)=0
Open a file.
DataRecorder(const ColumnDescription &columns, const DisabledFields &disable={})
Create a new recorder.
Definition dataRecorder.hpp:56
Definition commandReplier.cpp:21
constexpr ColumnMetaData(const std::string_view &new_name, const std::string_view &new_unit)
Definition dataRecorder.hpp:34
std::string_view unit
Definition dataRecorder.hpp:32
std::string_view name
Definition dataRecorder.hpp:31