libcopp  2.2.0
cmd_option_phoenix.h
Go to the documentation of this file.
1 #ifndef UTIL_CLI_CMDOPTION_PHOENIX_H
2 #define UTIL_CLI_CMDOPTION_PHOENIX_H
3 
4 #pragma once
5 
19 #include "cmd_option.h"
20 
21 namespace util {
22 namespace cli {
23 namespace phoenix {
27 template <typename T>
28 struct assign_t {
29  T &var;
30  assign_t(T &t) : var(t) {}
31 
33  if (params.get_params_number() > 0) {
34  var = params[0]->to<T>();
35  }
36  }
37 };
38 
39 template <typename T>
41  return assign_t<T>(std::ref(t));
42 }
43 
47 template <typename T>
48 struct push_back_t {
49  T &var;
50  push_back_t(T &t) : var(t) {}
51 
53  for (util::cli::cmd_option_list::size_type i = 0; i < params.get_params_number(); ++i) {
54  var.push_back(params[i]->to<typename T::value_type>());
55  }
56  }
57 };
58 
59 template <typename T>
61  return push_back_t<T>(std::ref(t));
62 }
63 
67 template <typename T>
68 struct push_front_t {
69  T &var;
70  push_front_t(T &t) : var(t) {}
71 
73  for (util::cli::cmd_option_list::size_type i = 0; i < params.get_params_number(); ++i) {
74  var.push_front(params[i]->to<typename T::value_type>());
75  }
76  }
77 };
78 
79 template <typename T>
81  return push_front_t<T>(std::ref(t));
82 }
83 
87 template <typename T>
88 struct insert_t {
89  T &var;
90  insert_t(T &t) : var(t) {}
91 
93  for (util::cli::cmd_option_list::size_type i = 0; i < params.get_params_number(); ++i) {
94  var.insert(params[i]->to<typename T::value_type>());
95  }
96  }
97 };
98 
99 template <typename T>
101  return insert_t<T>(std::ref(t));
102 }
103 
107 template <typename T>
108 struct set_const_t {
109  T &var;
110  T val;
111  set_const_t(T &t, const T &v) : var(t), val(v) {}
112 
114 };
115 
116 template <typename T>
117 set_const_t<T> set_const(T &t, const T &v) {
118  return set_const_t<T>(std::ref(t), std::cref(v));
119 }
120 
125 template <typename T>
127  T &var;
128  assign_logic_bool_t(T &t) : var(t) {}
129 
131  if (params.get_params_number() > 0) {
132  var = params[0]->to_logic_bool();
133  } else {
134  var = false;
135  }
136  }
137 };
138 
139 template <typename T>
141  return assign_logic_bool_t<T>(std::ref(t));
142 }
143 } // namespace phoenix
144 } // namespace cli
145 } // namespace util
146 #endif /* CMDOPTION_H_ */
size_type get_params_number() const
std::vector< value_type >::size_type size_type
assign_t< T > assign(T &t)
push_front_t< T > push_front(T &t)
set_const_t< T > set_const(T &t, const T &v)
insert_t< T > insert(T &t)
push_back_t< T > push_back(T &t)
assign_logic_bool_t< T > assign_logic_bool(T &t)
通用赋值动作 - 设置一个变量为bool值并检查语义
void operator()(util::cli::callback_param params)
通用赋值动作 - 设置一个变量值
void operator()(util::cli::callback_param params)
通用赋值动作 - 容器insert操作
void operator()(util::cli::callback_param params)
通用赋值动作 - 容器push_back操作
void operator()(util::cli::callback_param params)
通用赋值动作 - 容器push_front操作
void operator()(util::cli::callback_param params)
通用赋值动作 - 设置变量值为某个固定值
void operator()(util::cli::callback_param)