comparison Framework/Messages/ICallable.h @ 643:f0008c55e5f7

getting rid of MessageType enumeration
author Sebastien Jodogne <s.jodogne@gmail.com>
date Fri, 10 May 2019 17:34:48 +0200
parents b70fcc134ba4
children 38409549db43
comparison
equal deleted inserted replaced
642:7ca8dc7ec17b 643:f0008c55e5f7
39 { 39 {
40 } 40 }
41 41
42 virtual void Apply(const IMessage& message) = 0; 42 virtual void Apply(const IMessage& message) = 0;
43 43
44 virtual MessageType GetMessageType() const = 0; 44 virtual const MessageIdentifier& GetMessageIdentifier() = 0;
45
45 virtual IObserver* GetObserver() const = 0; 46 virtual IObserver* GetObserver() const = 0;
46 }; 47 };
47 48
48 template <typename TMessage> 49 template <typename TMessage>
49 class MessageHandler: public ICallable 50 class MessageHandler: public ICallable
56 class Callable : public MessageHandler<TMessage> 57 class Callable : public MessageHandler<TMessage>
57 { 58 {
58 private: 59 private:
59 typedef void (TObserver::* MemberFunction) (const TMessage&); 60 typedef void (TObserver::* MemberFunction) (const TMessage&);
60 61
61 TObserver& observer_; 62 TObserver& observer_;
62 MemberFunction function_; 63 MemberFunction function_;
63 64
64 public: 65 public:
65 Callable(TObserver& observer, 66 Callable(TObserver& observer,
66 MemberFunction function) : 67 MemberFunction function) :
67 observer_(observer), 68 observer_(observer),
77 virtual void Apply(const IMessage& message) 78 virtual void Apply(const IMessage& message)
78 { 79 {
79 ApplyInternal(dynamic_cast<const TMessage&>(message)); 80 ApplyInternal(dynamic_cast<const TMessage&>(message));
80 } 81 }
81 82
82 virtual MessageType GetMessageType() const 83 virtual const MessageIdentifier& GetMessageIdentifier()
83 { 84 {
84 return static_cast<MessageType>(TMessage::Type); 85 return TMessage::GetStaticIdentifier();
85 } 86 }
86 87
87 virtual IObserver* GetObserver() const 88 virtual IObserver* GetObserver() const
88 { 89 {
89 return &observer_; 90 return &observer_;
113 virtual void Apply(const IMessage& message) 114 virtual void Apply(const IMessage& message)
114 { 115 {
115 lambda_(dynamic_cast<const TMessage&>(message)); 116 lambda_(dynamic_cast<const TMessage&>(message));
116 } 117 }
117 118
118 virtual MessageType GetMessageType() const
119 {
120 return static_cast<MessageType>(TMessage::Type);
121 }
122
123 virtual IObserver* GetObserver() const 119 virtual IObserver* GetObserver() const
124 { 120 {
125 return &observer_; 121 return &observer_;
126 } 122 }
127 }; 123 };