Module: Essential Tools Module Group: Generic Classes
Does not inherit
#include <rw/gslist.h> declare(RWGSlist, type) RWGSlist(type) a ; RWGSlistIterator(type) I(a);
Iterator for class RWGSlist(type), which allows sequential access to all the elements of a singly-linked list. Elements are accessed in order, first to last.
NOTE -- RWGSlistIterator is deprecated. Please use RWTValSlistIterator or RWTPtrSlistIterator.
As with all Rogue Wave iterators, the "current item" is undefined immediately after construction -- you must define it by using operator() or some other (valid) operation.
Once the iterator has advanced beyond the end of the collection it is no longer valid -- continuing to use it will bring undefined results.
In order to simplify the documentation below, an imaginary typedef:
typedef bool (*yourTester)(const type*, const void*);
has been used. See the documentation for class RWGSlist(type) for an explanation of this function.
None
RWGSlistIterator(type)( RWGSlist(type)& list);
Constructs an iterator for the RWGSlist(type) list. Immediately after construction, the position of the iterator is undefined.
type* operator()();
Advances the iterator to the next item and returns it. Returns nil if it is at the end of the collection.
void operator++();
Advances the iterator one item.
void operator+=(size_t n);
Advances the iterator n items.
bool atFirst() const;
Returns true if the iterator is at the start of the list, false otherwise;
bool atLast() const;
Returns true if the iterator is at the end of the list, false otherwise;
type* findNext(yourTester t,const type* d);
Moves the iterator to the next item for which the function pointed to by t finds a match with d and returns it. Returns nil if no match is found, in which case the position of the iterator will be undefined.
type* findNextReference(const type* e);
Moves the iterator to the next item with the address e and returns it. Returns nil if no match is found, in which case the position of the iterator will be undefined.
type* insertAfterPoint(type* a);
Adds item a after the current iterator position and return the item. The position of the iterator is left unchanged.
type* key() const;
Returns the item at the current iterator position.
type* remove();
Removes and returns the item at the current cursor position. Afterwards, the iterator will be positioned at the previous item in the list. In a singly-linked list, this function is an inefficient operation because the entire list must be traversed, looking for the link before the link to be removed.
type* removeNext(yourTester t, const type* d);
Moves the iterator to the next item for which the function pointed to by t finds a "match" with d and removes and returns it. Returns nil if no match is found, in which case the position of the iterator will be undefined.
type* removeNextReference(const type* e);
Moves the iterator to the next item with the address e and removes and returns it. Returns nil if no match is found, in which case the position of the iterator will be undefined.
void reset();
Resets the iterator to its initial state.
void toFirst();
Moves the iterator to the start of the list.
void toLast();
Moves the iterator to the end of the list.
© Copyright Rogue Wave Software, Inc. All Rights Reserved.
Rogue Wave and SourcePro are registered trademarks of Rogue Wave Software, Inc. in the United States and other countries. All other trademarks are the property of their respective owners.
Contact Rogue Wave about documentation or support issues.