[Positioning] Write all results simultaneously
Write results computed by several algorithms for the same request simultaneously for a given medium. This allows to have only one CSV line for a given request. To achieve that, the class ResultList was created.
This commit is contained in:
parent
4752198ce7
commit
a898af4389
|
@ -58,6 +58,7 @@ OBJ_LIST = \
|
||||||
measurement.o \
|
measurement.o \
|
||||||
request.o \
|
request.o \
|
||||||
calibrationrequest.o \
|
calibrationrequest.o \
|
||||||
|
resultlist.o \
|
||||||
result.o \
|
result.o \
|
||||||
minmax.o \
|
minmax.o \
|
||||||
interlinknetworks.o \
|
interlinknetworks.o \
|
||||||
|
@ -177,6 +178,10 @@ $(OBJ_DIR)/calibrationrequest.o: \
|
||||||
$(OBJ_DIR)/request.o \
|
$(OBJ_DIR)/request.o \
|
||||||
$(OBJ_DIR)/referencepoint.o \
|
$(OBJ_DIR)/referencepoint.o \
|
||||||
$(OBJ_DIR)/direction.o
|
$(OBJ_DIR)/direction.o
|
||||||
|
$(OBJ_DIR)/result.o: \
|
||||||
|
$(OBJ_DIR)/request.o
|
||||||
|
$(OBJ_DIR)/resultlist.o: \
|
||||||
|
$(OBJ_DIR)/result.o
|
||||||
$(OBJ_DIR)/textfilereader.o: \
|
$(OBJ_DIR)/textfilereader.o: \
|
||||||
$(OBJ_DIR)/posexcept.o
|
$(OBJ_DIR)/posexcept.o
|
||||||
$(OBJ_DIR)/csvfilereader.o: \
|
$(OBJ_DIR)/csvfilereader.o: \
|
||||||
|
@ -208,10 +213,12 @@ $(OBJ_DIR)/input.o: \
|
||||||
$(OBJ_DIR)/stock.o
|
$(OBJ_DIR)/stock.o
|
||||||
$(OBJ_DIR)/outputterminal.o: \
|
$(OBJ_DIR)/outputterminal.o: \
|
||||||
$(SRC_DIR)/outputmedium.hh \
|
$(SRC_DIR)/outputmedium.hh \
|
||||||
|
$(OBJ_DIR)/resultlist.o \
|
||||||
$(OBJ_DIR)/result.o
|
$(OBJ_DIR)/result.o
|
||||||
$(OBJ_DIR)/outputcsv.o: \
|
$(OBJ_DIR)/outputcsv.o: \
|
||||||
$(SRC_DIR)/outputmedium.hh \
|
$(SRC_DIR)/outputmedium.hh \
|
||||||
$(OBJ_DIR)/textfilewriter.o \
|
$(OBJ_DIR)/textfilewriter.o \
|
||||||
|
$(OBJ_DIR)/resultlist.o \
|
||||||
$(OBJ_DIR)/result.o
|
$(OBJ_DIR)/result.o
|
||||||
$(OBJ_DIR)/output.o: \
|
$(OBJ_DIR)/output.o: \
|
||||||
$(OBJ_DIR)/outputterminal.o \
|
$(OBJ_DIR)/outputterminal.o \
|
||||||
|
@ -250,6 +257,7 @@ $(OBJ_DIR)/positioning.o: \
|
||||||
$(OBJ_DIR)/frbhmbasic.o \
|
$(OBJ_DIR)/frbhmbasic.o \
|
||||||
$(OBJ_DIR)/interlinknetworks.o \
|
$(OBJ_DIR)/interlinknetworks.o \
|
||||||
$(OBJ_DIR)/radar.o \
|
$(OBJ_DIR)/radar.o \
|
||||||
|
$(OBJ_DIR)/resultlist.o \
|
||||||
$(OBJ_DIR)/output.o \
|
$(OBJ_DIR)/output.o \
|
||||||
$(OBJ_DIR)/configuration.o \
|
$(OBJ_DIR)/configuration.o \
|
||||||
$(OBJ_DIR)/posexcept.o
|
$(OBJ_DIR)/posexcept.o
|
||||||
|
|
|
@ -25,14 +25,6 @@
|
||||||
° Compositions : devraient être représentées par des attributs
|
° Compositions : devraient être représentées par des attributs
|
||||||
normaux.
|
normaux.
|
||||||
|
|
||||||
- Positioning
|
|
||||||
° Pour une requête, la sortie des résultats de tous les algos
|
|
||||||
devrait se faire simultanément sur le medium de sortie, ce qui
|
|
||||||
permettrait par exemple de créer un tableau pour l'affichage CSV
|
|
||||||
(et peut-être d'optimiser les requêtes d'insertion dans la
|
|
||||||
BDD). Cela implique de modifier les interfaces de Output (write()
|
|
||||||
devra prendre un vector<Result>) et des différents OutputMedium.
|
|
||||||
|
|
||||||
- Building
|
- Building
|
||||||
Dans le destructeur, vérifier qu'il faut bien supprimer les Area et
|
Dans le destructeur, vérifier qu'il faut bien supprimer les Area et
|
||||||
les Waypoint. Si oui, faut-il aussi les enlever des listes dans
|
les Waypoint. Si oui, faut-il aussi les enlever des listes dans
|
||||||
|
|
|
@ -5,5 +5,5 @@
|
||||||
Result CartographyAlgorithm::compute(const Request &request)
|
Result CartographyAlgorithm::compute(const Request &request)
|
||||||
{
|
{
|
||||||
Point3D position(select_point(request)) ;
|
Point3D position(select_point(request)) ;
|
||||||
return Result(&request, position, name) ;
|
return Result(position, name) ;
|
||||||
}
|
}
|
||||||
|
|
|
@ -12,7 +12,7 @@ Result FRBHMBasic::compute(const Request &_request)
|
||||||
compute_ap_distance_circles() ;
|
compute_ap_distance_circles() ;
|
||||||
Point3D position(multilaterate_2d(closest_in_ss->get_z())) ;
|
Point3D position(multilaterate_2d(closest_in_ss->get_z())) ;
|
||||||
|
|
||||||
return Result(request, position, name) ;
|
return Result(position, name) ;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -58,7 +58,7 @@ Result MultilaterationAlgorithm::compute(const Request &_request)
|
||||||
compute_ap_distance_circles() ;
|
compute_ap_distance_circles() ;
|
||||||
Point3D position(multilaterate()) ;
|
Point3D position(multilaterate()) ;
|
||||||
|
|
||||||
return Result(request, position, name) ;
|
return Result(position, name) ;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -78,9 +78,9 @@ void Output::initialise_output_csv()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void Output::write(const Result &result) const
|
void Output::write(const ResultList &results) const
|
||||||
{
|
{
|
||||||
for (vector<OutputMedium*>::const_iterator i = output_media.begin() ;
|
for (vector<OutputMedium*>::const_iterator i = output_media.begin() ;
|
||||||
i != output_media.end() ; ++i)
|
i != output_media.end() ; ++i)
|
||||||
(*i)->write(result) ;
|
(*i)->write(results) ;
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
#define _OWLPS_POSITIONING_OUTPUT_HH_
|
#define _OWLPS_POSITIONING_OUTPUT_HH_
|
||||||
|
|
||||||
class OutputMedium ;
|
class OutputMedium ;
|
||||||
class Result ;
|
class ResultList ;
|
||||||
|
|
||||||
#include <vector>
|
#include <vector>
|
||||||
|
|
||||||
|
@ -27,7 +27,7 @@ public:
|
||||||
|
|
||||||
/** @name Operations */
|
/** @name Operations */
|
||||||
//@{
|
//@{
|
||||||
void write(const Result &result) const ;
|
void write(const ResultList &results) const ;
|
||||||
//@}
|
//@}
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
#include "outputcsv.hh"
|
#include "outputcsv.hh"
|
||||||
#include "request.hh"
|
#include "request.hh"
|
||||||
|
#include "resultlist.hh"
|
||||||
#include "mobile.hh"
|
#include "mobile.hh"
|
||||||
|
|
||||||
#include <sstream>
|
#include <sstream>
|
||||||
|
@ -15,7 +16,23 @@ const string OutputCSV::result_to_csv(const Result &result)
|
||||||
{
|
{
|
||||||
ostringstream csv_line ;
|
ostringstream csv_line ;
|
||||||
|
|
||||||
const Request *const request = result.get_request() ;
|
csv_line << result.get_algorithm() ;
|
||||||
|
|
||||||
|
Point3D position = result.get_position() ;
|
||||||
|
csv_line
|
||||||
|
<< ';' << position.get_x()
|
||||||
|
<< ';' << position.get_y()
|
||||||
|
<< ';' << position.get_z() ;
|
||||||
|
|
||||||
|
return csv_line.str() ;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
const string OutputCSV::results_to_csv(const ResultList &results)
|
||||||
|
{
|
||||||
|
ostringstream csv_line ;
|
||||||
|
|
||||||
|
const Request *const request = results.get_request() ;
|
||||||
if (request != NULL)
|
if (request != NULL)
|
||||||
{
|
{
|
||||||
if (request->get_mobile() != NULL)
|
if (request->get_mobile() != NULL)
|
||||||
|
@ -27,14 +44,10 @@ const string OutputCSV::result_to_csv(const Result &result)
|
||||||
else
|
else
|
||||||
csv_line << ";;;" ;
|
csv_line << ";;;" ;
|
||||||
|
|
||||||
csv_line << ';' << result.get_algorithm() ;
|
const vector<Result> &res = results.get_results() ;
|
||||||
|
for (vector<Result>::const_iterator r = res.begin() ; r != res.end() ;
|
||||||
|
++r)
|
||||||
|
csv_line << ';' << result_to_csv(*r) ;
|
||||||
|
|
||||||
Point3D position = result.get_position() ;
|
|
||||||
csv_line
|
|
||||||
<< ';' << position.get_x()
|
|
||||||
<< ';' << position.get_y()
|
|
||||||
<< ';' << position.get_z() ;
|
|
||||||
|
|
||||||
csv_line << '\n' ;
|
|
||||||
return csv_line.str() ;
|
return csv_line.str() ;
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,10 +4,10 @@
|
||||||
#include "outputmedium.hh"
|
#include "outputmedium.hh"
|
||||||
#include "textfilewriter.hh"
|
#include "textfilewriter.hh"
|
||||||
|
|
||||||
/// Writes a result to a CSV file
|
/// Writes results to a CSV file
|
||||||
/**
|
/**
|
||||||
* CSV format is:
|
* CSV format is:
|
||||||
* Mobile_MAC;Timestamp;X;Y;Z
|
* Mobile_MAC;Timestamp;Algorithm1;X;Y;Z;…;AlgorithmN;X;Y;Z
|
||||||
*/
|
*/
|
||||||
class OutputCSV: public OutputMedium
|
class OutputCSV: public OutputMedium
|
||||||
{
|
{
|
||||||
|
@ -15,12 +15,14 @@ protected:
|
||||||
TextFileWriter file ;
|
TextFileWriter file ;
|
||||||
|
|
||||||
const std::string result_to_csv(const Result &result) ;
|
const std::string result_to_csv(const Result &result) ;
|
||||||
|
const std::string results_to_csv(const ResultList &results) ;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
OutputCSV(const std::string &filename):
|
OutputCSV(const std::string &filename):
|
||||||
file(filename) {}
|
file(filename) {}
|
||||||
|
|
||||||
void write(const Result &result) ;
|
void write(const Result &result) ;
|
||||||
|
void write(const ResultList &results) ;
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
|
|
||||||
|
@ -30,7 +32,13 @@ public:
|
||||||
|
|
||||||
inline void OutputCSV::write(const Result &result)
|
inline void OutputCSV::write(const Result &result)
|
||||||
{
|
{
|
||||||
file.write_text(result_to_csv(result)) ;
|
file.write_text(result_to_csv(result) + '\n') ;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
inline void OutputCSV::write(const ResultList &results)
|
||||||
|
{
|
||||||
|
file.write_text(results_to_csv(results) + '\n') ;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,8 @@
|
||||||
#ifndef _OWLPS_POSITIONING_OUTPUTMEDIUM_HH_
|
#ifndef _OWLPS_POSITIONING_OUTPUTMEDIUM_HH_
|
||||||
#define _OWLPS_POSITIONING_OUTPUTMEDIUM_HH_
|
#define _OWLPS_POSITIONING_OUTPUTMEDIUM_HH_
|
||||||
|
|
||||||
#include "result.hh"
|
class Result ;
|
||||||
|
class ResultList ;
|
||||||
|
|
||||||
/// Super class of all output media
|
/// Super class of all output media
|
||||||
/**
|
/**
|
||||||
|
@ -18,6 +19,7 @@ public:
|
||||||
/** @name Operations */
|
/** @name Operations */
|
||||||
//@{
|
//@{
|
||||||
virtual void write(const Result &result) = 0 ;
|
virtual void write(const Result &result) = 0 ;
|
||||||
|
virtual void write(const ResultList &results) = 0 ;
|
||||||
//@}
|
//@}
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
#include "outputterminal.hh"
|
#include "outputterminal.hh"
|
||||||
|
#include "resultlist.hh"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -6,3 +7,10 @@ void OutputTerminal::write(const Result &result)
|
||||||
{
|
{
|
||||||
output_stream << result << '\n' ;
|
output_stream << result << '\n' ;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
void OutputTerminal::write(const ResultList &results)
|
||||||
|
{
|
||||||
|
output_stream << results << '\n' ;
|
||||||
|
}
|
||||||
|
|
|
@ -16,6 +16,7 @@ public:
|
||||||
output_stream(_output_stream) {}
|
output_stream(_output_stream) {}
|
||||||
|
|
||||||
void write(const Result &result) ;
|
void write(const Result &result) ;
|
||||||
|
void write(const ResultList &results) ;
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
#endif // _OWLPS_POSITIONING_OUTPUTTERMINAL_HH_
|
#endif // _OWLPS_POSITIONING_OUTPUTTERMINAL_HH_
|
||||||
|
|
|
@ -4,6 +4,7 @@
|
||||||
#include "frbhmbasic.hh"
|
#include "frbhmbasic.hh"
|
||||||
#include "interlinknetworks.hh"
|
#include "interlinknetworks.hh"
|
||||||
#include "radar.hh"
|
#include "radar.hh"
|
||||||
|
#include "resultlist.hh"
|
||||||
#include "configuration.hh"
|
#include "configuration.hh"
|
||||||
#include "posexcept.hh"
|
#include "posexcept.hh"
|
||||||
#include "stock.hh"
|
#include "stock.hh"
|
||||||
|
@ -86,11 +87,10 @@ void Positioning::loop()
|
||||||
if (! request)
|
if (! request)
|
||||||
continue ;
|
continue ;
|
||||||
|
|
||||||
|
ResultList results(&request) ;
|
||||||
for (algo = algorithms.begin() ; algo != algorithms.end() ;
|
for (algo = algorithms.begin() ; algo != algorithms.end() ;
|
||||||
++algo)
|
++algo)
|
||||||
{
|
results.add((*algo)->compute(request)) ;
|
||||||
Result res = (*algo)->compute(request) ;
|
output.write(results) ;
|
||||||
output.write(res) ;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -14,8 +14,8 @@ Result RealPosition::compute(const Request &request)
|
||||||
Point3D *coordinates =
|
Point3D *coordinates =
|
||||||
static_cast<Point3D*>(
|
static_cast<Point3D*>(
|
||||||
calibration_request->get_reference_point()) ;
|
calibration_request->get_reference_point()) ;
|
||||||
return Result(&request, *coordinates, name) ;
|
return Result(*coordinates, name) ;
|
||||||
}
|
}
|
||||||
|
|
||||||
return Result(&request, name) ;
|
return Result(name) ;
|
||||||
}
|
}
|
||||||
|
|
|
@ -13,7 +13,6 @@ const Result& Result::operator=(const Result &source)
|
||||||
|
|
||||||
algorithm = source.algorithm ;
|
algorithm = source.algorithm ;
|
||||||
position = source.position ;
|
position = source.position ;
|
||||||
request = source.request ;
|
|
||||||
|
|
||||||
return *this ;
|
return *this ;
|
||||||
}
|
}
|
||||||
|
@ -23,20 +22,15 @@ bool Result::operator==(const Result &source) const
|
||||||
{
|
{
|
||||||
return
|
return
|
||||||
algorithm == source.algorithm &&
|
algorithm == source.algorithm &&
|
||||||
position == source.position &&
|
position == source.position ;
|
||||||
request == source.request ;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
std::ostream& operator<<(std::ostream &os, const Result &r)
|
std::ostream& operator<<(std::ostream &os, const Result &r)
|
||||||
{
|
{
|
||||||
if (r.request == NULL)
|
|
||||||
os << "For an unknown request, the " ;
|
|
||||||
else
|
|
||||||
os << "For the following request: " << *(r.request) << "\nThe " ;
|
|
||||||
os
|
os
|
||||||
<< "result of the algorithm " << r.algorithm
|
<< "The result of the algorithm " << r.algorithm
|
||||||
<< " is: " << r.position ;
|
<< " is: " << r.position ;
|
||||||
return os ;
|
return os ;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,8 +1,6 @@
|
||||||
#ifndef _OWLPS_POSITIONING_RESULT_HH_
|
#ifndef _OWLPS_POSITIONING_RESULT_HH_
|
||||||
#define _OWLPS_POSITIONING_RESULT_HH_
|
#define _OWLPS_POSITIONING_RESULT_HH_
|
||||||
|
|
||||||
class Request ;
|
|
||||||
|
|
||||||
#include "point3d.hh"
|
#include "point3d.hh"
|
||||||
|
|
||||||
#include <string>
|
#include <string>
|
||||||
|
@ -12,24 +10,19 @@ class Result
|
||||||
{
|
{
|
||||||
protected:
|
protected:
|
||||||
Point3D position ;
|
Point3D position ;
|
||||||
Request *request ;
|
|
||||||
std::string algorithm ;
|
std::string algorithm ;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
Result(const Request *_request = NULL,
|
Result(const std::string &_algorithm = "UnknownAlgorithm"):
|
||||||
const std::string &_algorithm = "UnknownAlgorithm"):
|
|
||||||
request(const_cast<Request*>(_request)), algorithm(_algorithm) {}
|
|
||||||
Result(const Request *_request, const Point3D &_position,
|
|
||||||
const std::string &_algorithm):
|
|
||||||
position(_position), request(const_cast<Request*>(_request)),
|
|
||||||
algorithm(_algorithm) {}
|
algorithm(_algorithm) {}
|
||||||
|
Result(const Point3D &_position, const std::string &_algorithm):
|
||||||
|
position(_position), algorithm(_algorithm) {}
|
||||||
~Result(void) {}
|
~Result(void) {}
|
||||||
|
|
||||||
/** @name Read accessors */
|
/** @name Read accessors */
|
||||||
//@{
|
//@{
|
||||||
const std::string& get_algorithm(void) const ;
|
const std::string& get_algorithm(void) const ;
|
||||||
const Point3D& get_position(void) const ;
|
const Point3D& get_position(void) const ;
|
||||||
const Request* get_request(void) const ;
|
|
||||||
//@}
|
//@}
|
||||||
|
|
||||||
/** @name Operators */
|
/** @name Operators */
|
||||||
|
@ -60,12 +53,6 @@ inline const Point3D& Result::get_position() const
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
inline const Request* Result::get_request() const
|
|
||||||
{
|
|
||||||
return request ;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/* *** Operators *** */
|
/* *** Operators *** */
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,54 @@
|
||||||
|
#include "resultlist.hh"
|
||||||
|
#include "request.hh"
|
||||||
|
|
||||||
|
using namespace std ;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/* *** Constructors *** */
|
||||||
|
|
||||||
|
|
||||||
|
ResultList::~ResultList()
|
||||||
|
{
|
||||||
|
results.clear() ;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/* *** Operators *** */
|
||||||
|
|
||||||
|
|
||||||
|
const ResultList& ResultList::operator=(const ResultList &source)
|
||||||
|
{
|
||||||
|
if (this == &source)
|
||||||
|
return *this ;
|
||||||
|
|
||||||
|
request = source.request ;
|
||||||
|
results = source.results ;
|
||||||
|
|
||||||
|
return *this ;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
bool ResultList::operator==(const ResultList &source) const
|
||||||
|
{
|
||||||
|
return
|
||||||
|
request == source.request &&
|
||||||
|
results == source.results ;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
ostream& operator<<(ostream &os, const ResultList &r)
|
||||||
|
{
|
||||||
|
if (r.request == NULL)
|
||||||
|
os << "For an unknown request:\n" ;
|
||||||
|
else
|
||||||
|
os << "For the following request: " << *(r.request) << '\n' ;
|
||||||
|
|
||||||
|
vector<Result>::const_iterator res ;
|
||||||
|
for (res = r.results.begin() ; res != r.results.end() ; ++res)
|
||||||
|
os << *res << '\n' ;
|
||||||
|
|
||||||
|
return os ;
|
||||||
|
}
|
|
@ -0,0 +1,76 @@
|
||||||
|
#ifndef _OWLPS_POSITIONING_RESULTLIST_HH_
|
||||||
|
#define _OWLPS_POSITIONING_RESULTLIST_HH_
|
||||||
|
|
||||||
|
class Request ;
|
||||||
|
#include "result.hh"
|
||||||
|
|
||||||
|
#include <vector>
|
||||||
|
#include <ostream>
|
||||||
|
|
||||||
|
class ResultList
|
||||||
|
{
|
||||||
|
protected:
|
||||||
|
Request *request ;
|
||||||
|
std::vector<Result> results ;
|
||||||
|
|
||||||
|
public:
|
||||||
|
ResultList(const Request *_request = NULL,
|
||||||
|
const std::vector<Result> &_results = std::vector<Result>()):
|
||||||
|
request(const_cast<Request*>(_request)), results(_results) {}
|
||||||
|
ResultList(const ResultList &source):
|
||||||
|
request(source.request), results(source.results) {}
|
||||||
|
~ResultList(void) ;
|
||||||
|
|
||||||
|
/** @name Read accessors */
|
||||||
|
//@{
|
||||||
|
const Request* get_request(void) const ;
|
||||||
|
const std::vector<Result>& get_results(void) const ;
|
||||||
|
//@}
|
||||||
|
|
||||||
|
/** @name Write accessors */
|
||||||
|
//@{
|
||||||
|
void add(const Result &res) ;
|
||||||
|
//@}
|
||||||
|
|
||||||
|
/** @name Operators */
|
||||||
|
//@{
|
||||||
|
const ResultList& operator=(const ResultList &source) ;
|
||||||
|
bool operator==(const ResultList &source) const ;
|
||||||
|
bool operator!=(const ResultList &source) const ;
|
||||||
|
//@}
|
||||||
|
|
||||||
|
/// Displays a ResultList
|
||||||
|
friend std::ostream& operator<<(std::ostream &os,
|
||||||
|
const ResultList &r) ;
|
||||||
|
} ;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/* *** Read accessors *** */
|
||||||
|
|
||||||
|
|
||||||
|
inline const Request* ResultList::get_request() const
|
||||||
|
{
|
||||||
|
return request ;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
inline const std::vector<Result>& ResultList::get_results(void) const
|
||||||
|
{
|
||||||
|
return results ;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/* *** Write accessors *** */
|
||||||
|
|
||||||
|
|
||||||
|
inline void ResultList::add(const Result &res)
|
||||||
|
{
|
||||||
|
results.push_back(res) ;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#endif // _OWLPS_POSITIONING_RESULTLIST_HH_
|
Loading…
Reference in New Issue