+ //!< event listeners to notify
+ std::map< EventListener*, EventListenerData* > myEventListeners;
+ //!< event listeners to delete when HYP_OK algo_state is lost
+ std::list< std::pair< SMESH_subMesh*, EventListener* > > myOwnListeners;
+
+ /*!
+ * \brief Sets an event listener and its data to a submesh
+ * \param listener - the listener to store
+ * \param data - the listener data to store
+ *
+ * After being set, event listener is notified on each event of a submesh.
+ */
+ void SetEventListener(EventListener* listener, EventListenerData* data);
+
+ /*!
+ * \brief Notify stored event listeners on the occured event
+ * \param event - algo_event or compute_event itself
+ * \param eventType - algo_event or compute_event
+ * \param hyp - hypothesis, if eventType is algo_event
+ */
+ void NotifyListenersOnEvent( const int event,
+ const event_type eventType,
+ SMESH_Hypothesis* hyp = 0);
+
+ /*!
+ * \brief Delete event listeners depending on algo of this submesh
+ */
+ void DeleteOwnListeners();
+
+ // ==================================================================
+
+public:
+
+ SMESH_Hypothesis::Hypothesis_Status
+ AlgoStateEngine(int event, SMESH_Hypothesis * anHyp);
+
+ SMESH_Hypothesis::Hypothesis_Status
+ SubMeshesAlgoStateEngine(int event, SMESH_Hypothesis * anHyp);
+
+ int GetAlgoState() const { return _algoState; }
+ int GetComputeState() const { return _computeState; };
+ SMESH_ComputeErrorPtr& GetComputeError() { return _computeError; }