template<typename T>
class Geo::GeoQueue
Simple FIFO queue.
Stores a static array of objects and a read and write cursor pair. Uses the managed object's copy constructor.
To use construct one and then call SetMaxObjects to set the number of objects the queue can deal with. Queue setup:
Code Block |
---|
GeoQueue MyQueue;
MyQueue.SetMaxObjects(...size require...)
|
Queue Operation: Read, Write and Peek are used to access the queue in standard FIFO fashion. To walk all the items in the queue use the GeoQueueEnumCallbackInterface with the Walk function.
Restrictions: Types used to instantiate the queue template must have a copy constructor. It is intended that the types managed are simple with a shallow copy constructor and simple destructor.
Cost: All functions are O(1) except SetMaxObjects, EmptyQueue and Walk which are O(num objects in queue). SetMaxObjects is the only function with any significant complexity.
Functions
Name | Description |
---|---|
~GeoQueue() | Destructor deletes all objects in the queue and then releases any memory allocated on init. |
EmptyQueue() | Empty the queue. |
Enumerate(GeoQueueEnumInterface< T > *, void *) | Walk all of the objects in the queue and call the callback (oldest first) Returns false if early termination requested by callback. |
GeoQueue() | Constructor just clears the pointers, queue must have a size specified before it can be used. |
GetArrayPointer() | Allows access to the start of the object array. |
Peek(T &) | Read the oldest object in the queue but don't remover it. |
Read(T &) | Read the oldest object in the queue, removing it from the queue. |
ReSetMaxObjects(Geo::u32) | Implements the actual moving of data used in SetMaxObjects. |
SetMaxObjects(Geo::u32) | Sets the maximum number of objects to the specified value, retaining any objects already in the queue. |
Write(const T &) | Write an object to the queue. |
Anchor | ||||
---|---|---|---|---|
|
Geo::GeoQueue< T >::~GeoQueue
...
public: ~GeoQueue()
...
Destructor deletes all objects in the queue and then releases any memory allocated on init.
Anchor | ||||
---|---|---|---|---|
|
void Geo::GeoQueue< T >::EmptyQueue
...
public: void EmptyQueue()
...
Empty the queue.
Anchor | ||||
---|---|---|---|---|
|
bool Geo::GeoQueue< T >::Enumerate
...
public: bool Enumerate
(
GeoQueueEnumInterface< T > * callback,
void * context
)
...
Walk all of the objects in the queue and call the callback (oldest first) Returns false if early termination requested by callback.
Anchor | ||||
---|---|---|---|---|
|
Geo::GeoQueue< T >::GeoQueue
...
public: GeoQueue()
...
Constructor just clears the pointers, queue must have a size specified before it can be used.
Anchor | ||||
---|---|---|---|---|
|
T* Geo::GeoQueue< T >::GetArrayPointer
...
protected: T * GetArrayPointer()
...
Allows access to the start of the object array.
Anchor | ||||
---|---|---|---|---|
|
bool Geo::GeoQueue< T >::Peek
...
public: bool Peek
(
T & object
) const
...
Read the oldest object in the queue but don't remover it.
Anchor | ||||
---|---|---|---|---|
|
bool Geo::GeoQueue< T >::Read
...
public: bool Read
(
T & object
)
...
Read the oldest object in the queue, removing it from the queue.
Anchor | ||||
---|---|---|---|---|
|
bool Geo::GeoQueue< T >::ReSetMaxObjects
...
protected: bool ReSetMaxObjects
(
Geo::u32 newMaxObjects
)
...
Implements the actual moving of data used in SetMaxObjects.
Anchor | ||||
---|---|---|---|---|
|
bool Geo::GeoQueue< T >::SetMaxObjects
...
public: bool SetMaxObjects
(
Geo::u32 newMaxObjects
)
...
Sets the maximum number of objects to the specified value, retaining any objects already in the queue.
Max objects of zero means free memory. The new max objects must be larger than the number of objects in the queue.
Anchor | ||||
---|---|---|---|---|
|
bool Geo::GeoQueue< T >::Write
...
public: bool Write
(
const T & object
)
...
Write an object to the queue.