9#include <kernel/geometry/intern/congruency_sampler.hpp> 
   38      class CongruencyMapping;
 
   40      class CongruencyMapping
 
   55        static int map(
int orient, 
int idx);
 
   63        template<
typename IdxTuple_>
 
   64        static void flip(IdxTuple_& idx);
 
   74      class CongruencyMapping<Shape::Simplex<1>, 0>
 
   77        static int map(
int orient, 
int idx)
 
   79          static const int indices[2][2] =
 
   85          return indices[orient][idx];
 
   88        template<
typename IdxTuple_>
 
   89        static void flip(IdxTuple_& idx)
 
   92          std::swap(idx[0], idx[1]);
 
  102      class CongruencyMapping<Shape::Simplex<2>, 0>
 
  105        static int map(
int orient, 
int idx)
 
  107          static const int indices[7][3] =
 
  118          return indices[orient][idx];
 
  121        template<
typename IdxTuple_>
 
  122        static void flip(IdxTuple_& idx)
 
  127          std::swap(idx[1], idx[2]);
 
  137      class CongruencyMapping<Shape::Simplex<2>, 1>
 
  140        static int map(
int orient, 
int idx)
 
  142          static const int indices[7][3] =
 
  153          return indices[orient][idx];
 
  156        template<
typename IdxTuple_>
 
  157        static void flip(IdxTuple_& idx)
 
  168          std::swap(idx[0], idx[2]);
 
  178      class CongruencyMapping<Shape::Hypercube<1>, 0>
 
  181        static int map(
int orient, 
int idx)
 
  183          static const int indices[2][2] =
 
  189          return indices[orient][idx];
 
  192        template<
typename IdxTuple_>
 
  193        static void flip(IdxTuple_& idx)
 
  196          std::swap(idx[0], idx[1]);
 
  206      class CongruencyMapping<Shape::Hypercube<2>, 0>
 
  209        static int map(
int orient, 
int idx)
 
  211          static const int indices[8][4] =
 
  223          return indices[orient][idx];
 
  226        template<
typename IdxTuple_>
 
  227        static void flip(IdxTuple_& idx)
 
  232          std::swap(idx[0], idx[2]);
 
  233          std::swap(idx[1], idx[3]);
 
  243      class CongruencyMapping<Shape::Hypercube<2>, 1>
 
  246        static int map(
int orient, 
int idx)
 
  248          static const int indices[8][4] =
 
  260          return indices[orient][idx];
 
  263        template<
typename IdxTuple_>
 
  264        static void flip(IdxTuple_& idx)
 
  275          std::swap(idx[0], idx[1]);