X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FSMDS%2FSMDS_MeshElement.hxx;h=78238dcea1eb24053e6e1ffe52a31853f643012c;hb=4689443745160cf22c9b71c618e9614c43df351b;hp=918ebb668efe33ac67a27d406d4447f14296d1f7;hpb=bd4e115a78b52e3fbc016e5e30bb0e19b2a9e7d6;p=modules%2Fsmesh.git diff --git a/src/SMDS/SMDS_MeshElement.hxx b/src/SMDS/SMDS_MeshElement.hxx index 918ebb668..78238dcea 100644 --- a/src/SMDS/SMDS_MeshElement.hxx +++ b/src/SMDS/SMDS_MeshElement.hxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2012 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2013 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 @@ -65,9 +65,12 @@ public: SMDS_ElemIteratorPtr edgesIterator() const; SMDS_ElemIteratorPtr facesIterator() const; virtual SMDS_ElemIteratorPtr elementsIterator(SMDSAbs_ElementType type) const; - virtual SMDS_ElemIteratorPtr nodesIteratorToUNV() const; virtual SMDS_ElemIteratorPtr interlacedNodesElemIterator() const; + virtual SMDS_NodeIteratorPtr nodeIterator() const; + virtual SMDS_NodeIteratorPtr interlacedNodesIterator() const; + virtual SMDS_NodeIteratorPtr nodesIteratorToUNV() const; + // std-like iteration on nodes typedef SMDS_StdIterator< const SMDS_MeshNode*, SMDS_ElemIteratorPtr > iterator; iterator begin_nodes() const { return iterator( nodesIterator() ); } @@ -148,19 +151,28 @@ public: /*! * \brief Filters of elements, to be used with SMDS_SetIterator */ - struct TypeFilter + struct Filter + { + virtual bool operator()(const SMDS_MeshElement* e) const = 0; + ~Filter() {} + }; + struct NonNullFilter: public Filter + { + bool operator()(const SMDS_MeshElement* e) const { return e; } + }; + struct TypeFilter : public Filter { SMDSAbs_ElementType _type; TypeFilter( SMDSAbs_ElementType t = SMDSAbs_NbElementTypes ):_type(t) {} bool operator()(const SMDS_MeshElement* e) const { return e && e->GetType() == _type; } }; - struct EntityFilter + struct EntityFilter : public Filter { SMDSAbs_EntityType _type; EntityFilter( SMDSAbs_EntityType t = SMDSEntity_Last ):_type(t) {} bool operator()(const SMDS_MeshElement* e) const { return e && e->GetEntityType() == _type; } }; - struct GeomFilter + struct GeomFilter : public Filter { SMDSAbs_GeometryType _type; GeomFilter( SMDSAbs_GeometryType t = SMDSGeom_NONE ):_type(t) {} @@ -198,7 +210,7 @@ protected: struct TIDCompare { bool operator () (const SMDS_MeshElement* e1, const SMDS_MeshElement* e2) const - { return e1->GetID() < e2->GetID(); } + { return e1->GetType() == e2->GetType() ? e1->GetID() < e2->GetID() : e1->GetType() < e2->GetType(); } }; #endif