projects
/
binutils-gdb.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
gdb/testsuite/
[binutils-gdb.git]
/
gdb
/
expression.h
diff --git
a/gdb/expression.h
b/gdb/expression.h
index 555f0aa7ac8f58d31793bbb4f506b1263cfe5ce6..a6f966a8eea84be249abb3416ca8d2c0979a9d87 100644
(file)
--- a/
gdb/expression.h
+++ b/
gdb/expression.h
@@
-1,7
+1,7
@@
/* Definitions for expressions stored in reversed prefix form, for GDB.
/* Definitions for expressions stored in reversed prefix form, for GDB.
- Copyright (C) 1986, 1989, 1992, 1994, 2000, 2003, 2005, 2007
- Free Software Foundation, Inc.
+ Copyright (C) 1986, 1989, 1992, 1994, 2000, 2003, 2005, 2007
, 2008, 2009,
+
2010
Free Software Foundation, Inc.
This file is part of GDB.
This file is part of GDB.
@@
-88,6
+88,13
@@
enum exp_opcode
when X is a pointer instead of an aggregate. */
STRUCTOP_MPTR,
when X is a pointer instead of an aggregate. */
STRUCTOP_MPTR,
+ /* TYPE_INSTANCE is used when the user specifies a specific
+ type instantiation for overloaded methods/functions.
+
+ The format is:
+ TYPE_INSTANCE num_types type0 ... typeN num_types TYPE_INSTANCE */
+ TYPE_INSTANCE,
+
/* end of C++. */
/* For Modula-2 integer division DIV */
/* end of C++. */
/* For Modula-2 integer division DIV */
@@
-101,8
+108,6
@@
enum exp_opcode
/* Modula-2 standard (binary) procedures */
BINOP_VAL,
/* Modula-2 standard (binary) procedures */
BINOP_VAL,
- BINOP_INCL,
- BINOP_EXCL,
/* Concatenate two operands, such as character strings or bitstrings.
If the first operand is a integer expression, then it means concatenate
/* Concatenate two operands, such as character strings or bitstrings.
If the first operand is a integer expression, then it means concatenate
@@
-193,8
+198,9
@@
enum exp_opcode
indicates that we have found something of the form <name> ( <stuff> ) */
OP_F77_UNDETERMINED_ARGLIST,
indicates that we have found something of the form <name> ( <stuff> ) */
OP_F77_UNDETERMINED_ARGLIST,
- /* The following OP is a special one, it introduces a F77 complex
- literal. It is followed by exactly two args that are doubles. */
+ /* OP_COMPLEX takes a type in the following element, followed by another
+ OP_COMPLEX, making three exp_elements. It is followed by two double
+ args, and converts them into a complex number of the given type. */
OP_COMPLEX,
/* OP_STRING represents a string constant.
OP_COMPLEX,
/* OP_STRING represents a string constant.
@@
-225,6
+231,12
@@
enum exp_opcode
It casts the value of the following subexpression. */
UNOP_CAST,
It casts the value of the following subexpression. */
UNOP_CAST,
+ /* The C++ dynamic_cast operator. */
+ UNOP_DYNAMIC_CAST,
+
+ /* The C++ reinterpret_cast operator. */
+ UNOP_REINTERPRET_CAST,
+
/* UNOP_MEMVAL is followed by a type pointer in the next exp_element
With another UNOP_MEMVAL at the end, this makes three exp_elements.
It casts the contents of the word addressed by the value of the
/* UNOP_MEMVAL is followed by a type pointer in the next exp_element
With another UNOP_MEMVAL at the end, this makes three exp_elements.
It casts the contents of the word addressed by the value of the
@@
-265,9
+277,6
@@
enum exp_opcode
UNOP_ODD,
UNOP_TRUNC,
UNOP_ODD,
UNOP_TRUNC,
- /* (The deleted) Chill builtin functions. */
- UNOP_LOWER, UNOP_UPPER, UNOP_LENGTH, UNOP_CARD, UNOP_CHMAX, UNOP_CHMIN,
-
OP_BOOL, /* Modula-2 builtin BOOLEAN type */
OP_M2_STRING, /* Modula-2 string constants */
OP_BOOL, /* Modula-2 builtin BOOLEAN type */
OP_M2_STRING, /* Modula-2 string constants */
@@
-333,25
+342,32
@@
enum exp_opcode
Then comes another OP_DECFLOAT. */
OP_DECFLOAT,
Then comes another OP_DECFLOAT. */
OP_DECFLOAT,
+ /* OP_ADL_FUNC specifies that the function is to be looked up in an
+ Argument Dependent manner (Koenig lookup). */
+ OP_ADL_FUNC,
+
/* First extension operator. Individual language modules define
/* First extension operator. Individual language modules define
- extra operators they need as constants with values
- OP_LANGUAGE_SPECIFIC0 + k, for k >= 0, using a separate
- enumerated type definition:
- enum foo_extension_operator {
+ extra operators in *.inc include files below always starting with
+ numbering at OP_EXTENDED0:
BINOP_MOGRIFY = OP_EXTENDED0,
BINOP_FROB,
BINOP_MOGRIFY = OP_EXTENDED0,
BINOP_FROB,
- ...
- }; */
+ ... */
OP_EXTENDED0,
/* Last possible extension operator. Defined to provide an
explicit and finite number of extended operators. */
OP_EXTENDED0,
/* Last possible extension operator. Defined to provide an
explicit and finite number of extended operators. */
- OP_EXTENDED_LAST = 0xff
+ OP_EXTENDED_LAST = 0xff
,
/* NOTE: Eventually, we expect to convert to an object-oriented
formulation for expression operators that does away with the
need for these extension operators, and indeed for this
entire enumeration type. Therefore, consider the OP_EXTENDED
definitions to be a temporary measure. */
/* NOTE: Eventually, we expect to convert to an object-oriented
formulation for expression operators that does away with the
need for these extension operators, and indeed for this
entire enumeration type. Therefore, consider the OP_EXTENDED
definitions to be a temporary measure. */
+
+ /* Each language specific set of operators starts at OP_EXTENDED0. */
+#include "ada-operator.inc"
+
+ /* Existing only to swallow the last comma (',') from last .inc file. */
+ OP_UNUSED_LAST
};
union exp_element
};
union exp_element
@@
-373,6
+389,7
@@
union exp_element
struct expression
{
const struct language_defn *language_defn; /* language it was entered in */
struct expression
{
const struct language_defn *language_defn; /* language it was entered in */
+ struct gdbarch *gdbarch; /* architecture it was parsed in */
int nelts;
union exp_element elts[1];
};
int nelts;
union exp_element elts[1];
};
@@
-389,8
+406,14
@@
struct expression
extern struct expression *parse_expression (char *);
extern struct expression *parse_expression (char *);
+extern struct type *parse_field_expression (char *, char **);
+
extern struct expression *parse_exp_1 (char **, struct block *, int);
extern struct expression *parse_exp_1 (char **, struct block *, int);
+/* For use by parsers; set if we want to parse an expression and
+ attempt to complete a field name. */
+extern int in_parse_field;
+
/* The innermost context required by the stack and register variables
we've encountered so far. To use this, set it to NULL, then call
parse_<whatever>, then look at it. */
/* The innermost context required by the stack and register variables
we've encountered so far. To use this, set it to NULL, then call
parse_<whatever>, then look at it. */