[Positioning] InputCSV: prepare handling CalibrationRequest
InputMedium: - Split into two files (inputmedium.{hh,cc}). - Add polymorphic handling of CalibrationRequest. - Write unit tests. InputCSV: - Use new code of InputMedium to handle calibration requests. - We detect if the read request is a calibration request, but specific attributes are not initialised.
This commit is contained in:
parent
1ceab071a2
commit
6ad31f9af4
|
@ -33,8 +33,8 @@ OBJ = posutil.o stock.o timestamp.o point3d.o referencepoint.o \
|
|||
mobile.o measurement.o request.o calibrationrequest.o \
|
||||
configuration.o userinterface.o input.o \
|
||||
inputcsv.o inputlogcsv.o
|
||||
OBJ_NOTEST = posexcept.o
|
||||
INTERFACES = inputmedium.hh inputlogmedium.hh
|
||||
OBJ_NOTEST = posexcept.o inputmedium.o
|
||||
INTERFACES = inputlogmedium.hh
|
||||
|
||||
TESTS_XX = $(TESTS_DIR)/tests.cc
|
||||
TESTS_OBJ = $(TESTS_DIR)/tests.o
|
||||
|
@ -68,7 +68,7 @@ mobile.o: wifidevice.o
|
|||
measurement.o: accesspoint.o
|
||||
request.o: timestamp.o measurement.o
|
||||
calibrationrequest.o: request.o referencepoint.o
|
||||
inputcsv.o: inputmedium.hh request.o stock.o
|
||||
inputcsv.o: inputmedium.o request.o stock.o
|
||||
inputlogcsv.o: inputlogmedium.hh request.o
|
||||
input.o: posexcept.o
|
||||
|
||||
|
@ -81,7 +81,7 @@ $(TESTS_XX): $(SOURCE_TESTS)
|
|||
--include=$(TESTUTIL_OBJ:.o=.hh) \
|
||||
-o $@ $^
|
||||
|
||||
$(TESTS_OBJ): $(TESTS_XX) $(OBJ) $(INCLUDES_TESTS)
|
||||
$(TESTS_OBJ): $(TESTS_XX) $(OBJ) $(OBJ_NOTEST) $(INCLUDES_TESTS)
|
||||
$(GXX) $(GXXFLAGS) $(TESTSGXXFLAGS) -o $@ -c $<
|
||||
|
||||
$(TESTS_TARGET): $(TESTS_OBJ) $(OBJ_TESTS)
|
||||
|
@ -125,4 +125,4 @@ check:
|
|||
@$(CPPCHECK) \
|
||||
$(OBJ:.o=.hh) $(OBJ:.o=.cc) \
|
||||
$(OBJ_NOTEST:.o=.hh) $(OBJ_NOTEST:.o=.cc) \
|
||||
$(INTERFACES)
|
||||
$(INTERFACES) $(TARGET).cc
|
||||
|
|
|
@ -116,12 +116,10 @@ void InputCSV::read_next_line()
|
|||
*/
|
||||
const Request& InputCSV::get_next_request()
|
||||
{
|
||||
if (eof_close())
|
||||
{
|
||||
// End of file or error: blank current request
|
||||
current_request->clear() ;
|
||||
return *current_request ;
|
||||
}
|
||||
clear_current_request() ;
|
||||
|
||||
if (eof_close()) // End of file or error
|
||||
return *current_request ;
|
||||
|
||||
// Split read string into fields (semicolon-separated)
|
||||
tokenizer<escaped_list_separator<char> > tok(
|
||||
|
@ -130,12 +128,8 @@ const Request& InputCSV::get_next_request()
|
|||
tokenizer<escaped_list_separator<char> >::const_iterator ti(tok.begin()) ;
|
||||
|
||||
// Read Mobile MAC field
|
||||
if (ti == tok.end())
|
||||
{
|
||||
// Wrong number of fields: blank current request
|
||||
current_request->clear() ;
|
||||
return *current_request ;
|
||||
}
|
||||
if (ti == tok.end()) // Wrong number of fields
|
||||
return *current_request ;
|
||||
|
||||
// If the mobile did not exist, we create it
|
||||
try
|
||||
|
@ -167,7 +161,7 @@ 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
|
||||
current_request->clear() ;
|
||||
return *current_request ;
|
||||
}
|
||||
|
||||
|
@ -196,7 +190,7 @@ 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
|
||||
current_request->clear() ;
|
||||
return *current_request ;
|
||||
}
|
||||
}
|
||||
|
@ -222,7 +216,7 @@ 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
|
||||
current_request->clear() ;
|
||||
return *current_request ;
|
||||
}
|
||||
|
||||
|
@ -277,7 +271,7 @@ const Request& InputCSV::get_next_request()
|
|||
read_next_line() ;
|
||||
|
||||
if (is_calibration_request)
|
||||
{} // TODO
|
||||
current_request_to_calibration_request() ;
|
||||
|
||||
return *current_request ;
|
||||
}
|
||||
|
|
|
@ -0,0 +1,47 @@
|
|||
#include "inputmedium.hh"
|
||||
#include "calibrationrequest.hh"
|
||||
|
||||
|
||||
|
||||
/* *** Constructors *** */
|
||||
|
||||
|
||||
InputMedium::InputMedium()
|
||||
{
|
||||
current_request = new Request() ;
|
||||
current_line_nb = 0 ;
|
||||
}
|
||||
|
||||
|
||||
InputMedium::~InputMedium()
|
||||
{
|
||||
delete current_request ;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/* *** Operations *** */
|
||||
|
||||
void InputMedium::current_request_to_calibration_request()
|
||||
{
|
||||
if (dynamic_cast<CalibrationRequest*>(current_request) != NULL)
|
||||
return ;
|
||||
|
||||
Request *tmp = current_request ;
|
||||
current_request = NULL ;
|
||||
current_request = new CalibrationRequest(*tmp) ;
|
||||
delete tmp ;
|
||||
}
|
||||
|
||||
|
||||
void InputMedium::clear_current_request()
|
||||
{
|
||||
if (dynamic_cast<CalibrationRequest*>(current_request) == NULL)
|
||||
current_request->clear() ;
|
||||
else
|
||||
{
|
||||
delete current_request ;
|
||||
current_request = NULL ;
|
||||
current_request = new Request() ;
|
||||
}
|
||||
}
|
|
@ -52,28 +52,16 @@ public:
|
|||
*/
|
||||
virtual const Request& get_next_request(void) = 0 ;
|
||||
|
||||
/// Converts #current_request into a CalibrationRequest
|
||||
void current_request_to_calibration_request(void) ;
|
||||
/// Clears (reallocates to Request if needed) #current_request
|
||||
void clear_current_request(void) ;
|
||||
|
||||
//@} // End Operations
|
||||
} ;
|
||||
|
||||
|
||||
|
||||
/* *** Constructors *** */
|
||||
|
||||
|
||||
inline InputMedium::InputMedium()
|
||||
{
|
||||
current_request = new Request() ;
|
||||
current_line_nb = 0 ;
|
||||
}
|
||||
|
||||
|
||||
inline InputMedium::~InputMedium()
|
||||
{
|
||||
delete current_request ;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/* *** Read accessors *** */
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue