X-Git-Url: http://pilppa.org/gitweb/?a=blobdiff_plain;f=src%2FData.cc;h=923def183ee6c553496022bc45eccb45c693434c;hb=d01194ab9275bc97176071089edc2781bb4de51b;hp=cc29d51cd733aeebbfa2f356661a9fd6ab9add4b;hpb=56242039f27dc5d36117b8d513731c7a9009d4b1;p=lib1wire.git diff --git a/src/Data.cc b/src/Data.cc index cc29d51..923def1 100644 --- a/src/Data.cc +++ b/src/Data.cc @@ -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(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);