32 std::string RunData::GetHeaderToAdd(
const std::string& in_header)
const
34 auto header_to_add = in_header;
36 while (std::ranges::any_of(headers_in_order_,
37 [&header_to_add](
const auto& ordered_header){
38 return (ordered_header == header_to_add);
43 header_to_add = in_header +
"_" + std::to_string(num);
50 const std::string& header,
51 const std::string& data)
53 const auto header_to_add{GetHeaderToAdd(header)};
54 headers_in_order_.push_back(header_to_add);
55 headers_w_data_[header_to_add] = data;
60 const std::string& header,
63 const auto header_to_add{GetHeaderToAdd(header)};
64 headers_in_order_.push_back(header_to_add);
65 headers_w_data_[header_to_add] = std::string(data);
70 const std::string& header,
73 const auto header_to_add{GetHeaderToAdd(header)};
74 headers_in_order_.push_back(header_to_add);
75 headers_w_data_[header_to_add] = data;
80 const std::string& header,
83 const auto header_to_add{GetHeaderToAdd(header)};
84 headers_in_order_.push_back(header_to_add);
85 headers_w_data_[header_to_add] = data;
90 const std::string& header,
93 const auto header_to_add{GetHeaderToAdd(header)};
94 headers_in_order_.push_back(header_to_add);
95 headers_w_data_[header_to_add] = data;
120 const auto& data_variant = headers_w_data_.at(std::string(header));
123 if (
const std::string* data_str_ptr = std::get_if<std::string>(&data_variant)) {
124 return *data_str_ptr;
126 if (
const double* data_double_ptr = std::get_if<double>(&data_variant)) {
127 return std::to_string(*data_double_ptr);
129 if (
const unsigned int* data_uint_ptr = std::get_if<unsigned int>(&data_variant)) {
130 return std::to_string(*data_uint_ptr);
132 if (
const bool* data_bool_ptr = std::get_if<bool>(&data_variant)) {
133 return (*data_bool_ptr) ?
143 const std::string_view header)
const
145 const auto& data_variant = headers_w_data_.at(std::string(header));
146 if (
const double* data_double_ptr = std::get_if<double>(&data_variant)) {
147 return *data_double_ptr;
156 const std::string_view header)
const
158 const auto& data_variant = headers_w_data_.at(std::string(header));
159 if (
const unsigned int* data_uint_ptr = std::get_if<unsigned int>(&data_variant)) {
160 return *data_uint_ptr;
168 const std::string_view header)
const
170 const auto& data_variant = headers_w_data_.at(std::string(header));
171 if (
const bool* data_bool_ptr = std::get_if<bool>(&data_variant)) {
172 return *data_bool_ptr;
Declares class to store headers with data corresponding to current program run and evaluation.
Contains namespace with enums and constants for implementation run evaluation.
Class to store headers with data corresponding to current program run and evaluation.
const std::vector< std::string > & HeadersInOrder() const
Return data headers in order.
void AppendData(const RunData &rundata)
Append current RunData with input RunData.
std::optional< unsigned int > GetDataAsUInt(const std::string_view header) const
Get data corresponding to header as unsigned int Return null if data corresponds to a different data ...
std::string GetDataAsStr(const std::string_view header) const
Get data corresponding to header as a string Returns data as string regardless of underlying data typ...
void AddDataWHeader(const std::string &header, const std::string &data)
Add string data with header describing added data.
std::optional< double > GetDataAsDouble(const std::string_view header) const
Get data corresponding to header as double Return null if data corresponds to a different data type.
std::optional< bool > GetDataAsBool(const std::string_view header) const
Get data corresponding to header as boolean Return null if data corresponds to a different data type.
constexpr std::array< std::string_view, 2 > kBoolValFalseTrueDispStr
Define string for display of "true" and "false" values of bool value.