]> SALOME platform Git repositories - modules/smesh.git/blobdiff - src/SMESH/SMESH_Algo.hxx
Salome HOME
Speed up "Clear mesh data"
[modules/smesh.git] / src / SMESH / SMESH_Algo.hxx
index f08fd85e74432d4640b402d3f6469e9d938109c8..dff9f7a97efec64ef9235f88c850abcda157ca4c 100644 (file)
@@ -150,7 +150,7 @@ public:
    *  have a name (type) listed in the algorithm. Hypothesis associated to
    *  father shape -are not- taken into account (see GetUsedHypothesis)
    */
-  const list <const SMESHDS_Hypothesis *> &
+  const std::list <const SMESHDS_Hypothesis *> &
   GetAppliedHypothesis(SMESH_Mesh &         aMesh,
                        const TopoDS_Shape & aShape,
                        const bool           ignoreAuxiliary=true);
@@ -201,6 +201,10 @@ public:
   bool NeedShape() const { return _requireShape; }
   // 4 - is shape existance required
 
+  bool SupportSubmeshes() const { return _supportSubmeshes; }
+  // 5 - whether supports submeshes if !NeedDescretBoundary()
+
+
 public:
   // ==================================================================
   // Methods to track non hierarchical dependencies between submeshes 
@@ -293,6 +297,12 @@ protected:
    * \brief store error and return error->IsOK()
    */
   bool error(SMESH_ComputeErrorPtr error);
+  /*!
+   * \brief store a bad input element preventing computation,
+   *        which may be a temporary one i.e. not residing the mesh,
+   *        then it will be deleted by InitComputeError()
+   */
+  void addBadInputElement(const SMDS_MeshElement* elem);
 
 protected:
 
@@ -300,9 +310,13 @@ protected:
   std::list<const SMESHDS_Hypothesis *> _appliedHypList;
   std::list<const SMESHDS_Hypothesis *> _usedHypList;
 
-  bool _onlyUnaryInput;
-  bool _requireDescretBoundary;
-  bool _requireShape;
+  // Algo features influencing which Compute() and how is called:
+  // in what turn and with what input shape.
+  // This fields must be redefined if necessary by each descendant at constructor.
+  bool _onlyUnaryInput;         // mesh one shape of GetDim() at once. Default TRUE
+  bool _requireDescretBoundary; // GetDim()-1 mesh must be present. Default TRUE
+  bool _requireShape;           // work with GetDim()-1 mesh bound to geom only. Default TRUE
+  bool _supportSubmeshes;       // if !_requireDescretBoundary. Default FALSE
 
   // quadratic mesh creation required,
   // is usually set trough SMESH_MesherHelper::IsQuadraticSubMesh()
@@ -310,6 +324,7 @@ protected:
 
   int         _error;    //!< SMESH_ComputeErrorName or anything algo specific
   std::string _comment;  //!< any text explaining what is wrong in Compute()
+  std::list<const SMDS_MeshElement*> _badInputElements; //!< to explain COMPERR_BAD_INPUT_MESH
 };
 
 #endif