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:
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. |
Geo::GeoQueue< T >::~GeoQueue
public: ~GeoQueue()
Destructor deletes all objects in the queue and then releases any memory allocated on init.
void Geo::GeoQueue< T >::EmptyQueue
public: void EmptyQueue()
Empty the queue.
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.
Geo::GeoQueue< T >::GeoQueue
public: GeoQueue()
Constructor just clears the pointers, queue must have a size specified before it can be used.
T* Geo::GeoQueue< T >::GetArrayPointer
protected: T * GetArrayPointer()
Allows access to the start of the object array.
bool Geo::GeoQueue< T >::Peek
public: bool Peek
(
T & object
) const
Read the oldest object in the queue but don't remover it.
bool Geo::GeoQueue< T >::Read
public: bool Read
(
T & object
)
Read the oldest object in the queue, removing it from the queue.
bool Geo::GeoQueue< T >::ReSetMaxObjects
protected: bool ReSetMaxObjects
(
Geo::u32 newMaxObjects
)
Implements the actual moving of data used in SetMaxObjects.
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.
bool Geo::GeoQueue< T >::Write
public: bool Write
(
const T & object
)
Write an object to the queue.