This completes the constification of the struct varobj pointers in the
lang_varobj_ops interface partially done in
b09e2c591f9221d865bfe8425990a6bf9fab24e3. As suggested by Pedro,
varobj_get_path_expr casts away the const to assign the "mutable" struct
member.
gdb/ChangeLog:
* ada-varobj.c (ada_name_of_child): Constify parent.
(ada_path_expr_of_child): Same.
(ada_value_of_child): Same.
(ada_type_of_child): Same.
* c-varobj.c (c_is_path_expr_parent): Same.
(c_describe_child): Same.
(c_name_of_child): Same.
(c_value_of_child): Same.
(c_type_of_child): Same.
(cplus_number_of_children): Same.
(cplus_describe_child): Constify var.
(cplus_name_of_child): Constify parent.
(cplus_value_of_child): Same.
(cplus_type_of_child): Same.
* jv-varobj.c (java_name_of_child): Same.
(java_value_of_child): Same.
(java_type_of_child): Same.
* varobj.c (value_of_child): Same.
(varobj_default_is_path_expr_parent): Constify var, parent and return
value.
(varobj_get_path_expr): Constify var, modify path_expr through
mutable_var.
(install_new_value): Constify parent.
(value_of_child): Constify parent.
* varobj.h (struct varobj): Constify parent.
(struct lang_varobj_ops): Constify name_of_child, value_of_child and
type_of_child.
(varobj_get_path_expr): Constify var.
(varobj_get_path_expr_parent): Constify var and return value.
+2015-02-10 Simon Marchi <simon.marchi@ericsson.com>
+
+ * ada-varobj.c (ada_name_of_child): Constify parent.
+ (ada_path_expr_of_child): Same.
+ (ada_value_of_child): Same.
+ (ada_type_of_child): Same.
+ * c-varobj.c (c_is_path_expr_parent): Same.
+ (c_describe_child): Same.
+ (c_name_of_child): Same.
+ (c_value_of_child): Same.
+ (c_type_of_child): Same.
+ (cplus_number_of_children): Same.
+ (cplus_describe_child): Constify var.
+ (cplus_name_of_child): Constify parent.
+ (cplus_value_of_child): Same.
+ (cplus_type_of_child): Same.
+ * jv-varobj.c (java_name_of_child): Same.
+ (java_value_of_child): Same.
+ (java_type_of_child): Same.
+ * varobj.c (value_of_child): Same.
+ (varobj_default_is_path_expr_parent): Constify var, parent and return
+ value.
+ (varobj_get_path_expr): Constify var, modify path_expr through
+ mutable_var.
+ (install_new_value): Constify parent.
+ (value_of_child): Constify parent.
+ * varobj.h (struct varobj): Constify parent.
+ (struct lang_varobj_ops): Constify name_of_child, value_of_child and
+ type_of_child.
+ (varobj_get_path_expr): Constify var.
+ (varobj_get_path_expr_parent): Constify var and return value.
+
2015-02-10 Luis Machado <lgustavo@codesourcery.com>
* arm-tdep.c (arm_prologue_unwind_stop_reason): New function.
}
static char *
-ada_name_of_child (struct varobj *parent, int index)
+ada_name_of_child (const struct varobj *parent, int index)
{
return ada_varobj_get_name_of_child (parent->value, parent->type,
parent->name, index);
static char*
ada_path_expr_of_child (const struct varobj *child)
{
- struct varobj *parent = child->parent;
+ const struct varobj *parent = child->parent;
const char *parent_path_expr = varobj_get_path_expr (parent);
return ada_varobj_get_path_expr_of_child (parent->value,
}
static struct value *
-ada_value_of_child (struct varobj *parent, int index)
+ada_value_of_child (const struct varobj *parent, int index)
{
return ada_varobj_get_value_of_child (parent->value, parent->type,
parent->name, index);
}
static struct type *
-ada_type_of_child (struct varobj *parent, int index)
+ada_type_of_child (const struct varobj *parent, int index)
{
return ada_varobj_get_type_of_child (parent->value, parent->type,
index);
&& TYPE_NAME (type) == NULL
&& TYPE_TAG_NAME (type) == NULL)
{
- struct varobj *parent = var->parent;
+ const struct varobj *parent = var->parent;
while (parent != NULL && CPLUS_FAKE_CHILD (parent))
parent = parent->parent;
to NULL. */
static void
-c_describe_child (struct varobj *parent, int index,
+c_describe_child (const struct varobj *parent, int index,
char **cname, struct value **cvalue, struct type **ctype,
char **cfull_expression)
{
}
static char *
-c_name_of_child (struct varobj *parent, int index)
+c_name_of_child (const struct varobj *parent, int index)
{
char *name;
}
static struct value *
-c_value_of_child (struct varobj *parent, int index)
+c_value_of_child (const struct varobj *parent, int index)
{
struct value *value = NULL;
}
static struct type *
-c_type_of_child (struct varobj *parent, int index)
+c_type_of_child (const struct varobj *parent, int index)
{
struct type *type = NULL;
/* It is necessary to access a real type (via RTTI). */
if (opts.objectprint)
{
- struct varobj *parent = var->parent;
+ const struct varobj *parent = var->parent;
value = parent->value;
lookup_actual_type = (TYPE_CODE (parent->type) == TYPE_CODE_REF
}
static void
-cplus_describe_child (struct varobj *parent, int index,
+cplus_describe_child (const struct varobj *parent, int index,
char **cname, struct value **cvalue, struct type **ctype,
char **cfull_expression)
{
int was_ptr;
int lookup_actual_type = 0;
char *parent_expression = NULL;
- struct varobj *var;
+ const struct varobj *var;
struct value_print_options opts;
if (cname)
}
static char *
-cplus_name_of_child (struct varobj *parent, int index)
+cplus_name_of_child (const struct varobj *parent, int index)
{
char *name = NULL;
}
static struct value *
-cplus_value_of_child (struct varobj *parent, int index)
+cplus_value_of_child (const struct varobj *parent, int index)
{
struct value *value = NULL;
}
static struct type *
-cplus_type_of_child (struct varobj *parent, int index)
+cplus_type_of_child (const struct varobj *parent, int index)
{
struct type *type = NULL;
}
static char *
-java_name_of_child (struct varobj *parent, int index)
+java_name_of_child (const struct varobj *parent, int index)
{
char *name, *p;
}
static struct value *
-java_value_of_child (struct varobj *parent, int index)
+java_value_of_child (const struct varobj *parent, int index)
{
return cplus_varobj_ops.value_of_child (parent, index);
}
static struct type *
-java_type_of_child (struct varobj *parent, int index)
+java_type_of_child (const struct varobj *parent, int index)
{
return cplus_varobj_ops.type_of_child (parent, index);
}
static struct value *value_of_root (struct varobj **var_handle, int *);
-static struct value *value_of_child (struct varobj *parent, int index);
+static struct value *value_of_child (const struct varobj *parent, int index);
static char *my_value_of_variable (struct varobj *var,
enum varobj_display_formats format);
/* Return the path expression parent for VAR. */
-struct varobj *
-varobj_get_path_expr_parent (struct varobj *var)
+const struct varobj *
+varobj_get_path_expr_parent (const struct varobj *var)
{
- struct varobj *parent = var;
+ const struct varobj *parent = var;
while (!is_root_p (parent) && !is_path_expr_parent (parent))
parent = parent->parent;
/* Return a pointer to the full rooted expression of varobj VAR.
If it has not been computed yet, compute it. */
char *
-varobj_get_path_expr (struct varobj *var)
+varobj_get_path_expr (const struct varobj *var)
{
if (var->path_expr == NULL)
{
/* For root varobjs, we initialize path_expr
when creating varobj, so here it should be
child varobj. */
+ struct varobj *mutable_var = (struct varobj *) var;
gdb_assert (!is_root_p (var));
- var->path_expr = (*var->root->lang_ops->path_expr_of_child) (var);
+ mutable_var->path_expr = (*var->root->lang_ops->path_expr_of_child) (var);
}
return var->path_expr;
will be lazy, which means we've lost that old value. */
if (need_to_fetch && value && value_lazy (value))
{
- struct varobj *parent = var->parent;
+ const struct varobj *parent = var->parent;
int frozen = var->frozen;
for (; !frozen && parent; parent = parent->parent)
/* What is the ``struct value *'' for the INDEX'th child of PARENT? */
static struct value *
-value_of_child (struct varobj *parent, int index)
+value_of_child (const struct varobj *parent, int index)
{
struct value *value;
int num_children;
/* If this object is a child, this points to its immediate parent. */
- struct varobj *parent;
+ const struct varobj *parent;
/* Children of this object. */
VEC (varobj_p) *children;
/* The name of the INDEX'th child of PARENT. The returned value must be
freed by the caller. */
- char *(*name_of_child) (struct varobj *parent, int index);
+ char *(*name_of_child) (const struct varobj *parent, int index);
/* Returns the rooted expression of CHILD, which is a variable
obtain that has some parent. The returned value must be freed by the
char *(*path_expr_of_child) (const struct varobj *child);
/* The ``struct value *'' of the INDEX'th child of PARENT. */
- struct value *(*value_of_child) (struct varobj *parent, int index);
+ struct value *(*value_of_child) (const struct varobj *parent, int index);
/* The type of the INDEX'th child of PARENT. */
- struct type *(*type_of_child) (struct varobj *parent, int index);
+ struct type *(*type_of_child) (const struct varobj *parent, int index);
/* The current value of VAR. The returned value must be freed by the
caller. */
extern struct type *varobj_get_gdb_type (const struct varobj *var);
-extern char *varobj_get_path_expr (struct varobj *var);
+extern char *varobj_get_path_expr (const struct varobj *var);
extern const struct language_defn *
varobj_get_language (const struct varobj *var);
extern int varobj_is_anonymous_child (const struct varobj *child);
-extern struct varobj *varobj_get_path_expr_parent (struct varobj *var);
+extern const struct varobj *
+ varobj_get_path_expr_parent (const struct varobj *var);
extern char *varobj_value_get_print_value (struct value *value,
enum varobj_display_formats format,