* breakpoint.c (breakpoint_re_set): Avoid setting source symtab
[deliverable/binutils-gdb.git] / gdb / expression.h
index 7a7bd83f47d79a90eb945ed474891e818f34ec88..b7a6fff47949892dd8d89457a51bd0fd41906c39 100644 (file)
@@ -1,22 +1,21 @@
 /* Definitions for expressions stored in reversed prefix form, for GDB.
-   Copyright (C) 1986 Free Software Foundation, Inc.
+   Copyright (C) 1986, 1989 Free Software Foundation, Inc.
 
-GDB is distributed in the hope that it will be useful, but WITHOUT ANY
-WARRANTY.  No author or distributor accepts responsibility to anyone
-for the consequences of using it or for whether it serves any
-particular purpose or works at all, unless he says so in writing.
-Refer to the GDB General Public License for full details.
+This file is part of GDB.
 
-Everyone is granted permission to copy, modify and redistribute GDB,
-but only under the conditions described in the GDB General Public
-License.  A copy of this license is supposed to have been given to you
-along with GDB so you can know your rights and responsibilities.  It
-should be in a file named COPYING.  Among other things, the copyright
-notice and this notice must be preserved on all copies.
+GDB is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 1, or (at your option)
+any later version.
 
-In other words, go ahead and share GDB, but don't try to stop
-anyone else from sharing it farther.  Help stamp out software hoarding!
-*/
+GDB is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GDB; see the file COPYING.  If not, write to
+the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.  */
 
 /* Definitions for saved C expressions.  */
 
@@ -60,6 +59,20 @@ enum exp_opcode
   BINOP_COMMA,         /* , */
   BINOP_SUBSCRIPT,     /* x[y] */
   BINOP_EXP,           /* Exponentiation */
+
+/* C++.  */
+  BINOP_MIN,           /* <? */
+  BINOP_MAX,           /* >? */
+  BINOP_SCOPE,         /* :: */
+
+  /* STRUCTOP_MEMBER is used for pointer-to-member constructs.
+     X . * Y translates into X STRUCTOP_MEMBER Y.  */
+  STRUCTOP_MEMBER,
+  /* STRUCTOP_MPTR is used for pointer-to-member constructs
+     when X is a pointer instead of an aggregate.  */
+  STRUCTOP_MPTR,
+/* end of C++.  */
+
   BINOP_END,
 
   BINOP_ASSIGN_MODIFY, /* +=, -=, *=, and so on.
@@ -144,13 +157,24 @@ enum exp_opcode
    (after the string), followed by another STRUCTOP_... code.  */
   STRUCTOP_STRUCT,
   STRUCTOP_PTR,
+
+/* C++ */
+  /* OP_THIS is just a placeholder for the class instance variable.
+     It just comes in a tight (OP_THIS, OP_THIS) pair.  */
+  OP_THIS,
+
+  /* OP_SCOPE surrounds a type name and a field name.  The type
+     name is encoded as one element, but the field name stays as
+     a string, which, of course, is variable length.  */
+  OP_SCOPE,
+
 };
 
 union exp_element
 {
   enum exp_opcode opcode;
   struct symbol *symbol;
-  long longconst;
+  LONGEST longconst;
   double doubleconst;
   char string;
   struct type *type;
@@ -163,5 +187,14 @@ struct expression
   union exp_element elts[1];
 };
 
+/* From expread.y.  */
 struct expression *parse_c_expression ();
 struct expression *parse_c_1 ();
+
+/* 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_c_<whatever>, then look at it.  */
+extern struct block *innermost_block;
+
+/* From expprint.c.  */
+void print_expression ();
This page took 0.023532 seconds and 4 git commands to generate.