1 #ifndef DUNE_ALBERTA_HIERARCHICITERATOR_HH
2 #define DUNE_ALBERTA_HIERARCHICITERATOR_HH
24 template<
class Gr
idImp >
25 class AlbertaGridHierarchicIterator
26 :
public AlbertaGridEntityPointer< 0, GridImp >
28 typedef AlbertaGridHierarchicIterator< GridImp > This;
29 typedef AlbertaGridEntityPointer< 0, GridImp > Base;
32 typedef typename GridImp::template Codim<0>::Entity
Entity;
33 typedef typename GridImp::ctype
ctype;
73 template<
class Gr
idImp >
77 startLevel_( actLevel ),
82 template<
class Gr
idImp >
88 startLevel_( elementInfo.level() ),
91 increment( elementInfo );
95 template<
class Gr
idImp >
99 startLevel_( other.startLevel_ ),
100 maxlevel_( other.maxlevel_ )
104 template<
class Gr
idImp >
108 Base::operator=( other );
110 startLevel_ = other.startLevel_;
111 maxlevel_ = other.maxlevel_;
116 template<
class Gr
idImp >
119 increment( entityImp().elementInfo() );
122 template<
class Gr
idImp >
126 assert( !elementInfo ==
false );
127 if( (elementInfo.level() >= maxlevel_) || elementInfo.isLeaf() )
129 while( (elementInfo.level() > startLevel_) && (elementInfo.indexInFather() == 1) )
130 elementInfo = elementInfo.father();
131 if( elementInfo.level() > startLevel_ )
132 entityImp().setElement( elementInfo.father().child( 1 ), 0 );
134 entityImp().clearElement();
137 entityImp().setElement( elementInfo.child( 0 ), 0 );
142 #endif // #if HAVE_ALBERTA
144 #endif // #ifndef DUNE_ALBERTA_HIERARCHICITERATOR_HH