Commit e33e1a32 authored by Jakub Klinkovský's avatar Jakub Klinkovský
Browse files

Simplified build configuration of MeshType

The previous version was too complicated and even wrong as it did not
allow to configure e.g. solvers with doubles and meshes with floats.
parent 5b350456
Loading
Loading
Loading
Loading
+3 −33
Original line number Diff line number Diff line
@@ -52,48 +52,18 @@ class MeshTypeResolver
   static bool resolveMeshDimension( Meshes::Readers::TNL& reader,
                                     ProblemSetterArgs&&... problemSetterArgs );

   // Overload for disabled dimensions
   template< int MeshDimension,
             typename = typename std::enable_if< ! ConfigTagDimensions< ConfigTag,MeshDimension>::enabled >::type,
             typename = void >
   static bool resolveMeshRealType( Meshes::Readers::TNL& reader,
                                    ProblemSetterArgs&&... problemSetterArgs );

   // Overload for enabled dimensions
   template< int MeshDimension,
             typename = typename std::enable_if< ConfigTagDimensions< ConfigTag,MeshDimension>::enabled >::type >
   template< int MeshDimension >
   static bool resolveMeshRealType( Meshes::Readers::TNL& reader,
                                    ProblemSetterArgs&&... problemSetterArgs );

   // Overload for disabled real types
   template< int MeshDimension,
             typename MeshRealType,
             typename = typename std::enable_if< ! ConfigTagReal< ConfigTag, MeshRealType>::enabled >::type,
             typename = void >
             typename MeshRealType >
   static bool resolveMeshIndexType( Meshes::Readers::TNL& reader,
                                     ProblemSetterArgs&&... problemSetterArgs );

   // Overload for enabled real types
   template< int MeshDimension,
             typename MeshRealType,
             typename = typename std::enable_if< ConfigTagReal< ConfigTag, MeshRealType>::enabled >::type >
   static bool resolveMeshIndexType( Meshes::Readers::TNL& reader,
                                     ProblemSetterArgs&&... problemSetterArgs );

   // Overload for disabled index types
   template< int MeshDimension,
             typename MeshRealType,
             typename MeshIndexType,
             typename = typename std::enable_if< ! ConfigTagIndex< ConfigTag, MeshIndexType >::enabled >::type,
             typename = void >
   static bool resolveMeshType( Meshes::Readers::TNL& reader,
                                ProblemSetterArgs&&... problemSetterArgs );

   // Overload for enabled index types
   template< int MeshDimension,
             typename MeshRealType,
             typename MeshIndexType,
             typename = typename std::enable_if< ConfigTagIndex< ConfigTag, MeshIndexType >::enabled >::type >
             typename MeshIndexType >
   static bool resolveMeshType( Meshes::Readers::TNL& reader,
                                ProblemSetterArgs&&... problemSetterArgs );

+3 −52
Original line number Diff line number Diff line
@@ -57,21 +57,7 @@ template< typename ConfigTag,
          typename Device,
          template< typename MeshType > class ProblemSetter,
          typename... ProblemSetterArgs >
   template< int MeshDimension, typename, typename >
bool
MeshTypeResolver< ConfigTag, Device, ProblemSetter, ProblemSetterArgs... >::
resolveMeshRealType( Meshes::Readers::TNL& reader,
    ProblemSetterArgs&&... problemSetterArgs )
{
   std::cerr << "Mesh dimension " << MeshDimension << " is disabled in the build configuration." << std::endl;
   return false;
}

template< typename ConfigTag,
          typename Device,
          template< typename MeshType > class ProblemSetter,
          typename... ProblemSetterArgs >
   template< int MeshDimension, typename >
   template< int MeshDimension >
bool
MeshTypeResolver< ConfigTag, Device, ProblemSetter, ProblemSetterArgs... >::
resolveMeshRealType( Meshes::Readers::TNL& reader,
@@ -92,24 +78,7 @@ template< typename ConfigTag,
          template< typename MeshType > class ProblemSetter,
          typename... ProblemSetterArgs >
   template< int MeshDimension,
             typename MeshRealType,
             typename, typename >
bool
MeshTypeResolver< ConfigTag, Device, ProblemSetter, ProblemSetterArgs... >::
resolveMeshIndexType( Meshes::Readers::TNL& reader,
                      ProblemSetterArgs&&... problemSetterArgs )
{
   std::cerr << "The real type " << TNL::getType< MeshRealType >() << " is disabled in the build configuration." << std::endl;
   return false;
}

template< typename ConfigTag,
          typename Device,
          template< typename MeshType > class ProblemSetter,
          typename... ProblemSetterArgs >
   template< int MeshDimension,
             typename MeshRealType,
             typename >
             typename MeshRealType >
bool
MeshTypeResolver< ConfigTag, Device, ProblemSetter, ProblemSetterArgs... >::
resolveMeshIndexType( Meshes::Readers::TNL& reader,
@@ -131,25 +100,7 @@ template< typename ConfigTag,
          typename... ProblemSetterArgs >
   template< int MeshDimension,
             typename MeshRealType,
             typename MeshIndexType,
             typename, typename >
bool
MeshTypeResolver< ConfigTag, Device, ProblemSetter, ProblemSetterArgs... >::
resolveMeshType( Meshes::Readers::TNL& reader,
                 ProblemSetterArgs&&... problemSetterArgs )
{
   std::cerr << "The index type " << TNL::getType< MeshIndexType >() << " is disabled in the build configuration." << std::endl;
   return false;
}

template< typename ConfigTag,
          typename Device,
          template< typename MeshType > class ProblemSetter,
          typename... ProblemSetterArgs >
   template< int MeshDimension,
             typename MeshRealType,
             typename MeshIndexType,
             typename >
             typename MeshIndexType >
bool
MeshTypeResolver< ConfigTag, Device, ProblemSetter, ProblemSetterArgs... >::
resolveMeshType( Meshes::Readers::TNL& reader,