#line 1 "/user/cvsspst/ees1cg/RAVL/RAVL-0.7/Core/Container/Branch/BListIter.hh" // This file is part of RAVL, Recognition And Vision Library // Copyright (C) 2001, University of Surrey // This code may be redistributed under the terms of the GNU Lesser // General Public License (LGPL). See the lgpl.licence file for details or // see http://www.gnu.org/copyleft/lesser.html // file-header-ends-here #ifndef RAVL_BLISTITER_HEADER #define RAVL_BLISTITER_HEADER 1 /////////////////////////////////////////////////////////// //! rcsid="$Id: BListIter.hh,v 1.3 2002/05/22 17:08:41 craftit Exp $" //! lib=RavlCore //! author="Charles Galambos" //! docentry="Ravl.Core.Branch" //! file="Ravl/Core/Container/Branch/BListIter.hh" #include "Ravl/BList.hh" namespace RavlN { //! userlevel=Normal //: BList iterator. template class BListIterC { public: BListIterC() : place(0) {} //: Default constructor. BListIterC(const BListC &list) : place(0) { if(list.list.IsValid()) place = const_cast *>(list.list.BodyPtr()); } //: Construct from list. const BListIterC &operator=(const BListC &l) { if(l.list.IsValid()) place = const_cast *>(l.list.BodyPtr()); else place = 0; return *this; } //: Assign to a list. bool IsElm() const { return place != 0; } //: Are we at a valid element in the list ? operator bool() const { return place != 0; } //: Are we at a valid element in the list ? DataT &Data() { return place->Data(); } //: Access data. const DataT &Data() const { return place->Data(); } //: Access data. const DataT &operator*() const { return place->Data(); } //: Access data. DataT &operator*() { return place->Data(); } //: Access data. DataT *operator->() { return &place->Data(); } //: Access data. const DataT *operator->() const { return &place->Data(); } //: Access data. void Next() { place = place->Next().BodyPtr(); } //: Goto next element in the list. void operator++(int) { Next(); } //: Goto next element in the list. protected: BLinkBodyC *place; }; } #endif