ISLEman
qinternallist.h
1 /****************************************************************************
2 **
3 **
4 ** Definition of QList template/macro class
5 **
6 ** Created : 920701
7 **
8 ** Copyright (C) 1992-2000 Trolltech AS. All rights reserved.
9 **
10 ** This file is part of the tools module of the Qt GUI Toolkit.
11 **
12 ** This file may be distributed under the terms of the Q Public License
13 ** as defined by Trolltech AS of Norway and appearing in the file
14 ** LICENSE.QPL included in the packaging of this file.
15 **
16 ** This file may be distributed and/or modified under the terms of the
17 ** GNU General Public License version 2 as published by the Free Software
18 ** Foundation and appearing in the file LICENSE.GPL included in the
19 ** packaging of this file.
20 **
21 ** Licensees holding valid Qt Enterprise Edition or Qt Professional Edition
22 ** licenses may use this file in accordance with the Qt Commercial License
23 ** Agreement provided with the Software.
24 **
25 ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
26 ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
27 **
28 ** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for
29 ** information about Qt Commercial License Agreements.
30 ** See http://www.trolltech.com/qpl/ for QPL licensing information.
31 ** See http://www.trolltech.com/gpl/ for GPL licensing information.
32 **
33 ** Contact info@trolltech.com if any conditions of this licensing are
34 ** not clear to you.
35 **
36 **********************************************************************/
37 
38 #ifndef QINTERNALLIST_H
39 #define QINTERNALLIST_H
40 
41 #ifndef QT_H
42 #include "qglist.h"
43 #endif // QT_H
44 
45 
46 template<class type> class Q_EXPORT QInternalList : public QGList
47 {
48 public:
49  QInternalList() {}
50  QInternalList( const QInternalList<type> &l ) : QGList(l) {}
51  ~QInternalList() { clear(); }
52  QInternalList<type> &operator=(const QInternalList<type> &l)
53  { return (QInternalList<type>&)QGList::operator=(l); }
54  bool operator==( const QInternalList<type> &list ) const
55  { return QGList::operator==( list ); }
56  uint count() const { return QGList::count(); }
57  bool isEmpty() const { return QGList::count() == 0; }
58  bool insert( uint i, const type *d){ return QGList::insertAt(i,(QCollection::Item)d); }
59  void inSort( const type *d ) { QGList::inSort((QCollection::Item)d); }
60  void prepend( const type *d ) { QGList::insertAt(0,(QCollection::Item)d); }
61  void append( const type *d ) { QGList::append((QCollection::Item)d); }
62  bool remove( uint i ) { return QGList::removeAt(i); }
63  bool remove() { return QGList::remove((QCollection::Item)0); }
64  bool remove( const type *d ) { return QGList::remove((QCollection::Item)d); }
65  bool removeRef( const type *d ) { return QGList::removeRef((QCollection::Item)d); }
66  void removeNode( QLNode *n ) { QGList::removeNode(n); }
67  bool removeFirst() { return QGList::removeFirst(); }
68  bool removeLast() { return QGList::removeLast(); }
69  type *take( uint i ) { return (type *)QGList::takeAt(i); }
70  type *take() { return (type *)QGList::take(); }
71  type *takeNode( QLNode *n ) { return (type *)QGList::takeNode(n); }
72  void clear() { QGList::clear(); }
73  void sort() { QGList::sort(); }
74  int find( const type *d ) { return QGList::find((QCollection::Item)d); }
75  int findNext( const type *d ) { return QGList::find((QCollection::Item)d,FALSE); }
76  int findRef( const type *d ) { return QGList::findRef((QCollection::Item)d); }
77  int findNextRef( const type *d ){ return QGList::findRef((QCollection::Item)d,FALSE);}
78  uint contains( const type *d ) const { return QGList::contains((QCollection::Item)d); }
79  uint containsRef( const type *d ) const
80  { return QGList::containsRef((QCollection::Item)d); }
81  type *at( uint i ) { return (type *)QGList::at(i); }
82  int at() const { return QGList::at(); }
83  type *current() const { return (type *)QGList::get(); }
84  QLNode *currentNode() const { return QGList::currentNode(); }
85  type *getFirst() const { return (type *)QGList::cfirst(); }
86  type *getLast() const { return (type *)QGList::clast(); }
87  type *first() { return (type *)QGList::first(); }
88  type *last() { return (type *)QGList::last(); }
89  type *next() { return (type *)QGList::next(); }
90  type *prev() { return (type *)QGList::prev(); }
91  void toVector( QGVector *vec )const{ QGList::toVector(vec); }
92 private:
93  void deleteItem( QCollection::Item d );
94 };
95 
96 #if defined(Q_DELETING_VOID_UNDEFINED)
97 template<> inline void QInternalList<void>::deleteItem( QCollection::Item )
98 {
99 }
100 #endif
101 
102 template<class type> inline void QInternalList<type>::deleteItem( QCollection::Item d )
103 {
104  if ( del_item ) delete (type *)d;
105 }
106 
107 
108 template<class type> class Q_EXPORT QInternalListIterator : public QGListIterator
109 {
110 public:
113  uint count() const { return list->count(); }
114  bool isEmpty() const { return list->count() == 0; }
115  bool atFirst() const { return QGListIterator::atFirst(); }
116  bool atLast() const { return QGListIterator::atLast(); }
117  type *toFirst() { return (type *)QGListIterator::toFirst(); }
118  type *toLast() { return (type *)QGListIterator::toLast(); }
119  operator type *() const { return (type *)QGListIterator::get(); }
120  type *operator*() { return (type *)QGListIterator::get(); }
121 
122  // No good, since QList<char> (ie. QStrList fails...
123  //
124  // MSVC++ gives warning
125  // Sunpro C++ 4.1 gives error
126  // type *operator->() { return (type *)QGListIterator::get(); }
127 
128  type *current() const { return (type *)QGListIterator::get(); }
129  type *operator()() { return (type *)QGListIterator::operator()();}
130  type *operator++() { return (type *)QGListIterator::operator++(); }
131  type *operator+=(uint j) { return (type *)QGListIterator::operator+=(j);}
132  type *operator--() { return (type *)QGListIterator::operator--(); }
133  type *operator-=(uint j) { return (type *)QGListIterator::operator-=(j);}
135  { QGListIterator::operator=(it); return *this; }
136 };
137 
138 
139 #endif // QINTERNALLIST_H
Definition: qinternallist.h:108
void clear()
Definition: qinternallist.h:72
bool operator==(const QGList &) const
Definition: qglist.cpp:242
uint count() const
Definition: qinternallist.h:56
The QGList class is an internal class for implementing Qt collection classes.
Definition: qglist.h:68
The QGVector class is an internal class for implementing Qt collection classes.
Definition: qgvector.h:46
uint count() const
Definition: qglist.h:150
void sort()
Definition: qglist.cpp:934
Definition: qinternallist.h:46
virtual void deleteItem(Item)
Definition: qcollection.cpp:174
void clear()
Definition: qglist.cpp:652
The QLNode class is an internal class for the QList template collection.
Definition: qglist.h:50
The QGListIterator class is an internal class for implementing QListIterator.
Definition: qglist.h:212