diff --git a/owlps-positioning/inputcsv.cc b/owlps-positioning/inputcsv.cc index bb9e7ac..de282bc 100644 --- a/owlps-positioning/inputcsv.cc +++ b/owlps-positioning/inputcsv.cc @@ -119,8 +119,8 @@ const Request& InputCSV::get_next_request() if (eof_close()) { // End of file or error: blank current request - current_request.clear() ; - return current_request ; + current_request->clear() ; + return *current_request ; } // Split read string into fields (semicolon-separated) @@ -133,8 +133,8 @@ const Request& InputCSV::get_next_request() if (ti == tok.end()) { // Wrong number of fields: blank current request - current_request.clear() ; - return current_request ; + current_request->clear() ; + return *current_request ; } // If the mobile did not exist, we create it @@ -146,19 +146,19 @@ const Request& InputCSV::get_next_request() { Stock::getw_mobile(*ti).set_mac_addr(*ti) ; } - current_request.set_mobile(&Stock::get_mobile(*ti)) ; + current_request->set_mobile(&Stock::get_mobile(*ti)) ; // Read Timestamp field if (++ti == tok.end()) { // Wrong number of fields: blank current request - current_request.clear() ; - return current_request ; + current_request->clear() ; + return *current_request ; } try { - current_request.set_timestamp(Timestamp - (lexical_cast(*ti))) ; + current_request->set_timestamp(Timestamp + (lexical_cast(*ti))) ; } catch (bad_lexical_cast &e) { @@ -167,8 +167,8 @@ const Request& InputCSV::get_next_request() << *ti << " » at line " << current_line_nb << ", field « Timestamp », of input file « " << input_file_name << " »!" << endl ; - current_request.clear() ; // Blank current request - return current_request ; + current_request->clear() ; // Blank current request + return *current_request ; } // Read position fields @@ -179,8 +179,8 @@ const Request& InputCSV::get_next_request() if (++ti == tok.end()) { // Wrong number of fields: blank current request - current_request.clear() ; - return current_request ; + current_request->clear() ; + return *current_request ; } try { @@ -196,8 +196,8 @@ const Request& InputCSV::get_next_request() << current_line_nb << ", position field #" << i << ", of input file « " << input_file_name << " »!" << endl ; - current_request.clear() ; // Blank current request - return current_request ; + current_request->clear() ; // Blank current request + return *current_request ; } } @@ -206,8 +206,8 @@ const Request& InputCSV::get_next_request() if (++ti == tok.end()) { // Wrong number of fields: blank current request - current_request.clear() ; - return current_request ; + current_request->clear() ; + return *current_request ; } try { @@ -222,8 +222,8 @@ const Request& InputCSV::get_next_request() << *ti << " » at line " << current_line_nb << ", field « Direction », of input file « " << input_file_name << " »!" << endl ; - current_request.clear() ; // Blank current request - return current_request ; + current_request->clear() ; // Blank current request + return *current_request ; } // Reading {MAC_AP;SS} couples @@ -236,8 +236,8 @@ const Request& InputCSV::get_next_request() if (++ti == tok.end()) { // Wrong number of fields: blank current request - current_request.clear() ; - return current_request ; + current_request->clear() ; + return *current_request ; } int ss ; @@ -253,8 +253,8 @@ const Request& InputCSV::get_next_request() << current_line_nb << " of input file « " << input_file_name << " »!" << endl ; - current_request.clear() ; // Blank current request - return current_request ; + current_request->clear() ; // Blank current request + return *current_request ; } // If the AP did not exist, we create it @@ -272,12 +272,12 @@ const Request& InputCSV::get_next_request() measurements[mac_ap].add_ss(ss) ; } - current_request.set_measurements(measurements) ; + current_request->set_measurements(measurements) ; read_next_line() ; if (is_calibration_request) {} // TODO - return current_request ; + return *current_request ; } diff --git a/owlps-positioning/inputmedium.hh b/owlps-positioning/inputmedium.hh index a031ccd..a921a9c 100644 --- a/owlps-positioning/inputmedium.hh +++ b/owlps-positioning/inputmedium.hh @@ -12,15 +12,14 @@ class InputMedium { protected: /// The Request just read - Request current_request ; + Request *current_request ; /// Number of the current line proceeded unsigned long current_line_nb ; public: - /// Default constructor InputMedium(void) ; - virtual ~InputMedium(void) {} ///< Destructor (do nothing) + virtual ~InputMedium(void) ; /** @name Read accessors */ //@{ @@ -63,17 +62,24 @@ public: inline InputMedium::InputMedium() { + current_request = new Request() ; current_line_nb = 0 ; } +inline InputMedium::~InputMedium() +{ + delete current_request ; +} + + /* *** Read accessors *** */ inline const Request& InputMedium::get_current_request() const { - return current_request ; + return *current_request ; }