20#if !defined (EXPRESSION_H)
42 innermost_block_tracker_types);
46#define OP(name) name ,
48#include "std-operator.def"
134 const std::vector<operation_up> &args)
153 struct type *cast_type =
nullptr);
171 const char *function_name,
172 const std::vector<operation_up> &args);
179 struct type *cast_type)
181 error (_(
"Cannot translate to agent expression"));
186template<
typename T,
typename... Arg>
209 return op->opcode ();
215 op->dump (stream, 0);
261 void update (
const struct block *b, innermost_block_tracker_types t);
317 parser_flags
flags = 0);
341 (
const char *, std::unique_ptr<expr_completion_base> *completer);
344 const struct block *,
359 gdb::array_view<value *> argvec,
360 const char *function_name,
361 type *default_return_type);
virtual ~operation()=default
virtual value * evaluate_for_address(struct expression *exp, enum noside noside)
virtual value * evaluate_funcall(struct type *expect_type, struct expression *exp, enum noside noside, const std::vector< operation_up > &args)
virtual void do_generate_ax(struct expression *exp, struct agent_expr *ax, struct axs_value *value, struct type *cast_type)
virtual void set_outermost()
virtual bool uses_objfile(struct objfile *objfile) const
virtual value * evaluate_with_coercion(struct expression *exp, enum noside noside)
virtual bool constant_p() const
virtual value * evaluate_for_sizeof(struct expression *exp, enum noside noside)
void generate_ax(struct expression *exp, struct agent_expr *ax, struct axs_value *value, struct type *cast_type=nullptr)
virtual void dump(struct ui_file *stream, int depth) const =0
DISABLE_COPY_AND_ASSIGN(operation)
virtual value * evaluate(struct type *expect_type, struct expression *exp, enum noside noside)=0
virtual enum exp_opcode opcode() const =0
virtual value * evaluate_for_cast(struct type *expect_type, struct expression *exp, enum noside noside)
innermost_block_tracker_types m_types
innermost_block_tracker(innermost_block_tracker_types types=INNERMOST_BLOCK_FOR_SYMBOLS)
void update(const struct block *b, innermost_block_tracker_types t)
void update(const struct block_symbol &bs)
const struct block * m_innermost_block
const struct block * block() const
std::unique_ptr< expression > expression_up
expression_up parse_expression_with_language(const char *string, enum language lang)
@ PARSER_LEAVE_BLOCK_ALONE
@ PARSER_COMMA_TERMINATES
expression_up parse_expression(const char *, innermost_block_tracker *=nullptr, parser_flags flags=0)
innermost_block_tracker_type
@ INNERMOST_BLOCK_FOR_REGISTERS
@ INNERMOST_BLOCK_FOR_SYMBOLS
expression_up parse_expression_for_completion(const char *, std::unique_ptr< expr_completion_base > *completer)
DEF_ENUM_FLAGS_TYPE(enum innermost_block_tracker_type, innermost_block_tracker_types)
expression_up parse_exp_1(const char **, CORE_ADDR pc, const struct block *, parser_flags flags, innermost_block_tracker *=nullptr)
struct value * evaluate_subexp_do_call(expression *exp, enum noside noside, value *callee, gdb::array_view< value * > argvec, const char *function_name, type *default_return_type)
@ EVAL_AVOID_SIDE_EFFECTS
@ RANGE_LOW_BOUND_DEFAULT
@ RANGE_HIGH_BOUND_EXCLUSIVE
@ RANGE_HIGH_BOUND_DEFAULT
mach_port_t kern_return_t mach_port_t mach_msg_type_name_t msgportsPoly mach_port_t kern_return_t pid_t pid mach_port_t kern_return_t mach_port_t task mach_port_t kern_return_t int flags
operation_up make_operation(Arg... args)
std::unique_ptr< operation > operation_up
const struct block * block
virtual bool complete(struct expression *exp, completion_tracker &tracker)=0
virtual ~expr_completion_base()=default
const struct language_defn * language_defn
struct value * evaluate(struct type *expect_type=nullptr, enum noside noside=EVAL_NORMAL)
expression(const struct language_defn *lang, struct gdbarch *arch)
struct value * evaluate_type()
void dump(struct ui_file *stream)
DISABLE_COPY_AND_ASSIGN(expression)
enum exp_opcode first_opcode() const
bool uses_objfile(struct objfile *objfile) const