/* queue.h */ /** * Copyright - See the COPYRIGHT that is included with this distribution. * EPICS pvDataCPP is distributed subject to a Software License Agreement found * in file LICENSE that is included with this distribution. */ #ifndef QUEUE_H #define QUEUE_H #include namespace epics { namespace pvData { template class Queue; template class QueueElement; template class QueueElement : private QueueElementVoid { public: T *getObject() { return static_cast(QueueElementVoid::getObject());} protected: QueueElement(T *object) : QueueElementVoid(static_cast(object)){} ~QueueElement() {} friend class Queue; }; template class Queue : private QueueVoid { public: Queue(T *array[],int number) : QueueVoid((ObjectPtr*)array,number) //: QueueVoid(static_cast(array),number) {} ~Queue() {} void clear() {QueueVoid::clear();} int getNumberFree() {return QueueVoid::getNumberFree();} int capacity() {return QueueVoid::capacity();} QueueElement *getFree() { return static_cast *>(QueueVoid::getFree());} void setUsed(QueueElement *queueElement) { QueueVoid::setUsed(static_cast(queueElement));} QueueElement *getUsed() { return static_cast *>(QueueVoid::getUsed());} void releaseUsed(QueueElement *queueElement) { QueueVoid::releaseUsed(static_cast(queueElement));} }; }} #endif /* QUEUE_H */