X-Git-Url: http://pilppa.org/gitweb/?a=blobdiff_plain;f=src%2FW1Util.cc;h=c5773bc781f2cdb805c770ace2d1e9389b2a32ce;hb=c4b6d88d7ea02f5ae9b68a075944ff381a2f22c5;hp=001f9f63c293d5677f3aa9a9bfd67ba4e1d18329;hpb=034b14870060e6594bfb304502ca057a0771b585;p=lib1wire.git diff --git a/src/W1Util.cc b/src/W1Util.cc index 001f9f6..c5773bc 100644 --- a/src/W1Util.cc +++ b/src/W1Util.cc @@ -22,6 +22,7 @@ using namespace std; using namespace w1; +using namespace plp; template bool string_to_number(NumberDataType& result, @@ -38,20 +39,6 @@ W1Util::W1Util() { W1Util::~W1Util() { } -void W1Util::printout_date(struct tm *date_time) { - cout << "date: " << date_time->tm_year << " " << date_time->tm_mon << " " << date_time->tm_mday << " " << date_time->tm_hour << " " << date_time->tm_min << " " << date_time->tm_sec << endl; -} - -void W1Util::printout_data(Data *data) { - int ii; - if (data != NULL) { - printout_date(data->date_time); - for (ii = 0; ii < data->data_list.size(); ii++) { - log_debug(" data[%d] = %f\n", ii, data->data_list.at(ii)); - } - } -} - char *W1Util::parse_directory_path(const char *file_path) { char *p; size_t b_count; @@ -301,85 +288,42 @@ vector W1Util::get_data_files(const string& path) { return ret_val; } -struct tm *W1Util::parse_date_str(string date_str) { - stringstream ss(date_str); - struct tm *ret_val = NULL; +Date W1Util::parse_date_str(string date_str) { + char c; + stringstream ss(date_str); + Date ret_val; - //ss << "2007-07-19 17:18:01"; - int year; - int month; - int day; - int hour; - int min; - int sec; - char c; - - ret_val = (struct tm*)malloc(sizeof(struct tm)); - ss >>ret_val->tm_year >>c >>ret_val->tm_mon >>c >>ret_val->tm_mday >>ret_val->tm_hour >>c >>ret_val->tm_min >>c >>ret_val->tm_sec; - mktime(ret_val); - //printout_date(ret_val); + ss >>ret_val.year >>c >>ret_val.month >>c >>ret_val.day >>ret_val.hour >>c >>ret_val.min >>c >>ret_val.sec; return ret_val; } Data *W1Util::parse_data_line(const string& dataline) { stringstream ss(dataline); string item; - double dbl; + double val; Data *ret_val; int ii; bool suc_flg; + vector v; + Date date; - ret_val = new Data(); ii = 0; while(getline(ss, item, '|')) { if (ii == 0) { // parse date - ret_val->date_time = parse_date_str(item); - } - else if (ii == 1) { - // skip the device type for now.Maybe better to store only once under the year dir... + date = parse_date_str(item); } - else if (ii >= 2) { - suc_flg = string_to_number(dbl, item, dec); + // skip the device type and device id fields + // TODO: store device type and id to own file + else if (ii >= 3) { + suc_flg = string_to_number(val, item, dec); if (suc_flg) { - ret_val->data_list.push_back(dbl); + //log_debug("adding number: %f\n", val); + v.push_back(val); } } ii++; } - return ret_val; -} - -Data *W1Util::load_first_data_row(const string& datafile_path) { - Data *ret_val; - ifstream in; - string line; - - ret_val = NULL; - in.open(datafile_path.c_str()); - if (in.eof() == false) { - getline(in, line); - ret_val = parse_data_line(line); - } - return ret_val; -} - -Data *W1Util::load_last_data_row(const string& datafile_path) { - Data *ret_val; - ifstream in; - string line; - string prev_line; - - ret_val = NULL; - in.open(datafile_path.c_str()); - while (in.eof() == false) { - getline(in, line); - if (line.empty() == false) { - prev_line = line; - } - } - if (prev_line.empty() == false) { - ret_val = parse_data_line(prev_line); - } + ret_val = new Data(v, &date); return ret_val; }