diff --git a/src/node/position.cc b/src/node/position.cc index db7db979e..f60ee67a2 100644 --- a/src/node/position.cc +++ b/src/node/position.cc @@ -55,6 +55,41 @@ Position::GetZ (void) const return z; } +void +Position::Set (double x, double y, double z) +{ + DoSet (x, y, z); +} +void +Position::SetXY (double x, double y) +{ + double currentX, currentY, currentZ; + DoGet (currentX, currentY, currentZ); + DoSet (x, y, currentZ); +} +void +Position::SetX (double x) +{ + double currentX, currentY, currentZ; + DoGet (currentX, currentY, currentZ); + DoSet (x, currentY, currentZ); +} +void +Position::SetY (double y) +{ + double currentX, currentY, currentZ; + DoGet (currentX, currentY, currentZ); + DoSet (currentX, y, currentZ); +} +void +Position::SetZ (double z) +{ + double currentX, currentY, currentZ; + DoGet (currentX, currentY, currentZ); + DoSet (currentX, currentY, z); +} + + double Position::GetDistanceFrom (const Position &position) const { diff --git a/src/node/position.h b/src/node/position.h index cf4209c7f..dc1596744 100644 --- a/src/node/position.h +++ b/src/node/position.h @@ -66,6 +66,12 @@ public: * Unit is meters */ double GetZ (void) const; + + void Set (double x, double y, double z); + void SetXY (double x, double y); + void SetX (double x); + void SetY (double y); + void SetZ (double z); /** * \param position a reference to another position object instance * \returns the distance between the two objects. @@ -85,6 +91,7 @@ private: * Unit is meters */ virtual void DoGet (double &x, double &y, double &z) const = 0; + virtual void DoSet (double x, double y, double z) const = 0; }; }; // namespace ns3 diff --git a/src/node/static-position.cc b/src/node/static-position.cc index 0081780cd..9c6c06233 100644 --- a/src/node/static-position.cc +++ b/src/node/static-position.cc @@ -33,8 +33,19 @@ StaticPosition::StaticPosition (double x, double y, double z) StaticPosition::~StaticPosition () {} +void +StaticPosition::NotifyPositionChange (void) const +{} + void -StaticPosition::Set (double x, double y, double z) +StaticPosition::DoGet (double &x, double &y, double &z) const +{ + x = m_x; + y = m_y; + z = m_z; +} +void +StaticPosition::DoSet (double x, double y, double z) { bool mustNotify = false; if (x != m_x || @@ -51,59 +62,6 @@ StaticPosition::Set (double x, double y, double z) NotifyPositionChange (); } } -void -StaticPosition::SetX (double x) -{ - bool mustNotify = false; - if (x != m_x) - { - mustNotify = true; - } - m_x = x; - if (mustNotify) - { - NotifyPositionChange (); - } -} -void -StaticPosition::SetY (double y) -{ - bool mustNotify = false; - if (y != m_y) - { - mustNotify = true; - } - m_y = y; - if (mustNotify) - { - NotifyPositionChange (); - } -} -void -StaticPosition::SetZ (double z) -{ - bool mustNotify = false; - if (z != m_z) - { - mustNotify = true; - } - m_z = z; - if (mustNotify) - { - NotifyPositionChange (); - } -} -void -StaticPosition::NotifyPositionChange (void) const -{} - -void -StaticPosition::DoGet (double &x, double &y, double &z) const -{ - x = m_x; - y = m_y; - z = m_z; -} }; // namespace ns3 diff --git a/src/node/static-position.h b/src/node/static-position.h index 098101e2e..bf6ee6e78 100644 --- a/src/node/static-position.h +++ b/src/node/static-position.h @@ -49,33 +49,6 @@ public: StaticPosition (double x, double y, double z); virtual ~StaticPosition (); - /** - * \param x x coordinate - * \param y y coordinate - * \param z z coordinate - * - * Set all 3 coordinates at the same time. - * Unit is meters - */ - void Set (double x, double y, double z); - /** - * \param x x coordinate - * - * Set x coordinate. Unit is meters - */ - void SetX (double x); - /** - * \param y y coordinate - * - * Set y coordinate. Unit is meters - */ - void SetY (double y); - /** - * \param z z coordinate - * - * Set z coordinate. Unit is meters - */ - void SetZ (double z); private: /** * Subclasses must override this virtual method to be notified @@ -85,6 +58,7 @@ private: */ virtual void NotifyPositionChange (void) const; virtual void DoGet (double &x, double &y, double &z) const; + virtual void DoSet (double x, double y, double z); double m_x; double m_y; double m_z; diff --git a/src/node/static-speed-position.cc b/src/node/static-speed-position.cc index 78f8f9441..4fc077795 100644 --- a/src/node/static-speed-position.cc +++ b/src/node/static-speed-position.cc @@ -57,15 +57,6 @@ StaticSpeedPosition::StaticSpeedPosition (double x, double y, double z, StaticSpeedPosition::~StaticSpeedPosition () {} -void -StaticSpeedPosition::SetPosition (double x, double y, double z) -{ - Update (); - m_x = x; - m_y = y; - m_z = z; -} - void StaticSpeedPosition::SetSpeed (double dx, double dy, double dz) { @@ -87,12 +78,20 @@ StaticSpeedPosition::Update (void) const } void -StaticSpeedPosition::RealGet (double &x, double &y, double &z) const +StaticSpeedPosition::DoGet (double &x, double &y, double &z) const { Update (); x = m_x; y = m_y; z = m_z; } +void +StaticSpeedPosition::DoSet (double x, double y, double z) +{ + Update (); + m_x = x; + m_y = y; + m_z = z; +} }; // namespace ns3 diff --git a/src/node/static-speed-position.h b/src/node/static-speed-position.h index a54b94aa3..8771337f3 100644 --- a/src/node/static-speed-position.h +++ b/src/node/static-speed-position.h @@ -62,16 +62,6 @@ public: double dx, double dy, double dz); virtual ~StaticSpeedPosition (); - /** - * \param x x coordinate - * \param y y coordinate - * \param z z coordinate - * - * Set the current position now to (x,y,z) - * Unit is meters - */ - void SetPosition (double x, double y, double z); - /* * \param dx x coordinate speed * \param dy y coordinate speed @@ -82,7 +72,8 @@ public: */ void SetSpeed (double dx, double dy, double dz); private: - virtual void RealGet (double &x, double &y, double &z) const; + virtual void DoGet (double &x, double &y, double &z) const; + virtual void DoSet (double x, double y, double z); void Update (void) const; mutable double m_x; mutable double m_y;