X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=gdb%2Fexpression.h;h=271baa9f0dbca15dd2b119e9b3b654605dce2c86;hb=858c9d13240e695bc3b750368f5d4e524b12112e;hp=3b70ef3f410687b1d692dcb2d64eb037465ce2ea;hpb=270140bd2556ce2b0b9c32ecb31e1dcb3fc1887a;p=deliverable%2Fbinutils-gdb.git diff --git a/gdb/expression.h b/gdb/expression.h index 3b70ef3f41..271baa9f0d 100644 --- a/gdb/expression.h +++ b/gdb/expression.h @@ -1,7 +1,6 @@ /* Definitions for expressions stored in reversed prefix form, for GDB. - Copyright (C) 1986, 1989, 1992, 1994, 2000, 2003, 2005, 2007-2012 - Free Software Foundation, Inc. + Copyright (C) 1986-2017 Free Software Foundation, Inc. This file is part of GDB. @@ -23,7 +22,6 @@ #include "symtab.h" /* Needed for "struct block" type. */ -#include "doublest.h" /* Needed for DOUBLEST. */ /* Definitions for saved C expressions. */ @@ -65,9 +63,9 @@ union exp_element { enum exp_opcode opcode; struct symbol *symbol; + struct minimal_symbol *msymbol; LONGEST longconst; - DOUBLEST doubleconst; - gdb_byte decfloatconst[16]; + gdb_byte floatconst[16]; /* Really sizeof (union exp_element) characters (or less for the last element of a string). */ char string; @@ -86,6 +84,8 @@ struct expression union exp_element elts[1]; }; +typedef gdb::unique_xmalloc_ptr expression_up; + /* Macros for converting between number of expression elements and bytes to store that many expression elements. */ @@ -96,16 +96,20 @@ struct expression /* From parse.c */ -extern struct expression *parse_expression (char *); +extern expression_up parse_expression (const char *); + +extern expression_up parse_expression_with_language (const char *string, + enum language lang); -extern struct type *parse_field_expression (char *, char **); +extern struct type *parse_expression_for_completion (const char *, char **, + enum type_code *); -extern struct expression *parse_exp_1 (char **, CORE_ADDR pc, - const struct block *, int); +extern expression_up parse_exp_1 (const char **, CORE_ADDR pc, + const 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; + attempt completion. */ +extern int parse_completion; /* The innermost context required by the stack and register variables we've encountered so far. To use this, set it to NULL, then call @@ -128,7 +132,10 @@ enum noside type (inaccuracy: anything that is listed as being in a register in the function in which it was - declared will be lval_register). */ + declared will be lval_register). + Ideally this would not even read + target memory, but currently it + does in many situations. */ }; extern struct value *evaluate_subexp_standard @@ -138,12 +145,25 @@ extern struct value *evaluate_subexp_standard extern void print_expression (struct expression *, struct ui_file *); -extern char *op_name (struct expression *exp, enum exp_opcode opcode); +extern const char *op_name (struct expression *exp, enum exp_opcode opcode); -extern char *op_string (enum exp_opcode); +extern const char *op_string (enum exp_opcode); extern void dump_raw_expression (struct expression *, - struct ui_file *, char *); + struct ui_file *, const char *); extern void dump_prefix_expression (struct expression *, struct ui_file *); +/* In an OP_RANGE expression, either bound could be empty, indicating + that its value is by default that of the corresponding bound of the + array or string. So we have four sorts of subrange. This + enumeration type is to identify this. */ + +enum range_type + { + BOTH_BOUND_DEFAULT, /* "(:)" */ + LOW_BOUND_DEFAULT, /* "(:high)" */ + HIGH_BOUND_DEFAULT, /* "(low:)" */ + NONE_BOUND_DEFAULT /* "(low:high)" */ + }; + #endif /* !defined (EXPRESSION_H) */