Remove eval_op_string
authorTom Tromey <tromey@adacore.com>
Tue, 8 Mar 2022 16:47:39 +0000 (09:47 -0700)
committerTom Tromey <tromey@adacore.com>
Wed, 16 Mar 2022 15:28:12 +0000 (09:28 -0600)
eval_op_string is only used in a single place -- the implementation of
string_operation.  This patch turns it into the
string_operation::evaluate method, removing a bit of extraneous code.

gdb/eval.c
gdb/expop.h

index 6ced0b261e78c7d37bdfd28345a1517f8dcb0385..b7b8915fa89cd618f5980a034a22b1634c881454 100644 (file)
@@ -1078,17 +1078,22 @@ eval_op_register (struct type *expect_type, struct expression *exp,
     return val;
 }
 
-/* Helper function that implements the body of OP_STRING.  */
+namespace expr
+{
 
-struct value *
-eval_op_string (struct type *expect_type, struct expression *exp,
-               enum noside noside, int len, const char *string)
+value *
+string_operation::evaluate (struct type *expect_type,
+                           struct expression *exp,
+                           enum noside noside)
 {
+  const std::string &str = std::get<0> (m_storage);
   struct type *type = language_string_char_type (exp->language_defn,
                                                 exp->gdbarch);
-  return value_string (string, len, type);
+  return value_string (str.c_str (), str.size (), type);
 }
 
+} /* namespace expr */
+
 /* Helper function that implements the body of OP_OBJC_SELECTOR.  */
 
 struct value *
index 58863b8f3ab9b2e6baf5a0ed18e9fec10e574b17..1592568a85794e9dcf5dfea94cc6c17acd87ebb2 100644 (file)
@@ -64,10 +64,6 @@ extern struct value *eval_op_func_static_var (struct type *expect_type,
 extern struct value *eval_op_register (struct type *expect_type,
                                       struct expression *exp,
                                       enum noside noside, const char *name);
-extern struct value *eval_op_string (struct type *expect_type,
-                                    struct expression *exp,
-                                    enum noside noside, int len,
-                                    const char *string);
 extern struct value *eval_op_ternop (struct type *expect_type,
                                     struct expression *exp,
                                     enum noside noside,
@@ -912,12 +908,7 @@ public:
 
   value *evaluate (struct type *expect_type,
                   struct expression *exp,
-                  enum noside noside) override
-  {
-    const std::string &str = std::get<0> (m_storage);
-    return eval_op_string (expect_type, exp, noside,
-                          str.size (), str.c_str ());
-  }
+                  enum noside noside) override;
 
   enum exp_opcode opcode () const override
   { return OP_STRING; }