Salome HOME
PAL13460 (PAL EDF 301 force the mesh to go through a point)
[modules/smesh.git] / src / SMESH / SMESH_subMeshEventListener.hxx
index 66543cf7d9912f6316aa81a2e2ecd186e8ccb5ab..2424bfe54a55ca17435369395849f88156024808 100644 (file)
@@ -42,7 +42,10 @@ struct SMESH_subMeshEventListenerData;
 // ------------------------------------------------------------------
 
 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)
@@ -52,7 +55,8 @@ public:
    * \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,
@@ -69,11 +73,13 @@ public:
 
 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.
@@ -82,12 +88,12 @@ struct SMESH_subMeshEventListenerData
    * \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;