Salome HOME
0020976: EDF 1471 SMESH: New ergonomy to display quality controls
[modules/smesh.git] / src / SMDS / SMDS_MeshElement.hxx
index ccb4373a92b5d6c542b0303f0d10f89009e66d7f..78238dcea1eb24053e6e1ffe52a31853f643012c 100644 (file)
@@ -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) {}