-// Copyright (C) 2007-2016 CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2021 CEA/DEN, EDF R&D, OPEN CASCADE
//
// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
SMDS_ElementHolder::SMDS_ElementHolder( const SMDS_Mesh* mesh )
: myMesh( const_cast< SMDS_Mesh* >( mesh ))
{
- myPtrInMesh = myMesh->myElemHolders.insert( this ).first;
+ if ( myMesh )
+ myPtrInMesh = myMesh->myElemHolders.insert( this ).first;
}
//=======================================================================
SMDS_ElementHolder::~SMDS_ElementHolder()
{
- myMesh->myElemHolders.erase( myPtrInMesh );
+ if ( myMesh )
+ myMesh->myElemHolders.erase( myPtrInMesh );
}
//=======================================================================
void SMDS_ElementHolder::beforeCompacting()
{
- int i = 0;
- for ( SMDS_ElemIteratorPtr it = getElements(); it->more(); ++i )
+ for ( SMDS_ElemIteratorPtr it = getElements(); it->more(); )
{
const SMDS_MeshElement* e = it->next();
if ( !e ) continue;
else
{
myExternalElems.push_back( e );
- myVtkIDs.push_back( -1 * (int)myExternalElems.size() );
+ myVtkIDs.push_back( -1 * (vtkIdType) myExternalElems.size() );
}
}
}
//purpose : restore pointers to elements
//=======================================================================
-void SMDS_ElementHolder::restoreElements( const std::vector<int>& idNodesOldToNew,
- const std::vector<int>& idCellsOldToNew )
+void SMDS_ElementHolder::restoreElements( const std::vector<smIdType>& idNodesOldToNew,
+ const std::vector<smIdType>& idCellsOldToNew )
{
tmpClear();
std::vector< bool >::iterator isNode = myIsNode.begin();
for ( size_t i = 0; i < myVtkIDs.size(); ++i, ++isNode )
{
- int vtkID = myVtkIDs[i];
+ vtkIdType vtkID = myVtkIDs[i];
if ( vtkID < 0 )
{
elem = myExternalElems[ (-vtkID)-1 ];
}
else if ( *isNode )
{
- if ( vtkID < (int)idNodesOldToNew.size() )
+ if ( vtkID < (vtkIdType)idNodesOldToNew.size() )
elem = myMesh->FindNodeVtk( idNodesOldToNew[ vtkID ]);
else
elem = myMesh->FindNodeVtk( vtkID );
}
else
{
- if ( vtkID < (int)idCellsOldToNew.size() )
+ if ( vtkID < (vtkIdType)idCellsOldToNew.size() )
elem = myMesh->FindElementVtk( idCellsOldToNew[ vtkID ]);
else
elem = myMesh->FindElementVtk( vtkID );