Chameleon

Chameleon Svn Source Tree

Root/branches/xZenu/src/util/doxygen/qtools/qglist.h

Source at commit 1406 created 12 years 10 months ago.
By meklort, Revert drivers.c so that kexts are only loaded when OSBundleRequired is set and that value is not safe mode. Added some comments about it too.
1/****************************************************************************
2**
3**
4** Definition of QGList and QGListIterator classes
5**
6** Created : 920624
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 QGLIST_H
39#define QGLIST_H
40
41#ifndef QT_H
42#include "qcollection.h"
43#endif // QT_H
44
45
46/*****************************************************************************
47 QLNode class (internal doubly linked list node)
48 *****************************************************************************/
49
50class Q_EXPORT QLNode
51{
52friend class QGList;
53friend class QGListIterator;
54public:
55 QCollection::Item getData(){ return data; }
56private:
57 QCollection::Item data;
58 QLNode *prev;
59 QLNode *next;
60 QLNode( QCollection::Item d ) { data = d; }
61};
62
63
64/*****************************************************************************
65 QGList class
66 *****************************************************************************/
67
68class Q_EXPORT QGList : public QCollection// doubly linked generic list
69{
70friend class QGListIterator;
71friend class QGVector;// needed by QGVector::toList
72public:
73 uint count() const;// return number of nodes
74
75#ifndef QT_NO_DATASTREAM
76 QDataStream &read( QDataStream & );// read list from stream
77 QDataStream &write( QDataStream & ) const;// write list to stream
78#endif
79protected:
80 QGList();// create empty list
81 QGList( const QGList & );// make copy of other list
82 virtual ~QGList();
83
84 QGList &operator=( const QGList & );// assign from other list
85 bool operator==( const QGList& ) const;
86
87 void inSort( QCollection::Item );// add item sorted in list
88 void append( QCollection::Item );// add item at end of list
89 bool insertAt( uint index, QCollection::Item ); // add item at i'th position
90 void relinkNode( QLNode * );// relink as first item
91 bool removeNode( QLNode * );// remove node
92 bool remove( QCollection::Item = 0 );// remove item (0=current)
93 bool removeRef( QCollection::Item = 0 );// remove item (0=current)
94 bool removeFirst();// remove first item
95 bool removeLast();// remove last item
96 bool removeAt( uint index );// remove item at i'th position
97 QCollection::Item takeNode( QLNode * );// take out node
98 QCollection::Item take();// take out current item
99 QCollection::Item takeAt( uint index );// take out item at i'th pos
100 QCollection::Item takeFirst();// take out first item
101 QCollection::Item takeLast();// take out last item
102
103 void sort(); // sort all items;
104 void clear();// remove all items
105
106 int findRef( QCollection::Item, bool = TRUE ); // find exact item in list
107 int find( QCollection::Item, bool = TRUE ); // find equal item in list
108
109 uint containsRef( QCollection::Item ) const; // get number of exact matches
110 uint contains( QCollection::Item )const;// get number of equal matches
111
112 QCollection::Item at( uint index );// access item at i'th pos
113 int at() const;// get current index
114 QLNode *currentNode() const;// get current node
115
116 QCollection::Item get() const;// get current item
117
118 QCollection::Item cfirst() const;// get ptr to first list item
119 QCollection::Item clast() const;// get ptr to last list item
120 QCollection::Item first();// set first item in list curr
121 QCollection::Item last();// set last item in list curr
122 QCollection::Item next();// set next item in list curr
123 QCollection::Item prev();// set prev item in list curr
124
125 void toVector( QGVector * ) const;// put items in vector
126
127 virtual int compareItems( QCollection::Item, QCollection::Item );
128
129#ifndef QT_NO_DATASTREAM
130 virtual QDataStream &read( QDataStream &, QCollection::Item & );
131 virtual QDataStream &write( QDataStream &, QCollection::Item ) const;
132#endif
133private:
134 void prepend( QCollection::Item ); // add item at start of list
135
136 void heapSortPushDown( QCollection::Item* heap, int first, int last );
137
138 QLNode *firstNode;// first node
139 QLNode *lastNode;// last node
140 QLNode *curNode;// current node
141 int curIndex;// current index
142 uint numNodes;// number of nodes
143 QGList *iterators;// list of iterators
144
145 QLNode *locate( uint );// get node at i'th pos
146 QLNode *unlink();// unlink node
147};
148
149
150inline uint QGList::count() const
151{
152 return numNodes;
153}
154
155inline bool QGList::removeFirst()
156{
157 first();
158 return remove();
159}
160
161inline bool QGList::removeLast()
162{
163 last();
164 return remove();
165}
166
167inline int QGList::at() const
168{
169 return curIndex;
170}
171
172inline QCollection::Item QGList::at( uint index )
173{
174 QLNode *n = locate( index );
175 return n ? n->data : 0;
176}
177
178inline QLNode *QGList::currentNode() const
179{
180 return curNode;
181}
182
183inline QCollection::Item QGList::get() const
184{
185 return curNode ? curNode->data : 0;
186}
187
188inline QCollection::Item QGList::cfirst() const
189{
190 return firstNode ? firstNode->data : 0;
191}
192
193inline QCollection::Item QGList::clast() const
194{
195 return lastNode ? lastNode->data : 0;
196}
197
198
199/*****************************************************************************
200 QGList stream functions
201 *****************************************************************************/
202
203#ifndef QT_NO_DATASTREAM
204Q_EXPORT QDataStream &operator>>( QDataStream &, QGList & );
205Q_EXPORT QDataStream &operator<<( QDataStream &, const QGList & );
206#endif
207
208/*****************************************************************************
209 QGListIterator class
210 *****************************************************************************/
211
212class Q_EXPORT QGListIterator// QGList iterator
213{
214friend class QGList;
215protected:
216 QGListIterator( const QGList & );
217 QGListIterator( const QGListIterator & );
218 QGListIterator &operator=( const QGListIterator & );
219 ~QGListIterator();
220
221 bool atFirst() const;// test if at first item
222 bool atLast() const;// test if at last item
223 QCollection::Item toFirst();// move to first item
224 QCollection::Item toLast();// move to last item
225
226 QCollection::Item get() const;// get current item
227 QCollection::Item operator()();// get current and move to next
228 QCollection::Item operator++();// move to next item (prefix)
229 QCollection::Item operator+=(uint);// move n positions forward
230 QCollection::Item operator--();// move to prev item (prefix)
231 QCollection::Item operator-=(uint);// move n positions backward
232
233protected:
234 QGList *list;// reference to list
235
236private:
237 QLNode *curNode;// current node in list
238};
239
240
241inline bool QGListIterator::atFirst() const
242{
243 return curNode == list->firstNode;
244}
245
246inline bool QGListIterator::atLast() const
247{
248 return curNode == list->lastNode;
249}
250
251inline QCollection::Item QGListIterator::get() const
252{
253 return curNode ? curNode->data : 0;
254}
255
256
257#endif// QGLIST_H
258

Archive Download this file

Revision: 1406