dune-grid-glue 2.8.0
Loading...
Searching...
No Matches
rangegenerators.hh
Go to the documentation of this file.
1#ifndef DUNE_GRIDGLUE_ADAPTER_RANGEGENERATORS_HH
2#define DUNE_GRIDGLUE_ADAPTER_RANGEGENERATORS_HH
3
4#include <dune/common/iteratorrange.hh>
5
6namespace Dune {
7namespace GridGlue {
8
12template<bool reverse>
13struct Reverse
14 : std::integral_constant<bool, reverse>
15{
16 typedef Reverse type;
17
18 constexpr
20 { return {}; }
21};
22
23#ifdef DOXYGEN
24
30
64template<...>
65IteratorRange<...>
66intersections(const GridGlue<...>& glue, const Reverse<...>& reverse = !reversed);
67
68#else
69
70namespace {
71const Reverse<true> reversed = {};
72} /* namespace */
73
74template<typename P0, typename P1, bool reverse = false>
75IteratorRange< typename GridGlue<P0, P1>::template IntersectionIterator<reverse ? 1 : 0> >
76intersections(const GridGlue<P0, P1>& glue, const Reverse<reverse>& = {})
77{
78 const static int side = reverse ? 1 : 0;
79 return {glue.template ibegin<side>(), glue.template iend<side>()};
80}
81
82#endif // DOXYGEN
83
84} /* namespace GridGlue */
85} /* namespace Dune */
86
87#endif
Definition: gridglue.hh:35
IteratorRange<... > intersections(const GridGlue<... > &glue, const Reverse<... > &reverse=!reversed)
Iterate over all intersections of a GridGlue.
sequential adapter to couple two grids at specified close together boundaries
Definition: gridglue.hh:65
IteratorRange<... > intersections(const GridGlue<... > &glue, const Reverse<... > &reverse=!reversed)
Iterate over all intersections of a GridGlue.
Definition: rangegenerators.hh:15
const Reverse< true > reversed
Definition: rangegenerators.hh:29
Reverse type
Definition: rangegenerators.hh:16
constexpr Reverse<!reverse > operator!() const
Definition: rangegenerators.hh:19