leveliterator.hh

00001 #ifndef DUNE_GRID_LEVELITERATOR_HH
00002 #define DUNE_GRID_LEVELITERATOR_HH
00003 
00004 #include "entitypointer.hh"
00005 
00006 namespace Dune
00007 {
00008 
00009 /**********************************************************************/
00016 template<int codim, PartitionIteratorType pitype, class GridImp,
00017          template<int,PartitionIteratorType,class> class LevelIteratorImp>
00018 class LevelIterator :
00019     public EntityPointer<GridImp, LevelIteratorImp<codim,pitype,GridImp> >
00020 {
00021 public:
00022   typedef typename GridImp::template Codim<codim>::Entity Entity;
00028   LevelIterator& operator++()
00029     {
00030       this->realIterator.increment();
00031       return *this;
00032     }
00033   
00034   //===========================================================
00038   //===========================================================
00039 
00042   LevelIterator(const LevelIteratorImp<codim,pitype,const GridImp> & i) :
00043     EntityPointer<GridImp, LevelIteratorImp<codim,pitype,GridImp> >(i) {};
00045 };
00046 
00047 //**********************************************************************
00053 template<int codim, PartitionIteratorType pitype, class GridImp,
00054          template<int,PartitionIteratorType,class> class LevelIteratorImp>
00055 class LevelIteratorDefaultImplementation 
00056 {
00057 private:
00058   //  Barton-Nackman trick
00059   LevelIteratorImp<codim,pitype,GridImp>& asImp () {
00060     return static_cast<LevelIteratorImp<codim,pitype,GridImp>&>(*this);
00061   }
00062   const LevelIteratorImp<codim,pitype,GridImp>& asImp () const {
00063     return static_cast<const LevelIteratorImp<codim,pitype,GridImp>&>(*this);
00064   }
00065 }; // end LevelIteratorDefault
00066 
00067 }
00068 
00069 #endif // DUNE_GRID_LEVELITERATOR_HH

Generated on 12 Dec 2007 with Doxygen (ver 1.5.1)