add ListPositionAllocator

This commit is contained in:
Mathieu Lacage
2008-03-01 05:41:17 +01:00
parent b7ab54776d
commit a0f5714f8a
2 changed files with 40 additions and 1 deletions

View File

@@ -46,6 +46,33 @@ PositionAllocator::PositionAllocator ()
PositionAllocator::~PositionAllocator ()
{}
NS_OBJECT_ENSURE_REGISTERED (ListPositionAllocator);
TypeId
ListPositionAllocator::GetTypeId (void)
{
static TypeId tid = TypeId ("ListPositionAllocator")
.SetParent<PositionAllocator> ()
.AddConstructor<ListPositionAllocator> ()
;
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)
{

View File

@@ -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<Vector> m_positions;
mutable std::vector<Vector>::const_iterator m_current;
};
class GridPositionAllocator : public PositionAllocator
{
public:
static TypeId GetTypeId (void);