11#pragma once
22
33#include " Column.hxx"
4+ #include " Data_Details.hxx"
45#include " Field_Framework.hxx"
56
67namespace tablator {
78
89class Data_Element {
910public:
1011 Data_Element (const Field_Framework &field_framework,
11- const std::vector<uint8_t > &data)
12- : field_framework_(field_framework), data_(data) {}
13-
14- Data_Element (const Field_Framework &field_framework)
15- : Data_Element(field_framework, std::vector<uint8_t >()) {}
12+ const Data_Details &data_details)
13+ : field_framework_(field_framework), data_details_(data_details) {}
1614
15+ Data_Element (const Field_Framework &field_framework, size_t num_rows = 0 )
16+ : Data_Element(field_framework, Data_Details(field_framework, num_rows)) {}
1717
1818 // accessors
1919 const Field_Framework &get_field_framework () const { return field_framework_; }
2020
2121 Field_Framework &get_field_framework () { return field_framework_; }
2222
2323
24+ const Data_Details &get_data_details () const { return data_details_; }
25+
26+ Data_Details &get_data_details () { return data_details_; }
27+
2428 inline const std::vector<Column> &get_columns () const {
2529 return field_framework_.get_columns ();
2630 }
@@ -33,37 +37,31 @@ public:
3337 }
3438
3539 size_t get_row_size () const { return field_framework_.get_row_size (); }
40+ size_t get_num_rows () const { return data_details_.get_num_rows (); }
3641
37- size_t get_num_rows () const {
38- if (get_row_size () == 0 ) {
39- return 0 ;
40- }
41- return data_.size () / get_row_size ();
42+ void adjust_num_rows (const size_t &new_num_rows) {
43+ data_details_.adjust_num_rows (new_num_rows);
4244 }
4345
44- // called by query_server to trim result set
45- void resize_data (size_t &new_num_rows) {
46- data_.resize (get_row_size () * new_num_rows);
46+ void reserve_rows (const size_t &new_num_rows) {
47+ get_data_details ().reserve_rows (new_num_rows);
4748 }
4849
49- void reserve_data ( size_t &new_num_rows) {
50- data_. reserve ( get_row_size () * new_num_rows );
50+ inline const std::vector< uint8_t > & get_data () const {
51+ return data_details_. get_data ( );
5152 }
5253
53-
54- inline const std::vector<uint8_t > &get_data () const { return data_; }
55-
5654 // Non-const to support append_rows().
57- inline std::vector<uint8_t > &get_data () { return data_ ; }
55+ inline std::vector<uint8_t > &get_data () { return data_details_. get_data () ; }
5856
59- inline void set_data (const std::vector<uint8_t > &d) { data_ = d ; }
57+ inline void set_data (const std::vector<uint8_t > &d) { data_details_. set_data (d) ; }
6058
6159private:
6260 // Non-const to allow query_server to update column's field_properties.
6361 Field_Framework field_framework_;
6462
6563 // Non-const because of append_rows().
66- std::vector< uint8_t > data_ ;
64+ Data_Details data_details_ ;
6765};
6866
6967} // namespace tablator
0 commit comments