From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 19028 invoked by alias); 10 Feb 2015 16:31:46 -0000 Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org Received: (qmail 19010 invoked by uid 89); 10 Feb 2015 16:31:45 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-2.0 required=5.0 tests=AWL,BAYES_00,SPF_PASS autolearn=ham version=3.3.2 X-HELO: usevmg21.ericsson.net Received: from usevmg21.ericsson.net (HELO usevmg21.ericsson.net) (198.24.6.65) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with (AES256-SHA encrypted) ESMTPS; Tue, 10 Feb 2015 16:31:44 +0000 Received: from EUSAAHC002.ericsson.se (Unknown_Domain [147.117.188.78]) by usevmg21.ericsson.net (Symantec Mail Security) with SMTP id 72.DF.25146.FA2D9D45; Tue, 10 Feb 2015 10:43:12 +0100 (CET) Received: from [142.133.110.232] (147.117.188.8) by smtp-am.internal.ericsson.com (147.117.188.80) with Microsoft SMTP Server id 14.3.210.2; Tue, 10 Feb 2015 11:31:41 -0500 Message-ID: <54DA326D.2000500@ericsson.com> Date: Tue, 10 Feb 2015 16:31:00 -0000 From: Simon Marchi User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.4.0 MIME-Version: 1.0 To: Simon Marchi , gdb-patches Subject: Re: [PATCH] Finish constification of varobj interface References: <1423585653-26216-1-git-send-email-simon.marchi@ericsson.com> In-Reply-To: <1423585653-26216-1-git-send-email-simon.marchi@ericsson.com> Content-Type: text/plain; charset="windows-1252" Content-Transfer-Encoding: 7bit X-IsSubscribed: yes X-SW-Source: 2015-02/txt/msg00259.txt.bz2 On 02/10/2015 11:27 AM, Simon Marchi wrote: > 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): Same. > * varobj.h (struct varobj): Same. > (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. > --- > gdb/ada-varobj.c | 8 ++++---- > gdb/c-varobj.c | 22 +++++++++++----------- > gdb/jv-varobj.c | 6 +++--- > gdb/varobj.c | 17 +++++++++-------- > gdb/varobj.h | 13 +++++++------ > 5 files changed, 34 insertions(+), 32 deletions(-) > > diff --git a/gdb/ada-varobj.c b/gdb/ada-varobj.c > index 7407af4..83d0707 100644 > --- a/gdb/ada-varobj.c > +++ b/gdb/ada-varobj.c > @@ -918,7 +918,7 @@ ada_name_of_variable (const struct varobj *parent) > } > > 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); > @@ -927,7 +927,7 @@ ada_name_of_child (struct varobj *parent, int 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, > @@ -938,14 +938,14 @@ ada_path_expr_of_child (const struct varobj *child) > } > > 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); > diff --git a/gdb/c-varobj.c b/gdb/c-varobj.c > index 9394d7c..363a356 100644 > --- a/gdb/c-varobj.c > +++ b/gdb/c-varobj.c > @@ -146,7 +146,7 @@ c_is_path_expr_parent (const struct varobj *var) > && 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; > @@ -282,7 +282,7 @@ value_struct_element_index (struct value *value, int type_index) > 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) > { > @@ -422,7 +422,7 @@ c_describe_child (struct varobj *parent, int index, > } > > static char * > -c_name_of_child (struct varobj *parent, int index) > +c_name_of_child (const struct varobj *parent, int index) > { > char *name; > > @@ -441,7 +441,7 @@ c_path_expr_of_child (const struct varobj *child) > } > > 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; > > @@ -450,7 +450,7 @@ c_value_of_child (struct varobj *parent, int index) > } > > 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; > > @@ -614,7 +614,7 @@ cplus_number_of_children (const struct varobj *var) > /* 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 > @@ -697,7 +697,7 @@ match_accessibility (struct type *type, int index, enum accessibility acc) > } > > 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) > { > @@ -706,7 +706,7 @@ cplus_describe_child (struct varobj *parent, int index, > 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) > @@ -898,7 +898,7 @@ cplus_describe_child (struct varobj *parent, int index, > } > > static char * > -cplus_name_of_child (struct varobj *parent, int index) > +cplus_name_of_child (const struct varobj *parent, int index) > { > char *name = NULL; > > @@ -917,7 +917,7 @@ cplus_path_expr_of_child (const struct varobj *child) > } > > 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; > > @@ -926,7 +926,7 @@ cplus_value_of_child (struct varobj *parent, int index) > } > > 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; > > diff --git a/gdb/jv-varobj.c b/gdb/jv-varobj.c > index dbd92a6..69e88fb 100644 > --- a/gdb/jv-varobj.c > +++ b/gdb/jv-varobj.c > @@ -47,7 +47,7 @@ java_name_of_variable (const struct varobj *parent) > } > > static char * > -java_name_of_child (struct varobj *parent, int index) > +java_name_of_child (const struct varobj *parent, int index) > { > char *name, *p; > > @@ -72,13 +72,13 @@ java_path_expr_of_child (const struct varobj *child) > } > > 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); > } > diff --git a/gdb/varobj.c b/gdb/varobj.c > index 268ba3c..43ea96f 100644 > --- a/gdb/varobj.c > +++ b/gdb/varobj.c > @@ -201,7 +201,7 @@ static char *name_of_child (struct varobj *, int); > > 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); > @@ -1019,10 +1019,10 @@ varobj_default_is_path_expr_parent (const struct varobj *var) > > /* 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; > @@ -1033,16 +1033,17 @@ varobj_get_path_expr_parent (struct varobj *var) > /* 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; > @@ -1378,7 +1379,7 @@ install_new_value (struct varobj *var, struct value *value, int initial) > 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) > @@ -2483,7 +2484,7 @@ value_of_root (struct varobj **var_handle, int *type_changed) > > /* 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; > > diff --git a/gdb/varobj.h b/gdb/varobj.h > index 30c31ef..bb4fbfa 100644 > --- a/gdb/varobj.h > +++ b/gdb/varobj.h > @@ -120,7 +120,7 @@ struct varobj > 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; > @@ -175,7 +175,7 @@ struct lang_varobj_ops > > /* 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 > @@ -183,10 +183,10 @@ struct lang_varobj_ops > 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. */ > @@ -285,7 +285,7 @@ extern char *varobj_get_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 char *varobj_get_path_expr (const struct varobj *var); > > extern const struct language_defn * > varobj_get_language (const struct varobj *var); > @@ -329,7 +329,8 @@ extern struct type *varobj_get_value_type (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); Hmm, to be consistent the rest of the file (varobj_get_language), I think this should be 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, >