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
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 };
00066
00067 }
00068
00069 #endif // DUNE_GRID_LEVELITERATOR_HH