/****************************************************************************** * * $Id$ * * * Copyright (C) 1997-2015 by Dimitri van Heesch. * * Permission to use, copy, modify, and distribute this software and its * documentation under the terms of the GNU General Public License is hereby * granted. No representations are made about the suitability of this software * for any purpose. It is provided "as is" without express or implied warranty. * See the GNU General Public License for more details. * */ #ifndef BASEITERATOR_H #define BASEITERATOR_H #include #include template class BaseIterator : public Intf, public QListIterator { public: BaseIterator(const QList &list) : QListIterator(list) {} virtual ~BaseIterator() {} virtual ElemIntf *toFirst() { return QListIterator::toFirst(); } virtual ElemIntf *toLast() { return QListIterator::toLast(); } virtual ElemIntf *toNext() { return QListIterator::operator++(); } virtual ElemIntf *toPrev() { return QListIterator::operator--(); } virtual ElemIntf *current() const { return QListIterator::current(); } virtual void release() { delete this; } }; template class BaseIteratorVia : public Intf, public QListIterator { public: BaseIteratorVia(const QList &list) : QListIterator(list) {} virtual ~BaseIteratorVia() {} virtual ElemIntf *toFirst() { return static_cast(QListIterator::toFirst()); } virtual ElemIntf *toLast() { return static_cast(QListIterator::toLast()); } virtual ElemIntf *toNext() { return static_cast(QListIterator::operator++()); } virtual ElemIntf *toPrev() { return static_cast(QListIterator::operator--()); } virtual ElemIntf *current() const { return static_cast(QListIterator::current()); } virtual void release() { delete this; } }; #endif