Salome HOME
IPAL53870: Dump study script creates an excess sub-mesh
[modules/smesh.git] / src / SMESH_I / SMESH_Group_i.hxx
index 90ea264a44ff228e8cf61dd76815cde7fff2f853..8d190427f5a1619a6f73597e2bb1c9180356176f 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2015  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2016  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
@@ -48,7 +48,8 @@ class SMESH_PreMeshInfo;
 // ===========
 class SMESH_I_EXPORT SMESH_GroupBase_i:
   public virtual POA_SMESH::SMESH_GroupBase,
-  public virtual SALOME::GenericObj_i
+  public virtual SALOME::GenericObj_i,
+  public SMESH::NotifyerAndWaiter // defined in SMESH_Filter_i.hxx
 {
  public:
   SMESH_GroupBase_i(PortableServer::POA_ptr thePOA,
@@ -100,6 +101,13 @@ class SMESH_I_EXPORT SMESH_GroupBase_i:
    */
   virtual SALOMEDS::TMPFile* GetVtkUgStream();
 
+  /*!
+   * Returns \c true if \c this group depends on the \a other via
+   * FT_BelongToMeshGroup predicate or vice versa
+   */
+  virtual CORBA::Boolean IsInDependency( SMESH::SMESH_GroupBase_ptr other );
+
+
   // Internal C++ interface
   int GetLocalID() const { return myLocalID; }
   SMESH_Mesh_i* GetMeshServant() const { return myMeshServant; }
@@ -173,8 +181,7 @@ class SMESH_I_EXPORT SMESH_GroupOnGeom_i:
 
 class SMESH_I_EXPORT SMESH_GroupOnFilter_i:
   public virtual POA_SMESH::SMESH_GroupOnFilter,
-  public SMESH_GroupBase_i,
-  public SMESH::Filter_i::TPredicateChangeWaiter
+  public SMESH_GroupBase_i
 {
  public:
   SMESH_GroupOnFilter_i( PortableServer::POA_ptr thePOA,
@@ -189,13 +196,13 @@ class SMESH_I_EXPORT SMESH_GroupOnFilter_i:
   static SMESH_PredicatePtr GetPredicate( SMESH::Filter_ptr );
 
   // CORBA interface implementation
-  void SetFilter(SMESH::Filter_ptr theFilter);
+  void SetFilter(SMESH::Filter_ptr theFilter) throw (SALOME::SALOME_Exception);
   SMESH::Filter_ptr GetFilter();
   virtual SMESH::long_array* GetListOfID();
   virtual SMESH::long_array* GetMeshInfo();
 
-  // method of SMESH::Filter_i::TPredicateChangeWaiter
-  virtual void PredicateChanged();
+  // method of SMESH::NotifyerAndWaiter to update self when myFilter changes
+  virtual void OnBaseObjModified(NotifyerAndWaiter* filter, bool);
 
  private:
   SMESH::Filter_var myFilter;