source: trunk/src/qt3support/tools/q3ptrlist.qdoc@ 651

Last change on this file since 651 was 651, checked in by Dmitry A. Kuminov, 15 years ago

trunk: Merged in qt 4.6.2 sources.

  • Property svn:eol-style set to native
File size: 33.4 KB
Line 
1/****************************************************************************
2**
3** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
4** All rights reserved.
5** Contact: Nokia Corporation ([email protected])
6**
7** This file is part of the documentation of the Qt Toolkit.
8**
9** $QT_BEGIN_LICENSE:LGPL$
10** Commercial Usage
11** Licensees holding valid Qt Commercial licenses may use this file in
12** accordance with the Qt Commercial License Agreement provided with the
13** Software or, alternatively, in accordance with the terms contained in
14** a written agreement between you and Nokia.
15**
16** GNU Lesser General Public License Usage
17** Alternatively, this file may be used under the terms of the GNU Lesser
18** General Public License version 2.1 as published by the Free Software
19** Foundation and appearing in the file LICENSE.LGPL included in the
20** packaging of this file. Please review the following information to
21** ensure the GNU Lesser General Public License version 2.1 requirements
22** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
23**
24** In addition, as a special exception, Nokia gives you certain additional
25** rights. These rights are described in the Nokia Qt LGPL Exception
26** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
27**
28** GNU General Public License Usage
29** Alternatively, this file may be used under the terms of the GNU
30** General Public License version 3.0 as published by the Free Software
31** Foundation and appearing in the file LICENSE.GPL included in the
32** packaging of this file. Please review the following information to
33** ensure the GNU General Public License version 3.0 requirements will be
34** met: http://www.gnu.org/copyleft/gpl.html.
35**
36** If you have questions regarding the use of this file, please contact
37** Nokia at [email protected].
38** $QT_END_LICENSE$
39**
40****************************************************************************/
41
42/*!
43 \class Q3PtrList
44 \brief The Q3PtrList class is a template class that provides a list.
45 \compat
46
47 Q3ValueList is an STL-compatible alternative to this class.
48
49 Define a template instance Q3PtrList\<X\> to create a list that
50 operates on pointers to X (X*).
51
52 The list class is indexable and has a \link at() current
53 index\endlink and a \link current() current item\endlink. The
54 first item corresponds to index position 0. The current index is
55 -1 if the current item is 0.
56
57 Items are inserted with prepend(), insert() or append(). Items are
58 removed with remove(), removeRef(), removeFirst() and
59 removeLast(). You can search for an item using find(), findNext(),
60 findRef() or findNextRef(). The list can be sorted with sort().
61 You can count the number of occurrences of an item with contains()
62 or containsRef(). You can get a pointer to the current item with
63 current(), to an item at a particular index position in the list
64 with at() or to the first or last item with getFirst() and
65 getLast(). You can also iterate over the list with first(),
66 last(), next() and prev() (which all update current()). The list's
67 deletion property is set with setAutoDelete().
68
69 \target example
70 Example:
71 \snippet doc/src/snippets/code/doc_src_q3ptrlist.qdoc 0
72
73 The output is
74 \snippet doc/src/snippets/code/doc_src_q3ptrlist.qdoc 1
75
76 Q3PtrList has several member functions for traversing the list, but
77 using a Q3PtrListIterator can be more practical. Multiple list
78 iterators may traverse the same list, independently of each other
79 and of the current list item.
80
81 In the example above we make the call setAutoDelete(true).
82 Enabling auto-deletion tells the list to delete items that are
83 removed. The default is to not delete items when they are removed
84 but this would cause a memory leak in the example because there
85 are no other references to the list items.
86
87 When inserting an item into a list only the pointer is copied, not
88 the item itself, i.e. a shallow copy. It is possible to make the
89 list copy all of the item's data (deep copy) when an item is
90 inserted. insert(), inSort() and append() call the virtual
91 function Q3PtrCollection::newItem() for the item to be inserted.
92 Inherit a list and reimplement newItem() to have deep copies.
93
94 When removing an item from a list, the virtual function
95 Q3PtrCollection::deleteItem() is called. Q3PtrList's default
96 implementation is to delete the item if auto-deletion is enabled.
97
98 The virtual function compareItems() can be reimplemented to
99 compare two list items. This function is called from all list
100 functions that need to compare list items, for instance
101 remove(const type*). If you only want to deal with pointers, there
102 are functions that compare pointers instead, for instance
103 removeRef(const type*). These functions are somewhat faster than
104 those that call compareItems().
105
106 List items are stored as \c void* in an internal Q3LNode, which
107 also holds pointers to the next and previous list items. The
108 functions currentNode(), removeNode(), and takeNode() operate
109 directly on the Q3LNode, but they should be used with care. The
110 data component of the node is available through Q3LNode::getData().
111
112 The Q3StrList class is a list of \c char*.
113 It reimplements newItem(), deleteItem() and compareItems(). (But
114 see QStringList for a list of Unicode QStrings.)
115
116 \sa Q3PtrListIterator
117*/
118
119
120/*!
121 \fn Q3PtrList::Q3PtrList()
122
123 Constructs an empty list.
124*/
125
126/*!
127 \fn Q3PtrList::Q3PtrList( const Q3PtrList<type> &list )
128
129 Constructs a copy of \a list.
130
131 Each item in \a list is \link append() appended\endlink to this
132 list. Only the pointers are copied (shallow copy).
133*/
134
135/*!
136 \fn Q3PtrList::~Q3PtrList()
137
138 Removes all items from the list and destroys the list.
139
140 All list iterators that access this list will be reset.
141
142 \sa setAutoDelete()
143*/
144
145/*!
146 \fn Q3PtrList<type> &Q3PtrList::operator=(const Q3PtrList<type> &list)
147
148 Assigns \a list to this list and returns a reference to this list.
149
150 This list is first cleared and then each item in \a list is \link
151 append() appended\endlink to this list. Only the pointers are
152 copied (shallow copy) unless newItem() has been reimplemented.
153*/
154
155/*!
156 \fn bool Q3PtrList::operator==(const Q3PtrList<type> &list ) const
157
158 Compares this list with \a list. Returns TRUE if the lists contain
159 the same data; otherwise returns FALSE.
160*/
161
162/*!
163 \fn uint Q3PtrList::count() const
164
165 Returns the number of items in the list.
166
167 \sa isEmpty()
168*/
169
170/*!
171 \fn bool Q3PtrList::operator!=(const Q3PtrList<type> &list ) const
172
173 Compares this list with \a list. Returns TRUE if the lists contain
174 different data; otherwise returns FALSE.
175*/
176
177
178/*!
179 \fn void Q3PtrList::sort()
180
181 Sorts the list by the result of the virtual compareItems()
182 function.
183
184 The heap sort algorithm is used for sorting. It sorts n items with
185 O(n*log n) comparisons. This is the asymptotic optimal solution of
186 the sorting problem.
187
188 If the items in your list support operator<() and operator==(),
189 you might be better off with Q3SortedList because it implements the
190 compareItems() function for you using these two operators.
191
192 \sa inSort()
193*/
194
195/*!
196 \fn bool Q3PtrList::isEmpty() const
197
198 Returns TRUE if the list is empty; otherwise returns FALSE.
199
200 \sa count()
201*/
202
203/*!
204 \fn bool Q3PtrList::insert( uint index, const type *item )
205
206 Inserts the \a item at position \a index in the list.
207
208 Returns TRUE if successful, i.e. if \a index is in range;
209 otherwise returns FALSE. The valid range is 0 to count()
210 (inclusively). The item is appended if \a index == count().
211
212 The inserted item becomes the current list item.
213
214 \a item must not be 0.
215
216 \sa append(), current(), replace()
217*/
218
219/*!
220 \fn bool Q3PtrList::replace( uint index, const type *item )
221
222 Replaces the item at position \a index with the new \a item.
223
224 Returns TRUE if successful, i.e. \a index is in the range 0 to
225 count()-1.
226
227 \sa append(), current(), insert()
228*/
229
230/*!
231 \fn void Q3PtrList::inSort( const type *item )
232
233 Inserts the \a item at its sorted position in the list.
234
235 The sort order depends on the virtual compareItems() function. All
236 items must be inserted with inSort() to maintain the sorting
237 order.
238
239 The inserted item becomes the current list item.
240
241 \a item must not be 0.
242
243 \warning Using inSort() is slow. An alternative, especially if you
244 have lots of items, is to simply append() or insert() them and
245 then use sort(). inSort() takes up to O(n) compares. That means
246 inserting n items in your list will need O(n^2) compares whereas
247 sort() only needs O(n*log n) for the same task. So use inSort()
248 only if you already have a presorted list and want to insert just
249 a few additional items.
250
251 \sa insert(), compareItems(), current(), sort()
252*/
253
254/*!
255 \fn void Q3PtrList::append( const type *item )
256
257 Inserts the \a item at the end of the list.
258
259 The inserted item becomes the current list item. This is
260 equivalent to \c{insert( count(), item )}.
261
262 \a item must not be 0.
263
264 \sa insert(), current(), prepend()
265*/
266
267/*!
268 \fn void Q3PtrList::prepend( const type *item )
269
270 Inserts the \a item at the start of the list.
271
272 The inserted item becomes the current list item. This is
273 equivalent to \c{insert( 0, item )}.
274
275 \a item must not be 0.
276
277 \sa append(), insert(), current()
278*/
279
280/*!
281 \fn bool Q3PtrList::remove( uint index )
282
283 Removes the item at position \a index in the list.
284
285 Returns TRUE if successful, i.e. if \a index is in range;
286 otherwise returns FALSE. The valid range is \c{0..(count() - 1)}
287 inclusive.
288
289 The removed item is deleted if \link setAutoDelete()
290 auto-deletion\endlink is enabled.
291
292 The item after the removed item becomes the new current list item
293 if the removed item is not the last item in the list. If the last
294 item is removed, the new last item becomes the current item.
295
296 All list iterators that refer to the removed item will be set to
297 point to the new current item.
298
299 \sa take(), clear(), setAutoDelete(), current() removeRef()
300*/
301
302/*!
303 \fn bool Q3PtrList::remove()
304
305 \overload
306
307 Removes the current list item.
308
309 Returns TRUE if successful, i.e. if the current item isn't 0;
310 otherwise returns FALSE.
311
312 The removed item is deleted if \link setAutoDelete()
313 auto-deletion\endlink is enabled.
314
315 The item after the removed item becomes the new current list item
316 if the removed item is not the last item in the list. If the last
317 item is removed, the new last item becomes the current item. The
318 current item is set to 0 if the list becomes empty.
319
320 All list iterators that refer to the removed item will be set to
321 point to the new current item.
322
323 \sa take(), clear(), setAutoDelete(), current() removeRef()
324*/
325
326/*!
327 \fn bool Q3PtrList::remove( const type *item )
328
329 \overload
330
331 Removes the first occurrence of \a item from the list.
332
333 Returns TRUE if successful, i.e. if \a item is in the list;
334 otherwise returns FALSE.
335
336 The removed item is deleted if \link setAutoDelete()
337 auto-deletion\endlink is enabled.
338
339 The compareItems() function is called when searching for the item
340 in the list. If compareItems() is not reimplemented, it is more
341 efficient to call removeRef().
342
343 If \a item is NULL then the current item is removed from the list.
344
345 The item after the removed item becomes the new current list item
346 if the removed item is not the last item in the list. If the last
347 item is removed, the new last item becomes the current item. The
348 current item is set to 0 if the list becomes empty.
349
350 All list iterators that refer to the removed item will be set to
351 point to the new current item.
352
353 \sa removeRef(), take(), clear(), setAutoDelete(), compareItems(),
354 current()
355*/
356
357/*!
358 \fn bool Q3PtrList::removeRef( const type *item )
359
360 Removes the first occurrence of \a item from the list.
361
362 Returns TRUE if successful, i.e. if \a item is in the list;
363 otherwise returns FALSE.
364
365 The removed item is deleted if \link setAutoDelete()
366 auto-deletion\endlink is enabled.
367
368 Equivalent to:
369 \snippet doc/src/snippets/code/doc_src_q3ptrlist.qdoc 2
370
371 The item after the removed item becomes the new current list item
372 if the removed item is not the last item in the list. If the last
373 item is removed, the new last item becomes the current item. The
374 current item is set to 0 if the list becomes empty.
375
376 All list iterators that refer to the removed item will be set to
377 point to the new current item.
378
379 \sa remove(), clear(), setAutoDelete(), current()
380*/
381
382/*!
383 \fn void Q3PtrList::removeNode( Q3LNode *node )
384
385 Removes the \a node from the list.
386
387 This node must exist in the list, otherwise the program may crash.
388
389 The removed item is deleted if \link setAutoDelete()
390 auto-deletion\endlink is enabled.
391
392 The first item in the list will become the new current list item.
393 The current item is set to 0 if the list becomes empty.
394
395 All list iterators that refer to the removed item will be set to
396 point to the item succeeding this item or to the preceding item if
397 the removed item was the last item.
398
399 \warning Do not call this function unless you are an expert.
400
401 \sa takeNode(), currentNode() remove() removeRef()
402*/
403
404/*!
405 \fn bool Q3PtrList::removeFirst()
406
407 Removes the first item from the list. Returns TRUE if successful,
408 i.e. if the list isn't empty; otherwise returns FALSE.
409
410 The removed item is deleted if \link setAutoDelete()
411 auto-deletion\endlink is enabled.
412
413 The first item in the list becomes the new current list item. The
414 current item is set to 0 if the list becomes empty.
415
416 All list iterators that refer to the removed item will be set to
417 point to the new current item.
418
419 \sa removeLast(), setAutoDelete(), current() remove()
420*/
421
422/*!
423 \fn bool Q3PtrList::removeLast()
424
425 Removes the last item from the list. Returns TRUE if successful,
426 i.e. if the list isn't empty; otherwise returns FALSE.
427
428 The removed item is deleted if \link setAutoDelete()
429 auto-deletion\endlink is enabled.
430
431 The last item in the list becomes the new current list item. The
432 current item is set to 0 if the list becomes empty.
433
434 All list iterators that refer to the removed item will be set to
435 point to the new current item.
436
437 \sa removeFirst(), setAutoDelete(), current()
438*/
439
440/*!
441 \fn type *Q3PtrList::take( uint index )
442
443 Takes the item at position \a index out of the list without
444 deleting it (even if \link setAutoDelete() auto-deletion\endlink
445 is enabled).
446
447 Returns a pointer to the item taken out of the list, or 0 if the
448 index is out of range. The valid range is \c{0..(count() - 1)}
449 inclusive.
450
451 The item after the removed item becomes the new current list item
452 if the removed item is not the last item in the list. If the last
453 item is removed, the new last item becomes the current item. The
454 current item is set to 0 if the list becomes empty.
455
456 All list iterators that refer to the taken item will be set to
457 point to the new current item.
458
459 \sa remove(), clear(), current()
460*/
461
462/*!
463 \fn type *Q3PtrList::take()
464
465 \overload
466
467 Takes the current item out of the list without deleting it (even
468 if \link setAutoDelete() auto-deletion\endlink is enabled).
469
470 Returns a pointer to the item taken out of the list, or 0 if
471 the current item is 0.
472
473 The item after the removed item becomes the new current list item
474 if the removed item is not the last item in the list. If the last
475 item is removed, the new last item becomes the current item. The
476 current item is set to 0 if the list becomes empty.
477
478 All list iterators that refer to the taken item will be set to
479 point to the new current item.
480
481 \sa remove(), clear(), current()
482*/
483
484/*!
485 \fn type *Q3PtrList::takeNode( Q3LNode *node )
486
487 Takes the \a node out of the list without deleting its item (even
488 if \link setAutoDelete() auto-deletion\endlink is enabled).
489 Returns a pointer to the item taken out of the list.
490
491 This node must exist in the list, otherwise the program may crash.
492
493 The first item in the list becomes the new current list item.
494
495 All list iterators that refer to the taken item will be set to
496 point to the item succeeding this item or to the preceding item if
497 the taken item was the last item.
498
499 \warning Do not call this function unless you are an expert.
500
501 \sa removeNode(), currentNode()
502*/
503
504/*!
505 \fn void Q3PtrList::clear()
506
507 Removes all items from the list.
508
509 The removed items are deleted if \link setAutoDelete()
510 auto-deletion\endlink is enabled.
511
512 All list iterators that access this list will be reset.
513
514 \sa remove(), take(), setAutoDelete()
515*/
516
517/*!
518 \fn int Q3PtrList::find( const type *item )
519
520 Finds the first occurrence of \a item in the list.
521
522 If the item is found, the list sets the current item to point to
523 the found item and returns the index of this item. If the item is
524 not found, the list sets the current item to 0, the current
525 index to -1, and returns -1.
526
527 The compareItems() function is called when searching for the item
528 in the list. If compareItems() is not reimplemented, it is more
529 efficient to call findRef().
530
531 \sa findNext(), findRef(), compareItems(), current()
532*/
533
534/*!
535 \fn int Q3PtrList::findNext( const type *item )
536
537 Finds the next occurrence of \a item in the list, starting from
538 the current list item.
539
540 If the item is found, the list sets the current item to point to
541 the found item and returns the index of this item. If the item is
542 not found, the list sets the current item to 0, the current
543 index to -1, and returns -1.
544
545 The compareItems() function is called when searching for the item
546 in the list. If compareItems() is not reimplemented, it is more
547 efficient to call findNextRef().
548
549 \sa find(), findNextRef(), compareItems(), current()
550*/
551
552/*!
553 \fn int Q3PtrList::findRef( const type *item )
554
555 Finds the first occurrence of \a item in the list.
556
557 If the item is found, the list sets the current item to point to
558 the found item and returns the index of this item. If the item is
559 not found, the list sets the current item to 0, the current
560 index to -1, and returns -1.
561
562 Calling this function is much faster than find() because find()
563 compares \a item with each list item using compareItems(), whereas
564 this function only compares the pointers.
565
566 \sa findNextRef(), find(), current()
567*/
568
569/*!
570 \fn int Q3PtrList::findNextRef( const type *item )
571
572 Finds the next occurrence of \a item in the list, starting from
573 the current list item.
574
575 If the item is found, the list sets the current item to point to
576 the found item and returns the index of this item. If the item is
577 not found, the list sets the current item to 0, the current
578 index to -1, and returns -1.
579
580 Calling this function is much faster than findNext() because
581 findNext() compares \a item with each list item using
582 compareItems(), whereas this function only compares the pointers.
583
584 \sa findRef(), findNext(), current()
585*/
586
587/*!
588 \fn uint Q3PtrList::contains( const type *item ) const
589
590 Returns the number of occurrences of \a item in the list.
591
592 The compareItems() function is called when looking for the \a item
593 in the list. If compareItems() is not reimplemented, it is more
594 efficient to call containsRef().
595
596 This function does not affect the current list item.
597
598 \sa containsRef(), compareItems()
599*/
600
601/*!
602 \fn uint Q3PtrList::containsRef( const type *item ) const
603
604 Returns the number of occurrences of \a item in the list.
605
606 Calling this function is much faster than contains() because
607 contains() compares \a item with each list item using
608 compareItems(), whereas his function only compares the pointers.
609
610 This function does not affect the current list item.
611
612 \sa contains()
613*/
614
615/*!
616 \fn type *Q3PtrList::at( uint index )
617
618 Returns a pointer to the item at position \a index in the list, or
619 0 if the index is out of range.
620
621 Sets the current list item to this item if \a index is valid. The
622 valid range is \c{0..(count() - 1)} inclusive.
623
624 This function is very efficient. It starts scanning from the first
625 item, last item, or current item, whichever is closest to \a
626 index.
627
628 \sa current()
629*/
630
631/*!
632 \fn int Q3PtrList::at() const
633
634 \overload
635
636 Returns the index of the current list item. The returned value is
637 -1 if the current item is 0.
638
639 \sa current()
640*/
641
642/*!
643 \fn type *Q3PtrList::current() const
644
645 Returns a pointer to the current list item. The current item may
646 be 0 (implies that the current index is -1).
647
648 \sa at()
649*/
650
651/*!
652 \fn Q3LNode *Q3PtrList::currentNode() const
653
654 Returns a pointer to the current list node.
655
656 The node can be kept and removed later using removeNode(). The
657 advantage is that the item can be removed directly without
658 searching the list.
659
660 \warning Do not call this function unless you are an expert.
661
662 \sa removeNode(), takeNode(), current()
663*/
664
665/*!
666 \fn type *Q3PtrList::getFirst() const
667
668 Returns a pointer to the first item in the list, or 0 if the list
669 is empty.
670
671 This function does not affect the current list item.
672
673 \sa first(), getLast()
674*/
675
676/*!
677 \fn type *Q3PtrList::getLast() const
678
679 Returns a pointer to the last item in the list, or 0 if the list
680 is empty.
681
682 This function does not affect the current list item.
683
684 \sa last(), getFirst()
685*/
686
687/*!
688 \fn type *Q3PtrList::first()
689
690 Returns a pointer to the first item in the list and makes this the
691 current list item; returns 0 if the list is empty.
692
693 \sa getFirst(), last(), next(), prev(), current()
694*/
695
696/*!
697 \fn type *Q3PtrList::last()
698
699 Returns a pointer to the last item in the list and makes this the
700 current list item; returns 0 if the list is empty.
701
702 \sa getLast(), first(), next(), prev(), current()
703*/
704
705/*!
706 \fn type *Q3PtrList::next()
707
708 Returns a pointer to the item succeeding the current item. Returns
709 0 if the current item is 0 or equal to the last item.
710
711 Makes the succeeding item current. If the current item before this
712 function call was the last item, the current item will be set to
713 0. If the current item was 0, this function does nothing.
714
715 \sa first(), last(), prev(), current()
716*/
717
718/*!
719 \fn type *Q3PtrList::prev()
720
721 Returns a pointer to the item preceding the current item. Returns
722 0 if the current item is 0 or equal to the first item.
723
724 Makes the preceding item current. If the current item before this
725 function call was the first item, the current item will be set to
726 0. If the current item was 0, this function does nothing.
727
728 \sa first(), last(), next(), current()
729*/
730
731/*!
732 \fn void Q3PtrList::toVector( Q3GVector *vec ) const
733
734 Stores all list items in the vector \a vec.
735
736 The vector must be of the same item type, otherwise the result
737 will be undefined.
738*/
739
740/*!
741 \typedef Q3PtrList::iterator
742
743 \internal
744*/
745
746/*!
747 \typedef Q3PtrList::Iterator
748
749 \internal
750*/
751
752/*!
753 \typedef Q3PtrList::ConstIterator
754
755 \internal
756*/
757
758/*!
759 \typedef Q3PtrList::const_iterator
760
761 \internal
762*/
763
764/*!
765 \fn Q3PtrList::constBegin() const
766
767 \internal
768*/
769
770/*!
771 \fn Q3PtrList::constEnd() const
772
773 \internal
774*/
775
776/*!
777 \fn Q3PtrList::erase(Iterator)
778
779 \internal
780*/
781
782
783/*****************************************************************************
784 Q3PtrListIterator documentation
785 *****************************************************************************/
786
787/*!
788 \class Q3PtrListIterator
789 \brief The Q3PtrListIterator class provides an iterator for
790 Q3PtrList collections.
791 \compat
792
793 Define a template instance Q3PtrListIterator\<X\> to create a list
794 iterator that operates on Q3PtrList\<X\> (list of X*).
795
796 The following example is similar to the
797 example in the Q3PtrList class documentation,
798 but it uses Q3PtrListIterator. The class Employee is
799 defined there.
800
801 \snippet doc/src/snippets/code/doc_src_q3ptrlist.qdoc 3
802
803 The output is
804 \snippet doc/src/snippets/code/doc_src_q3ptrlist.qdoc 4
805
806 Using a list iterator is a more robust way of traversing the list
807 than using the Q3PtrList member functions \link Q3PtrList::first()
808 first\endlink(), \link Q3PtrList::next() next\endlink(), \link
809 Q3PtrList::current() current\endlink(), etc., as many iterators can
810 traverse the same list independently.
811
812 An iterator has its own current list item and can get the next and
813 previous list items. It doesn't modify the list in any way.
814
815 When an item is removed from the list, all iterators that point to
816 that item are updated to point to Q3PtrList::current() instead to
817 avoid dangling references.
818
819 \sa Q3PtrList
820*/
821
822/*!
823 \fn Q3PtrListIterator::Q3PtrListIterator( const Q3PtrList<type> &list )
824
825 Constructs an iterator for \a list. The current iterator item is
826 set to point on the first item in the \a list.
827*/
828
829/*!
830 \fn Q3PtrListIterator::~Q3PtrListIterator()
831
832 Destroys the iterator.
833*/
834
835/*!
836 \fn uint Q3PtrListIterator::count() const
837
838 Returns the number of items in the list this iterator operates on.
839
840 \sa isEmpty()
841*/
842
843/*!
844 \fn bool Q3PtrListIterator::isEmpty() const
845
846 Returns TRUE if the list is empty; otherwise returns FALSE.
847
848 \sa count()
849*/
850
851/*!
852 \fn bool Q3PtrListIterator::atFirst() const
853
854 Returns TRUE if the current iterator item is the first list item;
855 otherwise returns FALSE.
856
857 \sa toFirst(), atLast()
858*/
859
860/*!
861 \fn bool Q3PtrListIterator::atLast() const
862
863 Returns TRUE if the current iterator item is the last list item;
864 otherwise returns FALSE.
865
866 \sa toLast(), atFirst()
867*/
868
869/*!
870 \fn type *Q3PtrListIterator::toFirst()
871
872 Sets the current iterator item to point to the first list item and
873 returns a pointer to the item. Sets the current item to 0 and
874 returns 0 if the list is empty.
875
876 \sa toLast(), atFirst()
877*/
878
879/*!
880 \fn type *Q3PtrListIterator::toLast()
881
882 Sets the current iterator item to point to the last list item and
883 returns a pointer to the item. Sets the current item to 0 and
884 returns 0 if the list is empty.
885
886 \sa toFirst(), atLast()
887*/
888
889/*!
890 \fn Q3PtrListIterator::operator type *() const
891
892 Cast operator. Returns a pointer to the current iterator item.
893 Same as current().
894*/
895
896/*!
897 \fn type *Q3PtrListIterator::operator*()
898
899 Asterisk operator. Returns a pointer to the current iterator item.
900 Same as current().
901*/
902
903/*!
904 \fn type *Q3PtrListIterator::current() const
905
906 Returns a pointer to the current iterator item. If the iterator is
907 positioned before the first item in the list or after the last
908 item in the list, 0 is returned.
909*/
910
911/*!
912 \fn type *Q3PtrListIterator::operator()()
913
914 Makes the succeeding item current and returns the original current
915 item.
916
917 If the current iterator item was the last item in the list or if
918 it was 0, 0 is returned.
919*/
920
921/*!
922 \fn type *Q3PtrListIterator::operator++()
923
924 Prefix ++ makes the succeeding item current and returns the new
925 current item.
926
927 If the current iterator item was the last item in the list or if
928 it was 0, 0 is returned.
929*/
930
931/*!
932 \fn type *Q3PtrListIterator::operator+=( uint jump )
933
934 Sets the current item to the item \a jump positions after the
935 current item and returns a pointer to that item.
936
937 If that item is beyond the last item or if the list is empty, it
938 sets the current item to 0 and returns 0
939*/
940
941/*!
942 \fn type *Q3PtrListIterator::operator--()
943
944 Prefix - makes the preceding item current and returns the new
945 current item.
946
947 If the current iterator item was the first item in the list or if
948 it was 0, 0 is returned.
949*/
950
951/*!
952 \fn type *Q3PtrListIterator::operator-=( uint jump )
953
954 Returns the item \a jump positions before the current item or 0
955 if it is beyond the first item. Makes this the current item.
956*/
957
958/*!
959 \fn Q3PtrListIterator<type>& Q3PtrListIterator::operator=( const Q3PtrListIterator<type> &it )
960
961 Assignment. Makes a copy of the iterator \a it and returns a
962 reference to this iterator.
963*/
964
965/*!
966 \class Q3StrList
967 \brief The Q3StrList class provides a doubly-linked list of char*.
968 \compat
969
970 If you want a string list of \l{QString}s use QStringList.
971
972 This class is a Q3PtrList\<char\> instance (a list of char*).
973
974 Q3StrList can make deep or shallow copies of the strings that are
975 inserted.
976
977 A deep copy means that memory is allocated for the string and then
978 the string data is copied into that memory. A shallow copy is just
979 a copy of the pointer value and not of the string data itself.
980
981 The disadvantage of shallow copies is that because a pointer can
982 be deleted only once, the program must put all strings in a
983 central place and know when it is safe to delete them (i.e. when
984 the strings are no longer referenced by other parts of the
985 program). This can make the program more complex. The advantage of
986 shallow copies is that they consume far less memory than deep
987 copies. It is also much faster to copy a pointer (typically 4 or 8
988 bytes) than to copy string data.
989
990 A Q3StrList that operates on deep copies will, by default, turn on
991 auto-deletion (see setAutoDelete()). Thus, by default Q3StrList
992 will deallocate any string copies it allocates.
993
994 The virtual compareItems() function is reimplemented and does a
995 case-sensitive string comparison. The inSort() function will
996 insert strings in sorted order. In general it is fastest to insert
997 the strings as they come and sort() at the end; inSort() is useful
998 when you just have to add a few extra strings to an already sorted
999 list.
1000
1001 The Q3StrListIterator class is an iterator for Q3StrList.
1002*/
1003
1004/*!
1005 \fn Q3StrList::operator QList<QByteArray>() const
1006
1007 Automatically converts a Q3StrList into a QList<QByteArray>.
1008*/
1009
1010/*!
1011 \fn Q3StrList::Q3StrList( bool deepCopies )
1012
1013 Constructs an empty list of strings. Will make deep copies of all
1014 inserted strings if \a deepCopies is TRUE, or use shallow copies
1015 if \a deepCopies is FALSE.
1016*/
1017
1018/*!
1019 \fn Q3StrList::Q3StrList(const Q3StrList &list)
1020 \fn Q3StrList::Q3StrList(const QList<QByteArray> &list)
1021
1022 Constructs a copy of \a list.
1023*/
1024
1025/*!
1026 \fn Q3StrList::~Q3StrList()
1027
1028 Destroys the list. All strings are removed.
1029*/
1030
1031/*!
1032 \fn Q3StrList& Q3StrList::operator=(const Q3StrList& list)
1033 \fn Q3StrList &Q3StrList::operator=(const QList<QByteArray> &list)
1034
1035 Assigns \a list to this list and returns a reference to this list.
1036*/
1037
1038/*!
1039 \class Q3StrIList
1040 \brief The Q3StrIList class provides a doubly-linked list of char*
1041 with case-insensitive comparison.
1042 \compat
1043
1044 This class is a Q3PtrList\<char\> instance (a list of char*).
1045
1046 Q3StrIList is identical to Q3StrList except that the virtual
1047 compareItems() function is reimplemented to compare strings
1048 case-insensitively. The inSort() function inserts strings in a
1049 sorted order. In general it is fastest to insert the strings as
1050 they come and sort() at the end; inSort() is useful when you just
1051 have to add a few extra strings to an already sorted list.
1052
1053 The Q3StrListIterator class works for Q3StrIList.
1054
1055 \sa QStringList
1056*/
1057
1058/*!
1059 \fn Q3StrIList::Q3StrIList( bool deepCopies )
1060
1061 Constructs a list of strings. Will make deep copies of all
1062 inserted strings if \a deepCopies is TRUE, or use shallow copies
1063 if \a deepCopies is FALSE.
1064*/
1065
1066/*!
1067 \fn Q3StrIList::~Q3StrIList()
1068
1069 Destroys the list. All strings are removed.
1070*/
1071
1072/*!
1073 \fn int Q3PtrList::compareItems( Q3PtrCollection::Item item1,
1074 Q3PtrCollection::Item item2 )
1075
1076 This virtual function compares two list items.
1077
1078 Returns:
1079 \list
1080 \i zero if \a item1 == \a item2
1081 \i nonzero if \a item1 != \a item2
1082 \endlist
1083
1084 This function returns \e int rather than \e bool so that
1085 reimplementations can return three values and use it to sort by:
1086
1087 \list
1088 \i 0 if \a item1 == \a item2
1089 \i \> 0 (positive integer) if \a item1 \> \a item2
1090 \i \< 0 (negative integer) if \a item1 \< \a item2
1091 \endlist
1092
1093 inSort() requires that compareItems() is implemented as described
1094 here.
1095
1096 This function should not modify the list because some const
1097 functions call compareItems().
1098
1099 The default implementation compares the pointers.
1100*/
1101
1102/*!
1103 \fn QDataStream& Q3PtrList::read( QDataStream& s,
1104 Q3PtrCollection::Item& item )
1105
1106 Reads a list item from the stream \a s and returns a reference to
1107 the stream.
1108
1109 The default implementation sets \a item to 0.
1110
1111 \sa write()
1112*/
1113
1114/*!
1115 \fn QDataStream& Q3PtrList::write( QDataStream& s,
1116 Q3PtrCollection::Item item ) const
1117
1118 Writes a list item, \a item to the stream \a s and returns a
1119 reference to the stream.
1120
1121 The default implementation does nothing.
1122
1123 \sa read()
1124*/
1125
1126/*! \fn iterator Q3PtrList::begin()
1127\internal
1128*/
1129/*! \fn const_iterator Q3PtrList::begin() const
1130\internal
1131*/
1132/*! \fn iterator Q3PtrList::end()
1133\internal
1134*/
1135/*! \fn const_iterator Q3PtrList::end() const
1136\internal
1137*/
1138
1139/*!
1140 \class Q3StrListIterator
1141 \brief The Q3StrListIterator class is an iterator for the Q3StrList
1142 and Q3StrIList classes.
1143 \compat
1144
1145 This class is a Q3PtrListIterator\<char\> instance. It can traverse
1146 the strings in the Q3StrList and Q3StrIList classes.
1147*/
1148
1149
1150/*
1151 \class Q3PtrListAutoDelete
1152 \brief The Q3PtrListAutoDelete class is a template class that provides a list that auto-deletes its data.
1153 \compat
1154
1155 A Q3PtrListAutoDelete is identical to a Q3PtrList with
1156 setAutoDelete(TRUE).
1157*/
Note: See TracBrowser for help on using the repository browser.