SimVascular / svSolver

Separate repository for svSolver
16 stars 23 forks source link

VTK 9 API changes are causing compilation errors #118

Open ktbolt opened 1 year ago

ktbolt commented 1 year ago

There were a lot of API changes from VTK 8 to VTK 9. This is causing compilation errors in some VTK calls

svSolver/Code/FlowSolvers/ThreeDSolver/svPre/helpers.cxx: In function ‘int VtkUtils_GetAllPolys(vtkPolyData*, int*, vtkIdType**)’:
svSolver/Code/FlowSolvers/ThreeDSolver/svPre/helpers.cxx:1927:40: error: binding reference of type ‘const vtkIdType*&’ {aka ‘const long long int*&’} to ‘vtkIdType*’ {aka ‘long long int*’} discards qualifiers
 1927 |     while ( pdPgns->GetNextCell( npts, pts ) ) {
      |                                        ^~~

The fix is to add a const declaration, for example change

 vtkIdType *pts;

to

vtkIdType const *pts;

We need to think about how we want to make these changes, maybe add a test for VTK versions.

ktbolt commented 10 months ago

I've added a directive to test for VTK version >= 9 and selectively define vtkIdType *pts; depending on VTK version

    #ifdef VTK_USE_NEW_ID_TYPE
    vtkIdType const *pts;
    #else
    vtkIdType *pts;
    #endif

Tested on MacOS and Ubuntu.