X-Git-Url: http://drtracing.org/?a=blobdiff_plain;f=gdb%2Fexpression.h;h=e4e96f6cf42de1c08c58829f2b916cecbf21f612;hb=9494d9636612cd9bd22e38625fbc89147beafea7;hp=a66784550f4c64b13792cfd329da7e4a47fcdb81;hpb=155da5173d74221a3099c22c27de1e8e2214982b;p=deliverable%2Fbinutils-gdb.git diff --git a/gdb/expression.h b/gdb/expression.h index a66784550f..e4e96f6cf4 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. @@ -86,6 +85,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,12 +97,16 @@ 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_expression_for_completion (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 completion. */ @@ -128,7 +133,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 @@ -146,4 +154,17 @@ extern void dump_raw_expression (struct expression *, struct ui_file *, 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) */