23#include "gdbsupport/gdb_optional.h"
24#include "gdbsupport/array-view.h"
56 const char *show_doc_,
57 const char *help_doc_)
90 unsigned int *(*uinteger) (
const option_def &,
void *ctx);
92 const char **(*enumeration) (
const option_def &,
void *ctx);
99 const char *
const *
enums =
nullptr;
131template<
typename RetType,
typename Context>
132static inline RetType *
135 using unerased_ftype = RetType *(Context *);
137 return fun ((Context *) ctx);
158template<
typename Context>
162 bool *(*get_var_address_cb_) (Context *),
164 const char *set_doc_,
165 const char *show_doc_ =
nullptr,
166 const char *help_doc_ =
nullptr)
170 set_doc_, show_doc_, help_doc_)
180template<
typename Context =
bool>
184 bool *(*var_address_cb_) (Context *),
185 const char *set_doc_,
186 const char *help_doc_ =
nullptr)
190 set_doc_, NULL, help_doc_)
196 const char *set_doc_,
197 const char *help_doc_ =
nullptr)
209template<
typename Context>
213 unsigned int *(*get_var_address_cb_) (Context *),
216 const char *set_doc_,
217 const char *show_doc_ =
nullptr,
218 const char *help_doc_ =
nullptr)
222 set_doc_, show_doc_, help_doc_)
228 unsigned int *(*get_var_address_cb_) (Context *),
230 const char *set_doc_,
231 const char *show_doc_ =
nullptr,
232 const char *help_doc_ =
nullptr)
234 show_cmd_cb_, set_doc_, show_doc_, help_doc_)
240template<
typename Context>
244 int *(*get_var_address_cb_) (Context *),
247 const char *set_doc_,
248 const char *show_doc_ =
nullptr,
249 const char *help_doc_ =
nullptr)
253 set_doc_, show_doc_, help_doc_)
259 int *(*get_var_address_cb_) (Context *),
261 const char *set_doc_,
262 const char *show_doc_ =
nullptr,
263 const char *help_doc_ =
nullptr)
265 show_cmd_cb_, set_doc_, show_doc_, help_doc_)
271template<
typename Context>
275 const char *
const *enumlist,
276 const char **(*get_var_address_cb_) (Context *),
278 const char *set_doc_,
279 const char *show_doc_ =
nullptr,
280 const char *help_doc_ =
nullptr)
284 set_doc_, show_doc_, help_doc_)
287 this->
enums = enumlist;
293template<
typename Context>
297 std::string *(*get_var_address_cb_) (Context *),
299 const char *set_doc_,
300 const char *show_doc_ =
nullptr,
301 const char *help_doc_ =
nullptr)
305 set_doc_, show_doc_, help_doc_)
347 gdb::array_view<const option_def_group> options_group);
357 gdb::array_view<const option_def_group> options_group);
362 gdb::array_view<const option_def_group> options_group);
368 (
const char *help_tmpl,
369 gdb::array_view<const option_def_group> options_group);
375 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)
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
unsigned int *(* uinteger)(const option_def &, void *ctx)
show_value_ftype * show_cmd_cb
erased_get_var_address_ftype * erased_get_var_address
const char **(* enumeration)(const option_def &, void *ctx)
int *(* integer)(const option_def &, void *ctx)
const option_def & def() const
const char *const * enums
constexpr option_def(const char *name_, var_types var_type_, const literal_def *extra_literals_, 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_)
void * erased_get_var_address_ftype()
bool *(* boolean)(const option_def &, void *ctx)
const literal_def * extra_literals
union gdb::option::option_def::@28 var_address
pinteger_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)
pinteger_option_def(const char *long_option_, int *(*get_var_address_cb_)(Context *), const literal_def *extra_literals_, show_value_ftype *show_cmd_cb_, const char *set_doc_, const char *show_doc_=nullptr, const char *help_doc_=nullptr)
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 *), const literal_def *extra_literals_, 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)