dune-grid-glue 2.5-git
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 GridGlueView<P0, P1, reverse ? 1 : 0>::IntersectionIterator>
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:30
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:93
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