Salome HOME
Merge branch 'V9_9_BR'
[modules/smesh.git] / src / SMDS / SMDS_MeshCell.cxx
index 60f2a6fa9faf50cd827267a99940b26845bfece2..f2998c111b8805582df2bddf7f4f51a3cc30a8af 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2010-2019  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2010-2022  CEA/DEN, EDF R&D, OPEN CASCADE
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
@@ -461,8 +461,8 @@ void SMDS_MeshCell::init( SMDSAbs_EntityType theEntity, int theNbNodes, ... )
   }
   va_end( vl );
 
-  int vtkType = toVtkType( theEntity );
-  int   vtkID = getGrid()->InsertNextLinkedCell( vtkType, theNbNodes, vtkIds );
+  int     vtkType = toVtkType( theEntity );
+  vtkIdType vtkID = getGrid()->InsertNextLinkedCell( vtkType, theNbNodes, vtkIds );
   setVtkID( vtkID );
 }
 
@@ -473,25 +473,27 @@ void SMDS_MeshCell::init( SMDSAbs_EntityType                       theEntity,
   for ( size_t i = 0; i < nodes.size(); ++i )
     vtkIds[i] = nodes[i]->GetVtkID();
 
-  int vtkType = toVtkType( theEntity );
-  int   vtkID = getGrid()->InsertNextLinkedCell( vtkType, nodes.size(), &vtkIds[0] );
+  int     vtkType = toVtkType( theEntity );
+  vtkIdType vtkID = getGrid()->InsertNextLinkedCell( vtkType, nodes.size(), &vtkIds[0] );
   setVtkID( vtkID );
 }
 
 void SMDS_MeshCell::init( SMDSAbs_EntityType            theEntity,
                           const std::vector<vtkIdType>& vtkNodeIds )
 {
-  int vtkType = toVtkType( theEntity );
-  int   vtkID = getGrid()->InsertNextLinkedCell( vtkType, vtkNodeIds.size(),
-                                                 const_cast< vtkIdType* > ( &vtkNodeIds[0] ));
+  int     vtkType = toVtkType( theEntity );
+  vtkIdType vtkID = getGrid()->InsertNextLinkedCell( vtkType, vtkNodeIds.size(),
+                                                     const_cast< vtkIdType* > ( &vtkNodeIds[0] ));
   setVtkID( vtkID );
 }
 
 bool SMDS_MeshCell::ChangeNodes(const SMDS_MeshNode* nodes[], const int theNbNodes)
 {
   vtkIdType npts = 0;
-  vtkIdType* pts = 0;
-  getGrid()->GetCellPoints( GetVtkID(), npts, pts );
+  vtkIdType *pts(nullptr);
+  vtkIdType const *tmp(nullptr);
+  getGrid()->GetCellPoints( GetVtkID(), npts, tmp );
+  pts = const_cast<vtkIdType *>(tmp);
   if ( theNbNodes != npts )
   {
     MESSAGE("ChangeNodes problem: not the same number of nodes " << npts << " -> " << theNbNodes);
@@ -519,8 +521,7 @@ int SMDS_MeshCell::NbNodes() const
 {
   if ( GetVtkType() == VTK_POLYHEDRON )
     return static_cast< const SMDS_MeshVolume* >( this )->SMDS_MeshVolume::NbNodes();
-  vtkIdType *pts, npts;
-  getGrid()->GetCellPoints( GetVtkID(), npts, pts );
+  vtkIdType npts = getGrid()->GetCells()->GetCellSize( GetVtkID() );
   return npts;
 }
 
@@ -631,7 +632,8 @@ const SMDS_MeshNode* SMDS_MeshCell::GetNode(const int ind) const
   if ( GetVtkType() == VTK_POLYHEDRON )
     return static_cast< const SMDS_MeshVolume* >( this )->SMDS_MeshVolume::GetNode( ind );
 
-  vtkIdType npts, *pts;
+  vtkIdType npts;
+  vtkIdType const *pts;
   getGrid()->GetCellPoints( GetVtkID(), npts, pts );
   const std::vector<int>& interlace = SMDS_MeshCell::fromVtkOrder( VTKCellType( GetVtkType() ));
   return GetMesh()->FindNodeVtk( pts[ interlace.empty() ? ind : interlace[ ind ]]);
@@ -645,7 +647,8 @@ int SMDS_MeshCell::GetNodeIndex( const SMDS_MeshNode* node ) const
   if ( GetVtkType() == VTK_POLYHEDRON )
     return static_cast< const SMDS_MeshVolume* >( this )->SMDS_MeshVolume::GetNodeIndex( node );
 
-  vtkIdType npts, *pts;
+  vtkIdType npts;
+  vtkIdType const *pts;
   getGrid()->GetCellPoints( GetVtkID(), npts, pts );
   for ( vtkIdType i = 0; i < npts; ++i )
     if ( pts[i] == node->GetVtkID() )