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:
    // Remove item at front of queue.
    T &GetItem() { return *(T *)QueueMem::GetItem(); }

    // Construct queue using 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(); }
};