libcopp  1.2.1
cmd_option_bindt_mf_cc.h
Go to the documentation of this file.
1 #ifndef UTIL_CLI_CMDOPTIONBINDT_MF_CC_H
2 #define UTIL_CLI_CMDOPTIONBINDT_MF_CC_H
3 
4 #pragma once
5 
7 
8 /*
9  * cmd_option_bindt_mf_cc.h
10  *
11  * Created on: 2012-01-18
12  * Author: OWenT
13  *
14  * 成员函数绑定器
15  */
16 
17 namespace util {
18  namespace cli {
19  // 绑定器集合
20  namespace binder {
21  // ============================
22  // === 类绑定 ===
23  // ============================
24 
25  template <typename _T, typename _F>
27  private:
29 
30  public:
31  cmd_option_bindt_mf_cc_caller(_F f) : mem_func_(f) {}
32 
33 #if defined(UTIL_CONFIG_COMPILER_CXX_VARIADIC_TEMPLATES) && UTIL_CONFIG_COMPILER_CXX_VARIADIC_TEMPLATES
34  template <typename _TCBP, typename... _Args>
35  void operator()(_TCBP &param, _T *arg0, _Args &... args) {
36  (arg0->*mem_func_)(param, args...);
37  }
38 
39  template <typename _TCBP, typename... _Args>
40  void operator()(_TCBP &param, _T &arg0, _Args &... args) {
41  (arg0.*mem_func_)(param, args...);
42  }
43 #else
44 
45  template <typename _TCBP>
46  void operator()(_TCBP &args, _T *arg0) {
47  (arg0->*mem_func_)(args);
48  }
49 
50  template <typename _TCBP>
51  void operator()(_TCBP &args, _T &arg0) {
52  (arg0.*mem_func_)(args);
53  }
54 
55  template <typename _TCBP, typename _Arg1>
56  void operator()(_TCBP &args, _T *arg0, _Arg1 &arg1) {
57  (arg0->*mem_func_)(args, arg1);
58  }
59 
60  template <typename _TCBP, typename _Arg1>
61  void operator()(_TCBP &args, _T &arg0, _Arg1 &arg1) {
62  (arg0.*mem_func_)(args, arg1);
63  }
64 
65  template <typename _TCBP, typename _Arg1, typename _Arg2>
66  void operator()(_TCBP &args, _T *arg0, _Arg1 &arg1, _Arg2 &arg2) {
67  (arg0->*mem_func_)(args, arg1, arg2);
68  }
69 
70  template <typename _TCBP, typename _Arg1, typename _Arg2>
71  void operator()(_TCBP &args, _T &arg0, _Arg1 &arg1, _Arg2 &arg2) {
72  (arg0.*mem_func_)(args, arg1, arg2);
73  }
74 
75  template <typename _TCBP, typename _Arg1, typename _Arg2, typename _Arg3>
76  void operator()(_TCBP &args, _T *arg0, _Arg1 &arg1, _Arg2 &arg2, _Arg3 &arg3) {
77  (arg0->*mem_func_)(args, arg1, arg2, arg3);
78  }
79 
80  template <typename _TCBP, typename _Arg1, typename _Arg2, typename _Arg3>
81  void operator()(_TCBP &args, _T &arg0, _Arg1 &arg1, _Arg2 &arg2, _Arg3 &arg3) {
82  (arg0.*mem_func_)(args, arg1, arg2, arg3);
83  }
84 #endif
85  };
86  } // namespace binder
87  } // namespace cli
88 } // namespace util
89 #endif /* _CMDOPTIONBINDT_MF_CC_H_ */
void operator()(_TCBP &args, _T *arg0, _Arg1 &arg1)
void operator()(_TCBP &args, _T *arg0, _Arg1 &arg1, _Arg2 &arg2, _Arg3 &arg3)
void operator()(_TCBP &args, _T &arg0, _Arg1 &arg1, _Arg2 &arg2, _Arg3 &arg3)
void operator()(_TCBP &args, _T *arg0, _Arg1 &arg1, _Arg2 &arg2)
void operator()(_TCBP &args, _T &arg0, _Arg1 &arg1)
void operator()(_TCBP &args, _T &arg0, _Arg1 &arg1, _Arg2 &arg2)