Change int -> bool where applicable throughout varobj
This patch changes all the "int" I could find in varobj.{c,h} that are really boolean values to use bool. I followed the ramifications (parameters and return values of exported functions), so the changes spilled a bit on other, related files (ada-varobj.c and c-varobj.c). gdb/ChangeLog: * ada-varobj.c (ada_value_is_changeable_p): Change int to bool where applicable. (ada_value_has_mutated): Likewise. * c-varobj.c (varobj_is_anonymous_child): Likewise. (c_is_path_expr_parent): Likewise. * mi/mi-cmd-var.c (varobj_update_one): Likewise. (mi_cmd_var_set_frozen): Likewise. (mi_cmd_var_update_iter): Likewise. (mi_cmd_var_update): Likewise. * varobj.c (pretty_printing): Likewise. (varobj_enable_pretty_printing): Likewise. (struct varobj_root) <floating, is_valid>: Likewise. (struct varobj_dynamic) <children_requested>: Likewise. (delete_variable): Likewise. (delete_variable_1): Likewise. (install_variable): Likewise. (update_type_if_necessary): Likewise. (install_new_value): Likewise. (value_of_root): Likewise. (is_root_p): Likewise. (varobj_create): Likewise. (varobj_delete): Likewise. (varobj_has_more): Likewise. (varobj_set_frozen): Likewise. (varobj_get_frozen): Likewise. (install_dynamic_child): Likewise. (dynamic_varobj_has_child_method): Likewise. (update_dynamic_varobj_children): Likewise. (varobj_get_num_children): Likewise. (varobj_list_children): Likewise. (is_path_expr_parent): Likewise. (varobj_default_is_path_expr_parent): Likewise. (varobj_is_dynamic_p): Likewise. (varobj_set_value): Likewise. (varobj_value_has_mutated): Likewise. (varobj_update): Likewise. (check_scope): Likewise. (value_of_root_1): Likewise. (varobj_value_get_print_value): Likewise. (varobj_editable_p): Likewise. (varobj_value_is_changeable_p): Likewise. (varobj_floating_p): Likewise. (varobj_default_value_is_changeable_p): Likewise. (varobj_invalidate_iter): Likewise. * varobj.h (struct varobj_update_result) <type_changed, children_changed, changed, value_installed>: Likewise. (struct varobj) <updated, frozen, not_fetched>: Likewise. (struct lang_varobj_ops) <value_is_changeable_p, value_has_mutated, is_path_expr_parent>: Likewise. (varobj_delete): Likewise. (varobj_set_frozen): Likewise. (varobj_get_frozen): Likewise. (varobj_set_value): Likewise. (varobj_update): Likewise. (varobj_editable_p): Likewise. (varobj_floating_p): Likewise. (varobj_has_more): Likewise. (varobj_is_dynamic_p): Likewise. (varobj_default_value_is_changeable_p): Likewise. (varobj_value_is_changeable_p): Likewise. (varobj_is_anonymous_child): Likewise. (varobj_default_is_path_expr_parent): Likewise.
This commit is contained in:
parent
eb02c04dc3
commit
4c37490d92
6 changed files with 257 additions and 195 deletions
|
@ -1,3 +1,67 @@
|
||||||
|
2017-11-23 Simon Marchi <simon.marchi@ericsson.com>
|
||||||
|
|
||||||
|
* ada-varobj.c (ada_value_is_changeable_p): Change int to bool where applicable.
|
||||||
|
(ada_value_has_mutated): Likewise.
|
||||||
|
* c-varobj.c (varobj_is_anonymous_child): Likewise.
|
||||||
|
(c_is_path_expr_parent): Likewise.
|
||||||
|
* mi/mi-cmd-var.c (varobj_update_one): Likewise.
|
||||||
|
(mi_cmd_var_set_frozen): Likewise.
|
||||||
|
(mi_cmd_var_update_iter): Likewise.
|
||||||
|
(mi_cmd_var_update): Likewise.
|
||||||
|
* varobj.c (pretty_printing): Likewise.
|
||||||
|
(varobj_enable_pretty_printing): Likewise.
|
||||||
|
(struct varobj_root) <floating, is_valid>: Likewise.
|
||||||
|
(struct varobj_dynamic) <children_requested>: Likewise.
|
||||||
|
(delete_variable): Likewise.
|
||||||
|
(delete_variable_1): Likewise.
|
||||||
|
(install_variable): Likewise.
|
||||||
|
(update_type_if_necessary): Likewise.
|
||||||
|
(install_new_value): Likewise.
|
||||||
|
(value_of_root): Likewise.
|
||||||
|
(is_root_p): Likewise.
|
||||||
|
(varobj_create): Likewise.
|
||||||
|
(varobj_delete): Likewise.
|
||||||
|
(varobj_has_more): Likewise.
|
||||||
|
(varobj_set_frozen): Likewise.
|
||||||
|
(varobj_get_frozen): Likewise.
|
||||||
|
(install_dynamic_child): Likewise.
|
||||||
|
(dynamic_varobj_has_child_method): Likewise.
|
||||||
|
(update_dynamic_varobj_children): Likewise.
|
||||||
|
(varobj_get_num_children): Likewise.
|
||||||
|
(varobj_list_children): Likewise.
|
||||||
|
(is_path_expr_parent): Likewise.
|
||||||
|
(varobj_default_is_path_expr_parent): Likewise.
|
||||||
|
(varobj_is_dynamic_p): Likewise.
|
||||||
|
(varobj_set_value): Likewise.
|
||||||
|
(varobj_value_has_mutated): Likewise.
|
||||||
|
(varobj_update): Likewise.
|
||||||
|
(check_scope): Likewise.
|
||||||
|
(value_of_root_1): Likewise.
|
||||||
|
(varobj_value_get_print_value): Likewise.
|
||||||
|
(varobj_editable_p): Likewise.
|
||||||
|
(varobj_value_is_changeable_p): Likewise.
|
||||||
|
(varobj_floating_p): Likewise.
|
||||||
|
(varobj_default_value_is_changeable_p): Likewise.
|
||||||
|
(varobj_invalidate_iter): Likewise.
|
||||||
|
* varobj.h (struct varobj_update_result) <type_changed,
|
||||||
|
children_changed, changed, value_installed>: Likewise.
|
||||||
|
(struct varobj) <updated, frozen, not_fetched>: Likewise.
|
||||||
|
(struct lang_varobj_ops) <value_is_changeable_p,
|
||||||
|
value_has_mutated, is_path_expr_parent>: Likewise.
|
||||||
|
(varobj_delete): Likewise.
|
||||||
|
(varobj_set_frozen): Likewise.
|
||||||
|
(varobj_get_frozen): Likewise.
|
||||||
|
(varobj_set_value): Likewise.
|
||||||
|
(varobj_update): Likewise.
|
||||||
|
(varobj_editable_p): Likewise.
|
||||||
|
(varobj_floating_p): Likewise.
|
||||||
|
(varobj_has_more): Likewise.
|
||||||
|
(varobj_is_dynamic_p): Likewise.
|
||||||
|
(varobj_default_value_is_changeable_p): Likewise.
|
||||||
|
(varobj_value_is_changeable_p): Likewise.
|
||||||
|
(varobj_is_anonymous_child): Likewise.
|
||||||
|
(varobj_default_is_path_expr_parent): Likewise.
|
||||||
|
|
||||||
2017-11-22 Sergio Durigan Junior <sergiodj@redhat.com>
|
2017-11-22 Sergio Durigan Junior <sergiodj@redhat.com>
|
||||||
|
|
||||||
* dtrace-probe.c (struct probe_ops dtrace_probe_ops): Delete.
|
* dtrace-probe.c (struct probe_ops dtrace_probe_ops): Delete.
|
||||||
|
|
|
@ -929,7 +929,7 @@ ada_value_of_variable (const struct varobj *var,
|
||||||
|
|
||||||
/* Implement the "value_is_changeable_p" routine for Ada. */
|
/* Implement the "value_is_changeable_p" routine for Ada. */
|
||||||
|
|
||||||
static int
|
static bool
|
||||||
ada_value_is_changeable_p (const struct varobj *var)
|
ada_value_is_changeable_p (const struct varobj *var)
|
||||||
{
|
{
|
||||||
struct type *type = var->value ? value_type (var->value) : var->type;
|
struct type *type = var->value ? value_type (var->value) : var->type;
|
||||||
|
@ -939,7 +939,7 @@ ada_value_is_changeable_p (const struct varobj *var)
|
||||||
{
|
{
|
||||||
/* This is in reality a pointer to an unconstrained array.
|
/* This is in reality a pointer to an unconstrained array.
|
||||||
its value is changeable. */
|
its value is changeable. */
|
||||||
return 1;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ada_is_string_type (type))
|
if (ada_is_string_type (type))
|
||||||
|
@ -947,7 +947,7 @@ ada_value_is_changeable_p (const struct varobj *var)
|
||||||
/* We display the contents of the string in the array's
|
/* We display the contents of the string in the array's
|
||||||
"value" field. The contents can change, so consider
|
"value" field. The contents can change, so consider
|
||||||
that the array is changeable. */
|
that the array is changeable. */
|
||||||
return 1;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
return varobj_default_value_is_changeable_p (var);
|
return varobj_default_value_is_changeable_p (var);
|
||||||
|
@ -955,7 +955,7 @@ ada_value_is_changeable_p (const struct varobj *var)
|
||||||
|
|
||||||
/* Implement the "value_has_mutated" routine for Ada. */
|
/* Implement the "value_has_mutated" routine for Ada. */
|
||||||
|
|
||||||
static int
|
static bool
|
||||||
ada_value_has_mutated (const struct varobj *var, struct value *new_val,
|
ada_value_has_mutated (const struct varobj *var, struct value *new_val,
|
||||||
struct type *new_type)
|
struct type *new_type)
|
||||||
{
|
{
|
||||||
|
@ -966,7 +966,7 @@ ada_value_has_mutated (const struct varobj *var, struct value *new_val,
|
||||||
has mutated. */
|
has mutated. */
|
||||||
if (ada_varobj_get_number_of_children (new_val, new_type)
|
if (ada_varobj_get_number_of_children (new_val, new_type)
|
||||||
!= var->num_children)
|
!= var->num_children)
|
||||||
return 1;
|
return true;
|
||||||
|
|
||||||
/* If the number of fields have remained the same, then we need
|
/* If the number of fields have remained the same, then we need
|
||||||
to check the name of each field. If they remain the same,
|
to check the name of each field. If they remain the same,
|
||||||
|
@ -986,9 +986,9 @@ ada_value_has_mutated (const struct varobj *var, struct value *new_val,
|
||||||
if (ada_varobj_get_name_of_child (new_val, new_type,
|
if (ada_varobj_get_name_of_child (new_val, new_type,
|
||||||
var->name.c_str (), i)
|
var->name.c_str (), i)
|
||||||
!= var->children[i]->name)
|
!= var->children[i]->name)
|
||||||
return 1;
|
return true;
|
||||||
|
|
||||||
return 0;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* varobj operations for ada. */
|
/* varobj operations for ada. */
|
||||||
|
|
|
@ -34,7 +34,7 @@ static void cplus_class_num_children (struct type *type, int children[3]);
|
||||||
This has already been determined by *_describe_child. The easiest
|
This has already been determined by *_describe_child. The easiest
|
||||||
thing to do is to compare the child's name with ANONYMOUS_*_NAME. */
|
thing to do is to compare the child's name with ANONYMOUS_*_NAME. */
|
||||||
|
|
||||||
int
|
bool
|
||||||
varobj_is_anonymous_child (const struct varobj *child)
|
varobj_is_anonymous_child (const struct varobj *child)
|
||||||
{
|
{
|
||||||
return (child->name == ANONYMOUS_STRUCT_NAME
|
return (child->name == ANONYMOUS_STRUCT_NAME
|
||||||
|
@ -131,14 +131,14 @@ adjust_value_for_child_access (struct value **value,
|
||||||
/* Is VAR a path expression parent, i.e., can it be used to construct
|
/* Is VAR a path expression parent, i.e., can it be used to construct
|
||||||
a valid path expression? */
|
a valid path expression? */
|
||||||
|
|
||||||
static int
|
static bool
|
||||||
c_is_path_expr_parent (const struct varobj *var)
|
c_is_path_expr_parent (const struct varobj *var)
|
||||||
{
|
{
|
||||||
struct type *type;
|
struct type *type;
|
||||||
|
|
||||||
/* "Fake" children are not path_expr parents. */
|
/* "Fake" children are not path_expr parents. */
|
||||||
if (CPLUS_FAKE_CHILD (var))
|
if (CPLUS_FAKE_CHILD (var))
|
||||||
return 0;
|
return false;
|
||||||
|
|
||||||
type = varobj_get_gdb_type (var);
|
type = varobj_get_gdb_type (var);
|
||||||
|
|
||||||
|
@ -172,10 +172,10 @@ c_is_path_expr_parent (const struct varobj *var)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
return 1;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* C */
|
/* C */
|
||||||
|
|
|
@ -36,7 +36,7 @@ extern unsigned int varobjdebug; /* defined in varobj.c. */
|
||||||
|
|
||||||
static void varobj_update_one (struct varobj *var,
|
static void varobj_update_one (struct varobj *var,
|
||||||
enum print_values print_values,
|
enum print_values print_values,
|
||||||
int is_explicit);
|
bool is_explicit);
|
||||||
|
|
||||||
static int mi_print_value_p (struct varobj *var,
|
static int mi_print_value_p (struct varobj *var,
|
||||||
enum print_values print_values);
|
enum print_values print_values);
|
||||||
|
@ -260,7 +260,7 @@ void
|
||||||
mi_cmd_var_set_frozen (const char *command, char **argv, int argc)
|
mi_cmd_var_set_frozen (const char *command, char **argv, int argc)
|
||||||
{
|
{
|
||||||
struct varobj *var;
|
struct varobj *var;
|
||||||
int frozen;
|
bool frozen;
|
||||||
|
|
||||||
if (argc != 2)
|
if (argc != 2)
|
||||||
error (_("-var-set-format: Usage: NAME FROZEN_FLAG."));
|
error (_("-var-set-format: Usage: NAME FROZEN_FLAG."));
|
||||||
|
@ -268,9 +268,9 @@ mi_cmd_var_set_frozen (const char *command, char **argv, int argc)
|
||||||
var = varobj_get_handle (argv[0]);
|
var = varobj_get_handle (argv[0]);
|
||||||
|
|
||||||
if (strcmp (argv[1], "0") == 0)
|
if (strcmp (argv[1], "0") == 0)
|
||||||
frozen = 0;
|
frozen = false;
|
||||||
else if (strcmp (argv[1], "1") == 0)
|
else if (strcmp (argv[1], "1") == 0)
|
||||||
frozen = 1;
|
frozen = true;
|
||||||
else
|
else
|
||||||
error (_("Invalid flag value"));
|
error (_("Invalid flag value"));
|
||||||
|
|
||||||
|
@ -620,7 +620,7 @@ mi_cmd_var_update_iter (struct varobj *var, void *data_pointer)
|
||||||
|
|
||||||
if (thread_stopped
|
if (thread_stopped
|
||||||
&& (!data->only_floating || varobj_floating_p (var)))
|
&& (!data->only_floating || varobj_floating_p (var)))
|
||||||
varobj_update_one (var, data->print_values, 0 /* implicit */);
|
varobj_update_one (var, data->print_values, false /* implicit */);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
@ -674,7 +674,7 @@ mi_cmd_var_update (const char *command, char **argv, int argc)
|
||||||
/* Get varobj handle, if a valid var obj name was specified. */
|
/* Get varobj handle, if a valid var obj name was specified. */
|
||||||
struct varobj *var = varobj_get_handle (name);
|
struct varobj *var = varobj_get_handle (name);
|
||||||
|
|
||||||
varobj_update_one (var, print_values, 1 /* explicit */);
|
varobj_update_one (var, print_values, true /* explicit */);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -682,7 +682,7 @@ mi_cmd_var_update (const char *command, char **argv, int argc)
|
||||||
|
|
||||||
static void
|
static void
|
||||||
varobj_update_one (struct varobj *var, enum print_values print_values,
|
varobj_update_one (struct varobj *var, enum print_values print_values,
|
||||||
int is_explicit)
|
bool is_explicit)
|
||||||
{
|
{
|
||||||
struct ui_out *uiout = current_uiout;
|
struct ui_out *uiout = current_uiout;
|
||||||
|
|
||||||
|
|
288
gdb/varobj.c
288
gdb/varobj.c
|
@ -54,12 +54,12 @@ const char *varobj_format_string[] =
|
||||||
{ "natural", "binary", "decimal", "hexadecimal", "octal", "zero-hexadecimal" };
|
{ "natural", "binary", "decimal", "hexadecimal", "octal", "zero-hexadecimal" };
|
||||||
|
|
||||||
/* True if we want to allow Python-based pretty-printing. */
|
/* True if we want to allow Python-based pretty-printing. */
|
||||||
static int pretty_printing = 0;
|
static bool pretty_printing = false;
|
||||||
|
|
||||||
void
|
void
|
||||||
varobj_enable_pretty_printing (void)
|
varobj_enable_pretty_printing (void)
|
||||||
{
|
{
|
||||||
pretty_printing = 1;
|
pretty_printing = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Data structures */
|
/* Data structures */
|
||||||
|
@ -85,14 +85,14 @@ struct varobj_root
|
||||||
was created. */
|
was created. */
|
||||||
int thread_id = 0;
|
int thread_id = 0;
|
||||||
|
|
||||||
/* If 1, the -var-update always recomputes the value in the
|
/* If true, the -var-update always recomputes the value in the
|
||||||
current thread and frame. Otherwise, variable object is
|
current thread and frame. Otherwise, variable object is
|
||||||
always updated in the specific scope/thread/frame. */
|
always updated in the specific scope/thread/frame. */
|
||||||
int floating = 0;
|
bool floating = false;
|
||||||
|
|
||||||
/* Flag that indicates validity: set to 0 when this varobj_root refers
|
/* Flag that indicates validity: set to false when this varobj_root refers
|
||||||
to symbols that do not exist anymore. */
|
to symbols that do not exist anymore. */
|
||||||
int is_valid = 1;
|
bool is_valid = true;
|
||||||
|
|
||||||
/* Language-related operations for this variable and its
|
/* Language-related operations for this variable and its
|
||||||
children. */
|
children. */
|
||||||
|
@ -113,7 +113,7 @@ struct varobj_dynamic
|
||||||
used to decide if dynamic varobj should recompute their children.
|
used to decide if dynamic varobj should recompute their children.
|
||||||
In the event that the frontend never asked for the children, we
|
In the event that the frontend never asked for the children, we
|
||||||
can avoid that. */
|
can avoid that. */
|
||||||
int children_requested = 0;
|
bool children_requested_ = false;
|
||||||
|
|
||||||
/* The pretty-printer constructor. If NULL, then the default
|
/* The pretty-printer constructor. If NULL, then the default
|
||||||
pretty-printer will be looked up. If None, then no
|
pretty-printer will be looked up. If None, then no
|
||||||
|
@ -148,11 +148,11 @@ struct vlist
|
||||||
|
|
||||||
/* Helper functions for the above subcommands. */
|
/* Helper functions for the above subcommands. */
|
||||||
|
|
||||||
static int delete_variable (struct varobj *, int);
|
static int delete_variable (struct varobj *, bool);
|
||||||
|
|
||||||
static void delete_variable_1 (int *, struct varobj *, int, int);
|
static void delete_variable_1 (int *, struct varobj *, bool, bool);
|
||||||
|
|
||||||
static int install_variable (struct varobj *);
|
static bool install_variable (struct varobj *);
|
||||||
|
|
||||||
static void uninstall_variable (struct varobj *);
|
static void uninstall_variable (struct varobj *);
|
||||||
|
|
||||||
|
@ -166,11 +166,11 @@ create_child_with_value (struct varobj *parent, int index,
|
||||||
|
|
||||||
static enum varobj_display_formats variable_default_display (struct varobj *);
|
static enum varobj_display_formats variable_default_display (struct varobj *);
|
||||||
|
|
||||||
static int update_type_if_necessary (struct varobj *var,
|
static bool update_type_if_necessary (struct varobj *var,
|
||||||
struct value *new_value);
|
struct value *new_value);
|
||||||
|
|
||||||
static int install_new_value (struct varobj *var, struct value *value,
|
static bool install_new_value (struct varobj *var, struct value *value,
|
||||||
int initial);
|
bool initial);
|
||||||
|
|
||||||
/* Language-specific routines. */
|
/* Language-specific routines. */
|
||||||
|
|
||||||
|
@ -180,14 +180,14 @@ static std::string name_of_variable (const struct varobj *);
|
||||||
|
|
||||||
static std::string name_of_child (struct varobj *, int);
|
static std::string name_of_child (struct varobj *, int);
|
||||||
|
|
||||||
static struct value *value_of_root (struct varobj **var_handle, int *);
|
static struct value *value_of_root (struct varobj **var_handle, bool *);
|
||||||
|
|
||||||
static struct value *value_of_child (const struct varobj *parent, int index);
|
static struct value *value_of_child (const struct varobj *parent, int index);
|
||||||
|
|
||||||
static std::string my_value_of_variable (struct varobj *var,
|
static std::string my_value_of_variable (struct varobj *var,
|
||||||
enum varobj_display_formats format);
|
enum varobj_display_formats format);
|
||||||
|
|
||||||
static int is_root_p (const struct varobj *var);
|
static bool is_root_p (const struct varobj *var);
|
||||||
|
|
||||||
static struct varobj *varobj_add_child (struct varobj *var,
|
static struct varobj *varobj_add_child (struct varobj *var,
|
||||||
struct varobj_item *item);
|
struct varobj_item *item);
|
||||||
|
@ -210,7 +210,7 @@ static struct vlist **varobj_table;
|
||||||
|
|
||||||
|
|
||||||
/* API Implementation */
|
/* API Implementation */
|
||||||
static int
|
static bool
|
||||||
is_root_p (const struct varobj *var)
|
is_root_p (const struct varobj *var)
|
||||||
{
|
{
|
||||||
return (var->root->rootvar == var);
|
return (var->root->rootvar == var);
|
||||||
|
@ -299,7 +299,7 @@ varobj_create (const char *objname,
|
||||||
|
|
||||||
/* frame = -2 means always use selected frame. */
|
/* frame = -2 means always use selected frame. */
|
||||||
if (type == USE_SELECTED_FRAME)
|
if (type == USE_SELECTED_FRAME)
|
||||||
var->root->floating = 1;
|
var->root->floating = true;
|
||||||
|
|
||||||
pc = 0;
|
pc = 0;
|
||||||
block = NULL;
|
block = NULL;
|
||||||
|
@ -472,7 +472,7 @@ varobj_get_expression (const struct varobj *var)
|
||||||
/* See varobj.h. */
|
/* See varobj.h. */
|
||||||
|
|
||||||
int
|
int
|
||||||
varobj_delete (struct varobj *var, int only_children)
|
varobj_delete (struct varobj *var, bool only_children)
|
||||||
{
|
{
|
||||||
return delete_variable (var, only_children);
|
return delete_variable (var, only_children);
|
||||||
}
|
}
|
||||||
|
@ -555,11 +555,11 @@ varobj_get_display_hint (const struct varobj *var)
|
||||||
|
|
||||||
/* Return true if the varobj has items after TO, false otherwise. */
|
/* Return true if the varobj has items after TO, false otherwise. */
|
||||||
|
|
||||||
int
|
bool
|
||||||
varobj_has_more (const struct varobj *var, int to)
|
varobj_has_more (const struct varobj *var, int to)
|
||||||
{
|
{
|
||||||
if (var->children.size () > to)
|
if (var->children.size () > to)
|
||||||
return 1;
|
return true;
|
||||||
|
|
||||||
return ((to == -1 || var->children.size () == to)
|
return ((to == -1 || var->children.size () == to)
|
||||||
&& (var->dynamic->saved_item != NULL));
|
&& (var->dynamic->saved_item != NULL));
|
||||||
|
@ -579,7 +579,7 @@ varobj_get_thread_id (const struct varobj *var)
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
varobj_set_frozen (struct varobj *var, int frozen)
|
varobj_set_frozen (struct varobj *var, bool frozen)
|
||||||
{
|
{
|
||||||
/* When a variable is unfrozen, we don't fetch its value.
|
/* When a variable is unfrozen, we don't fetch its value.
|
||||||
The 'not_fetched' flag remains set, so next -var-update
|
The 'not_fetched' flag remains set, so next -var-update
|
||||||
|
@ -591,7 +591,7 @@ varobj_set_frozen (struct varobj *var, int frozen)
|
||||||
var->frozen = frozen;
|
var->frozen = frozen;
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
bool
|
||||||
varobj_get_frozen (const struct varobj *var)
|
varobj_get_frozen (const struct varobj *var)
|
||||||
{
|
{
|
||||||
return var->frozen;
|
return var->frozen;
|
||||||
|
@ -633,7 +633,7 @@ install_dynamic_child (struct varobj *var,
|
||||||
std::vector<varobj *> *type_changed,
|
std::vector<varobj *> *type_changed,
|
||||||
std::vector<varobj *> *newobj,
|
std::vector<varobj *> *newobj,
|
||||||
std::vector<varobj *> *unchanged,
|
std::vector<varobj *> *unchanged,
|
||||||
int *cchanged,
|
bool *cchanged,
|
||||||
int index,
|
int index,
|
||||||
struct varobj_item *item)
|
struct varobj_item *item)
|
||||||
{
|
{
|
||||||
|
@ -645,13 +645,13 @@ install_dynamic_child (struct varobj *var,
|
||||||
if (newobj != NULL)
|
if (newobj != NULL)
|
||||||
{
|
{
|
||||||
newobj->push_back (child);
|
newobj->push_back (child);
|
||||||
*cchanged = 1;
|
*cchanged = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
varobj *existing = var->children[index];
|
varobj *existing = var->children[index];
|
||||||
int type_updated = update_type_if_necessary (existing, item->value);
|
bool type_updated = update_type_if_necessary (existing, item->value);
|
||||||
|
|
||||||
if (type_updated)
|
if (type_updated)
|
||||||
{
|
{
|
||||||
|
@ -670,13 +670,13 @@ install_dynamic_child (struct varobj *var,
|
||||||
|
|
||||||
#if HAVE_PYTHON
|
#if HAVE_PYTHON
|
||||||
|
|
||||||
static int
|
static bool
|
||||||
dynamic_varobj_has_child_method (const struct varobj *var)
|
dynamic_varobj_has_child_method (const struct varobj *var)
|
||||||
{
|
{
|
||||||
PyObject *printer = var->dynamic->pretty_printer;
|
PyObject *printer = var->dynamic->pretty_printer;
|
||||||
|
|
||||||
if (!gdb_python_initialized)
|
if (!gdb_python_initialized)
|
||||||
return 0;
|
return false;
|
||||||
|
|
||||||
gdbpy_enter_varobj enter_py (var);
|
gdbpy_enter_varobj enter_py (var);
|
||||||
return PyObject_HasAttr (printer, gdbpy_children_cst);
|
return PyObject_HasAttr (printer, gdbpy_children_cst);
|
||||||
|
@ -711,20 +711,20 @@ varobj_clear_saved_item (struct varobj_dynamic *var)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static bool
|
||||||
update_dynamic_varobj_children (struct varobj *var,
|
update_dynamic_varobj_children (struct varobj *var,
|
||||||
std::vector<varobj *> *changed,
|
std::vector<varobj *> *changed,
|
||||||
std::vector<varobj *> *type_changed,
|
std::vector<varobj *> *type_changed,
|
||||||
std::vector<varobj *> *newobj,
|
std::vector<varobj *> *newobj,
|
||||||
std::vector<varobj *> *unchanged,
|
std::vector<varobj *> *unchanged,
|
||||||
int *cchanged,
|
bool *cchanged,
|
||||||
int update_children,
|
bool update_children,
|
||||||
int from,
|
int from,
|
||||||
int to)
|
int to)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
*cchanged = 0;
|
*cchanged = false;
|
||||||
|
|
||||||
if (update_children || var->dynamic->child_iter == NULL)
|
if (update_children || var->dynamic->child_iter == NULL)
|
||||||
{
|
{
|
||||||
|
@ -736,7 +736,7 @@ update_dynamic_varobj_children (struct varobj *var,
|
||||||
i = 0;
|
i = 0;
|
||||||
|
|
||||||
if (var->dynamic->child_iter == NULL)
|
if (var->dynamic->child_iter == NULL)
|
||||||
return 0;
|
return false;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
i = var->children.size ();
|
i = var->children.size ();
|
||||||
|
@ -772,7 +772,7 @@ update_dynamic_varobj_children (struct varobj *var,
|
||||||
/* We don't want to push the extra child on any report list. */
|
/* We don't want to push the extra child on any report list. */
|
||||||
if (to < 0 || i < to)
|
if (to < 0 || i < to)
|
||||||
{
|
{
|
||||||
int can_mention = from < 0 || i >= from;
|
bool can_mention = from < 0 || i >= from;
|
||||||
|
|
||||||
install_dynamic_child (var, can_mention ? changed : NULL,
|
install_dynamic_child (var, can_mention ? changed : NULL,
|
||||||
can_mention ? type_changed : NULL,
|
can_mention ? type_changed : NULL,
|
||||||
|
@ -795,7 +795,7 @@ update_dynamic_varobj_children (struct varobj *var,
|
||||||
|
|
||||||
if (i < var->children.size ())
|
if (i < var->children.size ())
|
||||||
{
|
{
|
||||||
*cchanged = 1;
|
*cchanged = true;
|
||||||
for (int j = i; j < var->children.size (); ++j)
|
for (int j = i; j < var->children.size (); ++j)
|
||||||
varobj_delete (var->children[j], 0);
|
varobj_delete (var->children[j], 0);
|
||||||
|
|
||||||
|
@ -805,11 +805,11 @@ update_dynamic_varobj_children (struct varobj *var,
|
||||||
/* If there are fewer children than requested, note that the list of
|
/* If there are fewer children than requested, note that the list of
|
||||||
children changed. */
|
children changed. */
|
||||||
if (to >= 0 && var->children.size () < to)
|
if (to >= 0 && var->children.size () < to)
|
||||||
*cchanged = 1;
|
*cchanged = true;
|
||||||
|
|
||||||
var->num_children = var->children.size ();
|
var->num_children = var->children.size ();
|
||||||
|
|
||||||
return 1;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
|
@ -819,12 +819,12 @@ varobj_get_num_children (struct varobj *var)
|
||||||
{
|
{
|
||||||
if (varobj_is_dynamic_p (var))
|
if (varobj_is_dynamic_p (var))
|
||||||
{
|
{
|
||||||
int dummy;
|
bool dummy;
|
||||||
|
|
||||||
/* If we have a dynamic varobj, don't report -1 children.
|
/* If we have a dynamic varobj, don't report -1 children.
|
||||||
So, try to fetch some children first. */
|
So, try to fetch some children first. */
|
||||||
update_dynamic_varobj_children (var, NULL, NULL, NULL, NULL, &dummy,
|
update_dynamic_varobj_children (var, NULL, NULL, NULL, NULL, &dummy,
|
||||||
0, 0, 0);
|
false, 0, 0);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
var->num_children = number_of_children (var);
|
var->num_children = number_of_children (var);
|
||||||
|
@ -839,17 +839,17 @@ varobj_get_num_children (struct varobj *var)
|
||||||
const std::vector<varobj *> &
|
const std::vector<varobj *> &
|
||||||
varobj_list_children (struct varobj *var, int *from, int *to)
|
varobj_list_children (struct varobj *var, int *from, int *to)
|
||||||
{
|
{
|
||||||
int children_changed;
|
var->dynamic->children_requested_ = true;
|
||||||
|
|
||||||
var->dynamic->children_requested = 1;
|
|
||||||
|
|
||||||
if (varobj_is_dynamic_p (var))
|
if (varobj_is_dynamic_p (var))
|
||||||
{
|
{
|
||||||
|
bool children_changed;
|
||||||
|
|
||||||
/* This, in theory, can result in the number of children changing without
|
/* This, in theory, can result in the number of children changing without
|
||||||
frontend noticing. But well, calling -var-list-children on the same
|
frontend noticing. But well, calling -var-list-children on the same
|
||||||
varobj twice is not something a sane frontend would do. */
|
varobj twice is not something a sane frontend would do. */
|
||||||
update_dynamic_varobj_children (var, NULL, NULL, NULL, NULL,
|
update_dynamic_varobj_children (var, NULL, NULL, NULL, NULL,
|
||||||
&children_changed, 0, 0, *to);
|
&children_changed, false, 0, *to);
|
||||||
varobj_restrict_range (var->children, from, to);
|
varobj_restrict_range (var->children, from, to);
|
||||||
return var->children;
|
return var->children;
|
||||||
}
|
}
|
||||||
|
@ -919,7 +919,7 @@ varobj_get_gdb_type (const struct varobj *var)
|
||||||
/* Is VAR a path expression parent, i.e., can it be used to construct
|
/* Is VAR a path expression parent, i.e., can it be used to construct
|
||||||
a valid path expression? */
|
a valid path expression? */
|
||||||
|
|
||||||
static int
|
static bool
|
||||||
is_path_expr_parent (const struct varobj *var)
|
is_path_expr_parent (const struct varobj *var)
|
||||||
{
|
{
|
||||||
gdb_assert (var->root->lang_ops->is_path_expr_parent != NULL);
|
gdb_assert (var->root->lang_ops->is_path_expr_parent != NULL);
|
||||||
|
@ -930,10 +930,10 @@ is_path_expr_parent (const struct varobj *var)
|
||||||
a valid path expression? By default we assume any VAR can be a path
|
a valid path expression? By default we assume any VAR can be a path
|
||||||
parent. */
|
parent. */
|
||||||
|
|
||||||
int
|
bool
|
||||||
varobj_default_is_path_expr_parent (const struct varobj *var)
|
varobj_default_is_path_expr_parent (const struct varobj *var)
|
||||||
{
|
{
|
||||||
return 1;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Return the path expression parent for VAR. */
|
/* Return the path expression parent for VAR. */
|
||||||
|
@ -989,7 +989,7 @@ varobj_get_attributes (const struct varobj *var)
|
||||||
|
|
||||||
/* Return true if VAR is a dynamic varobj. */
|
/* Return true if VAR is a dynamic varobj. */
|
||||||
|
|
||||||
int
|
bool
|
||||||
varobj_is_dynamic_p (const struct varobj *var)
|
varobj_is_dynamic_p (const struct varobj *var)
|
||||||
{
|
{
|
||||||
return var->dynamic->pretty_printer != NULL;
|
return var->dynamic->pretty_printer != NULL;
|
||||||
|
@ -1012,7 +1012,7 @@ varobj_get_value (struct varobj *var)
|
||||||
value of the given expression. */
|
value of the given expression. */
|
||||||
/* Note: Invokes functions that can call error(). */
|
/* Note: Invokes functions that can call error(). */
|
||||||
|
|
||||||
int
|
bool
|
||||||
varobj_set_value (struct varobj *var, const char *expression)
|
varobj_set_value (struct varobj *var, const char *expression)
|
||||||
{
|
{
|
||||||
struct value *val = NULL; /* Initialize to keep gcc happy. */
|
struct value *val = NULL; /* Initialize to keep gcc happy. */
|
||||||
|
@ -1035,7 +1035,7 @@ varobj_set_value (struct varobj *var, const char *expression)
|
||||||
CATCH (except, RETURN_MASK_ERROR)
|
CATCH (except, RETURN_MASK_ERROR)
|
||||||
{
|
{
|
||||||
/* We cannot proceed without a valid expression. */
|
/* We cannot proceed without a valid expression. */
|
||||||
return 0;
|
return false;
|
||||||
}
|
}
|
||||||
END_CATCH
|
END_CATCH
|
||||||
|
|
||||||
|
@ -1063,7 +1063,7 @@ varobj_set_value (struct varobj *var, const char *expression)
|
||||||
|
|
||||||
CATCH (except, RETURN_MASK_ERROR)
|
CATCH (except, RETURN_MASK_ERROR)
|
||||||
{
|
{
|
||||||
return 0;
|
return false;
|
||||||
}
|
}
|
||||||
END_CATCH
|
END_CATCH
|
||||||
|
|
||||||
|
@ -1073,9 +1073,9 @@ varobj_set_value (struct varobj *var, const char *expression)
|
||||||
variable as changed -- because the first assignment has set the
|
variable as changed -- because the first assignment has set the
|
||||||
'updated' flag. There's no need to optimize that, because return value
|
'updated' flag. There's no need to optimize that, because return value
|
||||||
of -var-update should be considered an approximation. */
|
of -var-update should be considered an approximation. */
|
||||||
var->updated = install_new_value (var, val, 0 /* Compare values. */);
|
var->updated = install_new_value (var, val, false /* Compare values. */);
|
||||||
input_radix = saved_input_radix;
|
input_radix = saved_input_radix;
|
||||||
return 1;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
#if HAVE_PYTHON
|
#if HAVE_PYTHON
|
||||||
|
@ -1199,7 +1199,7 @@ install_new_value_visualizer (struct varobj *var)
|
||||||
VAR will change when a new value NEW_VALUE is assigned and if it is so
|
VAR will change when a new value NEW_VALUE is assigned and if it is so
|
||||||
updates the type of VAR. */
|
updates the type of VAR. */
|
||||||
|
|
||||||
static int
|
static bool
|
||||||
update_type_if_necessary (struct varobj *var, struct value *new_value)
|
update_type_if_necessary (struct varobj *var, struct value *new_value)
|
||||||
{
|
{
|
||||||
if (new_value)
|
if (new_value)
|
||||||
|
@ -1222,34 +1222,34 @@ update_type_if_necessary (struct varobj *var, struct value *new_value)
|
||||||
varobj_delete (var, 1);
|
varobj_delete (var, 1);
|
||||||
var->children.clear ();
|
var->children.clear ();
|
||||||
var->num_children = -1;
|
var->num_children = -1;
|
||||||
return 1;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Assign a new value to a variable object. If INITIAL is non-zero,
|
/* Assign a new value to a variable object. If INITIAL is true,
|
||||||
this is the first assignement after the variable object was just
|
this is the first assignment after the variable object was just
|
||||||
created, or changed type. In that case, just assign the value
|
created, or changed type. In that case, just assign the value
|
||||||
and return 0.
|
and return false.
|
||||||
Otherwise, assign the new value, and return 1 if the value is
|
Otherwise, assign the new value, and return true if the value is
|
||||||
different from the current one, 0 otherwise. The comparison is
|
different from the current one, false otherwise. The comparison is
|
||||||
done on textual representation of value. Therefore, some types
|
done on textual representation of value. Therefore, some types
|
||||||
need not be compared. E.g. for structures the reported value is
|
need not be compared. E.g. for structures the reported value is
|
||||||
always "{...}", so no comparison is necessary here. If the old
|
always "{...}", so no comparison is necessary here. If the old
|
||||||
value was NULL and new one is not, or vice versa, we always return 1.
|
value was NULL and new one is not, or vice versa, we always return true.
|
||||||
|
|
||||||
The VALUE parameter should not be released -- the function will
|
The VALUE parameter should not be released -- the function will
|
||||||
take care of releasing it when needed. */
|
take care of releasing it when needed. */
|
||||||
static int
|
static bool
|
||||||
install_new_value (struct varobj *var, struct value *value, int initial)
|
install_new_value (struct varobj *var, struct value *value, bool initial)
|
||||||
{
|
{
|
||||||
int changeable;
|
bool changeable;
|
||||||
int need_to_fetch;
|
bool need_to_fetch;
|
||||||
int changed = 0;
|
bool changed = false;
|
||||||
int intentionally_not_fetched = 0;
|
bool intentionally_not_fetched = false;
|
||||||
|
|
||||||
/* We need to know the varobj's type to decide if the value should
|
/* We need to know the varobj's type to decide if the value should
|
||||||
be fetched or not. C++ fake children (public/protected/private)
|
be fetched or not. C++ fake children (public/protected/private)
|
||||||
|
@ -1261,7 +1261,7 @@ install_new_value (struct varobj *var, struct value *value, int initial)
|
||||||
changeable. FIXME: need to make sure this behaviour will not
|
changeable. FIXME: need to make sure this behaviour will not
|
||||||
mess up read-sensitive values. */
|
mess up read-sensitive values. */
|
||||||
if (var->dynamic->pretty_printer != NULL)
|
if (var->dynamic->pretty_printer != NULL)
|
||||||
changeable = 1;
|
changeable = true;
|
||||||
|
|
||||||
need_to_fetch = changeable;
|
need_to_fetch = changeable;
|
||||||
|
|
||||||
|
@ -1281,7 +1281,7 @@ install_new_value (struct varobj *var, struct value *value, int initial)
|
||||||
the data from memory. For unions, that means we'll read the
|
the data from memory. For unions, that means we'll read the
|
||||||
same memory more than once, which is not desirable. So
|
same memory more than once, which is not desirable. So
|
||||||
fetch now. */
|
fetch now. */
|
||||||
need_to_fetch = 1;
|
need_to_fetch = true;
|
||||||
|
|
||||||
/* The new value might be lazy. If the type is changeable,
|
/* The new value might be lazy. If the type is changeable,
|
||||||
that is we'll be comparing values of this type, fetch the
|
that is we'll be comparing values of this type, fetch the
|
||||||
|
@ -1290,7 +1290,7 @@ install_new_value (struct varobj *var, struct value *value, int initial)
|
||||||
if (need_to_fetch && value && value_lazy (value))
|
if (need_to_fetch && value && value_lazy (value))
|
||||||
{
|
{
|
||||||
const struct varobj *parent = var->parent;
|
const struct varobj *parent = var->parent;
|
||||||
int frozen = var->frozen;
|
bool frozen = var->frozen;
|
||||||
|
|
||||||
for (; !frozen && parent; parent = parent->parent)
|
for (; !frozen && parent; parent = parent->parent)
|
||||||
frozen |= parent->frozen;
|
frozen |= parent->frozen;
|
||||||
|
@ -1301,7 +1301,7 @@ install_new_value (struct varobj *var, struct value *value, int initial)
|
||||||
variables, we don't do fetch on initial assignment.
|
variables, we don't do fetch on initial assignment.
|
||||||
For non-initial assignemnt we do the fetch, since it means we're
|
For non-initial assignemnt we do the fetch, since it means we're
|
||||||
explicitly asked to compare the new value with the old one. */
|
explicitly asked to compare the new value with the old one. */
|
||||||
intentionally_not_fetched = 1;
|
intentionally_not_fetched = true;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -1347,9 +1347,7 @@ install_new_value (struct varobj *var, struct value *value, int initial)
|
||||||
varobj had after the previous -var-update. So need to the
|
varobj had after the previous -var-update. So need to the
|
||||||
varobj as changed. */
|
varobj as changed. */
|
||||||
if (var->updated)
|
if (var->updated)
|
||||||
{
|
changed = true;
|
||||||
changed = 1;
|
|
||||||
}
|
|
||||||
else if (var->dynamic->pretty_printer == NULL)
|
else if (var->dynamic->pretty_printer == NULL)
|
||||||
{
|
{
|
||||||
/* Try to compare the values. That requires that both
|
/* Try to compare the values. That requires that both
|
||||||
|
@ -1361,14 +1359,14 @@ install_new_value (struct varobj *var, struct value *value, int initial)
|
||||||
Now that we've fetched the real value, we need to report
|
Now that we've fetched the real value, we need to report
|
||||||
this varobj as changed so that UI can show the real
|
this varobj as changed so that UI can show the real
|
||||||
value. */
|
value. */
|
||||||
changed = 1;
|
changed = true;
|
||||||
}
|
}
|
||||||
else if (var->value == NULL && value == NULL)
|
else if (var->value == NULL && value == NULL)
|
||||||
/* Equal. */
|
/* Equal. */
|
||||||
;
|
;
|
||||||
else if (var->value == NULL || value == NULL)
|
else if (var->value == NULL || value == NULL)
|
||||||
{
|
{
|
||||||
changed = 1;
|
changed = true;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -1377,7 +1375,7 @@ install_new_value (struct varobj *var, struct value *value, int initial)
|
||||||
|
|
||||||
gdb_assert (!var->print_value.empty () && !print_value.empty ());
|
gdb_assert (!var->print_value.empty () && !print_value.empty ());
|
||||||
if (var->print_value != print_value)
|
if (var->print_value != print_value)
|
||||||
changed = 1;
|
changed = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1396,10 +1394,10 @@ install_new_value (struct varobj *var, struct value *value, int initial)
|
||||||
value_free (var->value);
|
value_free (var->value);
|
||||||
var->value = value;
|
var->value = value;
|
||||||
if (value && value_lazy (value) && intentionally_not_fetched)
|
if (value && value_lazy (value) && intentionally_not_fetched)
|
||||||
var->not_fetched = 1;
|
var->not_fetched = true;
|
||||||
else
|
else
|
||||||
var->not_fetched = 0;
|
var->not_fetched = false;
|
||||||
var->updated = 0;
|
var->updated = false;
|
||||||
|
|
||||||
install_new_value_visualizer (var);
|
install_new_value_visualizer (var);
|
||||||
|
|
||||||
|
@ -1413,7 +1411,7 @@ install_new_value (struct varobj *var, struct value *value, int initial)
|
||||||
|| (!var->print_value.empty () && print_value.empty ())
|
|| (!var->print_value.empty () && print_value.empty ())
|
||||||
|| (!var->print_value.empty () && !print_value.empty ()
|
|| (!var->print_value.empty () && !print_value.empty ()
|
||||||
&& var->print_value != print_value))
|
&& var->print_value != print_value))
|
||||||
changed = 1;
|
changed = true;
|
||||||
}
|
}
|
||||||
var->print_value = print_value;
|
var->print_value = print_value;
|
||||||
|
|
||||||
|
@ -1478,13 +1476,13 @@ varobj_set_visualizer (struct varobj *var, const char *visualizer)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* If NEW_VALUE is the new value of the given varobj (var), return
|
/* If NEW_VALUE is the new value of the given varobj (var), return
|
||||||
non-zero if var has mutated. In other words, if the type of
|
true if var has mutated. In other words, if the type of
|
||||||
the new value is different from the type of the varobj's old
|
the new value is different from the type of the varobj's old
|
||||||
value.
|
value.
|
||||||
|
|
||||||
NEW_VALUE may be NULL, if the varobj is now out of scope. */
|
NEW_VALUE may be NULL, if the varobj is now out of scope. */
|
||||||
|
|
||||||
static int
|
static bool
|
||||||
varobj_value_has_mutated (const struct varobj *var, struct value *new_value,
|
varobj_value_has_mutated (const struct varobj *var, struct value *new_value,
|
||||||
struct type *new_type)
|
struct type *new_type)
|
||||||
{
|
{
|
||||||
|
@ -1493,9 +1491,9 @@ varobj_value_has_mutated (const struct varobj *var, struct value *new_value,
|
||||||
the type has mutated or not. For all intents and purposes,
|
the type has mutated or not. For all intents and purposes,
|
||||||
it has not mutated. */
|
it has not mutated. */
|
||||||
if (var->num_children < 0)
|
if (var->num_children < 0)
|
||||||
return 0;
|
return false;
|
||||||
|
|
||||||
if (var->root->lang_ops->value_has_mutated)
|
if (var->root->lang_ops->value_has_mutated != NULL)
|
||||||
{
|
{
|
||||||
/* The varobj module, when installing new values, explicitly strips
|
/* The varobj module, when installing new values, explicitly strips
|
||||||
references, saying that we're not interested in those addresses.
|
references, saying that we're not interested in those addresses.
|
||||||
|
@ -1507,7 +1505,7 @@ varobj_value_has_mutated (const struct varobj *var, struct value *new_value,
|
||||||
return var->root->lang_ops->value_has_mutated (var, new_value, new_type);
|
return var->root->lang_ops->value_has_mutated (var, new_value, new_type);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
return 0;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Update the values for a variable and its children. This is a
|
/* Update the values for a variable and its children. This is a
|
||||||
|
@ -1516,7 +1514,7 @@ varobj_value_has_mutated (const struct varobj *var, struct value *new_value,
|
||||||
through its children, reconstructing them and noting if they've
|
through its children, reconstructing them and noting if they've
|
||||||
changed.
|
changed.
|
||||||
|
|
||||||
The EXPLICIT parameter specifies if this call is result
|
The IS_EXPLICIT parameter specifies if this call is result
|
||||||
of MI request to update this specific variable, or
|
of MI request to update this specific variable, or
|
||||||
result of implicit -var-update *. For implicit request, we don't
|
result of implicit -var-update *. For implicit request, we don't
|
||||||
update frozen variables.
|
update frozen variables.
|
||||||
|
@ -1526,9 +1524,9 @@ varobj_value_has_mutated (const struct varobj *var, struct value *new_value,
|
||||||
to point to the new varobj. */
|
to point to the new varobj. */
|
||||||
|
|
||||||
std::vector<varobj_update_result>
|
std::vector<varobj_update_result>
|
||||||
varobj_update (struct varobj **varp, int is_explicit)
|
varobj_update (struct varobj **varp, bool is_explicit)
|
||||||
{
|
{
|
||||||
int type_changed = 0;
|
bool type_changed = false;
|
||||||
struct value *newobj;
|
struct value *newobj;
|
||||||
std::vector<varobj_update_result> stack;
|
std::vector<varobj_update_result> stack;
|
||||||
std::vector<varobj_update_result> result;
|
std::vector<varobj_update_result> result;
|
||||||
|
@ -1557,16 +1555,16 @@ varobj_update (struct varobj **varp, int is_explicit)
|
||||||
value_of_root variable dispose of the varobj if the type
|
value_of_root variable dispose of the varobj if the type
|
||||||
has changed. */
|
has changed. */
|
||||||
newobj = value_of_root (varp, &type_changed);
|
newobj = value_of_root (varp, &type_changed);
|
||||||
if (update_type_if_necessary(*varp, newobj))
|
if (update_type_if_necessary (*varp, newobj))
|
||||||
type_changed = 1;
|
type_changed = true;
|
||||||
r.varobj = *varp;
|
r.varobj = *varp;
|
||||||
r.type_changed = type_changed;
|
r.type_changed = type_changed;
|
||||||
if (install_new_value ((*varp), newobj, type_changed))
|
if (install_new_value ((*varp), newobj, type_changed))
|
||||||
r.changed = 1;
|
r.changed = true;
|
||||||
|
|
||||||
if (newobj == NULL)
|
if (newobj == NULL)
|
||||||
r.status = VAROBJ_NOT_IN_SCOPE;
|
r.status = VAROBJ_NOT_IN_SCOPE;
|
||||||
r.value_installed = 1;
|
r.value_installed = true;
|
||||||
|
|
||||||
if (r.status == VAROBJ_NOT_IN_SCOPE)
|
if (r.status == VAROBJ_NOT_IN_SCOPE)
|
||||||
{
|
{
|
||||||
|
@ -1595,8 +1593,8 @@ varobj_update (struct varobj **varp, int is_explicit)
|
||||||
struct type *new_type;
|
struct type *new_type;
|
||||||
|
|
||||||
newobj = value_of_child (v->parent, v->index);
|
newobj = value_of_child (v->parent, v->index);
|
||||||
if (update_type_if_necessary(v, newobj))
|
if (update_type_if_necessary (v, newobj))
|
||||||
r.type_changed = 1;
|
r.type_changed = true;
|
||||||
if (newobj)
|
if (newobj)
|
||||||
new_type = value_type (newobj);
|
new_type = value_type (newobj);
|
||||||
else
|
else
|
||||||
|
@ -1611,13 +1609,13 @@ varobj_update (struct varobj **varp, int is_explicit)
|
||||||
v->to = -1;
|
v->to = -1;
|
||||||
v->from = -1;
|
v->from = -1;
|
||||||
v->type = new_type;
|
v->type = new_type;
|
||||||
r.type_changed = 1;
|
r.type_changed = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (install_new_value (v, newobj, r.type_changed))
|
if (install_new_value (v, newobj, r.type_changed))
|
||||||
{
|
{
|
||||||
r.changed = 1;
|
r.changed = true;
|
||||||
v->updated = 0;
|
v->updated = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1626,14 +1624,14 @@ varobj_update (struct varobj **varp, int is_explicit)
|
||||||
if (varobj_is_dynamic_p (v))
|
if (varobj_is_dynamic_p (v))
|
||||||
{
|
{
|
||||||
std::vector<varobj *> changed, type_changed, unchanged, newobj;
|
std::vector<varobj *> changed, type_changed, unchanged, newobj;
|
||||||
int children_changed = 0;
|
bool children_changed = false;
|
||||||
|
|
||||||
if (v->frozen)
|
if (v->frozen)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if (!v->dynamic->children_requested)
|
if (!v->dynamic->children_requested_)
|
||||||
{
|
{
|
||||||
int dummy;
|
bool dummy;
|
||||||
|
|
||||||
/* If we initially did not have potential children, but
|
/* If we initially did not have potential children, but
|
||||||
now we do, consider the varobj as changed.
|
now we do, consider the varobj as changed.
|
||||||
|
@ -1644,9 +1642,9 @@ varobj_update (struct varobj **varp, int is_explicit)
|
||||||
if (!varobj_has_more (v, 0))
|
if (!varobj_has_more (v, 0))
|
||||||
{
|
{
|
||||||
update_dynamic_varobj_children (v, NULL, NULL, NULL, NULL,
|
update_dynamic_varobj_children (v, NULL, NULL, NULL, NULL,
|
||||||
&dummy, 0, 0, 0);
|
&dummy, false, 0, 0);
|
||||||
if (varobj_has_more (v, 0))
|
if (varobj_has_more (v, 0))
|
||||||
r.changed = 1;
|
r.changed = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (r.changed)
|
if (r.changed)
|
||||||
|
@ -1655,15 +1653,15 @@ varobj_update (struct varobj **varp, int is_explicit)
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* If update_dynamic_varobj_children returns 0, then we have
|
/* If update_dynamic_varobj_children returns false, then we have
|
||||||
a non-conforming pretty-printer, so we skip it. */
|
a non-conforming pretty-printer, so we skip it. */
|
||||||
if (update_dynamic_varobj_children (v, &changed, &type_changed, &newobj,
|
if (update_dynamic_varobj_children (v, &changed, &type_changed, &newobj,
|
||||||
&unchanged, &children_changed, 1,
|
&unchanged, &children_changed, true,
|
||||||
v->from, v->to))
|
v->from, v->to))
|
||||||
{
|
{
|
||||||
if (children_changed || !newobj.empty ())
|
if (children_changed || !newobj.empty ())
|
||||||
{
|
{
|
||||||
r.children_changed = 1;
|
r.children_changed = true;
|
||||||
r.newobj = std::move (newobj);
|
r.newobj = std::move (newobj);
|
||||||
}
|
}
|
||||||
/* Push in reverse order so that the first child is
|
/* Push in reverse order so that the first child is
|
||||||
|
@ -1675,9 +1673,9 @@ varobj_update (struct varobj **varp, int is_explicit)
|
||||||
varobj_update_result r (type_changed[i]);
|
varobj_update_result r (type_changed[i]);
|
||||||
|
|
||||||
/* Type may change only if value was changed. */
|
/* Type may change only if value was changed. */
|
||||||
r.changed = 1;
|
r.changed = true;
|
||||||
r.type_changed = 1;
|
r.type_changed = true;
|
||||||
r.value_installed = 1;
|
r.value_installed = true;
|
||||||
|
|
||||||
stack.push_back (std::move (r));
|
stack.push_back (std::move (r));
|
||||||
}
|
}
|
||||||
|
@ -1685,8 +1683,8 @@ varobj_update (struct varobj **varp, int is_explicit)
|
||||||
{
|
{
|
||||||
varobj_update_result r (changed[i]);
|
varobj_update_result r (changed[i]);
|
||||||
|
|
||||||
r.changed = 1;
|
r.changed = true;
|
||||||
r.value_installed = 1;
|
r.value_installed = true;
|
||||||
|
|
||||||
stack.push_back (std::move (r));
|
stack.push_back (std::move (r));
|
||||||
}
|
}
|
||||||
|
@ -1696,7 +1694,7 @@ varobj_update (struct varobj **varp, int is_explicit)
|
||||||
{
|
{
|
||||||
varobj_update_result r (unchanged[i]);
|
varobj_update_result r (unchanged[i]);
|
||||||
|
|
||||||
r.value_installed = 1;
|
r.value_installed = true;
|
||||||
|
|
||||||
stack.push_back (std::move (r));
|
stack.push_back (std::move (r));
|
||||||
}
|
}
|
||||||
|
@ -1735,12 +1733,12 @@ varobj_update (struct varobj **varp, int is_explicit)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
static int
|
static int
|
||||||
delete_variable (struct varobj *var, int only_children_p)
|
delete_variable (struct varobj *var, bool only_children_p)
|
||||||
{
|
{
|
||||||
int delcount = 0;
|
int delcount = 0;
|
||||||
|
|
||||||
delete_variable_1 (&delcount, var, only_children_p,
|
delete_variable_1 (&delcount, var, only_children_p,
|
||||||
1 /* remove_from_parent_p */ );
|
true /* remove_from_parent_p */ );
|
||||||
|
|
||||||
return delcount;
|
return delcount;
|
||||||
}
|
}
|
||||||
|
@ -1750,8 +1748,8 @@ delete_variable (struct varobj *var, int only_children_p)
|
||||||
and the parent is not removed we dump core. It must be always
|
and the parent is not removed we dump core. It must be always
|
||||||
initially called with remove_from_parent_p set. */
|
initially called with remove_from_parent_p set. */
|
||||||
static void
|
static void
|
||||||
delete_variable_1 (int *delcountp, struct varobj *var, int only_children_p,
|
delete_variable_1 (int *delcountp, struct varobj *var, bool only_children_p,
|
||||||
int remove_from_parent_p)
|
bool remove_from_parent_p)
|
||||||
{
|
{
|
||||||
/* Delete any children of this variable, too. */
|
/* Delete any children of this variable, too. */
|
||||||
for (varobj *child : var->children)
|
for (varobj *child : var->children)
|
||||||
|
@ -1762,7 +1760,7 @@ delete_variable_1 (int *delcountp, struct varobj *var, int only_children_p,
|
||||||
if (!remove_from_parent_p)
|
if (!remove_from_parent_p)
|
||||||
child->parent = NULL;
|
child->parent = NULL;
|
||||||
|
|
||||||
delete_variable_1 (delcountp, child, 0, only_children_p);
|
delete_variable_1 (delcountp, child, false, only_children_p);
|
||||||
}
|
}
|
||||||
var->children.clear ();
|
var->children.clear ();
|
||||||
|
|
||||||
|
@ -1794,7 +1792,7 @@ delete_variable_1 (int *delcountp, struct varobj *var, int only_children_p,
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Install the given variable VAR with the object name VAR->OBJ_NAME. */
|
/* Install the given variable VAR with the object name VAR->OBJ_NAME. */
|
||||||
static int
|
static bool
|
||||||
install_variable (struct varobj *var)
|
install_variable (struct varobj *var)
|
||||||
{
|
{
|
||||||
struct vlist *cv;
|
struct vlist *cv;
|
||||||
|
@ -1832,7 +1830,7 @@ install_variable (struct varobj *var)
|
||||||
rootlist = var->root;
|
rootlist = var->root;
|
||||||
}
|
}
|
||||||
|
|
||||||
return 1; /* OK */
|
return true; /* OK */
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Unistall the object VAR. */
|
/* Unistall the object VAR. */
|
||||||
|
@ -2071,13 +2069,13 @@ name_of_child (struct varobj *var, int index)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* If frame associated with VAR can be found, switch
|
/* If frame associated with VAR can be found, switch
|
||||||
to it and return 1. Otherwise, return 0. */
|
to it and return true. Otherwise, return false. */
|
||||||
|
|
||||||
static int
|
static bool
|
||||||
check_scope (const struct varobj *var)
|
check_scope (const struct varobj *var)
|
||||||
{
|
{
|
||||||
struct frame_info *fi;
|
struct frame_info *fi;
|
||||||
int scope;
|
bool scope;
|
||||||
|
|
||||||
fi = frame_find_by_id (var->root->frame);
|
fi = frame_find_by_id (var->root->frame);
|
||||||
scope = fi != NULL;
|
scope = fi != NULL;
|
||||||
|
@ -2088,7 +2086,7 @@ check_scope (const struct varobj *var)
|
||||||
|
|
||||||
if (pc < BLOCK_START (var->root->valid_block) ||
|
if (pc < BLOCK_START (var->root->valid_block) ||
|
||||||
pc >= BLOCK_END (var->root->valid_block))
|
pc >= BLOCK_END (var->root->valid_block))
|
||||||
scope = 0;
|
scope = false;
|
||||||
else
|
else
|
||||||
select_frame (fi);
|
select_frame (fi);
|
||||||
}
|
}
|
||||||
|
@ -2102,7 +2100,7 @@ value_of_root_1 (struct varobj **var_handle)
|
||||||
{
|
{
|
||||||
struct value *new_val = NULL;
|
struct value *new_val = NULL;
|
||||||
struct varobj *var = *var_handle;
|
struct varobj *var = *var_handle;
|
||||||
int within_scope = 0;
|
bool within_scope = false;
|
||||||
|
|
||||||
/* Only root variables can be updated... */
|
/* Only root variables can be updated... */
|
||||||
if (!is_root_p (var))
|
if (!is_root_p (var))
|
||||||
|
@ -2113,7 +2111,7 @@ value_of_root_1 (struct varobj **var_handle)
|
||||||
|
|
||||||
/* Determine whether the variable is still around. */
|
/* Determine whether the variable is still around. */
|
||||||
if (var->root->valid_block == NULL || var->root->floating)
|
if (var->root->valid_block == NULL || var->root->floating)
|
||||||
within_scope = 1;
|
within_scope = true;
|
||||||
else if (var->root->thread_id == 0)
|
else if (var->root->thread_id == 0)
|
||||||
{
|
{
|
||||||
/* The program was single-threaded when the variable object was
|
/* The program was single-threaded when the variable object was
|
||||||
|
@ -2161,7 +2159,7 @@ value_of_root_1 (struct varobj **var_handle)
|
||||||
- *var_handle will be set to the new varobj
|
- *var_handle will be set to the new varobj
|
||||||
Otherwise, *type_changed will be set to 0. */
|
Otherwise, *type_changed will be set to 0. */
|
||||||
static struct value *
|
static struct value *
|
||||||
value_of_root (struct varobj **var_handle, int *type_changed)
|
value_of_root (struct varobj **var_handle, bool *type_changed)
|
||||||
{
|
{
|
||||||
struct varobj *var;
|
struct varobj *var;
|
||||||
|
|
||||||
|
@ -2211,7 +2209,7 @@ value_of_root (struct varobj **var_handle, int *type_changed)
|
||||||
install_variable (tmp_var);
|
install_variable (tmp_var);
|
||||||
*var_handle = tmp_var;
|
*var_handle = tmp_var;
|
||||||
var = *var_handle;
|
var = *var_handle;
|
||||||
*type_changed = 1;
|
*type_changed = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -2237,7 +2235,7 @@ value_of_root (struct varobj **var_handle, int *type_changed)
|
||||||
var->num_children = -1;
|
var->num_children = -1;
|
||||||
var->to = -1;
|
var->to = -1;
|
||||||
var->from = -1;
|
var->from = -1;
|
||||||
*type_changed = 1;
|
*type_changed = true;
|
||||||
}
|
}
|
||||||
return value;
|
return value;
|
||||||
}
|
}
|
||||||
|
@ -2288,7 +2286,7 @@ varobj_value_get_print_value (struct value *value,
|
||||||
gdb::unique_xmalloc_ptr<char> encoding;
|
gdb::unique_xmalloc_ptr<char> encoding;
|
||||||
/* Initialize it just to avoid a GCC false warning. */
|
/* Initialize it just to avoid a GCC false warning. */
|
||||||
CORE_ADDR str_addr = 0;
|
CORE_ADDR str_addr = 0;
|
||||||
int string_print = 0;
|
bool string_print = false;
|
||||||
|
|
||||||
if (value == NULL)
|
if (value == NULL)
|
||||||
return std::string ();
|
return std::string ();
|
||||||
|
@ -2328,7 +2326,7 @@ varobj_value_get_print_value (struct value *value,
|
||||||
{
|
{
|
||||||
gdbpy_extract_lazy_string (output.get (), &str_addr,
|
gdbpy_extract_lazy_string (output.get (), &str_addr,
|
||||||
&type, &len, &encoding);
|
&type, &len, &encoding);
|
||||||
string_print = 1;
|
string_print = true;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -2350,7 +2348,7 @@ varobj_value_get_print_value (struct value *value,
|
||||||
if (hint)
|
if (hint)
|
||||||
{
|
{
|
||||||
if (!strcmp (hint.get (), "string"))
|
if (!strcmp (hint.get (), "string"))
|
||||||
string_print = 1;
|
string_print = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
thevalue = std::string (s.get ());
|
thevalue = std::string (s.get ());
|
||||||
|
@ -2392,13 +2390,13 @@ varobj_value_get_print_value (struct value *value,
|
||||||
return std::move (stb.string ());
|
return std::move (stb.string ());
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
bool
|
||||||
varobj_editable_p (const struct varobj *var)
|
varobj_editable_p (const struct varobj *var)
|
||||||
{
|
{
|
||||||
struct type *type;
|
struct type *type;
|
||||||
|
|
||||||
if (!(var->root->is_valid && var->value && VALUE_LVAL (var->value)))
|
if (!(var->root->is_valid && var->value && VALUE_LVAL (var->value)))
|
||||||
return 0;
|
return false;
|
||||||
|
|
||||||
type = varobj_get_value_type (var);
|
type = varobj_get_value_type (var);
|
||||||
|
|
||||||
|
@ -2409,27 +2407,27 @@ varobj_editable_p (const struct varobj *var)
|
||||||
case TYPE_CODE_ARRAY:
|
case TYPE_CODE_ARRAY:
|
||||||
case TYPE_CODE_FUNC:
|
case TYPE_CODE_FUNC:
|
||||||
case TYPE_CODE_METHOD:
|
case TYPE_CODE_METHOD:
|
||||||
return 0;
|
return false;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
return 1;
|
return true;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Call VAR's value_is_changeable_p language-specific callback. */
|
/* Call VAR's value_is_changeable_p language-specific callback. */
|
||||||
|
|
||||||
int
|
bool
|
||||||
varobj_value_is_changeable_p (const struct varobj *var)
|
varobj_value_is_changeable_p (const struct varobj *var)
|
||||||
{
|
{
|
||||||
return var->root->lang_ops->value_is_changeable_p (var);
|
return var->root->lang_ops->value_is_changeable_p (var);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Return 1 if that varobj is floating, that is is always evaluated in the
|
/* Return true if that varobj is floating, that is is always evaluated in the
|
||||||
selected frame, and not bound to thread/frame. Such variable objects
|
selected frame, and not bound to thread/frame. Such variable objects
|
||||||
are created using '@' as frame specifier to -var-create. */
|
are created using '@' as frame specifier to -var-create. */
|
||||||
int
|
bool
|
||||||
varobj_floating_p (const struct varobj *var)
|
varobj_floating_p (const struct varobj *var)
|
||||||
{
|
{
|
||||||
return var->root->floating;
|
return var->root->floating;
|
||||||
|
@ -2438,14 +2436,14 @@ varobj_floating_p (const struct varobj *var)
|
||||||
/* Implement the "value_is_changeable_p" varobj callback for most
|
/* Implement the "value_is_changeable_p" varobj callback for most
|
||||||
languages. */
|
languages. */
|
||||||
|
|
||||||
int
|
bool
|
||||||
varobj_default_value_is_changeable_p (const struct varobj *var)
|
varobj_default_value_is_changeable_p (const struct varobj *var)
|
||||||
{
|
{
|
||||||
int r;
|
bool r;
|
||||||
struct type *type;
|
struct type *type;
|
||||||
|
|
||||||
if (CPLUS_FAKE_CHILD (var))
|
if (CPLUS_FAKE_CHILD (var))
|
||||||
return 0;
|
return false;
|
||||||
|
|
||||||
type = varobj_get_value_type (var);
|
type = varobj_get_value_type (var);
|
||||||
|
|
||||||
|
@ -2454,11 +2452,11 @@ varobj_default_value_is_changeable_p (const struct varobj *var)
|
||||||
case TYPE_CODE_STRUCT:
|
case TYPE_CODE_STRUCT:
|
||||||
case TYPE_CODE_UNION:
|
case TYPE_CODE_UNION:
|
||||||
case TYPE_CODE_ARRAY:
|
case TYPE_CODE_ARRAY:
|
||||||
r = 0;
|
r = false;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
r = 1;
|
r = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
return r;
|
return r;
|
||||||
|
@ -2508,10 +2506,10 @@ varobj_invalidate_iter (struct varobj *var, void *unused)
|
||||||
install_variable (tmp_var);
|
install_variable (tmp_var);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
var->root->is_valid = 0;
|
var->root->is_valid = false;
|
||||||
}
|
}
|
||||||
else /* locals must be invalidated. */
|
else /* locals must be invalidated. */
|
||||||
var->root->is_valid = 0;
|
var->root->is_valid = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Invalidate the varobjs that are tied to locals and re-create the ones that
|
/* Invalidate the varobjs that are tied to locals and re-create the ones that
|
||||||
|
|
62
gdb/varobj.h
62
gdb/varobj.h
|
@ -69,14 +69,14 @@ struct varobj_update_result
|
||||||
DISABLE_COPY_AND_ASSIGN (varobj_update_result);
|
DISABLE_COPY_AND_ASSIGN (varobj_update_result);
|
||||||
|
|
||||||
struct varobj *varobj;
|
struct varobj *varobj;
|
||||||
int type_changed = 0;
|
bool type_changed = false;
|
||||||
int children_changed = 0;
|
bool children_changed = false;
|
||||||
int changed = 0;
|
bool changed = false;
|
||||||
enum varobj_scope_status status;
|
enum varobj_scope_status status;
|
||||||
/* This variable is used internally by varobj_update to indicate if the
|
/* This variable is used internally by varobj_update to indicate if the
|
||||||
new value of varobj is already computed and installed, or has to
|
new value of varobj is already computed and installed, or has to
|
||||||
be yet installed. Don't use this outside varobj.c. */
|
be yet installed. Don't use this outside varobj.c. */
|
||||||
int value_installed = 0;
|
bool value_installed = false;
|
||||||
|
|
||||||
/* This will be non-NULL when new children were added to the varobj.
|
/* This will be non-NULL when new children were added to the varobj.
|
||||||
It lists the new children (which must necessarily come at the end
|
It lists the new children (which must necessarily come at the end
|
||||||
|
@ -141,7 +141,7 @@ struct varobj
|
||||||
enum varobj_display_formats format = FORMAT_NATURAL;
|
enum varobj_display_formats format = FORMAT_NATURAL;
|
||||||
|
|
||||||
/* Was this variable updated via a varobj_set_value operation. */
|
/* Was this variable updated via a varobj_set_value operation. */
|
||||||
int updated = 0;
|
bool updated = false;
|
||||||
|
|
||||||
/* Last print value. */
|
/* Last print value. */
|
||||||
std::string print_value;
|
std::string print_value;
|
||||||
|
@ -149,12 +149,12 @@ struct varobj
|
||||||
/* Is this variable frozen. Frozen variables are never implicitly
|
/* Is this variable frozen. Frozen variables are never implicitly
|
||||||
updated by -var-update *
|
updated by -var-update *
|
||||||
or -var-update <direct-or-indirect-parent>. */
|
or -var-update <direct-or-indirect-parent>. */
|
||||||
int frozen = 0;
|
bool frozen = false;
|
||||||
|
|
||||||
/* Is the value of this variable intentionally not fetched? It is
|
/* Is the value of this variable intentionally not fetched? It is
|
||||||
not fetched if either the variable is frozen, or any parents is
|
not fetched if either the variable is frozen, or any parents is
|
||||||
frozen. */
|
frozen. */
|
||||||
int not_fetched = 0;
|
bool not_fetched = false;
|
||||||
|
|
||||||
/* Sub-range of children which the MI consumer has requested. If
|
/* Sub-range of children which the MI consumer has requested. If
|
||||||
FROM < 0 or TO < 0, means that all children have been
|
FROM < 0 or TO < 0, means that all children have been
|
||||||
|
@ -197,17 +197,17 @@ struct lang_varobj_ops
|
||||||
std::string (*value_of_variable) (const struct varobj *var,
|
std::string (*value_of_variable) (const struct varobj *var,
|
||||||
enum varobj_display_formats format);
|
enum varobj_display_formats format);
|
||||||
|
|
||||||
/* Return non-zero if changes in value of VAR must be detected and
|
/* Return true if changes in value of VAR must be detected and
|
||||||
reported by -var-update. Return zero if -var-update should never
|
reported by -var-update. Return false if -var-update should never
|
||||||
report changes of such values. This makes sense for structures
|
report changes of such values. This makes sense for structures
|
||||||
(since the changes in children values will be reported separately),
|
(since the changes in children values will be reported separately),
|
||||||
or for artificial objects (like 'public' pseudo-field in C++).
|
or for artificial objects (like 'public' pseudo-field in C++).
|
||||||
|
|
||||||
Return value of 0 means that gdb need not call value_fetch_lazy
|
Return value of false means that gdb need not call value_fetch_lazy
|
||||||
for the value of this variable object. */
|
for the value of this variable object. */
|
||||||
int (*value_is_changeable_p) (const struct varobj *var);
|
bool (*value_is_changeable_p) (const struct varobj *var);
|
||||||
|
|
||||||
/* Return nonzero if the type of VAR has mutated.
|
/* Return true if the type of VAR has mutated.
|
||||||
|
|
||||||
VAR's value is still the varobj's previous value, while NEW_VALUE
|
VAR's value is still the varobj's previous value, while NEW_VALUE
|
||||||
is VAR's new value and NEW_TYPE is the var's new type. NEW_VALUE
|
is VAR's new value and NEW_TYPE is the var's new type. NEW_VALUE
|
||||||
|
@ -219,14 +219,14 @@ struct lang_varobj_ops
|
||||||
children is set (not < 0).
|
children is set (not < 0).
|
||||||
|
|
||||||
Languages where types do not mutate can set this to NULL. */
|
Languages where types do not mutate can set this to NULL. */
|
||||||
int (*value_has_mutated) (const struct varobj *var, struct value *new_value,
|
bool (*value_has_mutated) (const struct varobj *var, struct value *new_value,
|
||||||
struct type *new_type);
|
struct type *new_type);
|
||||||
|
|
||||||
/* Return nonzero if VAR is a suitable path expression parent.
|
/* Return true if VAR is a suitable path expression parent.
|
||||||
|
|
||||||
For C like languages with anonymous structures and unions an anonymous
|
For C like languages with anonymous structures and unions an anonymous
|
||||||
structure or union is not a suitable parent. */
|
structure or union is not a suitable parent. */
|
||||||
int (*is_path_expr_parent) (const struct varobj *var);
|
bool (*is_path_expr_parent) (const struct varobj *var);
|
||||||
};
|
};
|
||||||
|
|
||||||
extern const struct lang_varobj_ops c_varobj_ops;
|
extern const struct lang_varobj_ops c_varobj_ops;
|
||||||
|
@ -248,10 +248,10 @@ extern const char *varobj_get_objname (const struct varobj *var);
|
||||||
|
|
||||||
extern std::string varobj_get_expression (const struct varobj *var);
|
extern std::string varobj_get_expression (const struct varobj *var);
|
||||||
|
|
||||||
/* Delete a varobj and all its children if only_children == 0, otherwise delete
|
/* Delete a varobj and all its children if only_children is false, otherwise
|
||||||
only the children. Return the number of deleted variables. */
|
delete only the children. Return the number of deleted variables. */
|
||||||
|
|
||||||
extern int varobj_delete (struct varobj *var, int only_children);
|
extern int varobj_delete (struct varobj *var, bool only_children);
|
||||||
|
|
||||||
extern enum varobj_display_formats varobj_set_display_format (
|
extern enum varobj_display_formats varobj_set_display_format (
|
||||||
struct varobj *var,
|
struct varobj *var,
|
||||||
|
@ -262,9 +262,9 @@ extern enum varobj_display_formats varobj_get_display_format (
|
||||||
|
|
||||||
extern int varobj_get_thread_id (const struct varobj *var);
|
extern int varobj_get_thread_id (const struct varobj *var);
|
||||||
|
|
||||||
extern void varobj_set_frozen (struct varobj *var, int frozen);
|
extern void varobj_set_frozen (struct varobj *var, bool frozen);
|
||||||
|
|
||||||
extern int varobj_get_frozen (const struct varobj *var);
|
extern bool varobj_get_frozen (const struct varobj *var);
|
||||||
|
|
||||||
extern void varobj_get_child_range (const struct varobj *var, int *from,
|
extern void varobj_get_child_range (const struct varobj *var, int *from,
|
||||||
int *to);
|
int *to);
|
||||||
|
@ -304,35 +304,35 @@ extern std::string
|
||||||
|
|
||||||
extern std::string varobj_get_value (struct varobj *var);
|
extern std::string varobj_get_value (struct varobj *var);
|
||||||
|
|
||||||
extern int varobj_set_value (struct varobj *var, const char *expression);
|
extern bool varobj_set_value (struct varobj *var, const char *expression);
|
||||||
|
|
||||||
extern void all_root_varobjs (void (*func) (struct varobj *var, void *data),
|
extern void all_root_varobjs (void (*func) (struct varobj *var, void *data),
|
||||||
void *data);
|
void *data);
|
||||||
|
|
||||||
extern std::vector<varobj_update_result>
|
extern std::vector<varobj_update_result>
|
||||||
varobj_update (struct varobj **varp, int is_explicit);
|
varobj_update (struct varobj **varp, bool is_explicit);
|
||||||
|
|
||||||
extern void varobj_invalidate (void);
|
extern void varobj_invalidate (void);
|
||||||
|
|
||||||
extern int varobj_editable_p (const struct varobj *var);
|
extern bool varobj_editable_p (const struct varobj *var);
|
||||||
|
|
||||||
extern int varobj_floating_p (const struct varobj *var);
|
extern bool varobj_floating_p (const struct varobj *var);
|
||||||
|
|
||||||
extern void varobj_set_visualizer (struct varobj *var,
|
extern void varobj_set_visualizer (struct varobj *var,
|
||||||
const char *visualizer);
|
const char *visualizer);
|
||||||
|
|
||||||
extern void varobj_enable_pretty_printing (void);
|
extern void varobj_enable_pretty_printing (void);
|
||||||
|
|
||||||
extern int varobj_has_more (const struct varobj *var, int to);
|
extern bool varobj_has_more (const struct varobj *var, int to);
|
||||||
|
|
||||||
extern int varobj_is_dynamic_p (const struct varobj *var);
|
extern bool varobj_is_dynamic_p (const struct varobj *var);
|
||||||
|
|
||||||
extern int varobj_default_value_is_changeable_p (const struct varobj *var);
|
extern bool varobj_default_value_is_changeable_p (const struct varobj *var);
|
||||||
extern int varobj_value_is_changeable_p (const struct varobj *var);
|
extern bool varobj_value_is_changeable_p (const struct varobj *var);
|
||||||
|
|
||||||
extern struct type *varobj_get_value_type (const struct varobj *var);
|
extern struct type *varobj_get_value_type (const struct varobj *var);
|
||||||
|
|
||||||
extern int varobj_is_anonymous_child (const struct varobj *child);
|
extern bool varobj_is_anonymous_child (const struct varobj *child);
|
||||||
|
|
||||||
extern const struct varobj *
|
extern const struct varobj *
|
||||||
varobj_get_path_expr_parent (const struct varobj *var);
|
varobj_get_path_expr_parent (const struct varobj *var);
|
||||||
|
@ -348,6 +348,6 @@ extern void varobj_formatted_print_options (struct value_print_options *opts,
|
||||||
extern void varobj_restrict_range (const std::vector<varobj *> &children,
|
extern void varobj_restrict_range (const std::vector<varobj *> &children,
|
||||||
int *from, int *to);
|
int *from, int *to);
|
||||||
|
|
||||||
extern int varobj_default_is_path_expr_parent (const struct varobj *var);
|
extern bool varobj_default_is_path_expr_parent (const struct varobj *var);
|
||||||
|
|
||||||
#endif /* VAROBJ_H */
|
#endif /* VAROBJ_H */
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue