Simplify minsym iteration
authorTom Tromey <tom@tromey.com>
Wed, 16 Jan 2019 14:09:55 +0000 (07:09 -0700)
committerTom Tromey <tom@tromey.com>
Thu, 17 Jan 2019 22:42:26 +0000 (15:42 -0700)
This simplifies the minimal symbol iterator, by using
minimal_symbol_count and just doing a somewhat ordinary array-like
iteration.  array_view is nearly usable, except that it is more
convenient for this iterator to return pointers rather than
references.

gdb/ChangeLog
2019-01-16  Tom Tromey  <tom@tromey.com>

* objfiles.h (class objfile_msymbols) <iterator>: Change argument
type.  Remove no-argument constructor.
<iterator::operator++>: Simplify.
<begin>: Update.
<end>: Use minimal_symbol_count.

gdb/ChangeLog
gdb/objfiles.h

index 4e562fc00900c4259d3f1c21cf2b8c004abc166f..7d1ed3fac1a5a28812eb04aa9a49d7f30010f3d5 100644 (file)
@@ -1,3 +1,11 @@
+2019-01-16  Tom Tromey  <tom@tromey.com>
+
+       * objfiles.h (class objfile_msymbols) <iterator>: Change argument
+       type.  Remove no-argument constructor.
+       <iterator::operator++>: Simplify.
+       <begin>: Update.
+       <end>: Use minimal_symbol_count.
+
 2019-01-16  Tom Tromey  <tom@tromey.com>
 
        * objfiles.h (struct objfile) <psymtabs>: New method.
index 5299a3c8e5e8a87b9b2d20c249ac18a7068bfc01..2e0fad69c0018cec79bee179e5c47b5dec2c0059 100644 (file)
@@ -591,20 +591,11 @@ public:
     typedef std::forward_iterator_tag iterator_category;
     typedef int difference_type;
 
-    explicit iterator (struct objfile *objfile)
-      : m_msym (objfile->per_bfd->msymbols)
+    explicit iterator (struct minimal_symbol *msym)
+      : m_msym (msym)
     {
-      /* Make sure to properly handle the case where there are no
-        minsyms.  */
-      if (MSYMBOL_LINKAGE_NAME (m_msym) == nullptr)
-       m_msym = nullptr;
     }
 
-    iterator ()
-      : m_msym (nullptr)
-    {
-    }
-    
     value_type operator* () const
     {
       return m_msym;
@@ -622,12 +613,7 @@ public:
 
     self_type &operator++ ()
     {
-      if (m_msym != nullptr)
-       {
-         ++m_msym;
-         if (MSYMBOL_LINKAGE_NAME (m_msym) == nullptr)
-           m_msym = nullptr;
-       }
+      ++m_msym;
       return *this;
     }
 
@@ -637,12 +623,13 @@ public:
 
   iterator begin () const
   {
-    return iterator (m_objfile);
+    return iterator (m_objfile->per_bfd->msymbols);
   }
 
   iterator end () const
   {
-    return iterator ();
+    return iterator (m_objfile->per_bfd->msymbols
+                    + m_objfile->per_bfd->minimal_symbol_count);
   }
 
 private: