+ /*!
+ * \brief return compute error
+ */
+ SMESH_ComputeErrorPtr GetComputeError() const;
+ /*!
+ * \brief initialize compute error etc. before call of Compute()
+ */
+ void InitComputeError();
+ /*!
+ * \brief Return compute progress by nb of calls of this method
+ */
+ double GetProgressByTic() const;
+ /*!
+ * Return a vector of sub-meshes to Compute()
+ */
+ std::vector<SMESH_subMesh*>& SubMeshesToCompute() { return _smToCompute; }
+
+public:
+ // ==================================================================
+ // Algo features influencing how Compute() is called:
+ // in what turn and with what input shape
+ // ==================================================================
+
+ // SMESH_Hypothesis::GetDim();
+ // 1 - dimention of target mesh
+
+ bool OnlyUnaryInput() const { return _onlyUnaryInput; }
+ // 2 - is collection of tesselatable shapes inacceptable as input;
+ // "collection" means a shape containing shapes of dim equal
+ // to GetDim().
+ // Algo which can process a collection shape should expect
+ // an input temporary shape that is neither MainShape nor
+ // its child.
+
+ bool NeedDiscreteBoundary() const { return _requireDiscreteBoundary; }
+ // 3 - is a Dim-1 mesh prerequisite
+
+ bool NeedShape() const { return _requireShape; }
+ // 4 - is shape existance required
+
+ bool SupportSubmeshes() const { return _supportSubmeshes; }
+ // 5 - whether supports submeshes if !NeedDiscreteBoundary()
+
+ bool NeedLowerHyps(int dim) const { return _neededLowerHyps[ dim ]; }
+ // 6 - if algo !NeedDiscreteBoundary() but requires presence of
+ // hypotheses of dimension <dim> to generate all-dimensional mesh.
+ // This info is used not to issue warnings on hiding of lower global algos.
+
+public:
+ // ==================================================================
+ // Methods to track non hierarchical dependencies between submeshes
+ // ==================================================================
+
+ /*!
+ * \brief Sets event listener to submeshes if necessary
+ * \param subMesh - submesh where algo is set
+ *
+ * This method is called when a submesh gets HYP_OK algo_state.
+ * After being set, event listener is notified on each event of a submesh.
+ * By default none listener is set
+ */
+ virtual void SetEventListener(SMESH_subMesh* subMesh);
+
+ /*!
+ * \brief Allow algo to do something after persistent restoration
+ * \param subMesh - restored submesh
+ *
+ * This method is called only if a submesh has HYP_OK algo_state.
+ */
+ virtual void SubmeshRestored(SMESH_subMesh* subMesh);
+
+public:
+ // ==================================================================
+ // Common algo utilities
+ // ==================================================================