3 #ifndef DUNE_GEOMETRY_GENERICGEOMETRY_TRACEPROVIDER_HH
4 #define DUNE_GEOMETRY_GENERICGEOMETRY_TRACEPROVIDER_HH
6 #include <dune/common/forloop.hh>
7 #include <dune/common/typetraits.hh>
8 #include <dune/common/visibility.hh>
16 namespace GenericGeometry
22 template<
class Topology,
class GeometryTraits >
23 class NonHybridMapping;
25 template<
unsigned int dim,
class GeometryTraits >
28 template<
class Topology,
class GeometryTraits >
36 template<
class Topology,
class GeometryTraits,
unsigned int codim,
bool forceHybr
id >
63 typedef typename Factory::Trace
Trace;
67 return (*instance().construct_[ i ])( mapping, traceStorage );
71 typedef Trace *(*Construct)(
const Mapping &mapping,
char *traceStorage );
75 ForLoop< Builder, 0, numSubTopologies-1 >::apply( construct_ );
78 DUNE_EXPORT
static const This &instance ()
80 static This theInstance;
84 Construct construct_[ numSubTopologies ];
92 template<
class Topology,
class GeometryTraits,
unsigned int codim,
bool forceHybr
id >
96 template<
unsigned int i >
110 return new( traceStorage ) TraceImpl( mapping.template trace< codim, i >() );
119 template<
class Topology,
class GeometryTraits,
unsigned int codim,
bool forceHybr
id >
131 return new( traceStorage )
Trace( mapping.template trace< codim, i >() );
140 template<
class Topology,
class GeometryTraits,
unsigned int codim,
bool forceHybr
id >
144 static void apply ( Construct (&
construct)[ numSubTopologies ] )
146 construct[ i ] = &(Factory::template construct< i >);
154 #endif // #ifndef DUNE_GEOMETRY_GENERICGEOMETRY_TRACEPROVIDER_HH