This is the mail archive of the
gdb-patches@sourceware.org
mailing list for the GDB project.
Varobj cleanups
- From: Vladimir Prus <ghost at cs dot msu dot su>
- To: gdb-patches at sources dot redhat dot com
- Date: Fri, 8 Dec 2006 21:55:42 +0300
- Subject: Varobj cleanups
This patch ports some varobj cleanups from Apple's version, in preparation
for some much more interesting ports. OK?
- Volodya
Port from Apple's version.
gdb/
* varobj.c (type_changeable): Rename to...
(varobj_value_is_changeable_p): ...this. Adjust all callers.
(is_root_p): New function. Use it everywhere.
--- gdb/varobj.c (/mirrors/gdb_mainline) (revision 2554)
+++ gdb/varobj.c (/patches/gdb/path_1/gdb_mainline) (revision 2554)
@@ -102,8 +102,8 @@ struct varobj
struct type *type;
/* The value of this expression or subexpression. This may be NULL.
- Invariant: if type_changeable (this) is non-zero, the value is either
- NULL, or not lazy. */
+ Invariant: if varobj_value_is_changeable_p (this) is non-zero,
+ the value is either NULL, or not lazy. */
struct value *value;
/* Did an error occur evaluating the expression or getting its value? */
@@ -233,7 +233,9 @@ static int variable_editable (struct var
static char *my_value_of_variable (struct varobj *var);
-static int type_changeable (struct varobj *var);
+static int varobj_value_is_changeable_p (struct varobj *var);
+
+static int is_root_p (struct varobj *var);
/* C implementation */
@@ -404,6 +406,11 @@ static struct vlist **varobj_table;
/* API Implementation */
+static int
+is_root_p (struct varobj *var)
+{
+ return (var->root->rootvar == var);
+}
/* Creates a varobj (not its children) */
@@ -827,7 +834,7 @@ varobj_set_value (struct varobj *var, ch
}
/* All types that are editable must also be changeable. */
- gdb_assert (type_changeable (var));
+ gdb_assert (varobj_value_is_changeable_p (var));
/* The value of a changeable variable object must not be lazy. */
gdb_assert (!value_lazy (var->value));
@@ -914,7 +921,7 @@ install_new_value (struct varobj *var, s
be fetched or not. C++ fake children (public/protected/private) don't have
a type. */
gdb_assert (var->type || CPLUS_FAKE_CHILD (var));
- changeable = type_changeable (var);
+ changeable = varobj_value_is_changeable_p (var);
need_to_fetch = changeable;
if (var->type && TYPE_CODE (var->type) == TYPE_CODE_UNION)
@@ -1028,7 +1035,7 @@ varobj_update (struct varobj **varp, str
return -1;
/* Only root variables can be updated... */
- if ((*varp)->root->rootvar != *varp)
+ if (!is_root_p (*varp))
/* Not a root var */
return -1;
@@ -1249,7 +1256,7 @@ install_variable (struct varobj *var)
*(varobj_table + index) = newvl;
/* If root, add varobj to root list */
- if (var->root->rootvar == var)
+ if (is_root_p (var))
{
/* Add to list of root variables */
if (rootlist == NULL)
@@ -1308,7 +1315,7 @@ uninstall_variable (struct varobj *var)
xfree (cv);
/* If root, remove varobj from root list */
- if (var->root->rootvar == var)
+ if (is_root_p (var))
{
/* Remove from list of root variables */
if (rootlist == var->root)
@@ -1485,7 +1492,7 @@ static void
free_variable (struct varobj *var)
{
/* Free the expression if this is a root variable. */
- if (var->root->rootvar == var)
+ if (is_root_p (var))
{
free_current_contents (&var->root->exp);
xfree (var->root);
@@ -1703,7 +1710,7 @@ value_of_root (struct varobj **var_handl
/* This should really be an exception, since this should
only get called with a root variable. */
- if (var->root->rootvar != var)
+ if (!is_root_p (var))
return NULL;
if (var->root->use_selected_frame)
@@ -1785,7 +1792,7 @@ my_value_of_variable (struct varobj *var
Return value of 0 means that gdb need not call value_fetch_lazy
for the value of this variable object. */
static int
-type_changeable (struct varobj *var)
+varobj_value_is_changeable_p (struct varobj *var)
{
int r;
struct type *type;
@@ -1934,7 +1941,7 @@ c_value_of_root (struct varobj **var_han
int within_scope;
/* Only root variables can be updated... */
- if (var->root->rootvar != var)
+ if (!is_root_p (var))
/* Not a root var */
return NULL;
@@ -2143,7 +2150,7 @@ c_value_of_variable (struct varobj *var)
struct cleanup *old_chain = make_cleanup_ui_file_delete (stb);
char *thevalue;
- gdb_assert (type_changeable (var));
+ gdb_assert (varobj_value_is_changeable_p (var));
gdb_assert (!value_lazy (var->value));
common_val_print (var->value, stb,
format_code[(int) var->format], 1, 0, 0);