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