4 #ifndef DUNE_GRID_IO_FILE_VTK_BOUNDARYITERATORS_HH
5 #define DUNE_GRID_IO_FILE_VTK_BOUNDARYITERATORS_HH
9 #include <dune/common/iteratorfacades.hh>
10 #include <dune/common/shared_ptr.hh>
35 :
public ForwardIteratorFacade
36 < BoundaryIterator<GV>,
37 const typename GV::Intersection,
38 const typename GV::Intersection&,
39 typename std::iterator_traits<typename GV::template Codim<0>::
40 Iterator>::difference_type>
45 typedef const typename GV::Intersection
Value;
49 typedef typename std::iterator_traits<ElementIterator>::difference_type
58 shared_ptr<IntersectionIterator> iit;
62 if(eit == gv->template end<0>())
return true;
64 if((*iit)->boundary() && !(*iit)->neighbor())
return true;
69 void basic_increment() {
71 if(*iit == gv->iend(*eit)) {
74 if(eit != gv->template end<0>())
84 if(eit != other.eit)
return false;
88 bool mePassedTheEnd = eit == gv->template end<0>();
89 bool otherPassedTheEnd = other.eit == other.gv->template end<0>();
92 if(mePassedTheEnd && otherPassedTheEnd)
return true;
95 if(mePassedTheEnd || otherPassedTheEnd)
return false;
98 return *iit == *other.iit;
103 while(!valid()) basic_increment();
115 while(!valid()) basic_increment();
124 : gv(&gv_), eit(eit_)
126 if(eit != gv->template end<0>())
129 while(!valid()) basic_increment();
137 : gv(&gv_), eit(end ? gv->template end<0>() : gv->template begin<0>())
139 if(eit != gv->template end<0>())
142 while(!valid()) basic_increment();
146 template<
typename ElementIndexSet>
148 const ElementIndexSet& eis;
156 template<
typename GV>
161 static const unsigned dimCell = GV::dimension-1;
163 typedef typename GV::Intersection
Cell;
210 #endif // DUNE_GRID_IO_FILE_VTK_BOUNDARYITERATORS_HH