[Positioning] InputMedium: current_request now pointer

To handle calibration requests, we will need to make current_request be
either a Request or a CalibrationRequest, so we must dynamically
allocate it.
This commit is contained in:
Matteo Cypriani 2010-02-16 20:00:14 +01:00
parent 0b461bf4d0
commit 1ceab071a2
2 changed files with 35 additions and 29 deletions

View File

@ -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<uint64_t>(*ti))) ;
current_request->set_timestamp(Timestamp
(lexical_cast<uint64_t>(*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 ;
}

View File

@ -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 ;
}