X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FSMESHDS%2FSMESHDS_GroupOnFilter.hxx;h=a011c255d94c4677aaa1e4295e768cbd208d2e97;hb=HEAD;hp=c53f3bc8fae1c50e4da1d06b57534c3ee7616105;hpb=a17b36970bc61da1d664453c615754997c925b18;p=modules%2Fsmesh.git diff --git a/src/SMESHDS/SMESHDS_GroupOnFilter.hxx b/src/SMESHDS/SMESHDS_GroupOnFilter.hxx index c53f3bc8f..a011c255d 100644 --- a/src/SMESHDS/SMESHDS_GroupOnFilter.hxx +++ b/src/SMESHDS/SMESHDS_GroupOnFilter.hxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2016 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2024 CEA, EDF, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -27,13 +27,14 @@ #include "SMESH_SMESHDS.hxx" +#include "SMDS_ElementHolder.hxx" #include "SMESHDS_GroupBase.hxx" #include "SMESH_Controls.hxx" - + /*! * \brief Groups whose contents is dynamically updated using the filter */ -class SMESHDS_EXPORT SMESHDS_GroupOnFilter: public SMESHDS_GroupBase +class SMESHDS_EXPORT SMESHDS_GroupOnFilter: public SMESHDS_GroupBase, SMDS_ElementHolder { public: @@ -46,20 +47,20 @@ class SMESHDS_EXPORT SMESHDS_GroupOnFilter: public SMESHDS_GroupBase SMESH_PredicatePtr GetPredicate() const { return myPredicate; } - std::vector< int > GetMeshInfo() const; + std::vector< smIdType > GetMeshInfo() const; template< typename IDTYPE > - int GetElementIds( IDTYPE* ids ) const + smIdType GetElementIds( IDTYPE* ids ) const { return getElementIds( (void*)ids, sizeof(IDTYPE)); } - virtual int Extent() const; + virtual smIdType Extent() const; virtual bool IsEmpty(); - virtual bool Contains (const int theID); + virtual bool Contains (const smIdType theID); virtual bool Contains (const SMDS_MeshElement* elem); @@ -69,9 +70,17 @@ class SMESHDS_EXPORT SMESHDS_GroupOnFilter: public SMESHDS_GroupBase bool IsUpToDate() const; + protected: // methods of SMDS_ElementHolder + + virtual SMDS_ElemIteratorPtr getElements(); + virtual void tmpClear(); + virtual void add( const SMDS_MeshElement* element ); + virtual void compact() {}; + private: void update() const; + bool updateParallel() const; void setChanged(bool changed=true); const SMDS_MeshElement* setNbElemToSkip( SMDS_ElemIteratorPtr& elIt ); int getElementIds( void* ids, size_t idSize ) const; @@ -83,7 +92,7 @@ class SMESHDS_EXPORT SMESHDS_GroupOnFilter: public SMESHDS_GroupBase // 2) The case of enough free memory. Remember all OK elements (myElements). SMESH_PredicatePtr myPredicate; - std::vector< int > myMeshInfo; + std::vector< smIdType > myMeshInfo; std::vector< const SMDS_MeshElement*> myElements; bool myElementsOK; size_t myMeshModifTime; // when myMeshInfo was updated