+public:
+ /*!
+ * \brief Creates algorithm
+ * \param hypId - algorithm ID
+ * \param studyId - study ID
+ * \param gen - SMESH_Gen
+ */
+ SMESH_Algo(int hypId, int studyId, SMESH_Gen * gen);
+
+ /*!
+ * \brief Destructor
+ */
+ virtual ~ SMESH_Algo();
+
+ /*!
+ * \brief Saves nothing in a stream
+ * \param save - the stream
+ * \retval virtual std::ostream & - the stream
+ */
+ virtual std::ostream & SaveTo(std::ostream & save);
+
+ /*!
+ * \brief Loads nothing from a stream
+ * \param load - the stream
+ * \retval virtual std::ostream & - the stream
+ */
+ virtual std::istream & LoadFrom(std::istream & load);
+
+ /*!
+ * \brief Returns all types of compatible hypotheses
+ */
+ const std::vector < std::string > & GetCompatibleHypothesis();
+
+ /*!
+ * \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
+ */
+ 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
+ */
+ virtual bool Compute(SMESH_Mesh & aMesh, const TopoDS_Shape & aShape) = 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);
+ /*!
+ * \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 list <const SMESHDS_Hypothesis *> &
+ GetAppliedHypothesis(SMESH_Mesh & aMesh,
+ const TopoDS_Shape & aShape,
+ const bool ignoreAuxiliary=true);
+ /*!
+ * \brief Make the filter recognize only compatible hypotheses
+ * \param theFilter - the filter to initialize
+ * \param ignoreAuxiliary - make filter ignore compatible auxiliary hypotheses
+ * \retval bool - true if the algo has compatible hypotheses
+ */
+ bool InitCompatibleHypoFilter( SMESH_HypoFilter & theFilter,
+ const bool ignoreAuxiliary) const;
+ /*!
+ * \brief Initialize my parameter values by the mesh built on the geometry
+ * \param theMesh - the built mesh
+ * \param theShape - the geometry of interest
+ * \retval bool - true if parameter values have been successfully defined
+ *
+ * Just return false as the algorithm does not hold parameters values
+ */
+ virtual bool SetParametersByMesh(const SMESH_Mesh* theMesh,
+ const TopoDS_Shape& theShape);