+ virtual int GetDim() const;
+ int GetStudyId() const;
+ SMESH_Gen* GetGen() const { return (SMESH_Gen*) _gen; }
+ virtual int GetShapeType() const;
+ virtual const char* GetLibName() const;
+ virtual void NotifySubMeshesHypothesisModification();
+ void SetLibName(const char* theLibName);
+
+ /*!
+ * \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;
+
+ struct TDefaults
+ {
+ double _elemLength;
+ int _nbSegments;
+ TopoDS_Shape* _shape; // future shape of the mesh being created
+ };
+ /*!
+ * \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);