1#ifndef DUNE_MULTIDOMAINGRID_SUBDOMAINGRID_INTERSECTIONITERATOR_HH
2#define DUNE_MULTIDOMAINGRID_SUBDOMAINGRID_INTERSECTIONITERATOR_HH
4#include <dune/grid/common/intersectioniterator.hh>
6#include "intersection.hh"
17 typename MultiDomainIntersectionIterator
19class IntersectionIteratorWrapper {
21 template<
class,
class,
class>
22 friend class Dune::IntersectionIterator;
24 template<
class,
class>
25 friend class Dune::Intersection;
27 using MultiDomainIntersection =
typename MultiDomainIntersectionIterator::Intersection;
28 using IntersectionWrapper = Dune::mdgrid::subdomain::IntersectionWrapper<
31 MultiDomainIntersection
36 using Intersection = Dune::Intersection<GridImp,IntersectionWrapper>;
38 IntersectionIteratorWrapper()
42 IntersectionIteratorWrapper(
const IndexSet* indexSet,
const MultiDomainIntersectionIterator& multiDomainIterator)
44 , _multiDomainIterator(multiDomainIterator)
47 const auto& hostIntersectionIterator()
const {
48 return GridImp::MultiDomainGrid::getRealImplementation(_multiDomainIterator).hostIntersectionIterator();
51 bool equals(
const IntersectionIteratorWrapper& rhs)
const {
52 return _indexSet == rhs._indexSet && _multiDomainIterator == rhs._multiDomainIterator;
56 ++_multiDomainIterator;
59 Intersection dereference()
const {
60 return {IntersectionWrapper(_indexSet,*_multiDomainIterator)};
65 const IndexSet* _indexSet;
66 MultiDomainIntersectionIterator _multiDomainIterator;