Salome HOME
0022106: EDF 2464 SMESH : Split quadrangles in 4 triangles
[modules/smesh.git] / src / SMESH / SMESH_subMesh.hxx
index 0c956cea623af7fa8627fde9e16b659e71c95be7..48ed2be01af35b7371bedcbeb84c9e94e391360c 100644 (file)
@@ -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
@@ -107,7 +107,7 @@ class SMESH_EXPORT SMESH_subMesh
   };
   enum compute_event
   {
-    MODIF_ALGO_STATE, COMPUTE, COMPUTE_CANCELED,
+    MODIF_ALGO_STATE, COMPUTE, COMPUTE_SUBMESH, COMPUTE_CANCELED,
     CLEAN, SUBMESH_COMPUTED, SUBMESH_RESTORED, SUBMESH_LOADED,
     MESH_ENTITY_REMOVED, CHECK_COMPUTE_STATE
   };
@@ -253,7 +253,7 @@ public:
   void SetIsAlwaysComputed(bool isAlCo);
   bool IsAlwaysComputed() { return _alwaysComputed; }
 
-  bool SubMeshesComputed() const;
+  bool SubMeshesComputed(bool * isFailedToCompute=0) const;
 
   
   /*!
@@ -273,7 +273,7 @@ protected:
   void updateDependantsState(const compute_event theEvent);
   void updateSubMeshState(const compute_state theState);
   void cleanDependants();
-  void cleanDependsOn();
+  void cleanDependsOn( SMESH_Algo* algoRequiringCleaning=0 );
   void setAlgoState(algo_state state);
 
   /*!
@@ -282,7 +282,8 @@ protected:
    */
   TopoDS_Shape getCollection(SMESH_Gen * theGen,
                              SMESH_Algo* theAlgo,
-                             bool &      theSubComputed);
+                             bool &      theSubComputed,
+                             bool &      theSubFailed);
   /*!
    * \brief Update compute_state by _computeError
     * \retval bool - false if there are errors
@@ -313,11 +314,12 @@ protected:
   std::map < int, SMESH_subMesh * >_mapDepend;
   bool                  _dependenceAnalysed;
 
+  SMESH_Algo *          _algo; // the algorithm found by last *StateEngine() call
   algo_state            _algoState;
   compute_state         _computeState;
   SMESH_ComputeErrorPtr _computeError;
 
-  // allow algo->Compute() if a subshape of lower dim is meshed but
+  // allow algo->Compute() if a sub-shape of lower dim is meshed but
   // none mesh entity is bound to it. Eg StdMeshers_CompositeSegment_1D can
   // mesh several edges as a whole and leave some of them  without mesh entities
   bool                  _alwaysComputed;