Skip to content
Snippets Groups Projects
Commit 57100b46 authored by Jakub Klinkovský's avatar Jakub Klinkovský
Browse files

Fixed Python bindings for Mesh

parent 98e54256
No related branches found
No related tags found
1 merge request!65VTK formats, distributed mesh and synchronizer
......@@ -13,15 +13,12 @@ namespace py = pybind11;
#include <type_traits>
struct _general {};
struct _special : _general {};
template< typename MeshEntity,
int Superdimension,
typename Scope,
typename = typename std::enable_if< Superdimension <= MeshEntity::MeshTraitsType::meshDimension >::type >
std::enable_if_t< Superdimension <= MeshEntity::MeshType::getMeshDimension(), bool > = true >
// && MeshEntity::template SuperentityTraits< Superdimension >::storageEnabled >::type >
void export_getSuperentityIndex( Scope & m, _special )
void export_getSuperentityIndex( Scope & m )
{
m.def("getSuperentityIndex", []( const MeshEntity& entity, const typename MeshEntity::LocalIndexType& i ) {
return entity.template getSuperentityIndex< Superdimension >( i );
......@@ -31,8 +28,9 @@ void export_getSuperentityIndex( Scope & m, _special )
template< typename MeshEntity,
int Superdimension,
typename Scope >
void export_getSuperentityIndex( Scope &, _general )
typename Scope,
std::enable_if_t< ! ( Superdimension <= MeshEntity::MeshType::getMeshDimension() ), bool > = true >
void export_getSuperentityIndex( Scope & )
{
}
......@@ -40,9 +38,9 @@ void export_getSuperentityIndex( Scope &, _general )
template< typename MeshEntity,
int Subdimension,
typename Scope,
typename = typename std::enable_if< Subdimension <= MeshEntity::MeshTraitsType::meshDimension
&& (Subdimension < MeshEntity::getEntityDimension()) >::type >
void export_getSubentityIndex( Scope & m, const char* name, _special )
std::enable_if_t< Subdimension <= MeshEntity::MeshType::getMeshDimension()
&& (Subdimension < MeshEntity::getEntityDimension()), bool > = true >
void export_getSubentityIndex( Scope & m, const char* name )
{
m.def(name, []( const MeshEntity& entity, const typename MeshEntity::LocalIndexType& i ) {
return entity.template getSubentityIndex< Subdimension >( i );
......@@ -51,17 +49,20 @@ void export_getSubentityIndex( Scope & m, const char* name, _special )
}
template< typename MeshEntity,
int Superdimension,
typename Scope >
void export_getSubentityIndex( Scope &, const char*, _general )
int Subdimension,
typename Scope,
std::enable_if_t< ! ( Subdimension <= MeshEntity::MeshType::getMeshDimension()
&& (Subdimension < MeshEntity::getEntityDimension())
), bool > = true >
void export_getSubentityIndex( Scope &, const char* )
{
}
template< typename MeshEntity,
typename Scope,
typename = typename std::enable_if< MeshEntity::getEntityDimension() == 0 >::type >
void export_getPoint( Scope & scope, _special )
std::enable_if_t< MeshEntity::getEntityDimension() == 0, bool > = true >
void export_getPoint( Scope & scope )
{
scope.def("getPoint", []( const MeshEntity& entity ) {
return entity.getPoint();
......@@ -70,8 +71,9 @@ void export_getPoint( Scope & scope, _special )
}
template< typename MeshEntity,
typename Scope >
void export_getPoint( Scope &, _general )
typename Scope,
std::enable_if_t< MeshEntity::getEntityDimension() != 0, bool > = true >
void export_getPoint( Scope & )
{
}
......@@ -85,9 +87,9 @@ void export_MeshEntity( Scope & scope, const char* name )
// TODO
;
export_getSuperentityIndex< MeshEntity, MeshEntity::getEntityDimension() + 1 >( entity, _special() );
export_getSubentityIndex< MeshEntity, 0 >( entity, "getSubvertexIndex", _special() );
export_getPoint< MeshEntity >( entity, _special() );
export_getSuperentityIndex< MeshEntity, MeshEntity::getEntityDimension() + 1 >( entity );
export_getSubentityIndex< MeshEntity, 0 >( entity, "getSubvertexIndex" );
export_getPoint< MeshEntity >( entity );
}
template< typename Mesh >
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment