11#include " ColumnReader.hpp"
22
3+ #include < cstddef>
4+ #include < cstdint>
5+ #include < string>
6+ #include < variant>
7+
38#include " ../clp/EncodedVariableInterpreter.hpp"
49#include " BufferViewReader.hpp"
510#include " ColumnWriter.hpp"
11+ #include " FloatFormatEncoding.hpp"
612#include " Utils.hpp"
713
814namespace clp_s {
@@ -50,6 +56,11 @@ void FloatColumnReader::load(BufferViewReader& reader, uint64_t num_messages) {
5056 m_values = reader.read_unaligned_span <double >(num_messages);
5157}
5258
59+ void FormattedFloatColumnReader::load (BufferViewReader& reader, uint64_t num_messages) {
60+ m_values = reader.read_unaligned_span <double >(num_messages);
61+ m_formats = reader.read_unaligned_span <float_format_t >(num_messages);
62+ }
63+
5364void
5465Int64ColumnReader::extract_string_value_into_buffer (uint64_t cur_message, std::string& buffer) {
5566 buffer.append (std::to_string (m_values[cur_message]));
@@ -68,6 +79,12 @@ std::variant<int64_t, double, std::string, uint8_t> FloatColumnReader::extract_v
6879 return m_values[cur_message];
6980}
7081
82+ std::variant<int64_t , double , std::string, uint8_t > FormattedFloatColumnReader::extract_value (
83+ uint64_t cur_message
84+ ) {
85+ return m_values[cur_message];
86+ }
87+
7188void BooleanColumnReader::load (BufferViewReader& reader, uint64_t num_messages) {
7289 m_values = reader.read_unaligned_span <uint8_t >(num_messages);
7390}
@@ -77,12 +94,36 @@ FloatColumnReader::extract_string_value_into_buffer(uint64_t cur_message, std::s
7794 buffer.append (std::to_string (m_values[cur_message]));
7895}
7996
97+ void FormattedFloatColumnReader::extract_string_value_into_buffer (
98+ uint64_t cur_message,
99+ std::string& buffer
100+ ) {
101+ buffer.append (restore_encoded_float (m_values[cur_message], m_formats[cur_message]).value ());
102+ }
103+
80104std::variant<int64_t , double , std::string, uint8_t > BooleanColumnReader::extract_value (
81105 uint64_t cur_message
82106) {
83107 return m_values[cur_message];
84108}
85109
110+ void DictionaryFloatColumnReader::load (BufferViewReader& reader, uint64_t num_messages) {
111+ m_var_dict_ids = reader.read_unaligned_span <variable_dictionary_id_t >(num_messages);
112+ }
113+
114+ std::variant<int64_t , double , std::string, uint8_t > DictionaryFloatColumnReader::extract_value (
115+ uint64_t cur_message
116+ ) {
117+ return std::stod (m_var_dict->get_value (m_var_dict_ids[cur_message]));
118+ }
119+
120+ void DictionaryFloatColumnReader::extract_string_value_into_buffer (
121+ uint64_t cur_message,
122+ std::string& buffer
123+ ) {
124+ buffer.append (m_var_dict->get_value (m_var_dict_ids[cur_message]));
125+ }
126+
86127void ClpStringColumnReader::load (BufferViewReader& reader, uint64_t num_messages) {
87128 m_logtypes = reader.read_unaligned_span <uint64_t >(num_messages);
88129 size_t encoded_vars_length = reader.read_value <size_t >();
0 commit comments