// @(#)root/cont:$Id$
// Author: Fons Rademakers   13/08/95

/*************************************************************************
 * Copyright (C) 1995-2000, Rene Brun and Fons Rademakers.               *
 * All rights reserved.                                                  *
 *                                                                       *
 * For the licensing terms see $ROOTSYS/LICENSE.                         *
 * For the list of contributors see $ROOTSYS/README/CREDITS.             *
 *************************************************************************/

#ifndef ROOT_TIterator
#define ROOT_TIterator


//////////////////////////////////////////////////////////////////////////
//                                                                      //
// TIterator                                                            //
//                                                                      //
// Iterator abstract base class. This base class provides the interface //
// for collection iterators.                                            //
//                                                                      //
//////////////////////////////////////////////////////////////////////////

#ifndef ROOT_Rtypes
#include "Rtypes.h"
#endif

class TCollection;
class TObject;

class TIterator {

protected:
   TIterator() { }
   TIterator(const TIterator &) { }

public:
   virtual TIterator &operator=(const TIterator &) { return *this; }
   virtual ~TIterator() { }
   virtual const TCollection *GetCollection() const = 0;
   virtual Option_t *GetOption() const { return ""; }
   virtual TObject  *Next() = 0;
   virtual void      Reset() = 0;
   TObject          *operator()() { return Next(); }
   virtual Bool_t    operator!=(const TIterator &) const;
   Bool_t            operator==(const TIterator & other) const { return !(*this != other); }
   virtual TObject  *operator*() const;

   ClassDef(TIterator,0)  //Iterator abstract base class
};

#endif
 TIterator.h:1
 TIterator.h:2
 TIterator.h:3
 TIterator.h:4
 TIterator.h:5
 TIterator.h:6
 TIterator.h:7
 TIterator.h:8
 TIterator.h:9
 TIterator.h:10
 TIterator.h:11
 TIterator.h:12
 TIterator.h:13
 TIterator.h:14
 TIterator.h:15
 TIterator.h:16
 TIterator.h:17
 TIterator.h:18
 TIterator.h:19
 TIterator.h:20
 TIterator.h:21
 TIterator.h:22
 TIterator.h:23
 TIterator.h:24
 TIterator.h:25
 TIterator.h:26
 TIterator.h:27
 TIterator.h:28
 TIterator.h:29
 TIterator.h:30
 TIterator.h:31
 TIterator.h:32
 TIterator.h:33
 TIterator.h:34
 TIterator.h:35
 TIterator.h:36
 TIterator.h:37
 TIterator.h:38
 TIterator.h:39
 TIterator.h:40
 TIterator.h:41
 TIterator.h:42
 TIterator.h:43
 TIterator.h:44
 TIterator.h:45
 TIterator.h:46
 TIterator.h:47
 TIterator.h:48
 TIterator.h:49
 TIterator.h:50
 TIterator.h:51
 TIterator.h:52
 TIterator.h:53