* Author: lamikr
*/
+#include <string>
#include <iostream>
+#include <sstream>
#include <stdio.h>
#include <time.h>
#include <malloc.h>
-#include "Data.hh"
#include <plp/log.h>
+#include "Data.hh"
+#include "W1Util.hh"
+
using namespace std;
using namespace plp;
using namespace w1;
+template <class NumberDataType>
+bool string_to_number(NumberDataType& result,
+ const std::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) {
+ int ii;
+
+ value_arr.resize(size);
+ for (ii = 0; ii < size; ii++) {
+ value_arr[ii] = default_value;
+ }
+}
+
Data::Data(vector<double> vector_param, Date *date_param) {
- int ii;
- int size;
+ unsigned int ii;
+ unsigned int size;
size = vector_param.size();
//log_debug("Data(), value count: %d\n", size);
value_arr.resize(size);
- for (int ii = 0; ii < vector_param.size(); ii++) {
+ for (ii = 0; ii < vector_param.size(); ii++) {
value_arr[ii] = vector_param.at(ii);
//log_debug("Data(), value[%d]: %f\n", ii, value_arr[ii]);
}
}
Data::Data(std::valarray<double> value_arr_param, Date *date_param) {
+ unsigned int ii;
+
value_arr.resize(value_arr_param.size());
- for (int ii = 0; ii < value_arr_param.size(); ii++) {
+
+ for (ii = 0; ii < value_arr_param.size(); ii++) {
value_arr[ii] = value_arr_param[ii];
}
date_time.copy(date_param);
}
void Data::printout() {
- int ii;
+ unsigned int ii;
date_time.printout();
for (ii = 0; ii < value_arr.size(); ii++) {
}
}
+Data *Data::parse_data_string(const string& dataline) {
+ stringstream ss(dataline);
+ string item;
+ double val;
+ Data *ret_val;
+ int ii;
+ bool suc_flg;
+ vector<double> v;
+ Date date;
+
+ ii = 0;
+ while(getline(ss, item, '|')) {
+ if (ii == 0) {
+ // parse date
+ date = W1Util::parse_date_str(item);
+ }
+ else if (ii >= 1) {
+ suc_flg = string_to_number<double>(val, item, dec);
+ if (suc_flg) {
+ //log_debug("adding number: %f\n", val);
+ v.push_back(val);
+ }
+ }
+ ii++;
+ }
+ ret_val = new Data(v, &date);
+ return ret_val;
+}
+
DataRange::DataRange(int value_count_per_data_item) {
val_matrix = NULL;
column_count = value_count_per_data_item;
}
DataRange::~DataRange() {
- int ii;
- Date *date;
+ unsigned int ii;
+ Date *date;
if (val_matrix != NULL) {
free(val_matrix);
}
void DataRange::add_data(Data data) {
- int ii;
- int r_count;
- int indx;
- Date date;
+ unsigned int ii;
+ int indx;
+ Date date;
//log_debug("old row_count: %d, column_count: %d, value_arr_size: %d\n", row_count, column_count, data.value_arr.size());
val_matrix = (double *)realloc(val_matrix, ((row_count + 1) * column_count) * sizeof(double));