libcopp  1.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_ */
assign_logic_bool_t< T > assign_logic_bool(T &t)
通用赋值动作 - 设置一个变量为bool值并检查语义
void operator()(util::cli::callback_param params)
size_type get_params_number() const
通用赋值动作 - 设置变量值为某个固定值
void operator()(util::cli::callback_param params)
void operator()(util::cli::callback_param params)
通用赋值动作 - 容器insert操作
void operator()(util::cli::callback_param)
std::vector< value_type >::size_type size_type
通用赋值动作 - 容器push_front操作
通用赋值动作 - 设置一个变量值
push_front_t< T > push_front(T &t)
push_back_t< T > push_back(T &t)
set_const_t< T > set_const(T &t, const T &v)
void operator()(util::cli::callback_param params)
void operator()(util::cli::callback_param params)
通用赋值动作 - 容器push_back操作
insert_t< T > insert(T &t)
assign_t< T > assign(T &t)