Salome HOME
Merge branch 'master' of newgeom:newgeom.git
[modules/shaper.git] / src / Events / Events_Message.h
1 // File:        Events_Message.hxx
2 // Created:     Thu Mar 13 2014
3 // Author:      Mikhail PONIKAROV
4
5 #ifndef Events_Message_H_
6 #define Events_Message_H_
7
8 #include <Events.h>
9
10 /**\class Events_ID
11  * \ingroup EventsLoop
12  * \brief Identifier of the event kind.
13  *
14  * Each event ID is created in main Envent_Loop class
15  * that stores correspondance between the string-name of the
16  * identifier and the pointer to the static string that is really
17  * used as an identifier (this is usefull for debugging of the events
18  * with log files and in debugger).
19  */
20 class EVENTS_EXPORT Events_ID
21 {
22   char* myID;  ///< pointer to the text-identifier of the event, unique pointer for all events of such type
23
24   Events_ID(char* theID)
25   {
26     myID = theID;
27   }
28
29   friend class Events_Loop;
30  public:
31   /// Returns the text-identifier of the event (for debugging reasons)
32   char* eventText() const
33   {
34     return myID;
35   }
36   /// Allows to compare identifiers
37   bool operator==(const Events_ID& theID) const
38   {
39     return myID == theID.myID;
40   }
41 };
42
43 /**\class Events_Message
44  * \ingroup EventsLoop
45  * \brief Message for communication between sender and listener of event.
46  * Normally it is inherited by the higher-level 
47  */
48 class EVENTS_EXPORT Events_Message
49 {
50   Events_ID myEventsId;  ///< identifier of the event
51   void* mySender;  ///< the sender object
52
53  public:
54
55   //! Creates the message
56   Events_Message(const Events_ID theID, const void* theSender = 0)
57       : myEventsId(theID),
58         mySender((void*) theSender)
59   {
60   }
61   //! do nothing in the destructor yet
62   virtual ~Events_Message()
63   {
64   }
65
66   //! Returns identifier of the message
67   const Events_ID& eventID() const
68   {
69     return myEventsId;
70   }
71
72   //! Returns sender of the message or NULL if it is anonymous message
73   void* sender() const
74   {
75     return mySender;
76   }
77 };
78
79 #endif