+2015-01-30 Simon Marchi <simon.marchi@ericsson.com>
+
+ * ada-varobj.c (ada_number_of_children): Constify struct varobj *
+ parameter.
+ (ada_name_of_variable): Same.
+ (ada_path_expr_of_child): Same.
+ (ada_value_of_variable): Same.
+ (ada_value_is_changeable_p): Same.
+ (ada_value_has_mutated): Same.
+ * c-varobj.c (varobj_is_anonymous_child): Same.
+ (c_is_path_expr_parent): Same.
+ (c_number_of_children): Same.
+ (c_name_of_variable): Same.
+ (c_path_expr_of_child): Same.
+ (get_type): Same.
+ (c_value_of_variable): Same.
+ (cplus_number_of_children): Same.
+ (cplus_name_of_variable): Same.
+ (cplus_path_expr_of_child): Same.
+ (cplus_value_of_variable): Same.
+ * jv-varobj.c (java_number_of_children): Same.
+ (java_name_of_variable): Same.
+ (java_path_expr_of_child): Same.
+ (java_value_of_variable): Same.
+ * varobj.c (number_of_children): Same.
+ (name_of_variable): Same.
+ (is_root_p): Same.
+ (varobj_ensure_python_env): Same.
+ (varobj_get_objname): Same.
+ (varobj_get_expression): Same.
+ (varobj_get_display_format): Same.
+ (varobj_get_display_hint): Same.
+ (varobj_has_more): Same.
+ (varobj_get_thread_id): Same.
+ (varobj_get_frozen): Same.
+ (dynamic_varobj_has_child_method): Same.
+ (varobj_get_gdb_type): Same.
+ (is_path_expr_parent): Same.
+ (varobj_default_is_path_expr_parent): Same.
+ (varobj_get_language): Same.
+ (varobj_get_attributes): Same.
+ (varobj_is_dynamic_p): Same.
+ (varobj_get_child_range): Same.
+ (varobj_value_has_mutated): Same.
+ (varobj_get_value_type): Same.
+ (number_of_children): Same.
+ (name_of_variable): Same.
+ (check_scope): Same.
+ (varobj_editable_p): Same.
+ (varobj_value_is_changeable_p): Same.
+ (varobj_floating_p): Same.
+ (varobj_default_value_is_changeable_p): Same.
+
2015-01-30 Simon Marchi <simon.marchi@ericsson.com>
* varobj.c (varobj_get_path_expr): Set var->path_expr.
/* Ada specific callbacks for VAROBJs. */
static int
-ada_number_of_children (struct varobj *var)
+ada_number_of_children (const struct varobj *var)
{
return ada_varobj_get_number_of_children (var->value, var->type);
}
static char *
-ada_name_of_variable (struct varobj *parent)
+ada_name_of_variable (const struct varobj *parent)
{
return c_varobj_ops.name_of_variable (parent);
}
}
static char*
-ada_path_expr_of_child (struct varobj *child)
+ada_path_expr_of_child (const struct varobj *child)
{
struct varobj *parent = child->parent;
const char *parent_path_expr = varobj_get_path_expr (parent);
}
static char *
-ada_value_of_variable (struct varobj *var, enum varobj_display_formats format)
+ada_value_of_variable (const struct varobj *var,
+ enum varobj_display_formats format)
{
struct value_print_options opts;
/* Implement the "value_is_changeable_p" routine for Ada. */
static int
-ada_value_is_changeable_p (struct varobj *var)
+ada_value_is_changeable_p (const struct varobj *var)
{
struct type *type = var->value ? value_type (var->value) : var->type;
/* Implement the "value_has_mutated" routine for Ada. */
static int
-ada_value_has_mutated (struct varobj *var, struct value *new_val,
+ada_value_has_mutated (const struct varobj *var, struct value *new_val,
struct type *new_type)
{
int i;
thing to do is to compare the child's name with ANONYMOUS_*_NAME. */
int
-varobj_is_anonymous_child (struct varobj *child)
+varobj_is_anonymous_child (const struct varobj *child)
{
return (strcmp (child->name, ANONYMOUS_STRUCT_NAME) == 0
|| strcmp (child->name, ANONYMOUS_UNION_NAME) == 0);
a valid path expression? */
static int
-c_is_path_expr_parent (struct varobj *var)
+c_is_path_expr_parent (const struct varobj *var)
{
struct type *type;
/* C */
static int
-c_number_of_children (struct varobj *var)
+c_number_of_children (const struct varobj *var)
{
struct type *type = varobj_get_value_type (var);
int children = 0;
}
static char *
-c_name_of_variable (struct varobj *parent)
+c_name_of_variable (const struct varobj *parent)
{
return xstrdup (parent->name);
}
}
static char *
-c_path_expr_of_child (struct varobj *child)
+c_path_expr_of_child (const struct varobj *child)
{
char *path_expr;
to return the real type of the variable. */
static struct type *
-get_type (struct varobj *var)
+get_type (const struct varobj *var)
{
struct type *type;
}
static char *
-c_value_of_variable (struct varobj *var, enum varobj_display_formats format)
+c_value_of_variable (const struct varobj *var,
+ enum varobj_display_formats format)
{
/* BOGUS: if val_print sees a struct/class, or a reference to one,
it will print out its children instead of "{...}". So we need to
/* C++ */
static int
-cplus_number_of_children (struct varobj *var)
+cplus_number_of_children (const struct varobj *var)
{
struct value *value = NULL;
struct type *type;
}
static char *
-cplus_name_of_variable (struct varobj *parent)
+cplus_name_of_variable (const struct varobj *parent)
{
return c_name_of_variable (parent);
}
}
static char *
-cplus_path_expr_of_child (struct varobj *child)
+cplus_path_expr_of_child (const struct varobj *child)
{
char *path_expr;
}
static char *
-cplus_value_of_variable (struct varobj *var,
+cplus_value_of_variable (const struct varobj *var,
enum varobj_display_formats format)
{
/* Java */
static int
-java_number_of_children (struct varobj *var)
+java_number_of_children (const struct varobj *var)
{
return cplus_varobj_ops.number_of_children (var);
}
static char *
-java_name_of_variable (struct varobj *parent)
+java_name_of_variable (const struct varobj *parent)
{
char *p, *name;
}
static char *
-java_path_expr_of_child (struct varobj *child)
+java_path_expr_of_child (const struct varobj *child)
{
return NULL;
}
}
static char *
-java_value_of_variable (struct varobj *var, enum varobj_display_formats format)
+java_value_of_variable (const struct varobj *var,
+ enum varobj_display_formats format)
{
return cplus_varobj_ops.value_of_variable (var, format);
}
/* Language-specific routines. */
-static int number_of_children (struct varobj *);
+static int number_of_children (const struct varobj *);
-static char *name_of_variable (struct varobj *);
+static char *name_of_variable (const struct varobj *);
static char *name_of_child (struct varobj *, int);
static char *my_value_of_variable (struct varobj *var,
enum varobj_display_formats format);
-static int is_root_p (struct varobj *var);
+static int is_root_p (const struct varobj *var);
static struct varobj *varobj_add_child (struct varobj *var,
struct varobj_item *item);
/* API Implementation */
static int
-is_root_p (struct varobj *var)
+is_root_p (const struct varobj *var)
{
return (var->root->rootvar == var);
}
/* Helper function to install a Python environment suitable for
use during operations on VAR. */
struct cleanup *
-varobj_ensure_python_env (struct varobj *var)
+varobj_ensure_python_env (const struct varobj *var)
{
return ensure_python_env (var->root->exp->gdbarch,
var->root->exp->language_defn);
/* Given the handle, return the name of the object. */
char *
-varobj_get_objname (struct varobj *var)
+varobj_get_objname (const struct varobj *var)
{
return var->obj_name;
}
result must be freed by the caller. */
char *
-varobj_get_expression (struct varobj *var)
+varobj_get_expression (const struct varobj *var)
{
return name_of_variable (var);
}
}
enum varobj_display_formats
-varobj_get_display_format (struct varobj *var)
+varobj_get_display_format (const struct varobj *var)
{
return var->format;
}
char *
-varobj_get_display_hint (struct varobj *var)
+varobj_get_display_hint (const struct varobj *var)
{
char *result = NULL;
/* Return true if the varobj has items after TO, false otherwise. */
int
-varobj_has_more (struct varobj *var, int to)
+varobj_has_more (const struct varobj *var, int to)
{
if (VEC_length (varobj_p, var->children) > to)
return 1;
inside that thread, returns GDB id of the thread -- which
is always positive. Otherwise, returns -1. */
int
-varobj_get_thread_id (struct varobj *var)
+varobj_get_thread_id (const struct varobj *var)
{
if (var->root->valid_block && var->root->thread_id > 0)
return var->root->thread_id;
}
int
-varobj_get_frozen (struct varobj *var)
+varobj_get_frozen (const struct varobj *var)
{
return var->frozen;
}
#if HAVE_PYTHON
static int
-dynamic_varobj_has_child_method (struct varobj *var)
+dynamic_varobj_has_child_method (const struct varobj *var)
{
struct cleanup *back_to;
PyObject *printer = var->dynamic->pretty_printer;
/* Obtain the type of an object variable. */
struct type *
-varobj_get_gdb_type (struct varobj *var)
+varobj_get_gdb_type (const struct varobj *var)
{
return var->type;
}
a valid path expression? */
static int
-is_path_expr_parent (struct varobj *var)
+is_path_expr_parent (const struct varobj *var)
{
gdb_assert (var->root->lang_ops->is_path_expr_parent != NULL);
return var->root->lang_ops->is_path_expr_parent (var);
parent. */
int
-varobj_default_is_path_expr_parent (struct varobj *var)
+varobj_default_is_path_expr_parent (const struct varobj *var)
{
return 1;
}
}
const struct language_defn *
-varobj_get_language (struct varobj *var)
+varobj_get_language (const struct varobj *var)
{
return var->root->exp->language_defn;
}
int
-varobj_get_attributes (struct varobj *var)
+varobj_get_attributes (const struct varobj *var)
{
int attributes = 0;
/* Return true if VAR is a dynamic varobj. */
int
-varobj_is_dynamic_p (struct varobj *var)
+varobj_is_dynamic_p (const struct varobj *var)
{
return var->dynamic->pretty_printer != NULL;
}
selected sub-range of VAR. If no range was selected using
-var-set-update-range, then both will be -1. */
void
-varobj_get_child_range (struct varobj *var, int *from, int *to)
+varobj_get_child_range (const struct varobj *var, int *from, int *to)
{
*from = var->from;
*to = var->to;
NEW_VALUE may be NULL, if the varobj is now out of scope. */
static int
-varobj_value_has_mutated (struct varobj *var, struct value *new_value,
+varobj_value_has_mutated (const struct varobj *var, struct value *new_value,
struct type *new_type)
{
/* If we haven't previously computed the number of children in var,
For example, top-level references are always stripped. */
struct type *
-varobj_get_value_type (struct varobj *var)
+varobj_get_value_type (const struct varobj *var)
{
struct type *type;
is the number of children that the user will see in the variable
display. */
static int
-number_of_children (struct varobj *var)
+number_of_children (const struct varobj *var)
{
return (*var->root->lang_ops->number_of_children) (var);
}
/* What is the expression for the root varobj VAR? Returns a malloc'd
string. */
static char *
-name_of_variable (struct varobj *var)
+name_of_variable (const struct varobj *var)
{
return (*var->root->lang_ops->name_of_variable) (var);
}
to it and return 1. Otherwise, return 0. */
static int
-check_scope (struct varobj *var)
+check_scope (const struct varobj *var)
{
struct frame_info *fi;
int scope;
char *
varobj_value_get_print_value (struct value *value,
enum varobj_display_formats format,
- struct varobj *var)
+ const struct varobj *var)
{
struct ui_file *stb;
struct cleanup *old_chain;
}
int
-varobj_editable_p (struct varobj *var)
+varobj_editable_p (const struct varobj *var)
{
struct type *type;
/* Call VAR's value_is_changeable_p language-specific callback. */
int
-varobj_value_is_changeable_p (struct varobj *var)
+varobj_value_is_changeable_p (const struct varobj *var)
{
return var->root->lang_ops->value_is_changeable_p (var);
}
selected frame, and not bound to thread/frame. Such variable objects
are created using '@' as frame specifier to -var-create. */
int
-varobj_floating_p (struct varobj *var)
+varobj_floating_p (const struct varobj *var)
{
return var->root->floating;
}
languages. */
int
-varobj_default_value_is_changeable_p (struct varobj *var)
+varobj_default_value_is_changeable_p (const struct varobj *var)
{
int r;
struct type *type;
struct lang_varobj_ops
{
/* The number of children of PARENT. */
- int (*number_of_children) (struct varobj *parent);
+ int (*number_of_children) (const struct varobj *parent);
/* The name (expression) of a root varobj. */
- char *(*name_of_variable) (struct varobj *parent);
+ char *(*name_of_variable) (const struct varobj *parent);
/* The name of the INDEX'th child of PARENT. */
char *(*name_of_child) (struct varobj *parent, int index);
/* Returns the rooted expression of CHILD, which is a variable
obtain that has some parent. */
- char *(*path_expr_of_child) (struct varobj *child);
+ 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 type *(*type_of_child) (struct varobj *parent, int index);
/* The current value of VAR. */
- char *(*value_of_variable) (struct varobj *var,
+ char *(*value_of_variable) (const struct varobj *var,
enum varobj_display_formats format);
/* Return non-zero if changes in value of VAR must be detected and
Return value of 0 means that gdb need not call value_fetch_lazy
for the value of this variable object. */
- int (*value_is_changeable_p) (struct varobj *var);
+ int (*value_is_changeable_p) (const struct varobj *var);
/* Return nonzero if the type of VAR has mutated.
children is set (not < 0).
Languages where types do not mutate can set this to NULL. */
- int (*value_has_mutated) (struct varobj *var, struct value *new_value,
+ int (*value_has_mutated) (const struct varobj *var, struct value *new_value,
struct type *new_type);
/* Return nonzero if VAR is a suitable path expression parent.
For C like languages with anonymous structures and unions an anonymous
structure or union is not a suitable parent. */
- int (*is_path_expr_parent) (struct varobj *var);
+ int (*is_path_expr_parent) (const struct varobj *var);
};
extern const struct lang_varobj_ops c_varobj_ops;
extern struct varobj *varobj_get_handle (char *name);
-extern char *varobj_get_objname (struct varobj *var);
+extern char *varobj_get_objname (const struct varobj *var);
-extern char *varobj_get_expression (struct varobj *var);
+extern char *varobj_get_expression (const struct varobj *var);
extern int varobj_delete (struct varobj *var, char ***dellist,
int only_children);
enum varobj_display_formats format);
extern enum varobj_display_formats varobj_get_display_format (
- struct varobj *var);
+ const struct varobj *var);
-extern int varobj_get_thread_id (struct varobj *var);
+extern int varobj_get_thread_id (const struct varobj *var);
extern void varobj_set_frozen (struct varobj *var, int frozen);
-extern int varobj_get_frozen (struct varobj *var);
+extern int varobj_get_frozen (const struct varobj *var);
-extern void varobj_get_child_range (struct varobj *var, int *from, int *to);
+extern void varobj_get_child_range (const struct varobj *var, int *from,
+ int *to);
extern void varobj_set_child_range (struct varobj *var, int from, int to);
-extern char *varobj_get_display_hint (struct varobj *var);
+extern char *varobj_get_display_hint (const struct varobj *var);
extern int varobj_get_num_children (struct varobj *var);
extern char *varobj_get_type (struct varobj *var);
-extern struct type *varobj_get_gdb_type (struct varobj *var);
+extern struct type *varobj_get_gdb_type (const struct varobj *var);
extern char *varobj_get_path_expr (struct varobj *var);
-extern const struct language_defn *varobj_get_language (struct varobj *var);
+extern const struct language_defn *
+ varobj_get_language (const struct varobj *var);
-extern int varobj_get_attributes (struct varobj *var);
+extern int varobj_get_attributes (const struct varobj *var);
extern char *varobj_get_formatted_value (struct varobj *var,
enum varobj_display_formats format);
extern void varobj_invalidate (void);
-extern int varobj_editable_p (struct varobj *var);
+extern int varobj_editable_p (const struct varobj *var);
-extern int varobj_floating_p (struct varobj *var);
+extern int varobj_floating_p (const struct varobj *var);
extern void varobj_set_visualizer (struct varobj *var,
const char *visualizer);
extern void varobj_enable_pretty_printing (void);
-extern int varobj_has_more (struct varobj *var, int to);
+extern int varobj_has_more (const struct varobj *var, int to);
-extern int varobj_is_dynamic_p (struct varobj *var);
+extern int varobj_is_dynamic_p (const struct varobj *var);
-extern struct cleanup *varobj_ensure_python_env (struct varobj *var);
+extern struct cleanup *varobj_ensure_python_env (const struct varobj *var);
-extern int varobj_default_value_is_changeable_p (struct varobj *var);
-extern int varobj_value_is_changeable_p (struct varobj *var);
+extern int varobj_default_value_is_changeable_p (const struct varobj *var);
+extern int varobj_value_is_changeable_p (const struct varobj *var);
-extern struct type *varobj_get_value_type (struct varobj *var);
+extern struct type *varobj_get_value_type (const struct varobj *var);
-extern int varobj_is_anonymous_child (struct varobj *child);
+extern int varobj_is_anonymous_child (const struct varobj *child);
extern struct varobj *varobj_get_path_expr_parent (struct varobj *var);
extern char *varobj_value_get_print_value (struct value *value,
enum varobj_display_formats format,
- struct varobj *var);
+ const struct varobj *var);
extern void varobj_formatted_print_options (struct value_print_options *opts,
enum varobj_display_formats format);
extern void varobj_restrict_range (VEC (varobj_p) *children, int *from,
int *to);
-extern int varobj_default_is_path_expr_parent (struct varobj *var);
+extern int varobj_default_is_path_expr_parent (const struct varobj *var);
#endif /* VAROBJ_H */