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.
 
 
| 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() | 

Create a new list iterator. By default the iteration direction is kIterForward. To go backward use kIterBackward.