hierarchiciterator.hh
00001 #ifndef DUNE_GRID_HIERARCHICITERATOR_HH
00002 #define DUNE_GRID_HIERARCHICITERATOR_HH
00003
00004 #include "entitypointer.hh"
00005
00006 namespace Dune {
00007
00022 template<class GridImp, template<class> class HierarchicIteratorImp>
00023 class HierarchicIterator :
00024 public EntityPointer<GridImp, HierarchicIteratorImp<GridImp> >
00025 {
00026 public:
00027 typedef typename GridImp::template Codim<0>::Entity Entity;
00033 HierarchicIterator& operator++()
00034 {
00035 this->realIterator.increment();
00036 return *this;
00037 }
00038
00039
00043
00044
00047 HierarchicIterator (const HierarchicIteratorImp<const GridImp> & i) :
00048 EntityPointer<GridImp,HierarchicIteratorImp<GridImp> >(i) {};
00050 };
00051
00052
00058 template<class GridImp, template<class> class HierarchicIteratorImp>
00059 class HierarchicIteratorDefaultImplementation
00060 {
00061 private:
00062
00063 HierarchicIteratorImp<GridImp>& asImp ()
00064 {return static_cast<HierarchicIteratorImp<GridImp>&>(*this);}
00065 const HierarchicIteratorImp<GridImp>& asImp () const
00066 {return static_cast<const HierarchicIteratorImp<GridImp>&>(*this);}
00067 };
00068
00069 }
00070
00071 #endif // DUNE_GRID_HIERARCHICITERATOR_HH