// ------------------------------------------------------------------
class SMESH_subMeshEventListener {
+ bool myIsDeletable; //!< if true, it will be deleted by SMESH_subMesh
public:
+ SMESH_subMeshEventListener(bool isDeletable):myIsDeletable(isDeletable) {}
+ bool IsDeletable() const { return myIsDeletable; }
/*!
* \brief Do something on a certain event
* \param event - algo_event or compute_event itself (of SMESH_subMesh)
* \param hyp - hypothesis, if eventType is algo_event
*
* The base implementation translates CLEAN event to the subMesh stored
- * in the listener data
+ * in the listener data. Also it sends SUBMESH_COMPUTED event in case of
+ * successful COMPUTE event.
*/
virtual void ProcessEvent(const int event,
const int eventType,
SMESH_subMesh* subMesh,
SMESH_subMeshEventListenerData* data,
- SMESH_Hypothesis* hyp = 0);
+ const SMESH_Hypothesis* hyp = 0);
};
// ------------------------------------------------------------------
struct SMESH_subMeshEventListenerData
{
- //!< to recognize data type
- int myType;
- //!< generally: submeshes depending on the one storing this data
- std::list<SMESH_subMesh*> mySubMeshes;
- //!< subMesh where data
+ bool myIsDeletable; //!< if true, it will be deleted by SMESH_subMesh
+ int myType; //!< to recognize data type
+ std::list<SMESH_subMesh*> mySubMeshes; //!< generally: submeshes depending
+ // on the one storing this data
+public:
+ SMESH_subMeshEventListenerData(bool isDeletable):myIsDeletable(isDeletable) {}
+ bool IsDeletable() const { return myIsDeletable; }
/*!
* \brief Create a default listener data.
* \retval SMESH_subMeshEventListenerData* - a new listener data
*
* See SMESH_subMeshEventListener::ProcessEvent() to know how the default
- * listener uses it
+ * listener uses it (implementation is in SMESH_subMesh.cxx)
*/
static SMESH_subMeshEventListenerData* MakeData(SMESH_subMesh* dependentSM,
const int type = 0)
{
- SMESH_subMeshEventListenerData* data = new SMESH_subMeshEventListenerData;
+ SMESH_subMeshEventListenerData* data = new SMESH_subMeshEventListenerData(true);
data->mySubMeshes.push_back( dependentSM );
data->myType = type;
return data;