diff --git a/src/mobility/position-allocator.cc b/src/mobility/position-allocator.cc index 98f8214ed..cdd093d50 100644 --- a/src/mobility/position-allocator.cc +++ b/src/mobility/position-allocator.cc @@ -46,6 +46,33 @@ PositionAllocator::PositionAllocator () PositionAllocator::~PositionAllocator () {} +NS_OBJECT_ENSURE_REGISTERED (ListPositionAllocator); + +TypeId +ListPositionAllocator::GetTypeId (void) +{ + static TypeId tid = TypeId ("ListPositionAllocator") + .SetParent () + .AddConstructor () + ; + return tid; +} +ListPositionAllocator::ListPositionAllocator () +{} +void +ListPositionAllocator::Add (Vector v) +{ + m_positions.push_back (v); + m_current = m_positions.begin (); +} +Vector +ListPositionAllocator::GetNext (void) const +{ + Vector v = *m_current; + m_current++; + return v; +} + TypeId GridPositionAllocator::GetTypeId (void) { diff --git a/src/mobility/position-allocator.h b/src/mobility/position-allocator.h index 483617ccf..19e301a7e 100644 --- a/src/mobility/position-allocator.h +++ b/src/mobility/position-allocator.h @@ -43,7 +43,19 @@ public: virtual Vector GetNext (void) const = 0; }; -class GridPositionAllocator : public Object +class ListPositionAllocator : public PositionAllocator +{ +public: + static TypeId GetTypeId (void); + ListPositionAllocator (); + void Add (Vector v); + virtual Vector GetNext (void) const; +private: + std::vector m_positions; + mutable std::vector::const_iterator m_current; +}; + +class GridPositionAllocator : public PositionAllocator { public: static TypeId GetTypeId (void);