56 struct value *low_bound_val,
57 struct value *high_bound_val);
102 bool parse_completion,
104 struct type *context_type) = 0;
120 bool parse_completion,
122 struct type *context_type);
139 {
return std::get<0> (
m_storage)->opcode (); }
146 struct type *cast_type)
156 using string_operation::string_operation;
182 {
return UNOP_QUAL; }
198 {
return TERNOP_IN_RANGE; }
225 {
return UNOP_IN_RANGE; }
276 struct type *cast_type)
290template<enum exp_opcode OP>
296 using maybe_constant_operation::maybe_constant_operation;
323 using maybe_constant_operation::maybe_constant_operation;
336 {
return TERNOP_SLICE; }
340 bool parse_completion,
342 struct type *context_type)
override;
351 using maybe_constant_operation::maybe_constant_operation;
364 {
return BINOP_IN_BOUNDS; }
373 using maybe_constant_operation::maybe_constant_operation;
389 using var_value_operation::var_value_operation;
400 {
return std::get<0> (
m_storage).block; }
404 bool parse_completion,
406 struct type *context_type)
override;
413 struct type *cast_type)
423 using var_msym_value_operation::var_msym_value_operation;
440template<ada_atr_ftype FUNC>
473 using unop_ind_base_operation::unop_ind_base_operation;
486 using structop_base_operation::structop_base_operation;
493 {
return STRUCTOP_STRUCT; }
534 bool parse_completion,
536 struct type *context_type)
override;
539 {
return OP_FUNCALL; }
548 using assign_operation::assign_operation;
555 {
return BINOP_ASSIGN; }
564 return std::get<0> (
m_storage)->evaluate (
nullptr, exp,
573 std::get<1> (
m_storage) = std::move (rhs);
609 gdb_printf (stream, _(
"%*sAda target symbol '@'\n"), depth,
"");
630 std::vector<LONGEST> &indices,
631 LONGEST low, LONGEST high) = 0;
673 error (_(
"Aggregates only allowed on the right of an assignment"));
677 {
return OP_AGGREGATE; }
692 std::vector<LONGEST> &indices,
693 LONGEST low, LONGEST high)
override;
718 std::vector<LONGEST> &indices,
719 LONGEST low, LONGEST high)
override;
743 std::vector<LONGEST> &indices,
744 LONGEST low, LONGEST high)
override;
767 std::vector<LONGEST> &indices,
768 LONGEST low, LONGEST high,
809 std::vector<LONGEST> &indices,
810 LONGEST low, LONGEST high)
override;
835 std::vector<LONGEST> &indices,
836 LONGEST low, LONGEST high,
863 std::vector<LONGEST> &indices,
864 LONGEST low, LONGEST high,
888 bool parse_completion,
890 struct type *context_type)
override
894 gdb_assert_not_reached (
"unexpected call");
900 bool parse_completion,
902 struct type *context_type)
override;
913 using concat_operation::concat_operation;
constexpr string_view get()
struct value * ada_pos_atr(struct type *expect_type, struct expression *exp, enum noside noside, enum exp_opcode op, struct value *arg)
struct value * ada_unop_neg(struct type *expect_type, struct expression *exp, enum noside noside, enum exp_opcode op, struct value *arg1)
struct value * ada_ternop_slice(struct expression *exp, enum noside noside, struct value *array, struct value *low_bound_val, struct value *high_bound_val)
struct value * ada_atr_enum_val(struct expression *exp, enum noside noside, struct type *type, struct value *arg)
struct value * ada_atr_tag(struct type *expect_type, struct expression *exp, enum noside noside, enum exp_opcode op, struct value *arg1)
struct value * ada_binop_exp(struct type *expect_type, struct expression *exp, enum noside noside, enum exp_opcode op, struct value *arg1, struct value *arg2)
struct value * ada_atr_enum_rep(struct expression *exp, enum noside noside, struct type *type, struct value *arg)
struct value * ada_val_atr(struct expression *exp, enum noside noside, struct type *type, struct value *arg)
struct value * ada_unop_in_range(struct type *expect_type, struct expression *exp, enum noside noside, enum exp_opcode op, struct value *arg1, struct type *type)
struct value * ada_abs(struct type *expect_type, struct expression *exp, enum noside noside, enum exp_opcode op, struct value *arg1)
struct value * ada_mult_binop(struct type *expect_type, struct expression *exp, enum noside noside, enum exp_opcode op, struct value *arg1, struct value *arg2)
struct value * ada_atr_size(struct type *expect_type, struct expression *exp, enum noside noside, enum exp_opcode op, struct value *arg1)
struct value * ada_equal_binop(struct type *expect_type, struct expression *exp, enum noside noside, enum exp_opcode op, struct value *arg1, struct value *arg2)
struct value * ada_binop_minmax(struct type *expect_type, struct expression *exp, enum noside noside, enum exp_opcode op, struct value *arg1, struct value *arg2)
struct value * ada_binop_in_bounds(struct expression *exp, enum noside noside, struct value *arg1, struct value *arg2, int n)
void gen_expr_binop(struct expression *exp, enum exp_opcode op, expr::operation *lhs, expr::operation *rhs, struct agent_expr *ax, struct axs_value *value)
ada_aggregate_component(std::vector< ada_component_up > &&components)
std::vector< ada_component_up > m_components
bool uses_objfile(struct objfile *objfile) override
void assign(struct value *container, struct value *lhs, struct expression *exp, std::vector< LONGEST > &indices, LONGEST low, LONGEST high) override
void dump(ui_file *stream, int depth) override
value * evaluate(struct type *expect_type, struct expression *exp, enum noside noside) override
enum exp_opcode opcode() const override
value * assign_aggregate(struct value *container, struct value *lhs, struct expression *exp)
value * eval_for_resolution(struct expression *exp)
void set_rhs(operation_up rhs)
value * evaluate(struct type *expect_type, struct expression *exp, enum noside noside) override
enum exp_opcode opcode() const override
virtual bool uses_objfile(struct objfile *objfile)=0
ada_association()=default
DISABLE_COPY_AND_ASSIGN(ada_association)
virtual void dump(ui_file *stream, int depth)=0
virtual void assign(struct value *container, struct value *lhs, struct expression *exp, std::vector< LONGEST > &indices, LONGEST low, LONGEST high, operation_up &op)=0
virtual ~ada_association()=default
enum exp_opcode opcode() const override
value * evaluate(struct type *expect_type, struct expression *exp, enum noside noside) override
value * evaluate(struct type *expect_type, struct expression *exp, enum noside noside) override
enum exp_opcode opcode() const override
enum exp_opcode opcode() const override
value * evaluate(struct type *expect_type, struct expression *exp, enum noside noside) override
void do_generate_ax(struct expression *exp, struct agent_expr *ax, struct axs_value *value, struct type *cast_type) override
enum exp_opcode opcode() const override
value * evaluate(struct type *expect_type, struct expression *exp, enum noside noside) override
value * evaluate(struct type *expect_type, struct expression *exp, enum noside noside) override
enum exp_opcode opcode() const override
value * evaluate(struct type *expect_type, struct expression *exp, enum noside noside) override
operation_up replace(operation_up &&owner, struct expression *exp, bool deprocedure_p, bool parse_completion, innermost_block_tracker *tracker, struct type *context_type) override
bool resolve(struct expression *exp, bool deprocedure_p, bool parse_completion, innermost_block_tracker *tracker, struct type *context_type) override
void set_associations(std::vector< ada_association_up > &&assoc)
ada_choices_component(operation_up &&op)
void dump(ui_file *stream, int depth) override
std::vector< ada_association_up > m_assocs
void assign(struct value *container, struct value *lhs, struct expression *exp, std::vector< LONGEST > &indices, LONGEST low, LONGEST high) override
bool uses_objfile(struct objfile *objfile) override
virtual void dump(ui_file *stream, int depth)=0
virtual void assign(struct value *container, struct value *lhs, struct expression *exp, std::vector< LONGEST > &indices, LONGEST low, LONGEST high)=0
virtual ~ada_component()=default
DISABLE_COPY_AND_ASSIGN(ada_component)
virtual bool uses_objfile(struct objfile *objfile)=0
value * evaluate(struct type *expect_type, struct expression *exp, enum noside noside) override
bool uses_objfile(struct objfile *objfile) override
void assign(struct value *container, struct value *lhs, struct expression *exp, std::vector< LONGEST > &indices, LONGEST low, LONGEST high, operation_up &op) override
ada_discrete_range_association(operation_up &&low, operation_up &&high)
void dump(ui_file *stream, int depth) override
value * evaluate(struct type *expect_type, struct expression *exp, enum noside noside) override
enum exp_opcode opcode() const override
ada_name_association(operation_up val)
void dump(ui_file *stream, int depth) override
void assign(struct value *container, struct value *lhs, struct expression *exp, std::vector< LONGEST > &indices, LONGEST low, LONGEST high, operation_up &op) override
bool uses_objfile(struct objfile *objfile) override
bool uses_objfile(struct objfile *objfile) override
void assign(struct value *container, struct value *lhs, struct expression *exp, std::vector< LONGEST > &indices, LONGEST low, LONGEST high) override
ada_others_component(operation_up &&op)
void dump(ui_file *stream, int depth) override
ada_positional_component(int index, operation_up &&op)
void assign(struct value *container, struct value *lhs, struct expression *exp, std::vector< LONGEST > &indices, LONGEST low, LONGEST high) override
bool uses_objfile(struct objfile *objfile) override
void dump(ui_file *stream, int depth) override
enum exp_opcode opcode() const override
value * evaluate(struct type *expect_type, struct expression *exp, enum noside noside) override
const char * get_name() const
value * evaluate(struct type *expect_type, struct expression *exp, enum noside noside) override
value * evaluate(struct type *expect_type, struct expression *exp, enum noside noside) override
bool complete(struct expression *exp, completion_tracker &tracker) override
void set_prefix(std::string &&prefix)
void dump(struct ui_file *stream, int depth) const override
enum exp_opcode opcode() const override
void dump(struct ui_file *stream, int depth) const override
enum exp_opcode opcode() const override
value * evaluate(struct type *expect_type, struct expression *exp, enum noside noside) override
ada_target_operation(ada_assign_operation *lhs)
ada_assign_operation * m_lhs
enum exp_opcode opcode() const override
value * evaluate(struct type *expect_type, struct expression *exp, enum noside noside) override
value * evaluate(struct type *expect_type, struct expression *exp, enum noside noside) override
enum exp_opcode opcode() const override
enum exp_opcode opcode() const override
value * evaluate(struct type *expect_type, struct expression *exp, enum noside noside) override
value * evaluate(struct type *expect_type, struct expression *exp, enum noside noside) override
value * evaluate(struct type *expect_type, struct expression *exp, enum noside noside) override
enum exp_opcode opcode() const override
value * evaluate_for_cast(struct type *expect_type, struct expression *exp, enum noside noside) override
value * evaluate(struct type *expect_type, struct expression *exp, enum noside noside) override
void do_generate_ax(struct expression *exp, struct agent_expr *ax, struct axs_value *value, struct type *cast_type) override
const block * get_block() const
value * evaluate_for_cast(struct type *expect_type, struct expression *exp, enum noside noside) override
value * evaluate(struct type *expect_type, struct expression *exp, enum noside noside) override
void do_generate_ax(struct expression *exp, struct agent_expr *ax, struct axs_value *value, struct type *cast_type) override
enum exp_opcode opcode() const override
long_const_operation(struct type *type, LONGEST val)
virtual void do_generate_ax(struct expression *exp, struct agent_expr *ax, struct axs_value *value, struct type *cast_type)
virtual void dump(struct ui_file *stream, int depth) const =0
virtual bool complete(struct expression *exp, completion_tracker &tracker)
std::tuple< Arg... > m_storage
tuple_holding_operation(Arg... args)
struct value * eval_op_binary(struct type *expect_type, struct expression *exp, enum noside noside, enum exp_opcode op, struct value *arg1, struct value *arg2)
@ EVAL_AVOID_SIDE_EFFECTS
struct value * ada_atr_ftype(struct expression *exp, enum noside noside, struct type *type, struct value *arg)
std::unique_ptr< operation > operation_up
std::unique_ptr< ada_association > ada_association_up
static void dump_for_expression(struct ui_file *stream, int depth, const operation_up &op)
std::unique_ptr< ada_component > ada_component_up
#define prefix(a, b, R, do)
virtual operation_up replace(operation_up &&owner, struct expression *exp, bool deprocedure_p, bool parse_completion, innermost_block_tracker *tracker, struct type *context_type)
virtual bool resolve(struct expression *exp, bool deprocedure_p, bool parse_completion, innermost_block_tracker *tracker, struct type *context_type)=0
struct type * type() const
void gdb_printf(struct ui_file *stream, const char *format,...)
struct value * value_cast(struct type *type, struct value *arg2)