Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

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...)
Destructor deletes all objects in queue and frees resources. Alternatively call EmptyQueue() and SetMaxObject(0) to free resources without calling destructor.

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

NameDescription
~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
a2a32226aa6b5dc2dee0aed3f18ce0da0
a2a32226aa6b5dc2dee0aed3f18ce0da0

Geo::GeoQueue< T >::~GeoQueue

...

public: ~GeoQueue()

...

Destructor deletes all objects in the queue and then releases any memory allocated on init.


Anchor
abd97f99e45fcf232aa0ad0c34cdb36cc
abd97f99e45fcf232aa0ad0c34cdb36cc

void Geo::GeoQueue< T >::EmptyQueue

...

public: void EmptyQueue()

...

Empty the queue.


Anchor
a4199df5d2b9e444aa36a78b11439c856
a4199df5d2b9e444aa36a78b11439c856

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
a48079ac8c446f83e76fbeb9accf037c1
a48079ac8c446f83e76fbeb9accf037c1

Geo::GeoQueue< T >::GeoQueue

...

public: GeoQueue()

...

Constructor just clears the pointers, queue must have a size specified before it can be used.


Anchor
a05925a6593d0f1a88ff1282f1200260c
a05925a6593d0f1a88ff1282f1200260c

T* Geo::GeoQueue< T >::GetArrayPointer

...

protected: T * GetArrayPointer()

...

Allows access to the start of the object array.


Anchor
a66ea237e87ce72bfe307fc01a897a4a1
a66ea237e87ce72bfe307fc01a897a4a1

bool Geo::GeoQueue< T >::Peek

...

public: bool Peek
(
    T & object
) const

...

Read the oldest object in the queue but don't remover it.


Anchor
a8404cea1fa69612b05c491865ccb8974
a8404cea1fa69612b05c491865ccb8974

bool Geo::GeoQueue< T >::Read

...

public: bool Read
(
    T & object
)

...

Read the oldest object in the queue, removing it from the queue.


Anchor
a8b7dbefe4989739042a2f648ebbe7b41
a8b7dbefe4989739042a2f648ebbe7b41

bool Geo::GeoQueue< T >::ReSetMaxObjects

...

protected: bool ReSetMaxObjects
(
    Geo::u32 newMaxObjects
)

...

Implements the actual moving of data used in SetMaxObjects.


Anchor
a59c2cdd5a4f87eb9d5a5391ea458dd8b
a59c2cdd5a4f87eb9d5a5391ea458dd8b

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
a4d82deac2a1f676e3e3b16790ca78982
a4d82deac2a1f676e3e3b16790ca78982

bool Geo::GeoQueue< T >::Write

...

public: bool Write
(
    const T & object
)

...

Write an object to the queue.