ACKme Logo WiConnect Host Library- API Reference Guide
 
 All Classes Namespaces Functions Variables Typedefs Enumerations Enumerator Groups Pages
Callback.h
1 
29 #pragma once
30 
31 
32 #include "WiconnectTypes.h"
33 #include "FunctionPointer.h"
34 
35 
36 
37 namespace wiconnect
38 {
39 
40 
41 typedef void (*_Callback)(WiconnectResult result, void *arg1, void *arg2);
42 
43 
49 class Callback : public FunctionPointer
50 {
51 public:
52  /*************************************************************************************************/
53  Callback(_Callback func = 0)
54  {
55  _function = (void*)func;
56  _membercaller = NULL;
57  _object = NULL;
58  }
59 
60  /*************************************************************************************************/
61  template<typename T>
62  Callback(T *object, void (T::*member)(WiconnectResult result, void *arg1, void *arg2))
63  {
64  _object = static_cast<void*>(object);
65  memcpy(_member, (char*)&member, sizeof(member));
66  _membercaller = (void*)&Callback::membercaller<T>;
67  _function = 0;
68  }
69 
70  /*************************************************************************************************/
71  void call(WiconnectResult result, void *arg1, void *arg2)
72  {
73  if (_function)
74  {
75  ((_Callback)_function)(result, arg1, arg2);
76  }
77  else if (_object)
78  {
79  typedef void (*membercallerFunc)(void*, char*, WiconnectResult result, void *arg1, void *arg2);
80  ((membercallerFunc)_membercaller)(_object, _member, result, arg1, arg2);
81  }
82  }
83 
84 private:
85 
86  /*************************************************************************************************/
87  template<typename T>
88  static void membercaller(void *object, char *member, WiconnectResult result, void *arg1, void *arg2)
89  {
90  T* o = static_cast<T*>(object);
91  void (T::*m)(WiconnectResult result, void *arg1, void *arg2);
92  memcpy((char*)&m, member, sizeof(m));
93  (o->*m)(result, arg1, arg2);
94  }
95 
96 };
97 
98 
99 }
WiconnectResult
API Result code.
Generic callback function.
Definition: Callback.h:49
Generic function pointer.