gdb: Convert language_data::la_varobj_ops to a method
authorAndrew Burgess <andrew.burgess@embecosm.com>
Tue, 4 Aug 2020 14:59:52 +0000 (15:59 +0100)
committerAndrew Burgess <andrew.burgess@embecosm.com>
Wed, 16 Sep 2020 10:04:03 +0000 (11:04 +0100)
Convert language_data::la_varobj_ops member variable to a virtual
method language_defn::varobj_ops.

There should be no user visible changes after this commit.

gdb/ChangeLog:

* ada-lang.c (ada_language_data): Remove la_varobj_ops
initializer.
(ada_language::varobj_ops): New member function.
* c-lang.c (c_language_data): Remove la_varobj_ops
initializer.
(cplus_language_data): Likewise.
(cplus_language::varobj_ops): New member function.
(asm_language_data): Remove la_varobj_ops initializer.
(minimal_language_data): Likewise.
* d-lang.c (d_language_data): Likewise.
* f-lang.c (f_language_data): Likewise.
* go-lang.c (go_language_data): Likewise.
* language.c (language_defn::varobj_ops): New function.
(unknown_language_data): Remove la_varobj_ops
initializer.
(auto_language_data): Likewise.
* language.h (language_data): Remove la_varobj_ops field.
(language_defn::varobj_ops): Declare new member function.
* m2-lang.c (m2_language_data): Remove la_varobj_ops initializer.
* objc-lang.c (objc_language_data): Likewise.
* opencl-lang.c (opencl_language_data): Likewise.
* p-lang.c (pascal_language_data): Likewise.
* rust-lang.c (rust_language_data): Likewise.
* varobj.c (varobj_create): Update call to varobj_ops.
* varobj.h (default_varobj_ops): Delete define.

15 files changed:
gdb/ChangeLog
gdb/ada-lang.c
gdb/c-lang.c
gdb/d-lang.c
gdb/f-lang.c
gdb/go-lang.c
gdb/language.c
gdb/language.h
gdb/m2-lang.c
gdb/objc-lang.c
gdb/opencl-lang.c
gdb/p-lang.c
gdb/rust-lang.c
gdb/varobj.c
gdb/varobj.h

index 44786285082f9568a9372a46c059ca436b981e3d..666dd1a428960f515325fa072ad5a3b11aa336db 100644 (file)
@@ -1,3 +1,31 @@
+2020-09-16  Andrew Burgess  <andrew.burgess@embecosm.com>
+
+       * ada-lang.c (ada_language_data): Remove la_varobj_ops
+       initializer.
+       (ada_language::varobj_ops): New member function.
+       * c-lang.c (c_language_data): Remove la_varobj_ops
+       initializer.
+       (cplus_language_data): Likewise.
+       (cplus_language::varobj_ops): New member function.
+       (asm_language_data): Remove la_varobj_ops initializer.
+       (minimal_language_data): Likewise.
+       * d-lang.c (d_language_data): Likewise.
+       * f-lang.c (f_language_data): Likewise.
+       * go-lang.c (go_language_data): Likewise.
+       * language.c (language_defn::varobj_ops): New function.
+       (unknown_language_data): Remove la_varobj_ops
+       initializer.
+       (auto_language_data): Likewise.
+       * language.h (language_data): Remove la_varobj_ops field.
+       (language_defn::varobj_ops): Declare new member function.
+       * m2-lang.c (m2_language_data): Remove la_varobj_ops initializer.
+       * objc-lang.c (objc_language_data): Likewise.
+       * opencl-lang.c (opencl_language_data): Likewise.
+       * p-lang.c (pascal_language_data): Likewise.
+       * rust-lang.c (rust_language_data): Likewise.
+       * varobj.c (varobj_create): Update call to varobj_ops.
+       * varobj.h (default_varobj_ops): Delete define.
+
 2020-09-16  Andrew Burgess  <andrew.burgess@embecosm.com>
 
        * ada-lang.c (ada_language_data): Remove la_macro_expansion
index 43b3af1f04f6b4e96f06100eea576ba07fc45871..20fbf33af71a3c9bd72be589b88b4852b37fb7d3 100644 (file)
@@ -13710,7 +13710,6 @@ extern const struct language_data ada_language_data =
 {
   &ada_exp_descriptor,
   ada_op_print_tab,             /* expression operators for printing */
-  &ada_varobj_ops,
 };
 
 /* Class representing the Ada language.  */
@@ -14202,6 +14201,11 @@ public:
   bool store_sym_names_in_linkage_form_p () const override
   { return true; }
 
+  /* See language.h.  */
+
+  const struct lang_varobj_ops *varobj_ops () const override
+  { return &ada_varobj_ops; }
+
 protected:
   /* See language.h.  */
 
index a478dd81b2327d4720b1c9824d472400aa17d371..9b21da150449d445ba5a3beba03901329035e69c 100644 (file)
@@ -877,7 +877,6 @@ extern const struct language_data c_language_data =
 {
   &exp_descriptor_c,
   c_op_print_tab,              /* expression operators for printing */
-  &c_varobj_ops,
 };
 
 /* Class representing the C language.  */
@@ -988,7 +987,6 @@ extern const struct language_data cplus_language_data =
 {
   &exp_descriptor_c,
   c_op_print_tab,              /* expression operators for printing */
-  &cplus_varobj_ops,
 };
 
 /* A class for the C++ language.  */
@@ -1176,6 +1174,11 @@ public:
   enum macro_expansion macro_expansion () const override
   { return macro_expansion_c; }
 
+  /* See language.h.  */
+
+  const struct lang_varobj_ops *varobj_ops () const override
+  { return &cplus_varobj_ops; }
+
 protected:
 
   /* See language.h.  */
@@ -1197,7 +1200,6 @@ extern const struct language_data asm_language_data =
 {
   &exp_descriptor_c,
   c_op_print_tab,              /* expression operators for printing */
-  &default_varobj_ops,
 };
 
 /* A class for the ASM language.  */
@@ -1269,7 +1271,6 @@ extern const struct language_data minimal_language_data =
 {
   &exp_descriptor_c,
   c_op_print_tab,              /* expression operators for printing */
-  &default_varobj_ops,
 };
 
 /* A class for the minimal language.  */
index 348702276e6f37f11ca225121e85abb700d0a2ec..95175af4074b9dc560a7290591c738cc4d19d2e7 100644 (file)
@@ -130,7 +130,6 @@ extern const struct language_data d_language_data =
 {
   &exp_descriptor_c,
   d_op_print_tab,              /* Expression operators for printing.  */
-  &default_varobj_ops,
 };
 
 /* Class representing the D language.  */
index cd596b5df4771930f8ec2a015f97be6f25aaff09..d333055510fe4e88880003feb2806167d432d9fd 100644 (file)
@@ -488,7 +488,6 @@ extern const struct language_data f_language_data =
 {
   &exp_descriptor_f,
   f_op_print_tab,              /* expression operators for printing */
-  &default_varobj_ops,
 };
 
 /* Class representing the Fortran language.  */
index 92d2819ac4af5a364faa634a0545de68988a13ad..c37e918e42ade6ce444a6206044bab37361b8eb7 100644 (file)
@@ -510,7 +510,6 @@ extern const struct language_data go_language_data =
 {
   &exp_descriptor_c,
   go_op_print_tab,             /* Expression operators for printing.  */
-  &default_varobj_ops,
 };
 
 /* Class representing the Go language.  */
index d255035495b41429a327031b468d1cdbf0b2f58f..bcffd3e133806914d96c6fa43f5333e148e35268 100644 (file)
@@ -764,6 +764,16 @@ language_defn::get_symbol_name_matcher_inner
   return default_symbol_name_matcher;
 }
 
+/* See language.h.  */
+
+const struct lang_varobj_ops *
+language_defn::varobj_ops () const
+{
+  /* The ops for the C language are suitable for the vast majority of the
+     supported languages.  */
+  return &c_varobj_ops;
+}
+
 /* Return true if TYPE is a string type, otherwise return false.  This
    default implementation only detects TYPE_CODE_STRING.  */
 
@@ -800,7 +810,6 @@ extern const struct language_data unknown_language_data =
 {
   &exp_descriptor_standard,
   unk_op_print_tab,            /* expression operators for printing */
-  &default_varobj_ops,
 };
 
 /* Class representing the unknown language.  */
@@ -933,7 +942,6 @@ extern const struct language_data auto_language_data =
 {
   &exp_descriptor_standard,
   unk_op_print_tab,            /* expression operators for printing */
-  &default_varobj_ops,
 };
 
 /* Class representing the fake "auto" language.  */
index a2a970e192b264b6f64d0ea2661baac0d23d561c..414488ddfbda664cca44ad451e9bc924f2d82456 100644 (file)
@@ -176,9 +176,6 @@ struct language_data
     /* Table for printing expressions.  */
 
     const struct op_print *la_op_print_tab;
-
-    /* Various operations on varobj.  */
-    const struct lang_varobj_ops *la_varobj_ops;
   };
 
 /* Base class from which all other language classes derive.  */
@@ -565,6 +562,11 @@ struct language_defn : language_data
   virtual enum macro_expansion macro_expansion () const
   { return macro_expansion_no; }
 
+  /* Return a structure containing various operations on varobj specific
+     for this language.  */
+
+  virtual const struct lang_varobj_ops *varobj_ops () const;
+
 protected:
 
   /* This is the overridable part of the GET_SYMBOL_NAME_MATCHER method.
index ac251af24e8b1e7d977e1d4dfbe8cf38df78620e..c5206bbf9010e32bd2d0026d0880e4d2f7e55ed6 100644 (file)
@@ -201,7 +201,6 @@ extern const struct language_data m2_language_data =
 {
   &exp_descriptor_modula2,
   m2_op_print_tab,             /* expression operators for printing */
-  &default_varobj_ops,
 };
 
 /* Class representing the M2 language.  */
index 2246e125fc302edfc3c877e747ea24ea32192a1e..523902a0774ff0426245762435fe1b63d13d152d 100644 (file)
@@ -325,7 +325,6 @@ extern const struct language_data objc_language_data =
 {
   &exp_descriptor_standard,
   objc_op_print_tab,           /* Expression operators for printing */
-  &default_varobj_ops,
 };
 
 /* Class representing the Objective-C language.  */
index 8f19f253cc96efe531131649b90d59eeac6ef9e5..38dc73d1f22455366c9d32fb2d2cfff001a66528 100644 (file)
@@ -1008,7 +1008,6 @@ extern const struct language_data opencl_language_data =
 {
   &exp_descriptor_opencl,
   c_op_print_tab,              /* expression operators for printing */
-  &default_varobj_ops,
 };
 
 /* Class representing the OpenCL language.  */
index aa2b9fcb8cace149cdaeec8e80bb82260ae11471..6dd0b988a545c818d80d39a1d5a2dcb1bdefc2c6 100644 (file)
@@ -254,7 +254,6 @@ extern const struct language_data pascal_language_data =
 {
   &exp_descriptor_standard,
   pascal_op_print_tab,         /* expression operators for printing */
-  &default_varobj_ops,
 };
 
 /* Class representing the Pascal language.  */
index 2c82ddb7abc9d41020303cc92f931970b37d3f8f..96abca182415c9b7dda5e719005b496cd229abe1 100644 (file)
@@ -1903,7 +1903,6 @@ extern const struct language_data rust_language_data =
 {
   &exp_descriptor_rust,
   c_op_print_tab,              /* expression operators for printing */
-  &default_varobj_ops,
 };
 
 /* Class representing the Rust language.  */
index 3358be4e77b48886f66301a592dad6e01d10938a..85530e3f3cf1f50bb3a89608a4a36187c8e30428 100644 (file)
@@ -386,7 +386,7 @@ varobj_create (const char *objname,
        }
 
       /* Set language info */
-      var->root->lang_ops = var->root->exp->language_defn->la_varobj_ops;
+      var->root->lang_ops = var->root->exp->language_defn->varobj_ops ();
 
       install_new_value (var.get (), value, 1 /* Initial assignment */);
 
index 3e6abaa709f90d043f7de5895adac9162c491107..7831e76b9736f8a513c224f4a4c979545a90b452 100644 (file)
@@ -233,8 +233,6 @@ extern const struct lang_varobj_ops c_varobj_ops;
 extern const struct lang_varobj_ops cplus_varobj_ops;
 extern const struct lang_varobj_ops ada_varobj_ops;
 
-#define default_varobj_ops c_varobj_ops
-
 /* Non-zero if we want to see trace of varobj level stuff.  */
 
 extern unsigned int varobjdebug;