33#include "gdbsupport/gdb_optional.h"
95 CORE_ADDR frameaddr = 0;
102 error (_(
"-var-create: Usage: NAME FRAME EXPRESSION."));
107 const char *
name = argv[0];
108 std::string gen_name;
109 if (strcmp (
name,
"-") == 0)
112 name = gen_name.c_str ();
114 else if (!isalpha (
name[0]))
115 error (_(
"-var-create: name of object must begin with a letter"));
117 if (strcmp (frame,
"*") == 0)
119 else if (strcmp (frame,
"@") == 0)
129 "Name=\"%s\", Frame=\"%s\" (%s), Expression=\"%s\"\n",
130 name, frame, hex_string (frameaddr),
expr);
135 error (_(
"-var-create: unable to create variable object"));
148 int children_only_p = 0;
151 if (argc < 1 || argc > 2)
152 error (_(
"-var-delete: Usage: [-c] EXPRESSION."));
160 if (strcmp (
name,
"-c") == 0)
161 error (_(
"-var-delete: Missing required "
162 "argument after '-c': variable object name"));
164 error (_(
"-var-delete: Illegal variable object name"));
171 if (strcmp (
name,
"-c") != 0)
172 error (_(
"-var-delete: Invalid option."));
198 if (strncmp (arg,
"natural", len) == 0)
200 else if (strncmp (arg,
"binary", len) == 0)
202 else if (strncmp (arg,
"decimal", len) == 0)
204 else if (strncmp (arg,
"hexadecimal", len) == 0)
206 else if (strncmp (arg,
"octal", len) == 0)
208 else if (strncmp (arg,
"zero-hexadecimal", len) == 0)
212 error (_(
"Must specify the format as: \"natural\", "
213 "\"binary\", \"decimal\", \"hexadecimal\", \"octal\" or \"zero-hexadecimal\""));
224 error (_(
"-var-set-format: Usage: NAME FORMAT."));
249 error (_(
"-var-set-visualizer: Usage: NAME VISUALIZER_FUNCTION."));
254 error (_(
"Variable object not found"));
266 error (_(
"-var-set-frozen: Usage: NAME FROZEN_FLAG."));
270 if (strcmp (argv[1],
"0") == 0)
272 else if (strcmp (argv[1],
"1") == 0)
275 error (_(
"Invalid flag value"));
292 error (_(
"-var-show-format: Usage: NAME."));
311 error (_(
"-var-info-num-children: Usage: NAME."));
355 case TYPE_CODE_ARRAY:
356 case TYPE_CODE_STRUCT:
357 case TYPE_CODE_UNION:
373 if (argc < 1 || argc > 4)
374 error (_(
"-var-list-children: Usage: "
375 "[PRINT_VALUES] NAME [FROM TO]"));
378 if (argc == 1 || argc == 3)
385 from = atoi (argv[argc - 2]);
386 to = atoi (argv[argc - 1]);
394 const std::vector<varobj *> &
children
398 if (argc == 2 || argc == 4)
428 error (_(
"-var-info-type: Usage: NAME."));
445 error (_(
"-var-info-path-expression: Usage: NAME."));
464 error (_(
"-var-info-expression: Usage: NAME."));
487 error (_(
"-var-show-attributes: Usage: NAME."));
494 if (attr & 0x00000001)
497 attstr =
"noneditable";
518 static const struct mi_opt opts[] =
530 int opt =
mi_getopt (
"-var-evaluate-expression", argc, argv,
535 switch ((
enum opt) opt)
539 error (_(
"Cannot specify format more than once"));
548 error (_(
"Usage: [-f FORMAT] NAME"));
551 error (_(
"Garbage at end of command"));
577 error (_(
"-var-assign: Usage: NAME EXPRESSION."));
583 error (_(
"-var-assign: Variable object is not editable"));
589 scoped_restore save_suppress
593 error (_(
"-var-assign: Could not assign "
594 "expression to variable object"));
619 thread_stopped = (tp == NULL
635 if (argc != 1 && argc != 2)
636 error (_(
"-var-update: Usage: [PRINT_VALUES] NAME."));
653 if ((*
name ==
'*' || *
name ==
'@') && (*(
name + 1) ==
'\0'))
679 std::vector<varobj_update_result> changes =
varobj_update (&var, is_explicit);
722 if (r.type_changed || r.children_changed)
737 if (!r.newobj.empty ())
741 for (
varobj *child : r.newobj)
755 error (_(
"-enable-pretty-printing: no arguments allowed"));
768 error (_(
"-var-set-update-range: Usage: VAROBJ FROM TO"));
771 from = atoi (argv[1]);
void field_string(const char *fldname, const char *string, const ui_file_style &style=ui_file_style())
void field_signed(const char *fldname, LONGEST value)
struct thread_info * find_thread_global_id(int global_id)
struct thread_info * inferior_thread(void)
struct type * check_typedef(struct type *type)
#define TYPE_IS_REFERENCE(t)
static enum varobj_display_formats mi_parse_format(const char *arg)
static void varobj_update_one(struct varobj *var, enum print_values print_values, bool is_explicit)
static void mi_cmd_var_update_iter(struct varobj *var, bool only_floating, enum print_values print_values)
static int mi_print_value_p(struct varobj *var, enum print_values print_values)
static void print_varobj(struct varobj *var, enum print_values print_values, int print_expression)
bool mi_simple_type_p(struct type *type)
mi_cmd_argv_ftype mi_cmd_var_list_children
mi_cmd_argv_ftype mi_cmd_var_update
mi_cmd_argv_ftype mi_cmd_var_delete
mi_cmd_argv_ftype mi_cmd_var_evaluate_expression
mi_cmd_argv_ftype mi_cmd_var_set_format
mi_cmd_argv_ftype mi_cmd_var_info_path_expression
mi_cmd_argv_ftype mi_cmd_enable_pretty_printing
mi_cmd_argv_ftype mi_cmd_var_show_format
mi_cmd_argv_ftype mi_cmd_var_info_expression
mi_cmd_argv_ftype mi_cmd_var_assign
mi_cmd_argv_ftype mi_cmd_var_info_type
mi_cmd_argv_ftype mi_cmd_var_set_update_range
mi_cmd_argv_ftype mi_cmd_var_show_attributes
mi_cmd_argv_ftype mi_cmd_var_info_num_children
mi_cmd_argv_ftype mi_cmd_var_set_frozen
mi_cmd_argv_ftype mi_cmd_var_set_visualizer
mi_cmd_argv_ftype mi_cmd_var_create
int mi_getopt(const char *prefix, int argc, const char *const *argv, const struct mi_opt *opts, int *oind, const char **oarg)
enum print_values mi_parse_print_values(const char *name)
virtual const char * natural_name() const =0
struct type * target_type() const
enum varobj_display_formats format
std::vector< varobj * > children
void gdb_printf(struct ui_file *stream, const char *format,...)
CORE_ADDR string_to_core_addr(const char *my_string)
int varobj_get_thread_id(const struct varobj *var)
enum varobj_display_formats varobj_get_display_format(const struct varobj *var)
bool varobj_floating_p(const struct varobj *var)
int varobj_get_attributes(const struct varobj *var)
void varobj_enable_pretty_printing(void)
const char * varobj_get_path_expr(const struct varobj *var)
struct varobj * varobj_create(const char *objname, const char *expression, CORE_ADDR frame, enum varobj_type type)
void varobj_set_child_range(struct varobj *var, int from, int to)
void varobj_get_child_range(const struct varobj *var, int *from, int *to)
bool varobj_editable_p(const struct varobj *var)
const std::vector< varobj * > & varobj_list_children(struct varobj *var, int *from, int *to)
std::string varobj_gen_name(void)
const struct language_defn * varobj_get_language(const struct varobj *var)
std::string varobj_get_formatted_value(struct varobj *var, enum varobj_display_formats format)
struct type * varobj_get_gdb_type(const struct varobj *var)
gdb::unique_xmalloc_ptr< char > varobj_get_display_hint(const struct varobj *var)
const char * varobj_get_objname(const struct varobj *var)
void varobj_set_visualizer(struct varobj *var, const char *visualizer)
const char * varobj_format_string[]
void varobj_set_frozen(struct varobj *var, bool frozen)
std::string varobj_get_value(struct varobj *var)
struct varobj * varobj_get_handle(const char *objname)
bool varobj_set_value(struct varobj *var, const char *expression)
int varobj_get_num_children(struct varobj *var)
bool varobj_get_frozen(const struct varobj *var)
bool varobj_is_dynamic_p(const struct varobj *var)
std::vector< varobj_update_result > varobj_update(struct varobj **varp, bool is_explicit)
std::string varobj_get_type(struct varobj *var)
int varobj_delete(struct varobj *var, bool only_children)
void all_root_varobjs(gdb::function_view< void(struct varobj *var)> func)
bool varobj_has_more(const struct varobj *var, int to)
std::string varobj_get_expression(const struct varobj *var)
enum varobj_display_formats varobj_set_display_format(struct varobj *var, enum varobj_display_formats format)