+ * \brief Check hypothesis definition to mesh a shape
+ * \param aMesh - the mesh
+ * \param aShape - the shape
+ * \param aStatus - check result
+ * \retval bool - true if hypothesis is well defined
+ *
+ * Textual description of a problem can be stored in _comment field.
+ */
+ virtual bool CheckHypothesis(SMESH_Mesh& aMesh,
+ const TopoDS_Shape& aShape,
+ SMESH_Hypothesis::Hypothesis_Status& aStatus) = 0;
+ /*!
+ * \brief Computes mesh on a shape
+ * \param aMesh - the mesh
+ * \param aShape - the shape
+ * \retval bool - is a success
+ *
+ * Algorithms that !NeedDiscreteBoundary() || !OnlyUnaryInput() are
+ * to set SMESH_ComputeError returned by SMESH_submesh::GetComputeError()
+ * to report problematic sub-shapes
+ */
+ virtual bool Compute(SMESH_Mesh & aMesh, const TopoDS_Shape & aShape) = 0;
+
+ /*!
+ * \brief Computes mesh without geometry
+ * \param aMesh - the mesh
+ * \param aHelper - helper that must be used for adding elements to \aaMesh
+ * \retval bool - is a success
+ *
+ * The method is called if ( !aMesh->HasShapeToMesh() )
+ */
+ virtual bool Compute(SMESH_Mesh & aMesh, SMESH_MesherHelper* aHelper);
+
+ /*!
+ * \brief Sets _computeCanceled to true. It's usage depends on
+ * implementation of a particular mesher.
+ */
+ virtual void CancelCompute();
+
+ /*!
+ * \brief If possible, returns progress of computation [0.,1.]
+ */
+ virtual double GetProgress() const;
+
+ /*!
+ * \brief evaluates size of prospective mesh on a shape
+ * \param aMesh - the mesh
+ * \param aShape - the shape
+ * \param aResMap - prospective number of elements by SMDSAbs_ElementType by a sub-mesh
+ * \retval bool - is a success
+ */
+ virtual bool Evaluate(SMESH_Mesh & aMesh, const TopoDS_Shape & aShape,
+ MapShapeNbElems& aResMap) = 0;
+
+ /*!
+ * \brief Returns a list of compatible hypotheses used to mesh a shape
+ * \param aMesh - the mesh
+ * \param aShape - the shape
+ * \param ignoreAuxiliary - do not include auxiliary hypotheses in the list
+ * \retval const std::list <const SMESHDS_Hypothesis*> - hypotheses list
+ *
+ * List the hypothesis used by the algorithm associated to the shape.
+ * Hypothesis associated to father shape -are- taken into account (see
+ * GetAppliedHypothesis). Relevant hypothesis have a name (type) listed in
+ * the algorithm. This method could be surcharged by specific algorithms, in
+ * case of several hypothesis simultaneously applicable.
+ */
+ virtual const std::list <const SMESHDS_Hypothesis *> &
+ GetUsedHypothesis(SMESH_Mesh & aMesh,
+ const TopoDS_Shape & aShape,
+ const bool ignoreAuxiliary=true) const;
+ /*!
+ * \brief Returns a list of compatible hypotheses assigned to a shape in a mesh
+ * \param aMesh - the mesh
+ * \param aShape - the shape
+ * \param ignoreAuxiliary - do not include auxiliary hypotheses in the list
+ * \retval const std::list <const SMESHDS_Hypothesis*> - hypotheses list
+ *
+ * List the relevant hypothesis associated to the shape. Relevant hypothesis
+ * have a name (type) listed in the algorithm. Hypothesis associated to
+ * father shape -are not- taken into account (see GetUsedHypothesis)
+ */
+ const std::list <const SMESHDS_Hypothesis *> &
+ GetAppliedHypothesis(SMESH_Mesh & aMesh,
+ const TopoDS_Shape & aShape,
+ const bool ignoreAuxiliary=true) const;
+ /*!
+ * \brief Returns the filter recognizing only compatible hypotheses
+ * \param ignoreAuxiliary - make filter ignore compatible auxiliary hypotheses
+ * \retval SMESH_HypoFilter* - the filter that can be NULL
+ */
+ const SMESH_HypoFilter* GetCompatibleHypoFilter(const bool ignoreAuxiliary) const;
+
+ /*!
+ * \brief Just return false as the algorithm does not hold parameters values
+ */
+ virtual bool SetParametersByMesh(const SMESH_Mesh* theMesh, const TopoDS_Shape& theShape);
+ virtual bool SetParametersByDefaults(const TDefaults& dflts, const SMESH_Mesh* theMesh=0);
+
+ /*!
+ * \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