[PATCH] Constify `struct expression' in operator_length

Sergio Durigan Junior
2010-06-04T21:19:34Z

Hello,

Due to Joel's suggestion on
<http://sourceware.org/ml/gdb-patches/2010-05/msg00689.html>, I decided to
post this patch in order to constify the `struct expression' argument of the
operator_length class of functions.

Ok to apply?

--
Sergio Durigan Junior
Red Hat

2010-06-04 Sergio Durigan Junior <sergiodj@redhat.com>

* ada-lang.c (ada_operator_length): Constify `struct expression'.
* parse.c (operator_length): Likewise.
(operator_length_standard): Likewise.
* parser-defs.h (operator_length): Likewise.
(operator_length_standard): Likewise.
(struct exp_descriptor <operator_length>): Likewise.

diff --git a/gdb/ada-lang.c b/gdb/ada-lang.c
index be0c53b..1d4c38b 100644
--- a/gdb/ada-lang.c
+++ b/gdb/ada-lang.c
@@ -11084,7 +11084,8 @@ ada_decode_assert_location (char *args, char **addr_string,
OP_DEFN (OP_DISCRETE_RANGE, 1, 2, 0)

static void
-ada_operator_length (struct expression *exp, int pc, int *oplenp, int *argsp)
+ada_operator_length (const struct expression *exp, int pc, int *oplenp,
+ int *argsp)
{
switch (exp->elts[pc - 1].opcode)
{
diff --git a/gdb/parse.c b/gdb/parse.c
index 1c8b350..c885c6a 100644
--- a/gdb/parse.c
+++ b/gdb/parse.c
@@ -791,7 +791,8 @@ length_of_subexp (struct expression *expr, int endpos)
operator takes. */

void
-operator_length (struct expression *expr, int endpos, int *oplenp, int *argsp)
+operator_length (const struct expression *expr, int endpos, int *oplenp,
+ int *argsp)
{
expr->language_defn->la_exp_desc->operator_length (expr, endpos,
oplenp, argsp);
@@ -800,7 +801,7 @@ operator_length (struct expression *expr, int endpos, int *oplenp, int *argsp)
/* Default value for operator_length in exp_descriptor vectors. */

void
-operator_length_standard (struct expression *expr, int endpos,
+operator_length_standard (const struct expression *expr, int endpos,
int *oplenp, int *argsp)
{
int oplen = 1;
diff --git a/gdb/parser-defs.h b/gdb/parser-defs.h
index 864f789..bb79ae1 100644
--- a/gdb/parser-defs.h
+++ b/gdb/parser-defs.h
@@ -188,9 +188,10 @@ extern int dump_subexp (struct expression *, struct ui_file *, int);
extern int dump_subexp_body_standard (struct expression *,
struct ui_file *, int);

-extern void operator_length (struct expression *, int, int *, int *);
+extern void operator_length (const struct expression *, int, int *, int *);

-extern void operator_length_standard (struct expression *, int, int *, int *);
+extern void operator_length_standard (const struct expression *, int, int *,
+ int *);

extern int operator_check_standard (struct expression *exp, int pos,
int (*objfile_func)
@@ -273,7 +274,7 @@ struct exp_descriptor

/* Returns number of exp_elements needed to represent an operator and
the number of subexpressions it takes. */
- void (*operator_length) (struct expression*, int, int*, int *);
+ void (*operator_length) (const struct expression*, int, int*, int *);

/* Call TYPE_FUNC and OBJFILE_FUNC for any TYPE and OBJFILE found being
referenced by the single operator of EXP at position POS. Operator