Implement some Ada unary operations

This implements a few Ada unary operations, using the existing
unop_operation template class.

gdb/ChangeLog
2021-03-08  Tom Tromey  <tom@tromey.com>

	* ada-lang.c (ada_unop_neg, ada_atr_tag, ada_atr_size, ada_abs):
	No longer static.
	* ada-exp.h (ada_neg_operation, ada_atr_tag_operation)
	(ada_atr_size_operation, ada_abs_operation): New typedefs.
This commit is contained in:
Tom Tromey
2021-03-08 07:27:57 -07:00
parent 5019124b1d
commit 7c15d377de
3 changed files with 33 additions and 4 deletions

View File

@ -1,3 +1,10 @@
2021-03-08 Tom Tromey <tom@tromey.com>
* ada-lang.c (ada_unop_neg, ada_atr_tag, ada_atr_size, ada_abs):
No longer static.
* ada-exp.h (ada_neg_operation, ada_atr_tag_operation)
(ada_atr_size_operation, ada_abs_operation): New typedefs.
2021-03-08 Tom Tromey <tom@tromey.com>
* expop.h (class logical_and_operation)

View File

@ -22,6 +22,23 @@
#include "expop.h"
extern struct value *ada_unop_neg (struct type *expect_type,
struct expression *exp,
enum noside noside, enum exp_opcode op,
struct value *arg1);
extern struct value *ada_atr_tag (struct type *expect_type,
struct expression *exp,
enum noside noside, enum exp_opcode op,
struct value *arg1);
extern struct value *ada_atr_size (struct type *expect_type,
struct expression *exp,
enum noside noside, enum exp_opcode op,
struct value *arg1);
extern struct value *ada_abs (struct type *expect_type,
struct expression *exp,
enum noside noside, enum exp_opcode op,
struct value *arg1);
namespace expr
{
@ -87,6 +104,11 @@ public:
{ return TERNOP_IN_RANGE; }
};
using ada_neg_operation = unop_operation<UNOP_NEG, ada_unop_neg>;
using ada_atr_tag_operation = unop_operation<OP_ATR_TAG, ada_atr_tag>;
using ada_atr_size_operation = unop_operation<OP_ATR_SIZE, ada_atr_size>;
using ada_abs_operation = unop_operation<UNOP_ABS, ada_abs>;
} /* namespace expr */
#endif /* ADA_EXP_H */

View File

@ -9964,7 +9964,7 @@ eval_ternop_in_range (struct type *expect_type, struct expression *exp,
/* A helper function for UNOP_NEG. */
static value *
value *
ada_unop_neg (struct type *expect_type,
struct expression *exp,
enum noside noside, enum exp_opcode op,
@ -10015,7 +10015,7 @@ ada_unop_in_range (struct type *expect_type,
/* A helper function for OP_ATR_TAG. */
static value *
value *
ada_atr_tag (struct type *expect_type,
struct expression *exp,
enum noside noside, enum exp_opcode op,
@ -10029,7 +10029,7 @@ ada_atr_tag (struct type *expect_type,
/* A helper function for OP_ATR_SIZE. */
static value *
value *
ada_atr_size (struct type *expect_type,
struct expression *exp,
enum noside noside, enum exp_opcode op,
@ -10054,7 +10054,7 @@ ada_atr_size (struct type *expect_type,
/* A helper function for UNOP_ABS. */
static value *
value *
ada_abs (struct type *expect_type,
struct expression *exp,
enum noside noside, enum exp_opcode op,