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
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);
}
}
return to_string(3);
}
+int Data::get_value_count() {
+ return value_arr.size();
+}
+
+double Data::get(int indx) {
+ return value_arr[indx];
+}
+
+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) {
}
}
-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;
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);
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() {
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);