]> pilppa.org Git - lib1wire.git/blobdiff - src/Data.cc
Started adding support for caches when reading data. Cache files for
[lib1wire.git] / src / Data.cc
index cc29d51cd733aeebbfa2f356661a9fd6ab9add4b..923def183ee6c553496022bc45eccb45c693434c 100644 (file)
@@ -142,7 +142,7 @@ Data *Data::parse_string(const string& dataline) {
 
        ii      = 0;
        ret_val = NULL;
-       log_debug("parse_string: %s\n", dataline.c_str());
+       //log_debug("parse_string: %s\n", dataline.c_str());
        while(getline(ss, item, '|')) {
                if (ii == 0) {
                        // parse date
@@ -151,7 +151,7 @@ Data *Data::parse_string(const string& dataline) {
                else if (ii >= 1) {
                        suc_flg = string_to_number<double>(val, item, dec);
                        if (suc_flg) {
-                               log_debug("adding number: %f\n", val);
+                               //log_debug("adding number: %f\n", val);
                                v.push_back(val);
                        }
                }
@@ -195,12 +195,35 @@ string Data::to_string() {
        return to_string(3);
 }
 
+DataRange::DataRange() {
+       val_matrix      = NULL;
+       column_count    = 0;
+       row_count       = 0;
+       unit            = "";
+}
+
 DataRange::DataRange(Data *data) {
        val_matrix      = NULL;
-       column_count    = data->value_arr.size();
        row_count       = 0;
-       unit            = data->get_unit();
-       add_data(data);
+       if (data != NULL) {
+               column_count    = data->value_arr.size();
+               unit            = data->get_unit();
+               add(data);
+       }
+       else {
+               column_count    = 0;
+               unit            = "";
+       }
+}
+
+DataRange::DataRange(DataRange *datarange) {
+       val_matrix      = NULL;
+       row_count       = 0;
+       column_count    = 0;
+       unit            = "";
+       if (datarange != NULL) {
+               add(datarange);
+       }
 }
 
 DataRange::DataRange(int value_count_per_data_item, string unit_param) {
@@ -224,42 +247,64 @@ DataRange::~DataRange() {
        }
 }
 
-void DataRange::add_data(Data *data) {
+void DataRange::add(Data *data) {
        int     ii;
        int     indx;
        Date    *date;
        int     cnt;
 
-       //log_debug("old row_count: %d, column_count: %d, value_arr_size: %d\n", row_count, column_count, data.value_arr.size());
-       cnt             = (row_count + 1) * column_count;
-       val_matrix      = (double *)realloc(val_matrix, cnt * sizeof(double));
-       indx            = row_count * column_count;
-       cnt             = data->value_arr.size();
-       if (cnt != column_count) {
-               log_error("Error when adding data... Invalid data item count!\n");
-               if (cnt > column_count) {
-                       cnt     = column_count;
+       if (data != NULL) {
+               if ((val_matrix == NULL) &&
+                   (column_count == 0) &&
+                   (unit.empty() == true)) {
+                       column_count    = data->value_arr.size();
+                       unit            = data->get_unit();
                }
-               else {
-                       for (ii = cnt; ii < column_count; ii++) {
-                               val_matrix[indx + ii]   = 0;
+               cnt             = (row_count + 1) * column_count;
+               val_matrix      = (double *)realloc(val_matrix, cnt * sizeof(double));
+               indx            = row_count * column_count;
+               cnt             = data->value_arr.size();
+               if (cnt != column_count) {
+                       log_error("Error when adding data... Invalid data item count!\n");
+                       if (cnt > column_count) {
+                               cnt     = column_count;
+                       }
+                       else {
+                               for (ii = cnt; ii < column_count; ii++) {
+                                       val_matrix[indx + ii]   = 0;
+                               }
                        }
                }
-       }
-       for (ii = 0; ii < cnt; ii++) {
-               val_matrix[indx + ii]   = data->value_arr[ii];
-       }
+               for (ii = 0; ii < cnt; ii++) {
+                       val_matrix[indx + ii]   = data->value_arr[ii];
+               }
 /*
-       for (int ii = 0; ii < ((row_count + 1) * column_count); ii++) {
-               log_debug("data_matrix[%d] = %f\n", ii, val_matrix[ii]);
-       }
+               for (int ii = 0; ii < ((row_count + 1) * column_count); ii++) {
+                       log_debug("data_matrix[%d] = %f\n", ii, val_matrix[ii]);
+               }
 */
-       date    = data->get_date().clone();
-       date_list.push_back(date);
-       row_count++;
+               date    = data->get_date().clone();
+               date_list.push_back(date);
+               row_count++;
+       }
+}
+
+void DataRange::add(DataRange *datarange) {
+       int     ii;
+       int     cnt;
+       Data    *dta;
+
+       if (datarange != NULL) {
+               cnt     = datarange->get_count();
+               for (ii = 0; ii < cnt; ii++) {
+                       dta     = datarange->get(ii);
+                       add(dta);
+                       delete(dta);
+               }
+       }
 }
 
-Data *DataRange::get_data(int row_index) {
+Data *DataRange::get(int row_index) {
        Data            *ret_val;
        int             start_indx;
        int             ii;
@@ -274,7 +319,7 @@ Data *DataRange::get_data(int row_index) {
                for (ii = 0; ii < column_count; ii++) {
                        //val   = val_matrix[0];
                        val     = val_matrix[start_indx + ii];
-                       log_debug("val[%d] = %f\n", (start_indx + ii), val);
+                       //log_debug("val[%d] = %f\n", (start_indx + ii), val);
                        vect.push_back(val);
                }
                date    = date_list.at(row_index);
@@ -283,26 +328,26 @@ Data *DataRange::get_data(int row_index) {
        return ret_val;
 }
 
-int DataRange::get_data_row_count() {
+int DataRange::get_count() {
        return row_count;
 }
 
-int DataRange::get_data_column_count() {
+int DataRange::get_data_item_value_count() {
        return column_count;
 }
 
-Data *DataRange::get_first_data() {
+Data *DataRange::get_first() {
        Data    *ret_val;
 
        ret_val = NULL;
        if (row_count > 0) {
-               ret_val = get_data(0);
+               ret_val = get(0);
        }
        return ret_val;
 }
 
-Data *DataRange::get_last_data() {
-       return get_data(row_count - 1);
+Data *DataRange::get_last() {
+       return get(row_count - 1);
 }
 
 void DataRange::printout() {
@@ -311,7 +356,7 @@ void DataRange::printout() {
 
        log_debug("---- DataRange, number of data items: %d\n ----", row_count);
        for (ii = 0; ii < row_count; ii++) {
-               data    = get_data(ii);
+               data    = get(ii);
                if (data != NULL) {
                        data->printout();
                        delete(data);