public inbox for gdb-cvs@sourceware.org
help / color / mirror / Atom feed
From: Pedro Alves <palves@sourceware.org>
To: gdb-cvs@sourceware.org
Subject: [binutils-gdb] Convert location_spec_type to a method
Date: Fri, 17 Jun 2022 09:23:35 +0000 (GMT)	[thread overview]
Message-ID: <20220617092335.968633858002@sourceware.org> (raw)

https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=7464aeaab47ca3fb7127223fe372489c9c7ed69e

commit 7464aeaab47ca3fb7127223fe372489c9c7ed69e
Author: Pedro Alves <pedro@palves.net>
Date:   Fri May 27 16:33:56 2022 +0100

    Convert location_spec_type to a method
    
    This converts location_spec_type to location_spec::type().
    
    Change-Id: Iff4cbfafb1cf3d22adfa142ff939b4a148e52273

Diff:
---
 gdb/breakpoint.c |  8 ++++----
 gdb/linespec.c   |  2 +-
 gdb/location.c   | 18 +++++-------------
 gdb/location.h   | 26 ++++++++++++++------------
 gdb/probe.c      |  2 +-
 5 files changed, 25 insertions(+), 31 deletions(-)

diff --git a/gdb/breakpoint.c b/gdb/breakpoint.c
index bfa9e68fdbe..e3739a772de 100644
--- a/gdb/breakpoint.c
+++ b/gdb/breakpoint.c
@@ -8453,7 +8453,7 @@ parse_breakpoint_sals (location_spec *locspec,
 {
   struct symtab_and_line cursal;
 
-  if (location_spec_type (locspec) == LINESPEC_LOCATION_SPEC)
+  if (locspec->type () == LINESPEC_LOCATION_SPEC)
     {
       const char *spec = as_linespec_location_spec (locspec)->spec_string;
 
@@ -8505,7 +8505,7 @@ parse_breakpoint_sals (location_spec *locspec,
     {
       const char *spec = NULL;
 
-      if (location_spec_type (locspec) == LINESPEC_LOCATION_SPEC)
+      if (locspec->type () == LINESPEC_LOCATION_SPEC)
 	spec = as_linespec_location_spec (locspec)->spec_string;
 
       if (!cursal.symtab
@@ -8768,7 +8768,7 @@ breakpoint_ops_for_location_spec (const location_spec *locspec,
 {
   if (locspec != nullptr)
     return (breakpoint_ops_for_location_spec_type
-	    (location_spec_type (locspec), is_tracepoint));
+	    (locspec->type (), is_tracepoint));
   return &code_breakpoint_ops;
 }
 
@@ -11673,7 +11673,7 @@ std::vector<symtab_and_line>
 code_breakpoint::decode_location_spec (location_spec *locspec,
 				       program_space *search_pspace)
 {
-  if (location_spec_type (locspec) == PROBE_LOCATION_SPEC)
+  if (locspec->type () == PROBE_LOCATION_SPEC)
     return bkpt_probe_decode_location_spec (this, locspec, search_pspace);
 
   return decode_location_spec_default (this, locspec, search_pspace);
diff --git a/gdb/linespec.c b/gdb/linespec.c
index f992477b1d6..976e728a301 100644
--- a/gdb/linespec.c
+++ b/gdb/linespec.c
@@ -3062,7 +3062,7 @@ location_spec_to_sals (linespec_parser *parser,
 {
   std::vector<symtab_and_line> result;
 
-  switch (location_spec_type (locspec))
+  switch (locspec->type ())
     {
     case LINESPEC_LOCATION_SPEC:
       {
diff --git a/gdb/location.c b/gdb/location.c
index ae056f35296..9643ea857a3 100644
--- a/gdb/location.c
+++ b/gdb/location.c
@@ -206,14 +206,6 @@ explicit_location_spec::compute_string () const
 
 /* See description in location.h.  */
 
-enum location_spec_type
-location_spec_type (const location_spec *locspec)
-{
-  return locspec->type;
-}
-
-/* See description in location.h.  */
-
 location_spec_up
 new_linespec_location_spec (const char **linespec,
 			    symbol_name_match_type match_type)
@@ -227,7 +219,7 @@ new_linespec_location_spec (const char **linespec,
 const linespec_location_spec *
 as_linespec_location_spec (const location_spec *locspec)
 {
-  gdb_assert (locspec->type == LINESPEC_LOCATION_SPEC);
+  gdb_assert (locspec->type () == LINESPEC_LOCATION_SPEC);
   return static_cast<const linespec_location_spec *> (locspec);
 }
 
@@ -246,7 +238,7 @@ new_address_location_spec (CORE_ADDR addr, const char *addr_string,
 const address_location_spec *
 as_address_location_spec (const location_spec *locspec)
 {
-  gdb_assert (locspec->type == ADDRESS_LOCATION_SPEC);
+  gdb_assert (locspec->type () == ADDRESS_LOCATION_SPEC);
   return static_cast<const address_location_spec *> (locspec);
 }
 
@@ -263,7 +255,7 @@ new_probe_location_spec (std::string &&probe)
 const probe_location_spec *
 as_probe_location_spec (const location_spec *locspec)
 {
-  gdb_assert (locspec->type == PROBE_LOCATION_SPEC);
+  gdb_assert (locspec->type () == PROBE_LOCATION_SPEC);
   return static_cast<const probe_location_spec *> (locspec);
 }
 
@@ -272,7 +264,7 @@ as_probe_location_spec (const location_spec *locspec)
 const explicit_location_spec *
 as_explicit_location_spec (const location_spec *locspec)
 {
-  gdb_assert (locspec->type == EXPLICIT_LOCATION_SPEC);
+  gdb_assert (locspec->type () == EXPLICIT_LOCATION_SPEC);
   return static_cast<const explicit_location_spec *> (locspec);
 }
 
@@ -281,7 +273,7 @@ as_explicit_location_spec (const location_spec *locspec)
 explicit_location_spec *
 as_explicit_location_spec (location_spec *locspec)
 {
-  gdb_assert (locspec->type == EXPLICIT_LOCATION_SPEC);
+  gdb_assert (locspec->type () == EXPLICIT_LOCATION_SPEC);
   return static_cast<explicit_location_spec *> (locspec);
 }
 
diff --git a/gdb/location.h b/gdb/location.h
index f3b63320c2e..9ba3a20731b 100644
--- a/gdb/location.h
+++ b/gdb/location.h
@@ -93,8 +93,11 @@ struct location_spec
     return as_string.c_str ();
   }
 
-  /* The type of this location specification.  */
-  enum location_spec_type type;
+  /* Return this location spec's type.  */
+  enum location_spec_type type () const
+  {
+    return m_type;
+  }
 
   /* Cached string representation of this location spec.  This is
      used, e.g., to save location specs to file.  */
@@ -103,25 +106,29 @@ struct location_spec
 protected:
 
   explicit location_spec (enum location_spec_type t)
-    : type (t)
+    : m_type (t)
   {
   }
 
   location_spec (enum location_spec_type t, std::string &&str)
-    : type (t),
-      as_string (std::move (str))
+    : as_string (std::move (str)),
+      m_type (t)
   {
   }
 
   location_spec (const location_spec &other)
-    : type (other.type),
-      as_string (other.as_string)
+    : as_string (other.as_string),
+      m_type (other.m_type)
   {
   }
 
   /* Compute the string representation of this object.  This is called
      by to_string when needed.  */
   virtual std::string compute_string () const = 0;
+
+private:
+  /* The type of this location specification.  */
+  enum location_spec_type m_type;
 };
 
 /* A "normal" linespec.  */
@@ -226,11 +233,6 @@ protected:
   std::string compute_string () const override;
 };
 
-/* Return the type of the given location spec.  */
-
-extern enum location_spec_type
-  location_spec_type (const location_spec *);
-
 /* Return a string representation of LOCSPEC.
    This function may return NULL for unspecified linespecs,
    e.g, LINESPEC_LOCATION_SPEC and spec_string is NULL.
diff --git a/gdb/probe.c b/gdb/probe.c
index 5371b7eca46..ad7af77f722 100644
--- a/gdb/probe.c
+++ b/gdb/probe.c
@@ -122,7 +122,7 @@ parse_probes (const location_spec *locspec,
   char *objfile_namestr = NULL, *provider = NULL, *name, *p;
   const char *arg_start, *cs;
 
-  gdb_assert (location_spec_type (locspec) == PROBE_LOCATION_SPEC);
+  gdb_assert (locspec->type () == PROBE_LOCATION_SPEC);
   arg_start = locspec->to_string ();
 
   cs = arg_start;


                 reply	other threads:[~2022-06-17  9:23 UTC|newest]

Thread overview: [no followups] expand[flat|nested]  mbox.gz  Atom feed

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20220617092335.968633858002@sourceware.org \
    --to=palves@sourceware.org \
    --cc=gdb-cvs@sourceware.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).