// @(#)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