X-Git-Url: http://pilppa.org/gitweb/?p=lib1wire.git;a=blobdiff_plain;f=src%2FData.cc;fp=src%2FData.cc;h=0000000000000000000000000000000000000000;hp=49dd5072f068913935315069d3d5a5f24a6de557;hb=a7002b0a87c5f17b542dfbd44f482014a191df97;hpb=da203ad44792ca37320768f4cbe68587c4806910 diff --git a/src/Data.cc b/src/Data.cc deleted file mode 100644 index 49dd507..0000000 --- a/src/Data.cc +++ /dev/null @@ -1,374 +0,0 @@ -/* - * DataRange.cc - * - * Created on: Dec 7, 2010 - * Author: lamikr - */ - -#include -#include -#include -#include - -#include -#include -#include - -#include - -#include "Data.hh" -#include "W1Util.hh" - -using namespace std; -using namespace plp; -using namespace w1; - -template -bool string_to_number(NumberDataType& result, - const string& string_param, - std::ios_base& (*format)(std::ios_base&)) -{ - std::istringstream iss(string_param); - return !(iss >> format >> result).fail(); -} - -Data::Data(int size) { - value_arr.resize(size); -} - -Data::Data(int size, double default_value, string unit_param) { - int ii; - - value_arr.resize(size); - for (ii = 0; ii < size; ii++) { - value_arr[ii] = default_value; - } - unit = unit_param; -} - -Data::Data(vector *vect_param) { - unsigned int ii; - unsigned int sz; - - sz = vect_param->size(); - //log_debug("Data(), value count: %d\n", size); - value_arr.resize(sz); - for (ii = 0; ii < sz; ii++) { - value_arr[ii] = vect_param->at(ii); - //log_debug("Data(), value[%d]: %f\n", ii, value_arr[ii]); - } -} - -Data::Data(std::vector *vector_param, string unit_param) { - unsigned int ii; - unsigned int sz; - - sz = vector_param->size(); - //log_debug("Data(), value count: %d\n", size); - value_arr.resize(sz); - for (ii = 0; ii < sz; ii++) { - value_arr[ii] = vector_param->at(ii); - //log_debug("Data(), value[%d]: %f\n", ii, value_arr[ii]); - } - unit = unit_param; -} - -Data::Data(vector *vector_param, - Date *date_param, - string unit_param) { - unsigned int ii; - unsigned int size; - - size = vector_param->size(); - //log_debug("Data(), value count: %d\n", size); - value_arr.resize(size); - for (ii = 0; ii < size; ii++) { - value_arr[ii] = vector_param->at(ii); - //log_debug("Data(), value[%d]: %f\n", ii, value_arr[ii]); - } - date_time.copy(date_param); - unit = unit_param; -} - -Data::Data(std::valarray *val_arr_param, Date *date_param) { - unsigned int ii; - unsigned int sz; - - sz = val_arr_param->size(); - value_arr.resize(sz); - for (ii = 0; ii < sz; ii++) { - value_arr[ii] = (*val_arr_param)[ii]; - } - date_time.copy(date_param); -} - -Data::~Data() { -} - -Data *Data::clone() { - Data *ret_val; - - ret_val = new Data(&value_arr, &date_time); - return ret_val; -} - -void Data::printout() { - log_debug(" data: %s\n", to_string().c_str()); -} - -plp::Date Data::get_date() { - return date_time; -} - -void Data::set_date(Date *date_param) { - date_time.copy(date_param); -} - -string Data::get_unit() { - return unit; -} - -Data *Data::parse_string(const string& dataline) { - stringstream ss(dataline); - string item; - double val; - Data *ret_val; - int ii; - int sz; - bool suc_flg; - vector v; - string unit; - Date date; - - ii = 0; - ret_val = NULL; - //log_debug("parse_string: %s\n", dataline.c_str()); - while(getline(ss, item, '|')) { - if (ii == 0) { - // parse date - date = W1Util::parse_date_str(item); - } - else if (ii >= 1) { - suc_flg = string_to_number(val, item, dec); - if (suc_flg) { - //log_debug("adding number: %f\n", val); - v.push_back(val); - } - } - ii++; - } - ii = item.find_last_of(" "); - sz = item.size(); - if ((ii >= 0) && - ((ii + 1) <= (sz - 1))) { - unit = item.substr(ii + 1); - } - else { - unit = ""; - } - if (v.size() > 0) { - ret_val = new Data(&v, &date, unit); - } - return ret_val; -} - -string Data::to_string(int dec_precision) { - unsigned int ii; - ostringstream out; - string ret_val; - - ret_val = date_time.to_string(); - if (value_arr.size() > 0) { - for (ii = 0; ii < value_arr.size(); ii++) { - out << "|" << fixed << setprecision(dec_precision) << value_arr[ii]; - } - ret_val.append(out.str()); - if (unit.empty() == false) { - ret_val.append(" "); - ret_val.append(unit.c_str()); - } - } - return ret_val; -} - -string Data::to_string() { - 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; - row_count = 0; - 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) { - val_matrix = NULL; - column_count = value_count_per_data_item; - row_count = 0; - unit = unit_param; -} - -DataRange::~DataRange() { - unsigned int ii; - Date *date; - - if (val_matrix != NULL) { - free(val_matrix); - val_matrix = NULL; - } - for (ii = 0; ii < date_list.size(); ii++) { - date = date_list.at(ii); - delete(date); - } -} - -void DataRange::add(Data *data) { - int ii; - int indx; - Date *date; - int cnt; - - if (data != NULL) { - if ((val_matrix == NULL) && - (column_count == 0) && - (unit.empty() == true)) { - column_count = data->value_arr.size(); - unit = data->get_unit(); - } - 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 (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++; - } -} - -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(int row_index) { - Data *ret_val; - int start_indx; - int ii; - vector vect; - Date *date; - double val; - - ret_val = NULL; - if ((row_index >= 0) && - (row_index < row_count)) { - start_indx = row_index * column_count; - 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); - vect.push_back(val); - } - date = date_list.at(row_index); - ret_val = new Data(&vect, date, unit); - } - return ret_val; -} - -int DataRange::get_count() { - return row_count; -} - -int DataRange::get_data_item_value_count() { - return column_count; -} - -Data *DataRange::get_first() { - Data *ret_val; - - ret_val = NULL; - if (row_count > 0) { - ret_val = get(0); - } - return ret_val; -} - -Data *DataRange::get_last() { - return get(row_count - 1); -} - -void DataRange::printout() { - int ii; - Data *data; - - log_debug("---- DataRange, number of data items: %d\n ----", row_count); - for (ii = 0; ii < row_count; ii++) { - data = get(ii); - if (data != NULL) { - data->printout(); - delete(data); - } - } - log_debug("---- DataRange printout done ----\n"); -}