All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
RouteCallback.h
1 // Copyright eeGeo Ltd (2012-2014), All Rights Reserved
2 
3 #pragma once
4 
5 #include "Routes.h"
6 
7 namespace Eegeo
8 {
9  namespace Routes
10  {
12  {
13  public:
14  virtual void operator()(const Route* route) = 0;
15  };
16 
17  template <class T> class TRouteCallback : public IRouteCallback
18  {
19  private:
20  void (T::*m_callback)(const Route* route);
21  T* m_context;
22  public:
23  TRouteCallback(T* context, void (T::*callback)(const Route* route))
24  : m_callback(callback)
25  , m_context(context)
26  {
27  }
28 
29  virtual void operator()(const Route* route)
30  {
31  (*m_context.*m_callback)(route);
32  }
33  };
34  }
35 }