library: libCore #include "TList.h"

# TListIter

class description - source file - inheritance tree (.pdf)

## class TListIter : public TIterator

| Inheritance Chart:
`TIterator`
| <- | `TListIter` |
<- |
`TFileIter` |

        protected:

                    TListIter()

        public:

                                     TListIter(const TList* l, Bool_t dir = kIterForward)
                                     TListIter(const TListIter& iter)
                                     ~TListIter()
                      static TClass* Class()
          virtual const TCollection* GetCollection() const
                   virtual Option_t* GetOption() const
                     virtual TClass* IsA() const
                    virtual TObject* Next()
                  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)

### Data Members

        protected:

          const TList* fList       list being iterated
             TObjLink* fCurCursor  current position in list
             TObjLink* fCursor     next position in list
                Bool_t fDirection  iteration direction
                Bool_t fStarted    iteration started

## Class Description

     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 ForEach macro:
             GetListOfPrimitives()->ForEach(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 TList *l, Bool_t dir) : fList(l), fCurCursor(0), fCursor(0), fDirection(dir), fStarted(kFALSE)

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

TListIter(const TListIter &iter) : TIterator(iter)

     Copy ctor.

TObject* Next()

     Return next object in the list. Returns 0 when no more objects in list.

Option_t* GetOption() const

     Returns the object option stored in the list.

void SetOption(Option_t *option)

     Sets the object option stored in the list.

### Inline Functions

                          void ~TListIter()
                     TListIter TListIter(const TListIter& iter)
                    TIterator& operator=(const TIterator& rhs)
                    TListIter& operator=(const TListIter& rhs)
            const TCollection* GetCollection() const
                          void Reset()
                       TClass* Class()
                       TClass* IsA() const
                          void ShowMembers(TMemberInspector& insp, char* parent)
                          void Streamer(TBuffer& b)
                          void StreamerNVirtual(TBuffer& b)

Author: Fons Rademakers 10/08/95
Last update: root/cont:$Name: $:$Id: TList.cxx,v 1.16 2004/12/06 10:46:48 brun Exp $
Copyright (C) 1995-2000, Rene Brun and Fons Rademakers. *