+ /*!
+ * \brief The returned value is used by NotifySubMeshesHypothesisModification()
+ * to decide to call subMesh->AlgoStateEngine( MODIF_HYP, hyp ) or not
+ * if subMesh is ready to be computed (algo+hyp==OK) but not yet computed.
+ * True result is reasonable for example if EventListeners depend on
+ * parameters of hypothesis.
+ */
+ virtual bool DataDependOnParams() const { return false; }
+
+ /*!
+ * \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
+ */
+ virtual bool SetParametersByMesh(const SMESH_Mesh* theMesh, const TopoDS_Shape& theShape)=0;
+
+ enum InitWay { BY_MESH, BY_GEOM, BY_AVERAGE_LENGTH };
+ struct TDefaults
+ {
+ InitWay _way;
+ double _elemLength;
+ int _nbSegments;
+ bool _quadDominated;
+ double _diagonal;
+ TopoDS_Shape* _shape; // future shape of the mesh being created
+
+ TDefaults():
+ _way(BY_GEOM), _elemLength(0),_nbSegments(0),_quadDominated(false),_diagonal(0),_shape(0) {}
+ };
+ /*!
+ * \brief Initialize my parameter values by default parameters.
+ * \retval bool - true if parameter values have been successfully defined
+ */
+ virtual bool SetParametersByDefaults(const TDefaults& dflts, const SMESH_Mesh* theMesh=0)=0;
+
+ /*!
+ * \brief Return true if me is an auxiliary hypothesis
+ * \retval bool - auxiliary or not
+ *
+ * An auxiliary hypothesis is optional, i.e. an algorithm
+ * can work without it and another hypothesis of the same
+ * dimension can be assigned to the shape
+ */
+ virtual bool IsAuxiliary() const
+ { return GetType() == PARAM_ALGO && _param_algo_dim < 0; }
+
+ /*!
+ * \brief Find a mesh with given persistent ID
+ */
+ SMESH_Mesh* GetMeshByPersistentID(int id);
+