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;