23#include "gdbsupport/gdb_optional.h"
24#include "gdbsupport/array-view.h"
55 const char *show_doc_,
56 const char *help_doc_)
86 unsigned int *(*uinteger) (
const option_def &,
void *ctx);
88 const char **(*enumeration) (
const option_def &,
void *ctx);
95 const char *
const *
enums =
nullptr;
127template<
typename RetType,
typename Context>
128static inline RetType *
131 using unerased_ftype = RetType *(Context *);
133 return fun ((Context *) ctx);
154template<
typename Context>
158 bool *(*get_var_address_cb_) (Context *),
160 const char *set_doc_,
161 const char *show_doc_ =
nullptr,
162 const char *help_doc_ =
nullptr)
166 set_doc_, show_doc_, help_doc_)
168 var_address.boolean = detail::get_var_address<bool, Context>;
176template<
typename Context =
bool>
180 bool *(*var_address_cb_) (Context *),
181 const char *set_doc_,
182 const char *help_doc_ =
nullptr)
186 set_doc_, NULL, help_doc_)
192 const char *set_doc_,
193 const char *help_doc_ =
nullptr)
195 gdb::option::detail::return_self,
197 set_doc_, nullptr, help_doc_)
205template<
typename Context>
209 unsigned int *(*get_var_address_cb_) (Context *),
211 const char *set_doc_,
212 const char *show_doc_ =
nullptr,
213 const char *help_doc_ =
nullptr)
217 set_doc_, show_doc_, help_doc_)
219 var_address.uinteger = detail::get_var_address<unsigned int, Context>;
225template<
typename Context>
229 int *(*get_var_address_cb_) (Context *),
231 const char *set_doc_,
232 const char *show_doc_ =
nullptr,
233 const char *help_doc_ =
nullptr)
237 set_doc_, show_doc_, help_doc_)
239 var_address.integer = detail::get_var_address<int, Context>;
245template<
typename Context>
249 const char *
const *enumlist,
250 const char **(*get_var_address_cb_) (Context *),
252 const char *set_doc_,
253 const char *show_doc_ =
nullptr,
254 const char *help_doc_ =
nullptr)
258 set_doc_, show_doc_, help_doc_)
260 var_address.enumeration = detail::get_var_address<const char *, Context>;
261 this->
enums = enumlist;
267template<
typename Context>
271 std::string *(*get_var_address_cb_) (Context *),
273 const char *set_doc_,
274 const char *show_doc_ =
nullptr,
275 const char *help_doc_ =
nullptr)
279 set_doc_, show_doc_, help_doc_)
281 var_address.enumeration = detail::get_var_address<const char *, Context>;
321 gdb::array_view<const option_def_group> options_group);
331 gdb::array_view<const option_def_group> options_group);
336 gdb::array_view<const option_def_group> options_group);
342 (
const char *help_tmpl,
343 gdb::array_view<const option_def_group> options_group);
349 gdb::array_view<const option_def> options,
void() show_value_ftype(struct ui_file *file, int from_tty, struct cmd_list_element *cmd, const char *value)
@ var_zuinteger_unlimited
static T * return_self(T *self)
static RetType * get_var_address(const option_def &option, void *ctx)
bool process_options(const char **args, process_options_mode mode, gdb::array_view< const option_def_group > options_group)
@ PROCESS_OPTIONS_REQUIRE_DELIMITER
@ PROCESS_OPTIONS_UNKNOWN_IS_ERROR
@ PROCESS_OPTIONS_UNKNOWN_IS_OPERAND
std::string build_help(const char *help_tmpl, gdb::array_view< const option_def_group > options_group)
void complete_on_all_options(completion_tracker &tracker, gdb::array_view< const option_def_group > options_group)
bool complete_options(completion_tracker &tracker, const char **args, process_options_mode mode, gdb::array_view< const option_def_group > options_group)
void add_setshow_cmds_for_options(command_class cmd_class, void *data, gdb::array_view< const option_def > options, struct cmd_list_element **set_list, struct cmd_list_element **show_list)
boolean_option_def(const char *long_option_, bool *(*get_var_address_cb_)(Context *), show_value_ftype *show_cmd_cb_, const char *set_doc_, const char *show_doc_=nullptr, const char *help_doc_=nullptr)
enum_option_def(const char *long_option_, const char *const *enumlist, const char **(*get_var_address_cb_)(Context *), show_value_ftype *show_cmd_cb_, const char *set_doc_, const char *show_doc_=nullptr, const char *help_doc_=nullptr)
flag_option_def(const char *long_option_, const char *set_doc_, const char *help_doc_=nullptr)
flag_option_def(const char *long_option_, bool *(*var_address_cb_)(Context *), const char *set_doc_, const char *help_doc_=nullptr)
gdb::array_view< const option_def > options
void *() erased_get_var_address_ftype()
union gdb::option::option_def::@26 var_address
show_value_ftype * show_cmd_cb
erased_get_var_address_ftype * erased_get_var_address
const option_def & def() const
const char *const * enums
constexpr option_def(const char *name_, var_types var_type_, erased_get_var_address_ftype *erased_get_var_address_, show_value_ftype *show_cmd_cb_, const char *set_doc_, const char *show_doc_, const char *help_doc_)
string_option_def(const char *long_option_, std::string *(*get_var_address_cb_)(Context *), show_value_ftype *show_cmd_cb_, const char *set_doc_, const char *show_doc_=nullptr, const char *help_doc_=nullptr)
uinteger_option_def(const char *long_option_, unsigned int *(*get_var_address_cb_)(Context *), show_value_ftype *show_cmd_cb_, const char *set_doc_, const char *show_doc_=nullptr, const char *help_doc_=nullptr)
zuinteger_unlimited_option_def(const char *long_option_, int *(*get_var_address_cb_)(Context *), show_value_ftype *show_cmd_cb_, const char *set_doc_, const char *show_doc_=nullptr, const char *help_doc_=nullptr)