Mercurial > hg > orthanc-stone
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 }; |