X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FSMESHDS%2FSMESHDS_GroupOnFilter.hxx;h=7dfa3e517f7aac8bf2eaee4ddc12f89a383d337a;hb=3ad5d5a2d372d5c4ad5038010cac02663ff20db7;hp=be49ddae72ba89013e5845f44727a4bf573ceed9;hpb=bd8f1aee7c78f7d2eb82bd4fec5e08c9e3d280ce;p=modules%2Fsmesh.git diff --git a/src/SMESHDS/SMESHDS_GroupOnFilter.hxx b/src/SMESHDS/SMESHDS_GroupOnFilter.hxx index be49ddae7..7dfa3e517 100644 --- a/src/SMESHDS/SMESHDS_GroupOnFilter.hxx +++ b/src/SMESHDS/SMESHDS_GroupOnFilter.hxx @@ -49,7 +49,7 @@ class SMESHDS_EXPORT SMESHDS_GroupOnFilter: public SMESHDS_GroupBase std::vector< int > GetMeshInfo() const; template< typename IDTYPE > - int GetElementIds( IDTYPE* ids ) const + int GetElementIds( IDTYPE* ids ) const { return getElementIds( (void*)ids, sizeof(IDTYPE)); } @@ -76,8 +76,16 @@ class SMESHDS_EXPORT SMESHDS_GroupOnFilter: public SMESHDS_GroupBase const SMDS_MeshElement* setNbElemToSkip( SMDS_ElemIteratorPtr& elIt ); int getElementIds( void* ids, size_t idSize ) const; + // We use two ways of optimaization: + // 1) The case of little free memory. Remember nb of KO elements (myNbElemToSkip) + // to skip before the first OK element. As well remember total nb of OK + // elements (myMeshInfo) to stop iteration as all OK elements are found. + // 2) The case of enough free memory. Remember all OK elements (myElements). + SMESH_PredicatePtr myPredicate; std::vector< int > myMeshInfo; + std::vector< const SMDS_MeshElement*> myElements; + bool myElementsOK; size_t myMeshModifTime; // when myMeshInfo was updated int myPredicateTic; size_t myNbElemToSkip;