diff 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
line wrap: on
line diff
--- a/Framework/Messages/ICallable.h	Mon Jan 21 22:41:24 2019 +0100
+++ b/Framework/Messages/ICallable.h	Wed Jan 23 13:58:51 2019 +0100
@@ -89,4 +89,41 @@
       return &observer_;
     }
   };
+
+#if 0 /* __cplusplus >= 201103L*/
+
+#include <functional>
+
+  template <typename TMessage>
+  class LambdaCallable : public MessageHandler<TMessage>
+  {
+  private:
+
+    IObserver&      observer_;
+    std::function<void (const TMessage&)> lambda_;
+
+  public:
+    LambdaCallable(IObserver& observer,
+                    std::function<void (const TMessage&)> lambdaFunction) :
+             observer_(observer),
+             lambda_(lambdaFunction)
+    {
+    }
+
+    virtual void Apply(const IMessage& message)
+    {
+      lambda_(dynamic_cast<const TMessage&>(message));
+    }
+
+    virtual MessageType GetMessageType() const
+    {
+      return static_cast<MessageType>(TMessage::Type);
+    }
+
+    virtual IObserver* GetObserver() const
+    {
+      return &observer_;
+    }
+  };
+#endif //__cplusplus >= 201103L
 }