intersectiongetter.hh
Go to the documentation of this file.00001
00002 #ifndef DUNE_INTERSECTIONGETTER_HH
00003 #define DUNE_INTERSECTIONGETTER_HH
00004
00005 #include <dune/common/static_assert.hh>
00006 #include <dune/common/typetraits.hh>
00007 #include <dune/common/deprecated.hh>
00008
00019 namespace Dune
00020 {
00028 struct LevelTag{} DUNE_DEPRECATED;
00029
00033 struct LeafTag{} DUNE_DEPRECATED;
00034
00048 template<typename Grid, typename Tag>
00049 struct IntersectionIteratorGetter
00050 {
00058 typedef Tag TypeTag;
00059
00063 typedef typename Grid::template Codim<0>::IntersectionIterator IntersectionIterator;
00064
00069 template<typename T>
00070 inline static IntersectionIterator begin(T& iter)
00071 {
00072
00073 IsTrue<is_same<TypeTag,LevelTag>::value||is_same<TypeTag,LevelTag>::value>::yes();
00074 return iter.ileafbegin();
00075 }
00080 template<typename T>
00081 inline static IntersectionIterator end(T& iter)
00082 {
00083
00084 IsTrue<is_same<TypeTag,LevelTag>::value||is_same<TypeTag,LevelTag>::value>::yes();
00085 return iter.ileafend();
00086 }
00087 };
00088
00089
00090 template<typename Grid>
00091 struct IntersectionIteratorGetter<Grid,LeafTag>
00092 {
00093 typedef typename Grid::template Codim<0>::LeafIntersectionIterator IntersectionIterator;
00094
00095 template<typename T>
00096 inline static IntersectionIterator begin(T& iter)
00097 {
00098 return iter.ileafbegin();
00099 }
00100
00101 template<typename T>
00102 inline static IntersectionIterator end(T& iter)
00103 {
00104 return iter.ileafend();
00105 }
00106 };
00107
00108
00109 template<typename Grid>
00110 struct IntersectionIteratorGetter<Grid,LevelTag>
00111 {
00112 typedef typename Grid::template Codim<0>::LevelIntersectionIterator IntersectionIterator;
00113
00114 template<typename T>
00115 inline static IntersectionIterator begin(T& iter)
00116 {
00117 return iter.ilevelbegin();
00118 }
00119
00120 template<typename T>
00121 inline static IntersectionIterator end(T& iter)
00122 {
00123 return iter.ilevelend();
00124 }
00125 };
00126
00131 }
00132 #endif