20#if !defined (EXPRESSION_H)
41 innermost_block_tracker_types);
45#define OP(name) name ,
47#include "std-operator.def"
133 const std::vector<operation_up> &args)
152 struct type *cast_type =
nullptr);
170 const char *function_name,
171 const std::vector<operation_up> &args);
178 struct type *cast_type)
180 error (_(
"Cannot translate to agent expression"));
185template<
typename T,
typename... Arg>
208 return op->opcode ();
214 op->dump (stream, 0);
236 bool void_context_p =
false);
260 (
const char *, std::unique_ptr<expr_completion_base> *completer);
264 const struct block *,
int,
278 gdb::array_view<value *> argvec,
279 const char *function_name,
280 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)
std::unique_ptr< expression > expression_up
expression_up parse_exp_1(const char **, CORE_ADDR pc, const struct block *, int, innermost_block_tracker *=nullptr)
expression_up parse_expression_with_language(const char *string, enum language lang)
const char * op_name(enum exp_opcode opcode)
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)
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
expression_up parse_expression(const char *, innermost_block_tracker *=nullptr, bool void_context_p=false)
operation_up make_operation(Arg... args)
std::unique_ptr< operation > operation_up
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, enum noside noside)
expression(const struct language_defn *lang, struct gdbarch *arch)
void dump(struct ui_file *stream)
DISABLE_COPY_AND_ASSIGN(expression)
enum exp_opcode first_opcode() const