1#ifndef DUNE_MULTIDOMAINGRID_SUBDOMAINGRID_GRIDVIEW_HH 
    2#define DUNE_MULTIDOMAINGRID_SUBDOMAINGRID_GRIDVIEW_HH 
    4#include <dune/grid/common/gridview.hh> 
    5#include <dune/grid/common/defaultgridview.hh> 
   13template<
typename,
typename,
typename>
 
   14class IntersectionIteratorWrapper;
 
   16template<
typename Gr
idImp>
 
   18  : 
public DefaultLevelGridView<GridImp>
 
   21  using BaseT = DefaultLevelGridView<GridImp>;
 
   25  using typename BaseT::IntersectionIterator;
 
   27  LevelGridView(
const GridImp& grid, 
int level)
 
   31  IntersectionIterator ibegin(
const typename BaseT::template Codim<0>::Entity& entity)
 const 
   33    return IntersectionIteratorWrapper<
 
   35      typename BaseT::IndexSet,
 
   36      typename GridImp::MultiDomainGrid::LevelGridView::IntersectionIterator
 
   39        this->grid()._grid.levelGridView(entity.level()).ibegin(entity.impl().multiDomainEntity())
 
   43  IntersectionIterator iend(
const typename BaseT::template Codim<0>::Entity& entity)
 const 
   45    return IntersectionIteratorWrapper<
 
   47      typename BaseT::IndexSet,
 
   48      typename GridImp::MultiDomainGrid::LevelGridView::IntersectionIterator
 
   51        this->grid()._grid.levelGridView(entity.level()).iend(entity.impl().multiDomainEntity())
 
   57template<
typename Gr
idImp>
 
   58struct LevelGridViewTraits
 
   59  : 
public DefaultLevelGridViewTraits<GridImp>
 
   61  using GridViewImp = LevelGridView<GridImp>;
 
   66template<
typename Gr
idImp>
 
   68  : 
public DefaultLeafGridView<GridImp>
 
   71  using BaseT = DefaultLeafGridView<GridImp>;
 
   75  using typename BaseT::IntersectionIterator;
 
   77  LeafGridView(
const GridImp& grid)
 
   81  IntersectionIterator ibegin(
const typename BaseT::template Codim<0>::Entity& entity)
 const 
   83    return IntersectionIteratorWrapper<
 
   85      typename BaseT::IndexSet,
 
   86      typename GridImp::MultiDomainGrid::LeafGridView::IntersectionIterator
 
   89        this->grid()._grid.leafGridView().ibegin(entity.impl().multiDomainEntity())
 
   93  IntersectionIterator iend(
const typename BaseT::template Codim<0>::Entity& entity)
 const 
   95    return IntersectionIteratorWrapper<
 
   97      typename BaseT::IndexSet,
 
   98      typename GridImp::MultiDomainGrid::LeafGridView::IntersectionIterator
 
  101        this->grid()._grid.leafGridView().iend(entity.impl().multiDomainEntity())
 
  107template<
typename Gr
idImp>
 
  108struct LeafGridViewTraits
 
  109  : 
public DefaultLeafGridViewTraits<GridImp>
 
  111  using GridViewImp = LeafGridView<GridImp>;