Commit 48aade10 authored by Jakub Klinkovský's avatar Jakub Klinkovský
Browse files

Fixed detection of build config tags in tnlMeshTypeResolver

parent bcc18528
Loading
Loading
Loading
Loading
+33 −3
Original line number Diff line number Diff line
@@ -58,18 +58,48 @@ class tnlMeshTypeResolver< ProblemSetter, Real, Device, Index, MeshConfig, true
   static bool resolveMeshDimensions( const tnlParameterContainer& parameters,
                                      const tnlList< tnlString >& parsedMeshType );

   template< int MeshDimensions >
   // Overload for disabled dimensions
   template< int MeshDimensions,
             typename = typename std::enable_if< ! tnlMeshConfigDimensions<MeshConfig,MeshDimensions>::enabled >::type,
             typename = void >
   static bool resolveMeshRealType( const tnlParameterContainer& parameters,
                                    const tnlList< tnlString >& parsedMeshType );

   // Overload for enabled dimensions
   template< int MeshDimensions,
             typename = typename std::enable_if< tnlMeshConfigDimensions<MeshConfig,MeshDimensions>::enabled >::type >
   static bool resolveMeshRealType( const tnlParameterContainer& parameters,
                                    const tnlList< tnlString >& parsedMeshType );

   // Overload for disabled real types
   template< int MeshDimensions,
             typename MeshRealType,
             typename = typename std::enable_if< ! tnlMeshConfigReal<MeshConfig, MeshRealType>::enabled >::type,
             typename = void >
   static bool resolveMeshIndexType( const tnlParameterContainer& parameters,
                                     const tnlList< tnlString >& parsedMeshType );

   // Overload for enabled real types
   template< int MeshDimensions,
             typename MeshRealType >
             typename MeshRealType,
             typename = typename std::enable_if< tnlMeshConfigReal<MeshConfig, MeshRealType>::enabled >::type >
   static bool resolveMeshIndexType( const tnlParameterContainer& parameters,
                                     const tnlList< tnlString >& parsedMeshType );

   // Overload for disabled index types
   template< int MeshDimensions,
             typename MeshRealType,
             typename MeshIndexType,
             typename = typename std::enable_if< ! tnlMeshConfigIndex<MeshConfig, MeshIndexType>::enabled >::type,
             typename = void >
   static bool resolveMeshType( const tnlParameterContainer& parameters,
                                const tnlList< tnlString >& parsedMeshType );

   // Overload for enabled index types
   template< int MeshDimensions,
             typename MeshRealType,
             typename MeshIndexType >
             typename MeshIndexType,
             typename = typename std::enable_if< tnlMeshConfigIndex<MeshConfig, MeshIndexType>::enabled >::type >
   static bool resolveMeshType( const tnlParameterContainer& parameters,
                                const tnlList< tnlString >& parsedMeshType );

+52 −6
Original line number Diff line number Diff line
@@ -98,7 +98,20 @@ template< template< typename Real, typename Device, typename Index, typename Mes
          typename Device,
          typename Index,
          typename MeshConfig >
   template< int MeshDimensions >
   template< int MeshDimensions, typename, typename >
bool tnlMeshTypeResolver< ProblemSetter, Real, Device, Index, MeshConfig, true >::resolveMeshRealType( const tnlParameterContainer& parameters,
                                                                                                      const tnlList< tnlString >& parsedMeshType )
{
   cerr << "Mesh dimension " << MeshDimensions << " is not supported." << endl;
   return false;
}

template< template< typename Real, typename Device, typename Index, typename MeshType, typename MeshConfig, typename SolverStarter > class ProblemSetter,
          typename Real,
          typename Device,
          typename Index,
          typename MeshConfig >
   template< int MeshDimensions, typename >
bool tnlMeshTypeResolver< ProblemSetter, Real, Device, Index, MeshConfig, true >::resolveMeshRealType( const tnlParameterContainer& parameters,
                                                                                                      const tnlList< tnlString >& parsedMeshType )
{
@@ -118,8 +131,24 @@ template< template< typename Real, typename Device, typename Index, typename Mes
          typename Index,
          typename MeshConfig >
   template< int MeshDimensions,
             typename MeshRealType >
bool tnlMeshTypeResolver< ProblemSetter, Real, Device, Index, MeshConfig, 1 >::resolveMeshIndexType( const tnlParameterContainer& parameters,
             typename MeshRealType,
             typename, typename >
bool tnlMeshTypeResolver< ProblemSetter, Real, Device, Index, MeshConfig, true >::resolveMeshIndexType( const tnlParameterContainer& parameters,
                                                                                                        const tnlList< tnlString >& parsedMeshType )
{
   cerr << "The type '" << parsedMeshType[ 4 ] << "' is not allowed for real type." << endl;
   return false;
}

template< template< typename Real, typename Device, typename Index, typename MeshType, typename MeshConfig, typename SolverStarter > class ProblemSetter,
          typename Real,
          typename Device,
          typename Index,
          typename MeshConfig >
   template< int MeshDimensions,
             typename MeshRealType,
             typename >
bool tnlMeshTypeResolver< ProblemSetter, Real, Device, Index, MeshConfig, true >::resolveMeshIndexType( const tnlParameterContainer& parameters,
                                                                                                        const tnlList< tnlString >& parsedMeshType )
{
   if( parsedMeshType[ 4 ] == "short int" )
@@ -139,7 +168,24 @@ template< template< typename Real, typename Device, typename Index, typename Mes
          typename MeshConfig >
   template< int MeshDimensions,
             typename MeshRealType,
             typename MeshIndexType >
             typename MeshIndexType,
             typename, typename >
bool tnlMeshTypeResolver< ProblemSetter, Real, Device, Index, MeshConfig, true >::resolveMeshType( const tnlParameterContainer& parameters,
                                                                                                   const tnlList< tnlString >& parsedMeshType )
{
   cerr << "The type '" << parsedMeshType[ 4 ] << "' is not allowed for indexing type." << endl;
   return false;
}

template< template< typename Real, typename Device, typename Index, typename MeshType, typename MeshConfig, typename SolverStarter > class ProblemSetter,
          typename Real,
          typename Device,
          typename Index,
          typename MeshConfig >
   template< int MeshDimensions,
             typename MeshRealType,
             typename MeshIndexType,
             typename >
bool tnlMeshTypeResolver< ProblemSetter, Real, Device, Index, MeshConfig, true >::resolveMeshType( const tnlParameterContainer& parameters,
                                                                                                   const tnlList< tnlString >& parsedMeshType )
{