libcopp 2.3.1
All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
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
21namespace util {
22namespace cli {
23namespace phoenix {
27template <typename T>
28struct 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
39template <typename T>
41 return assign_t<T>(std::ref(t));
42}
43
47template <typename 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
59template <typename T>
61 return push_back_t<T>(std::ref(t));
62}
63
67template <typename 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
79template <typename T>
81 return push_front_t<T>(std::ref(t));
82}
83
87template <typename T>
88struct 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
99template <typename T>
101 return insert_t<T>(std::ref(t));
102}
103
107template <typename T>
109 T &var;
111 set_const_t(T &t, const T &v) : var(t), val(v) {}
112
114};
115
116template <typename T>
117set_const_t<T> set_const(T &t, const T &v) {
118 return set_const_t<T>(std::ref(t), std::cref(v));
119}
120
125template <typename T>
127 T &var;
129
131 if (params.get_params_number() > 0) {
132 var = params[0]->to_logic_bool();
133 } else {
134 var = false;
135 }
136 }
137};
138
139template <typename T>
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
push_front_t< T > push_front(T &t)
assign_logic_bool_t< T > assign_logic_bool(T &t)
assign_t< T > assign(T &t)
push_back_t< T > push_back(T &t)
set_const_t< T > set_const(T &t, const T &v)
insert_t< T > insert(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)