Implement some Ada unary operations
authorTom Tromey <tom@tromey.com>
Mon, 8 Mar 2021 14:27:57 +0000 (07:27 -0700)
committerTom Tromey <tom@tromey.com>
Mon, 8 Mar 2021 14:28:28 +0000 (07:28 -0700)
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.

gdb/ChangeLog
gdb/ada-exp.h
gdb/ada-lang.c

index f91477acc113728fcde37fec26ca376ce1d02a6e..08a962775ba929a47236dbdbdda4da2e14154035 100644 (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)
index 17a04ea15c641b2060a8e4ecc3bbead38d730532..8f114b3a145c532cd6409028daff2bde854d89d6 100644 (file)
 
 #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 */
index dd884668dc4ffad30604c72bf36dbfa43d8da8c4..ed691f5658453c5d2b66cb3974f827d1be9cfdc9 100644 (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,