#ifndef _OWLPS_POSITIONING_REFERENCEPOINT_HH_ #define _OWLPS_POSITIONING_REFERENCEPOINT_HH_ class CalibrationMeasurement ; #include "point3d.hh" #include #include /// Represents a reference point in 3-D space class ReferencePoint: public Point3D { protected: /// List of CalibrationMeasurement associated with the ReferencePoint /** Note that \em measurements is a \em pointer list: only pointers are stored, not values. */ std::vector measurements ; public: /// 3-float constructor or default constructor ReferencePoint(const float &_x = 0, const float &_y = 0, const float &_z = 0): Point3D(_x, _y, _z) {} /// Constructs a ReferencePoint from a Point3D ReferencePoint(const Point3D &p): Point3D(p) {} /// Copy constructor ReferencePoint(const ReferencePoint &rp): Point3D(rp), measurements(rp.measurements) {} ~ReferencePoint(void) ; ///< Destructor /** @name Read accessors */ //@{ /// #measurements read accessor const std::vector& get_measurements(void) const ; //@} /** @name Write accessors */ //@{ /// Adds a Measurement to the \link #measurements measurement list\endlink void add_measurement(const CalibrationMeasurement *cm) ; // float get_ss_square_distance(const vector &m) const ; // bool get_power_for_ap(const string &ap_mac, float *p) const ; //@} /** @name Operators */ //@{ const ReferencePoint& operator=(const ReferencePoint &rp) ; bool operator==(const ReferencePoint &rp) const ; bool operator!=(const ReferencePoint &rp) const ; //@} /// Displays a ReferencePoint friend std::ostream &operator<<(std::ostream &os, const ReferencePoint &rp) ; } ; /* *** Read accessors *** */ inline const std::vector& ReferencePoint::get_measurements() const { return measurements ; } /* *** Write accessors *** */ /** * @param cm A pointer to the CalibrationMeasurement to add. If it is * NULL, nothing will be done. * The memory pointed by this pointer must not be deallocated before * the ReferencePoint destruction (do \em not pass a pointer to a local * variable!). */ inline void ReferencePoint::add_measurement(const CalibrationMeasurement *cm) { if (cm != NULL) measurements.push_back((CalibrationMeasurement *) cm) ; } /* *** Operators *** */ inline bool ReferencePoint::operator!=(const ReferencePoint &rp) const { return !(*this == rp) ; } #endif // _OWLPS_POSITIONING_REFERENCEPOINT_HH_