xsens_imu
xsens_janitors.h
Go to the documentation of this file.
1 #ifndef XSENS_MONOLITHIC
2 
24 #endif
25 
26 #ifndef XSENS_JANITORS_H
27 #define XSENS_JANITORS_H
28 
29 // required for older gnu c++ compiler versions due to difference in attribute declarations
30 #if defined(__GNUC__) && !defined(HAVE_CDECL)
31 # define __cdecl __attribute__((cdecl))
32 # define __stdcall __attribute__((stdcall))
33 #endif
34 
35 namespace xsens {
36 
37 
39 
44 template <class T, typename R = void>
46 public:
47  typedef R (T::*t_func_JanitorClassFunc)(void);
48 private:
49  const JanitorClassFunc& operator = (const JanitorClassFunc&);
50 
51  T& m_control;
52  t_func_JanitorClassFunc m_funcJCF;
53  bool m_enabled;
54 public:
55 
56  JanitorClassFunc<T,R>(T& control, t_func_JanitorClassFunc func, bool enabl = true) :
57  m_control(control), m_funcJCF(func), m_enabled(enabl)
58  {
59  }
61  {
62  if (m_enabled)
63  (m_control.*m_funcJCF)();
64  }
65 
66  void disable(void)
67  { m_enabled = false; }
68 
69  void enable(void)
70  { m_enabled = true; }
71 };
72 
74 
79 template <class T, typename P1, typename R = void>
81 public:
82  typedef R (T::*t_func_JanitorClassFunc)(P1);
83 private:
84  const JanitorClassFuncP1& operator = (const JanitorClassFuncP1&);
85 
86  T& m_control;
87  P1 m_param1;
88  t_func_JanitorClassFunc m_funcJCF;
89  bool m_enabled;
90 public:
91 
92  JanitorClassFuncP1<T,P1,R>(T& control, P1 p1, t_func_JanitorClassFunc func, bool enabl = true) :
93  m_control(control), m_param1(p1), m_funcJCF(func), m_enabled(enabl)
94  {
95  }
97  {
98  if (m_enabled)
99  (m_control.*m_funcJCF)(m_param1);
100  }
101 
102  void disable(void)
103  { m_enabled = false; }
104 
105  void enable(void)
106  { m_enabled = true; }
107 };
108 
109 
110 } // end of xsens namespace
111 
112 #endif // XSENS_JANITORS_H
void enable(void)
Definition: xsens_janitors.h:69
R(T::* t_func_JanitorClassFunc)(P1)
Definition: xsens_janitors.h:82
Class function calling janitor class with a parameter.
Definition: xsens_janitors.h:80
void disable(void)
Definition: xsens_janitors.h:102
R(T::* t_func_JanitorClassFunc)(void)
Definition: xsens_janitors.h:47
Class function calling janitor class.
Definition: xsens_janitors.h:45
void enable(void)
Definition: xsens_janitors.h:105
void disable(void)
Definition: xsens_janitors.h:66