Salome HOME
21680: EDF 2288 SMESH: creation of 0D elements from other elements
[modules/smesh.git] / src / SMESH_I / SMESH_Filter_i.hxx
index 057c7693b00d15b0e7013ab9ff993042a94ea4f9..cb82aa6d5637d0448f017525c07789acd44ed5d5 100644 (file)
@@ -1,23 +1,23 @@
-//  Copyright (C) 2007-2010  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2012  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
+// Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
 //
-//  This library is free software; you can redistribute it and/or
-//  modify it under the terms of the GNU Lesser General Public
-//  License as published by the Free Software Foundation; either
-//  version 2.1 of the License.
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License.
 //
-//  This library is distributed in the hope that it will be useful,
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-//  Lesser General Public License for more details.
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// Lesser General Public License for more details.
 //
-//  You should have received a copy of the GNU Lesser General Public
-//  License along with this library; if not, write to the Free Software
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
 //
-//  See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 
 //  SMESH SMESH_I : idl implementation based on 'SMESH' unit's calsses
 #include "SALOME_GenericObj_i.hh"
 #include "SMESH_ControlsDef.hxx"
 
+#include <list>
+
 class SMESHDS_Mesh;
 
 namespace SMESH
 {
 
+  // ================================================================================
   namespace Controls
   {
 
@@ -123,8 +126,10 @@ namespace SMESH
       Controls::ElementsOnShapePtr    myElementsOnShapePtr; // only if myIsSubshape == false
     };
     typedef boost::shared_ptr<LyingOnGeom> LyingOnGeomPtr;
-  }
-  
+
+  } // namespace Controls
+
+  // ================================================================================
   /*
     FUNCTORS
   */
@@ -134,7 +139,7 @@ namespace SMESH
     Description : An abstact class for all functors 
   */
   class SMESH_I_EXPORT Functor_i: public virtual POA_SMESH::Functor,
-                   public virtual SALOME::GenericObj_i
+                                  public virtual SALOME::GenericObj_i
   {
   public:
     void                            SetMesh( SMESH_Mesh_ptr theMesh );
@@ -153,10 +158,11 @@ namespace SMESH
     Description : Base class for numerical functors 
   */
   class SMESH_I_EXPORT NumericalFunctor_i: public virtual POA_SMESH::NumericalFunctor,
-                            public virtual Functor_i
+                                           public virtual Functor_i
   {
   public:
     CORBA::Double                   GetValue( CORBA::Long theElementId );
+    SMESH::Histogram*               GetHistogram(CORBA::Short nbIntervals);
     void                            SetPrecision( CORBA::Long thePrecision );
     CORBA::Long                     GetPrecision();
     Controls::NumericalFunctorPtr   GetNumericalFunctor();
@@ -171,7 +177,7 @@ namespace SMESH
     Description : Functor for calculation of minimum angle
   */
   class SMESH_I_EXPORT MinimumAngle_i: public virtual POA_SMESH::MinimumAngle,
-                        public virtual NumericalFunctor_i
+                                       public virtual NumericalFunctor_i
   {
   public:
     MinimumAngle_i();
@@ -184,7 +190,7 @@ namespace SMESH
     Description : Functor for calculating aspect ratio
   */
   class SMESH_I_EXPORT AspectRatio_i: public virtual POA_SMESH::AspectRatio,
-                       public virtual NumericalFunctor_i
+                                      public virtual NumericalFunctor_i
   {
   public:
     AspectRatio_i();
@@ -197,7 +203,7 @@ namespace SMESH
     Description : Functor for calculating aspect ratio for 3D
   */
   class SMESH_I_EXPORT AspectRatio3D_i: public virtual POA_SMESH::AspectRatio3D,
-                         public virtual NumericalFunctor_i
+                                        public virtual NumericalFunctor_i
   {
   public:
     AspectRatio3D_i();
@@ -210,7 +216,7 @@ namespace SMESH
     Description : Functor for calculating warping
   */
   class SMESH_I_EXPORT Warping_i: public virtual POA_SMESH::Warping,
-                   public virtual NumericalFunctor_i
+                                  public virtual NumericalFunctor_i
   {
   public:
     Warping_i();
@@ -223,7 +229,7 @@ namespace SMESH
     Description : Functor for calculating taper
   */
   class SMESH_I_EXPORT Taper_i: public virtual POA_SMESH::Taper,
-                 public virtual NumericalFunctor_i
+                                public virtual NumericalFunctor_i
   {
   public:
     Taper_i();
@@ -236,7 +242,7 @@ namespace SMESH
     Description : Functor for calculating skew in degrees
   */
   class SMESH_I_EXPORT Skew_i: public virtual POA_SMESH::Skew,
-                public virtual NumericalFunctor_i
+                               public virtual NumericalFunctor_i
   {
   public:
     Skew_i();
@@ -249,7 +255,7 @@ namespace SMESH
     Description : Functor for calculating area
   */
   class SMESH_I_EXPORT Area_i: public virtual POA_SMESH::Area,
-                public virtual NumericalFunctor_i
+                               public virtual NumericalFunctor_i
   {
   public:
     Area_i();
@@ -262,7 +268,7 @@ namespace SMESH
     Description : Functor for calculating volume of 3D element
   */
   class SMESH_I_EXPORT Volume3D_i: public virtual POA_SMESH::Volume3D,
-                    public virtual NumericalFunctor_i
+                                   public virtual NumericalFunctor_i
   {
   public:
     Volume3D_i();
@@ -270,12 +276,38 @@ namespace SMESH
   };
   
   
+  /*
+    Class       : MaxElementLength2D_i
+    Description : Functor for calculating maximum length of 2D element
+  */
+  class SMESH_I_EXPORT MaxElementLength2D_i: public virtual POA_SMESH::MaxElementLength2D,
+                                             public virtual NumericalFunctor_i
+  {
+  public:
+    MaxElementLength2D_i();
+    FunctorType                     GetFunctorType();
+  };
+  
+  
+  /*
+    Class       : MaxElementLength3D_i
+    Description : Functor for calculating maximum length of 3D element
+  */
+  class SMESH_I_EXPORT MaxElementLength3D_i: public virtual POA_SMESH::MaxElementLength3D,
+                                             public virtual NumericalFunctor_i
+  {
+  public:
+    MaxElementLength3D_i();
+    FunctorType                     GetFunctorType();
+  };
+  
+  
   /*
     Class       : Length_i
     Description : Functor for calculating length of edge
   */
   class SMESH_I_EXPORT Length_i: public virtual POA_SMESH::Length,
-                  public virtual NumericalFunctor_i
+                                 public virtual NumericalFunctor_i
   {
   public:
     Length_i();
@@ -287,7 +319,7 @@ namespace SMESH
     Description : Functor for calculating length of edge
   */
   class SMESH_I_EXPORT Length2D_i: public virtual POA_SMESH::Length2D,
-                    public virtual NumericalFunctor_i
+                                   public virtual NumericalFunctor_i
   {
   public:
     Length2D_i();
@@ -304,7 +336,7 @@ namespace SMESH
     Description : Functor for calculating number of faces conneted to the edge
   */
   class SMESH_I_EXPORT MultiConnection_i: public virtual POA_SMESH::MultiConnection,
-                           public virtual NumericalFunctor_i
+                                          public virtual NumericalFunctor_i
   {
   public:
     MultiConnection_i();
@@ -316,7 +348,7 @@ namespace SMESH
     Description : Functor for calculating number of faces conneted to the edge
   */
   class SMESH_I_EXPORT MultiConnection2D_i: public virtual POA_SMESH::MultiConnection2D,
-                             public virtual NumericalFunctor_i
+                                            public virtual NumericalFunctor_i
   {
   public:
     MultiConnection2D_i();
@@ -327,6 +359,18 @@ namespace SMESH
     Controls::MultiConnection2DPtr     myMulticonnection2DPtr;
   };
   
+  /*
+    Class       : BallDiameter_i
+    Description : Functor returning diameter of a ball element
+  */
+  class SMESH_I_EXPORT BallDiameter_i: public virtual POA_SMESH::BallDiameter,
+                                       public virtual NumericalFunctor_i
+  {
+  public:
+    BallDiameter_i();
+    FunctorType                     GetFunctorType();
+  };
+  
   
   /*
     PREDICATES
@@ -336,7 +380,7 @@ namespace SMESH
     Description : Base class for all predicates
   */
   class SMESH_I_EXPORT Predicate_i: public virtual POA_SMESH::Predicate,
-                     public virtual Functor_i
+                                    public virtual Functor_i
   {
   public:
     CORBA::Boolean                  IsSatisfy( CORBA::Long theElementId );
@@ -353,19 +397,67 @@ namespace SMESH
     the point of view of MED convention
   */
   class SMESH_I_EXPORT BadOrientedVolume_i: public virtual POA_SMESH::BadOrientedVolume,
-                             public virtual Predicate_i
+                                            public virtual Predicate_i
   {
   public:
     BadOrientedVolume_i();
     FunctorType                     GetFunctorType();
   };
   
+  /*
+    Class       : BareBorderVolume_i
+    Description : Verify whether a mesh volume has a free facet without a face on it
+  */
+  class SMESH_I_EXPORT BareBorderVolume_i: public virtual POA_SMESH::BareBorderVolume,
+                                           public virtual Predicate_i
+  {
+  public:
+    BareBorderVolume_i();
+    FunctorType                     GetFunctorType();
+  };
+  
+  /*
+    Class       : BareBorderFace_i
+    Description : Verify whether a mesh face has a free border without an edge on it
+  */
+  class SMESH_I_EXPORT BareBorderFace_i: public virtual POA_SMESH::BareBorderFace,
+                                         public virtual Predicate_i
+  {
+  public:
+    BareBorderFace_i();
+    FunctorType                     GetFunctorType();
+  };
+  
+  /*
+    Class       : OverConstrainedVolume_i
+    Description : Verify whether a mesh volume has only one facet shared with other volumes
+  */
+  class SMESH_I_EXPORT OverConstrainedVolume_i: public virtual POA_SMESH::OverConstrainedVolume,
+                                                public virtual Predicate_i
+  {
+  public:
+    OverConstrainedVolume_i();
+    FunctorType                     GetFunctorType();
+  };
+  
+  /*
+    Class       : OverConstrainedFace_i
+    Description : Verify whether a mesh face has only one border shared with other faces
+  */
+  class SMESH_I_EXPORT OverConstrainedFace_i: public virtual POA_SMESH::OverConstrainedFace,
+                                              public virtual Predicate_i
+  {
+  public:
+    OverConstrainedFace_i();
+    FunctorType                     GetFunctorType();
+  };
+  
   /*
     Class       : BelongToGeom_i
     Description : Predicate for selection on geometrical support
   */
   class SMESH_I_EXPORT BelongToGeom_i: public virtual POA_SMESH::BelongToGeom,
-                        public virtual Predicate_i
+                                       public virtual Predicate_i
   {
   public:
     BelongToGeom_i();
@@ -396,7 +488,7 @@ namespace SMESH
     Description : Verify whether mesh element lie in pointed Geom planar object
   */
   class SMESH_I_EXPORT BelongToSurface_i: public virtual POA_SMESH::BelongToSurface,
-                           public virtual Predicate_i
+                                          public virtual Predicate_i
   {
   public:
     BelongToSurface_i( const Handle(Standard_Type)& );
@@ -427,7 +519,7 @@ namespace SMESH
     Description : Verify whether mesh element lie in pointed Geom planar object
   */
   class SMESH_I_EXPORT BelongToPlane_i: public virtual POA_SMESH::BelongToPlane,
-                         public virtual BelongToSurface_i
+                                        public virtual BelongToSurface_i
   {
   public:
     BelongToPlane_i();
@@ -440,7 +532,7 @@ namespace SMESH
     Description : Verify whether mesh element lie in pointed Geom cylindrical object
   */
   class SMESH_I_EXPORT BelongToCylinder_i: public virtual POA_SMESH::BelongToCylinder,
-                            public virtual BelongToSurface_i
+                                           public virtual BelongToSurface_i
   {
   public:
     BelongToCylinder_i();
@@ -466,7 +558,7 @@ namespace SMESH
     Description : Predicate for selection on geometrical support(lying or partially lying)
   */
   class SMESH_I_EXPORT LyingOnGeom_i: public virtual POA_SMESH::LyingOnGeom,
-                       public virtual Predicate_i
+                                      public virtual Predicate_i
   {
   public:
     LyingOnGeom_i();
@@ -497,7 +589,7 @@ namespace SMESH
     Description : Predicate for free borders
   */
   class SMESH_I_EXPORT FreeBorders_i: public virtual POA_SMESH::FreeBorders,
-                       public virtual Predicate_i
+                                      public virtual Predicate_i
   {
   public:
     FreeBorders_i();
@@ -510,7 +602,7 @@ namespace SMESH
     Description : Predicate for free edges
   */
   class SMESH_I_EXPORT FreeEdges_i: public virtual POA_SMESH::FreeEdges,
-                     public virtual Predicate_i
+                                    public virtual Predicate_i
   {
   public:
     FreeEdges_i();
@@ -527,7 +619,7 @@ namespace SMESH
     Description : Predicate for free faces
   */
   class SMESH_I_EXPORT FreeFaces_i: public virtual POA_SMESH::FreeFaces,
-                       public virtual Predicate_i
+                                    public virtual Predicate_i
   {
   public:
     FreeFaces_i();
@@ -540,7 +632,7 @@ namespace SMESH
     Description : Predicate for free nodes
   */
   class SMESH_I_EXPORT FreeNodes_i: public virtual POA_SMESH::FreeNodes,
-                       public virtual Predicate_i
+                                    public virtual Predicate_i
   {
   public:
     FreeNodes_i();
@@ -548,12 +640,63 @@ namespace SMESH
   };
   
   
+  /*
+    Class       : EqualNodes_i
+    Description : Predicate for equal nodes
+  */
+  class SMESH_I_EXPORT EqualNodes_i: public virtual POA_SMESH::EqualNodes,
+                                     public virtual Predicate_i
+  {
+  public:
+    EqualNodes_i();
+    FunctorType                     GetFunctorType();
+    void                            SetTolerance( double );
+    double                          GetTolerance();
+
+  private:
+    Controls::CoincidentNodesPtr myCoincidentNodesPtr;
+  };
+  /*
+    Class       : EqualEdges_i
+    Description : Predicate for equal edges
+  */
+  class SMESH_I_EXPORT EqualEdges_i: public virtual POA_SMESH::EqualEdges,
+                                     public virtual Predicate_i
+  {
+  public:
+    EqualEdges_i();
+    FunctorType                     GetFunctorType();
+  };
+  /*
+    Class       : EqualFaces_i
+    Description : Predicate for equal Faces
+  */
+  class SMESH_I_EXPORT EqualFaces_i: public virtual POA_SMESH::EqualFaces,
+                                     public virtual Predicate_i
+  {
+  public:
+    EqualFaces_i();
+    FunctorType                     GetFunctorType();
+  };
+  /*
+    Class       : EqualVolumes_i
+    Description : Predicate for equal Volumes
+  */
+  class SMESH_I_EXPORT EqualVolumes_i: public virtual POA_SMESH::EqualVolumes,
+                                       public virtual Predicate_i
+  {
+  public:
+    EqualVolumes_i();
+    FunctorType                     GetFunctorType();
+  };
+  
+  
   /*
     Class       : RangeOfIds_i
     Description : Predicate for Range of Ids
   */
   class SMESH_I_EXPORT RangeOfIds_i: public virtual POA_SMESH::RangeOfIds,
-                      public virtual Predicate_i
+                                     public virtual Predicate_i
   {
   public:
     RangeOfIds_i();
@@ -573,7 +716,7 @@ namespace SMESH
     Description : Verify whether a mesh element is linear
   */
   class SMESH_I_EXPORT LinearOrQuadratic_i: public virtual POA_SMESH::LinearOrQuadratic,
-                             public virtual Predicate_i
+                                            public virtual Predicate_i
   {
   public:
     LinearOrQuadratic_i();
@@ -589,7 +732,7 @@ namespace SMESH
     Description : Functor for check color of group to whic mesh element belongs to
   */
   class SMESH_I_EXPORT GroupColor_i: public virtual POA_SMESH::GroupColor,
-                  public virtual Predicate_i
+                                     public virtual Predicate_i
   {
   public:
     GroupColor_i();
@@ -608,7 +751,7 @@ namespace SMESH
     Description : Functor for check element geometry type
   */
   class SMESH_I_EXPORT ElemGeomType_i: public virtual POA_SMESH::ElemGeomType,
-                  public virtual Predicate_i
+                                       public virtual Predicate_i
   {
   public:
     ElemGeomType_i();
@@ -622,12 +765,32 @@ namespace SMESH
     Controls::ElemGeomTypePtr myElemGeomTypePtr;
   };
   
+  /*
+    Class       : CoplanarFaces_i
+    Description : Returns true if a mesh face is a coplanar neighbour to a given one
+  */
+  class SMESH_I_EXPORT CoplanarFaces_i: public virtual POA_SMESH::CoplanarFaces,
+                                        public virtual Predicate_i
+  {
+  public:
+    CoplanarFaces_i();
+    FunctorType             GetFunctorType();
+
+    void                    SetFace ( CORBA::Long theFaceID );
+    void                    SetTolerance( CORBA::Double theToler );
+    char*                   GetFaceAsString () const;
+    CORBA::Long             GetFace () const;
+    CORBA::Double           GetTolerance () const;
+  private:
+    Controls::CoplanarFacesPtr myCoplanarFacesPtr;
+  };
+  
   /*
     Class       : Comparator_i
     Description : Base class for comparators
   */
   class SMESH_I_EXPORT Comparator_i: public virtual POA_SMESH::Comparator,
-                      public virtual Predicate_i
+                                     public virtual Predicate_i
   {
   public:
     virtual                         ~Comparator_i();
@@ -652,7 +815,7 @@ namespace SMESH
     Description : Comparator "<"
   */
   class SMESH_I_EXPORT LessThan_i: public virtual POA_SMESH::LessThan,
-                    public virtual Comparator_i
+                                   public virtual Comparator_i
   {
   public:
     LessThan_i();
@@ -665,7 +828,7 @@ namespace SMESH
     Description : Comparator ">"
   */
   class SMESH_I_EXPORT MoreThan_i: public virtual POA_SMESH::MoreThan,
-                    public virtual Comparator_i
+                                   public virtual Comparator_i
   {
   public:
     MoreThan_i();
@@ -678,7 +841,7 @@ namespace SMESH
     Description : Comparator "="
   */
   class SMESH_I_EXPORT EqualTo_i: public virtual POA_SMESH::EqualTo,
-                   public virtual Comparator_i
+                                  public virtual Comparator_i
   {
   public:
     EqualTo_i();
@@ -696,7 +859,7 @@ namespace SMESH
     Description : Logical NOT predicate
   */
   class SMESH_I_EXPORT LogicalNOT_i: public virtual POA_SMESH::LogicalNOT,
-                      public virtual Predicate_i
+                                     public virtual Predicate_i
   {
   public:
     LogicalNOT_i();
@@ -717,7 +880,7 @@ namespace SMESH
     Description : Base class for binary logical predicate
   */
   class SMESH_I_EXPORT LogicalBinary_i: public virtual POA_SMESH::LogicalBinary,
-                         public virtual Predicate_i
+                                        public virtual Predicate_i
   {
   public:
     virtual                         ~LogicalBinary_i();
@@ -743,7 +906,7 @@ namespace SMESH
     Description : Logical AND
   */
   class SMESH_I_EXPORT LogicalAND_i: public virtual POA_SMESH::LogicalAND,
-                      public virtual LogicalBinary_i
+                                     public virtual LogicalBinary_i
   {
   public:
     LogicalAND_i();
@@ -756,7 +919,7 @@ namespace SMESH
     Description : Logical OR
   */
   class SMESH_I_EXPORT LogicalOR_i: public virtual POA_SMESH::LogicalOR,
-                     public virtual LogicalBinary_i
+                                    public virtual LogicalBinary_i
   {
   public:
     LogicalOR_i();
@@ -768,7 +931,7 @@ namespace SMESH
     FILTER
   */
   class SMESH_I_EXPORT Filter_i: public virtual POA_SMESH::Filter,
-                  public virtual SALOME::GenericObj_i
+                                 public virtual SALOME::GenericObj_i
   {
   public:
     Filter_i();
@@ -782,14 +945,6 @@ namespace SMESH
     void
     SetMesh( SMESH_Mesh_ptr );
 
-    virtual
-    SMESH::long_array* 
-    GetIDs();
-    
-    virtual
-    SMESH::long_array*
-    GetMeshInfo();
-
     static
     void
     GetElementsId( Predicate_i*,
@@ -823,10 +978,31 @@ namespace SMESH
 
     Predicate_i*     GetPredicate_i();
 
+    // =========================
+    // SMESH_IDSource interface
+    // =========================
+    virtual SMESH::long_array*           GetIDs();
+    virtual SMESH::long_array*           GetMeshInfo();
+    virtual SMESH::array_of_ElementType* GetTypes();
+    virtual SMESH::SMESH_Mesh_ptr        GetMesh();
+    virtual bool                         IsMeshInfoCorrect() { return true; }
+
+    /*!
+     * \brief Object notified on change of predicate
+     */
+    struct TPredicateChangeWaiter
+    {
+      virtual void PredicateChanged() = 0;
+    };
+    void AddWaiter( TPredicateChangeWaiter* waiter );
+    void RemoveWaiter( TPredicateChangeWaiter* waiter );
+
   private:
     Controls::Filter myFilter;
     Predicate_i*     myPredicate;
     SMESH_Mesh_var   myMesh;
+
+    std::list<TPredicateChangeWaiter*> myWaiters;
   };
   
   
@@ -834,7 +1010,7 @@ namespace SMESH
     FILTER LIBRARY
   */
   class SMESH_I_EXPORT FilterLibrary_i: public virtual POA_SMESH::FilterLibrary,
-                         public virtual SALOME::GenericObj_i
+                                        public virtual SALOME::GenericObj_i
   {
   public:
     FilterLibrary_i( const char* theFileName );
@@ -872,7 +1048,7 @@ namespace SMESH
   */
   
   class SMESH_I_EXPORT FilterManager_i: public virtual POA_SMESH::FilterManager,
-                         public virtual SALOME::GenericObj_i
+                                        public virtual SALOME::GenericObj_i
   {
   public:
     FilterManager_i();
@@ -886,10 +1062,13 @@ namespace SMESH
     Skew_ptr                  CreateSkew();
     Area_ptr                  CreateArea();
     Volume3D_ptr              CreateVolume3D();
+    MaxElementLength2D_ptr    CreateMaxElementLength2D();
+    MaxElementLength3D_ptr    CreateMaxElementLength3D();
     Length_ptr                CreateLength();
     Length2D_ptr              CreateLength2D();
     MultiConnection_ptr       CreateMultiConnection();
     MultiConnection2D_ptr     CreateMultiConnection2D();
+    BallDiameter_ptr          CreateBallDiameter();
     
     BelongToGeom_ptr          CreateBelongToGeom();
     BelongToPlane_ptr         CreateBelongToPlane();
@@ -902,15 +1081,22 @@ namespace SMESH
     FreeEdges_ptr             CreateFreeEdges();
     FreeNodes_ptr             CreateFreeNodes();
     FreeFaces_ptr             CreateFreeFaces();
-    
+
+    EqualNodes_ptr            CreateEqualNodes();
+    EqualEdges_ptr            CreateEqualEdges();
+    EqualFaces_ptr            CreateEqualFaces();
+    EqualVolumes_ptr          CreateEqualVolumes();
+
     RangeOfIds_ptr            CreateRangeOfIds();
-    
     BadOrientedVolume_ptr     CreateBadOrientedVolume();
+    BareBorderFace_ptr        CreateBareBorderFace();
+    BareBorderVolume_ptr      CreateBareBorderVolume();
+    OverConstrainedFace_ptr   CreateOverConstrainedFace();
+    OverConstrainedVolume_ptr CreateOverConstrainedVolume();
     LinearOrQuadratic_ptr     CreateLinearOrQuadratic();
-    
     GroupColor_ptr            CreateGroupColor();
-
     ElemGeomType_ptr          CreateElemGeomType();
+    CoplanarFaces_ptr         CreateCoplanarFaces();
 
     LessThan_ptr              CreateLessThan();
     MoreThan_ptr              CreateMoreThan();
@@ -930,6 +1116,9 @@ namespace SMESH
   
   Predicate_i* 
   GetPredicate( SMESH::Predicate_ptr thePredicate );
+
+  const char*        FunctorTypeToString(SMESH::FunctorType ft);
+  SMESH::FunctorType StringToFunctorType(const char*       str);
 }