Queue
// Dynamically sized first-in first-out queue using po2b memory. Also see class QueueMem in
// Memory section for additional functions used by this template.
template<typename T> class Queue : public QueueMem
{
public:
// Get item at front of queue.
T &operator () () const { return *(T *)GetItem(); }
// Construct queue. Use estimated maximum items for [incr].
Queue(uint incr = 8) : QueueMem((uint)sizeof(T), incr, Destruct) {}
// Destructor.
~Queue() {}
private:
static void Destruct(void *ptr) { ((T *)ptr)->~T(); }
};