| library: libCore #include "TList.h" |

| TListIter(const TListIter& iter) | |
| TListIter(const TList* l, Bool_t dir = kIterForward) | |
| ~TListIter() | |
| static TClass* | Class() |
| virtual const TCollection* | GetCollection() const |
| virtual Option_t* | GetOption() const |
| virtual TClass* | IsA() const |
| virtual TObject* | Next() |
| TObject* | TIterator::operator()() |
| virtual TIterator& | operator=(const TIterator& rhs) |
| TListIter& | operator=(const TListIter& rhs) |
| virtual void | Reset() |
| void | SetOption(Option_t* option) |
| virtual void | ShowMembers(TMemberInspector& insp, char* parent) |
| virtual void | Streamer(TBuffer& b) |
| void | StreamerNVirtual(TBuffer& b) |
| TListIter() |
TList
A doubly linked list. All classes inheriting from TObject can be
inserted in a TList. Before being inserted into the list the object
pointer is wrapped in a TObjLink object which contains, besides
the object pointer also a previous and next pointer.
There are basically four ways to iterate over a TList (in order
of preference, if not forced by other constraints):
1) Using the R__FOR_EACH macro:
GetListOfPrimitives()->R__FOR_EACH(TObject,Paint)(option);
2) Using the TList iterator TListIter (via the wrapper class
TIter):
TIter next(GetListOfPrimitives());
while (TObject *obj = next())
obj->Draw(next.GetOption());
3) Using the TObjLink list entries (that wrap the TObject*):
TObjLink *lnk = GetListOfPrimitives()->FirstLink();
while (lnk) {
lnk->GetObject()->Draw(lnk->GetOption());
lnk = lnk->Next();
}
4) Using the TList's After() and Before() member functions:
TFree *idcur = this;
while (idcur) {
...
...
idcur = (TFree*)GetListOfFree()->After(idcur);
}
Methods 2, 3 and 4 can also easily iterate backwards using either
a backward TIter (using argument kIterBackward) or by using
LastLink() and lnk->Prev() or by using the Before() member.
Create a new list iterator. By default the iteration direction is kIterForward. To go backward use kIterBackward.