/* linkedList.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 LINKEDLIST_H #define LINKEDLIST_H #include "linkedListVoid.h" namespace epics { namespace pvData { template class LinkedList; template class LinkedListNode : private LinkedListVoidNode { public: LinkedListNode(T *object) : LinkedListVoidNode(object){} ~LinkedListNode() {} T *getObject() { return (T *)LinkedListVoidNode::getObject();} bool isOnList() {return LinkedListVoidNode::isOnList();} }; template class LinkedList : private LinkedListVoid { public: LinkedList() : LinkedListVoid() {} ~LinkedList() {} int getLength() {return LinkedListVoid::getLength();} void addTail(LinkedListNode *listNode) { LinkedListVoid::addTail((LinkedListVoidNode *)listNode); } void addHead(LinkedListNode *listNode) { LinkedListVoid::addHead((LinkedListVoidNode *)listNode); } void insertAfter(LinkedListNode *listNode, LinkedListNode *addNode) { LinkedListVoid::insertAfter( (LinkedListVoidNode *)listNode,(LinkedListVoidNode *)addNode); } void insertBefore(LinkedListNode *listNode, LinkedListNode *addNode) { LinkedListVoid::insertBefore((LinkedListVoidNode *)listNode, (LinkedListVoidNode *)addNode); } LinkedListNode *removeTail(){ return (LinkedListNode*)LinkedListVoid::removeTail(); } LinkedListNode *removeHead(){ return (LinkedListNode*)LinkedListVoid::removeHead(); } void remove(LinkedListNode *listNode){ LinkedListVoid::remove((LinkedListVoidNode *)listNode); } void remove(T *object){ LinkedListVoid::remove(object); } LinkedListNode *getHead(){ return (LinkedListNode*)LinkedListVoid::getHead(); } LinkedListNode *getTail(){ return (LinkedListNode*)LinkedListVoid::getTail(); } LinkedListNode *getNext(LinkedListNode *listNode){ return (LinkedListNode*)LinkedListVoid::getNext( (LinkedListVoidNode *)listNode); } LinkedListNode *getPrev(LinkedListNode *listNode){ return (LinkedListNode*)LinkedListVoid::getPrev( (LinkedListVoidNode *)listNode); } bool isEmpty() { return LinkedListVoid::isEmpty();} bool contains(T *object) { return LinkedListVoid::contains(object);} }; }} #endif /* LINKEDLIST_H */