comparison Framework/Messages/ICallable.h @ 456:b70fcc134ba4

moved LambdaCallable (currently still disable because it does not work in WASM)
author Alain Mazy <alain@mazy.be>
date Wed, 23 Jan 2019 13:58:51 +0100
parents b70e9be013e4
children f0008c55e5f7
comparison
equal deleted inserted replaced
455:e3a6e3bf5c7c 456:b70fcc134ba4
87 virtual IObserver* GetObserver() const 87 virtual IObserver* GetObserver() const
88 { 88 {
89 return &observer_; 89 return &observer_;
90 } 90 }
91 }; 91 };
92
93 #if 0 /* __cplusplus >= 201103L*/
94
95 #include <functional>
96
97 template <typename TMessage>
98 class LambdaCallable : public MessageHandler<TMessage>
99 {
100 private:
101
102 IObserver& observer_;
103 std::function<void (const TMessage&)> lambda_;
104
105 public:
106 LambdaCallable(IObserver& observer,
107 std::function<void (const TMessage&)> lambdaFunction) :
108 observer_(observer),
109 lambda_(lambdaFunction)
110 {
111 }
112
113 virtual void Apply(const IMessage& message)
114 {
115 lambda_(dynamic_cast<const TMessage&>(message));
116 }
117
118 virtual MessageType GetMessageType() const
119 {
120 return static_cast<MessageType>(TMessage::Type);
121 }
122
123 virtual IObserver* GetObserver() const
124 {
125 return &observer_;
126 }
127 };
128 #endif //__cplusplus >= 201103L
92 } 129 }