diff libinterp/corefcn/load-path.cc @ 22862:e365e87371a3

maint: Use C++ range feature to simplify some for loops in libinterp/corefcn. * symtab.cc, call-stack.cc, comment-list.cc, defun.cc, dynamic-ld.cc, error.cc, ft-text-renderer.cc, gl2ps-print.cc, graphics.cc, help.cc, interpreter.cc, load-path.cc, load-save.cc, ls-mat5.cc, oct-errno.in.cc, oct-map.cc, oct-stream.cc, octave-link.cc, profiler.cc, regexp.cc, strfind.cc, symtab.h, txt-eng.h, urlwrite.cc, variables.cc: maint: Use C++ range feature to simplify some for loops in libinterp/corefcn.
author Rik <rik@octave.org>
date Mon, 05 Dec 2016 13:04:12 -0800
parents 3a2b891d0b33
children 4e3d47dc7e25
line wrap: on
line diff
--- a/libinterp/corefcn/load-path.cc	Sat Dec 03 07:37:54 2016 -0500
+++ b/libinterp/corefcn/load-path.cc	Mon Dec 05 13:04:12 2016 -0800
@@ -395,11 +395,9 @@
 {
   bool retval = false;
 
-  for (const_dir_info_list_iterator i = dir_info_list.begin ();
-       i != dir_info_list.end ();
-       i++)
+  for (const auto& d : dir_info_list)
     {
-      if (same_file (dir, i->dir_name))
+      if (same_file (dir, d.dir_name))
         {
           retval = true;
           break;
@@ -436,20 +434,20 @@
         continue;
       else
         {
-          for (file_info_list_iterator p = file_info_list.begin ();
-               p != file_info_list.end ();
-               p++)
+          for (auto fi_it = file_info_list.begin ();
+               fi_it != file_info_list.end ();
+               fi_it++)
             {
-              if (p->dir_name == dir_name)
+              if (fi_it->dir_name == dir_name)
                 {
-                  file_info fi = *p;
-
-                  file_info_list.erase (p);
+                  file_info fi_tmp = *fi_it;
+
+                  file_info_list.erase (fi_it);
 
                   if (at_end)
-                    file_info_list.push_back (fi);
+                    file_info_list.push_back (fi_tmp);
                   else
-                    file_info_list.push_front (fi);
+                    file_info_list.push_front (fi_tmp);
 
                   break;
                 }
@@ -461,38 +459,36 @@
 void
 load_path::loader::move_method_map (const std::string& dir_name, bool at_end)
 {
-  for (method_map_iterator i = method_map.begin ();
-       i != method_map.end ();
-       i++)
+  for (auto& cls_fnmap : method_map)
     {
-      std::string class_name = i->first;
-
-      fcn_map_type& fm = i->second;
+      std::string class_name = cls_fnmap.first;
+
+      fcn_map_type& fn_map = cls_fnmap.second;
 
       std::string full_dir_name
         = octave::sys::file_ops::concat (dir_name, "@" + class_name);
 
-      for (fcn_map_iterator q = fm.begin (); q != fm.end (); q++)
+      for (auto& nm_filst : fn_map)
         {
-          file_info_list_type& file_info_list = q->second;
+          file_info_list_type& file_info_list = nm_filst.second;
 
           if (file_info_list.size () == 1)
             continue;
           else
             {
-              for (file_info_list_iterator p = file_info_list.begin ();
-                   p != file_info_list.end (); p++)
+              for (auto fi_it = file_info_list.begin ();
+                   fi_it != file_info_list.end (); fi_it++)
                 {
-                  if (p->dir_name == full_dir_name)
+                  if (fi_it->dir_name == full_dir_name)
                     {
-                      file_info fi = *p;
-
-                      file_info_list.erase (p);
+                      file_info fi_tmp = *fi_it;
+
+                      file_info_list.erase (fi_it);
 
                       if (at_end)
-                        file_info_list.push_back (fi);
+                        file_info_list.push_back (fi_tmp);
                       else
-                        file_info_list.push_front (fi);
+                        file_info_list.push_front (fi_tmp);
 
                       break;
                     }
@@ -529,15 +525,14 @@
 
   dir_info::package_dir_map_type package_dir_map = di.package_dir_map;
 
-  for (dir_info::const_package_dir_map_iterator p = package_dir_map.begin ();
-       p != package_dir_map.end (); ++p)
+  for (const auto& pkg_di : package_dir_map)
     {
-      std::string full_name = p->first;
+      std::string full_name = pkg_di.first;
 
       if (! pname.empty ())
         full_name = pname + "." + full_name;
 
-      move (p->second, at_end, full_name);
+      move (pkg_di.second, at_end, full_name);
     }
 }
 
@@ -674,10 +669,9 @@
     init_dirs = elts_set;
   else
     {
-      for (std::set<std::string>::const_iterator it = init_dirs.begin ();
-           it != init_dirs.end (); it++)
+      for (const auto& init_dir : init_dirs)
         {
-          if (elts_set.find (*it) == elts_set.end ())
+          if (elts_set.find (init_dir) == elts_set.end ())
             {
               warning_with_id ("Octave:remove-init-dir",
                                "default load path altered.  Some built-in functions may not be found.  Try restoredefaultpath() to recover it.");
@@ -695,19 +689,18 @@
 
   do_clear ();
 
-  for (std::list<std::string>::const_iterator i = elts.begin ();
-       i != elts.end (); i++)
-    do_append (*i, warn);
+  for (const auto& elt : elts)
+    do_append (elt, warn);
 
   // Restore add hook and execute for all newly added directories.
   frame.run_first ();
 
-  for (dir_info_list_iterator i = dir_info_list.begin ();
-       i != dir_info_list.end ();
-       i++)
+  // FIXME: Shouldn't the test for add_hook be outside the for loop?
+  //        Why not use const here?  Does add_hook change dir_info_list?
+  for (auto& di : dir_info_list)
     {
       if (add_hook)
-        add_hook (i->dir_name);
+        add_hook (di.dir_name);
     }
 
   // Always prepend current directory.
@@ -824,13 +817,13 @@
 
       file_info_list_type& file_info_list = fcn_map[base];
 
-      for (file_info_list_iterator p = file_info_list.begin ();
-           p != file_info_list.end ();
-           p++)
+      for (auto fi_it = file_info_list.begin ();
+           fi_it != file_info_list.end ();
+           fi_it++)
         {
-          if (p->dir_name == dir)
+          if (fi_it->dir_name == dir)
             {
-              file_info_list.erase (p);
+              file_info_list.erase (fi_it);
 
               if (file_info_list.empty ())
                 fcn_map.erase (fname);
@@ -853,35 +846,32 @@
 void
 load_path::loader::remove_method_map (const std::string& dir)
 {
-  for (method_map_iterator i = method_map.begin ();
-       i != method_map.end ();
-       i++)
+  for (auto& cls_fnmap : method_map)
     {
-      std::string class_name = i->first;
-
-      fcn_map_type& fm = i->second;
+      std::string class_name = cls_fnmap.first;
+
+      fcn_map_type& fn_map = cls_fnmap.second;
 
       std::string full_dir_name
         = octave::sys::file_ops::concat (dir, "@" + class_name);
 
-      for (fcn_map_iterator q = fm.begin (); q != fm.end (); q++)
+      for (auto& nm_filst : fn_map)
         {
-          file_info_list_type& file_info_list = q->second;
+          file_info_list_type& file_info_list = nm_filst.second;
 
           if (file_info_list.size () == 1)
             continue;
           else
             {
-              for (file_info_list_iterator p = file_info_list.begin ();
-                   p != file_info_list.end (); p++)
+              for (auto fi_it = file_info_list.begin ();
+                   fi_it != file_info_list.end (); fi_it++)
                 {
-                  if (p->dir_name == full_dir_name)
+                  if (fi_it->dir_name == full_dir_name)
                     {
-                      file_info_list.erase (p);
-
+                      file_info_list.erase (fi_it);
                       // FIXME: if there are no other elements, we
-                      // should remove this element of fm but calling
-                      // erase here would invalidate the iterator q.
+                      // should remove this element of fn_map but calling
+                      // erase here would invalidate the iterator fi_it.
 
                       break;
                     }
@@ -941,15 +931,14 @@
 
   dir_info::package_dir_map_type package_dir_map = di.package_dir_map;
 
-  for (dir_info::const_package_dir_map_iterator p = package_dir_map.begin ();
-       p != package_dir_map.end (); ++p)
+  for (const auto& pkg_di : package_dir_map)
     {
-      std::string full_name = p->first;
+      std::string full_name = pkg_di.first;
 
       if (! pname.empty ())
         full_name = pname + "." + full_name;
 
-      remove (p->second, full_name);
+      remove (pkg_di.second, full_name);
     }
 }
 
@@ -980,12 +969,8 @@
 
   loader_map.clear ();
 
-  for (dir_info_list_iterator p = dir_info_list.begin ();
-       p != dir_info_list.end ();
-       p++)
+  for (auto& di : dir_info_list)
     {
-      dir_info& di = *p;
-
       di.update ();
 
       add (di, true, "", true);
@@ -1118,12 +1103,8 @@
         {
           const file_info_list_type& file_info_list = p->second;
 
-          for (const_file_info_list_iterator i = file_info_list.begin ();
-               i != file_info_list.end ();
-               i++)
+          for (const auto& fi : file_info_list)
             {
-              const file_info& fi = *i;
-
               retval = octave::sys::file_ops::concat (fi.dir_name, fcn);
 
               if (check_file_type (retval, type, fi.types,
@@ -1194,12 +1175,8 @@
         {
           const file_info_list_type& file_info_list = p->second;
 
-          for (const_file_info_list_iterator i = file_info_list.begin ();
-               i != file_info_list.end ();
-               i++)
+          for (const auto& fi : file_info_list)
             {
-              const file_info& fi = *i;
-
               retval = octave::sys::file_ops::concat (fi.dir_name, meth);
 
               bool found = check_file_type (retval, type, fi.types,
@@ -1226,14 +1203,12 @@
 
   //  update ();
 
-  const_method_map_iterator q = method_map.find (class_name);
-
-  if (q != method_map.end ())
+  const_method_map_iterator mtd_map_it = method_map.find (class_name);
+
+  if (mtd_map_it != method_map.end ())
     {
-      const fcn_map_type& m = q->second;
-
-      for (const_fcn_map_iterator p = m.begin (); p != m.end (); p++)
-        retval.push_back (p->first);
+      for (const auto& nm_filst : mtd_map_it->second)
+        retval.push_back (nm_filst.first);
     }
 
   if (! retval.empty ())
@@ -1245,11 +1220,9 @@
 bool
 load_path::is_package (const std::string& name) const
 {
-  for (const_dir_info_list_iterator p = dir_info_list.begin ();
-       p != dir_info_list.end ();
-       p++)
+  for (const auto& di : dir_info_list)
     {
-      if (p->is_package (name))
+      if (di.is_package (name))
         return true;
     }
 
@@ -1265,9 +1238,8 @@
 
   default_loader.overloads (meth, retval);
 
-  for (const_loader_map_iterator l = loader_map.begin ();
-       l != loader_map.end (); ++l)
-    l->second.overloads (meth, retval);
+  for (const auto& nm_ldr : loader_map)
+    nm_ldr.second.overloads (meth, retval);
 
   return retval;
 }
@@ -1276,14 +1248,13 @@
 load_path::loader::overloads (const std::string& meth,
                               std::list<std::string>& l) const
 {
-  for (const_method_map_iterator q = method_map.begin ();
-       q != method_map.end (); q++)
+  for (const auto& cls_fnmap : method_map)
     {
-      const fcn_map_type& m = q->second;
+      const fcn_map_type& m = cls_fnmap.second;
 
       if (m.find (meth) != m.end ())
         {
-          std::string class_name = q->first;
+          std::string class_name = cls_fnmap.first;
 
           if (! prefix.empty ())
             class_name = prefix + "." + class_name;
@@ -1354,12 +1325,9 @@
     {
       // Given name has a directory separator, so append it to each
       // element of the load path in turn.
-
-      for (const_dir_info_list_iterator p = dir_info_list.begin ();
-           p != dir_info_list.end ();
-           p++)
+      for (const auto& di : dir_info_list)
         {
-          std::string tfile = octave::sys::file_ops::concat (p->dir_name, file);
+          std::string tfile = octave::sys::file_ops::concat (di.dir_name, file);
 
           octave::sys::file_stat fs (tfile);
 
@@ -1370,19 +1338,16 @@
   else
     {
       // Look in cache.
-
-      for (const_dir_info_list_iterator p = dir_info_list.begin ();
-           p != dir_info_list.end ();
-           p++)
+      for (const auto & di : dir_info_list)
         {
-          string_vector all_files = p->all_files;
+          string_vector all_files = di.all_files;
 
           octave_idx_type len = all_files.numel ();
 
           for (octave_idx_type i = 0; i < len; i++)
             {
               if (all_files[i] == file)
-                return octave::sys::file_ops::concat (p->dir_name, file);
+                return octave::sys::file_ops::concat (di.dir_name, file);
             }
         }
     }
@@ -1406,15 +1371,14 @@
     }
   else
     {
-      for (const_dir_info_list_iterator p = dir_info_list.begin ();
-           p != dir_info_list.end ();
-           p++)
+      for (const auto& di : dir_info_list)
         {
-          std::string dname = octave::sys::env::make_absolute (p->dir_name);
+          std::string dname = octave::sys::env::make_absolute (di.dir_name);
 
           size_t dname_len = dname.length ();
 
-          if (dname.substr (dname_len - 1) == octave::sys::file_ops::dir_sep_str ())
+          if (dname.substr (dname_len - 1)
+              == octave::sys::file_ops::dir_sep_str ())
             {
               dname = dname.substr (0, dname_len - 1);
               dname_len--;
@@ -1426,10 +1390,10 @@
               && octave::sys::file_ops::is_dir_sep (dname[dname_len - dir_len - 1])
               && dir == dname.substr (dname_len - dir_len))
             {
-              octave::sys::file_stat fs (p->dir_name);
+              octave::sys::file_stat fs (di.dir_name);
 
               if (fs.exists () && fs.is_dir ())
-                return p->dir_name;
+                return di.dir_name;
             }
         }
     }
@@ -1453,15 +1417,14 @@
     }
   else
     {
-      for (const_dir_info_list_iterator p = dir_info_list.begin ();
-           p != dir_info_list.end ();
-           p++)
+      for (const auto& di : dir_info_list)
         {
-          std::string dname = octave::sys::env::make_absolute (p->dir_name);
+          std::string dname = octave::sys::env::make_absolute (di.dir_name);
 
           size_t dname_len = dname.length ();
 
-          if (dname.substr (dname_len - 1) == octave::sys::file_ops::dir_sep_str ())
+          if (dname.substr (dname_len - 1)
+              == octave::sys::file_ops::dir_sep_str ())
             {
               dname = dname.substr (0, dname_len - 1);
               dname_len--;
@@ -1473,10 +1436,10 @@
               && octave::sys::file_ops::is_dir_sep (dname[dname_len - dir_len - 1])
               && dir == dname.substr (dname_len - dir_len))
             {
-              octave::sys::file_stat fs (p->dir_name);
+              octave::sys::file_stat fs (di.dir_name);
 
               if (fs.exists () && fs.is_dir ())
-                retlist.push_back (p->dir_name);
+                retlist.push_back (di.dir_name);
             }
         }
     }
@@ -1514,11 +1477,10 @@
             }
           else
             {
-              for (const_dir_info_list_iterator p = dir_info_list.begin ();
-                   p != dir_info_list.end ();
-                   p++)
+              for (const auto& di : dir_info_list)
                 {
-                  std::string tfile = octave::sys::file_ops::concat (p->dir_name, file);
+                  std::string tfile;
+                  tfile = octave::sys::file_ops::concat (di.dir_name, file);
 
                   octave::sys::file_stat fs (tfile);
 
@@ -1533,11 +1495,9 @@
 
   rel_flist.resize (rel_flen);
 
-  for (const_dir_info_list_iterator p = dir_info_list.begin ();
-       p != dir_info_list.end ();
-       p++)
+  for (const auto& di : dir_info_list)
     {
-      string_vector all_files = p->all_files;
+      string_vector all_files = di.all_files;
 
       octave_idx_type len = all_files.numel ();
 
@@ -1547,7 +1507,7 @@
             {
               if (all_files[i] == rel_flist[j])
                 {
-                  dir_name = p->dir_name;
+                  dir_name = di.dir_name;
                   file_name = rel_flist[j];
 
                   goto done;
@@ -1594,11 +1554,10 @@
             }
           else
             {
-              for (const_dir_info_list_iterator p = dir_info_list.begin ();
-                   p != dir_info_list.end ();
-                   p++)
+              for (const auto& di : dir_info_list)
                 {
-                  std::string tfile = octave::sys::file_ops::concat (p->dir_name, file);
+                  std::string tfile;
+                  tfile = octave::sys::file_ops::concat (di.dir_name, file);
 
                   octave::sys::file_stat fs (tfile);
 
@@ -1613,10 +1572,9 @@
 
   rel_flist.resize (rel_flen);
 
-  for (const_dir_info_list_iterator p = dir_info_list.begin ();
-       p != dir_info_list.end (); p++)
+  for (const auto& di : dir_info_list)
     {
-      string_vector all_files = p->all_files;
+      string_vector all_files = di.all_files;
 
       octave_idx_type len = all_files.numel ();
 
@@ -1625,8 +1583,8 @@
           for (octave_idx_type j = 0; j < rel_flen; j++)
             {
               if (all_files[i] == rel_flist[j])
-                retlist.push_back (octave::sys::file_ops::concat (p->dir_name,
-                                                     rel_flist[j]));
+                retlist.push_back (octave::sys::file_ops::concat (di.dir_name,
+                                                                  rel_flist[j]));
             }
         }
     }
@@ -1643,10 +1601,8 @@
 
   octave_idx_type k = 0;
 
-  for (const_dir_info_list_iterator i = dir_info_list.begin ();
-       i != dir_info_list.end ();
-       i++)
-    retval[k++] = i->dir_name;
+  for (const auto& di : dir_info_list)
+    retval[k++] = di.dir_name;
 
   return retval;
 }
@@ -1656,10 +1612,8 @@
 {
   std::list<std::string> retval;
 
-  for (const_dir_info_list_iterator i = dir_info_list.begin ();
-       i != dir_info_list.end ();
-       i++)
-    retval.push_back (i->dir_name);
+  for (const auto& di : dir_info_list)
+    retval.push_back (di.dir_name);
 
   return retval;
 }
@@ -1707,10 +1661,8 @@
 
   octave_idx_type count = 0;
 
-  for (const_fcn_map_iterator p = fcn_map.begin ();
-       p != fcn_map.end ();
-       p++)
-    retval[count++] = p->first;
+  for (const auto& nm_filst : fcn_map)
+    retval[count++] = nm_filst.first;
 
   return retval;
 }
@@ -1765,13 +1717,11 @@
 print_fcn_list (std::ostream& os,
                 const load_path::dir_info::fcn_file_map_type& lst)
 {
-  for (load_path::dir_info::const_fcn_file_map_iterator p = lst.begin ();
-       p != lst.end ();
-       p++)
+  for (const auto& nm_typ : lst)
     {
-      os << "  " << p->first << " (";
-
-      print_types (os, p->second);
+      os << "  " << nm_typ.first << " (";
+
+      print_types (os, nm_typ.second);
 
       os << ")\n";
     }
@@ -1786,13 +1736,11 @@
 
   octave_idx_type count = 0;
 
-  for (load_path::dir_info::const_fcn_file_map_iterator p = lst.begin ();
-       p != lst.end ();
-       p++)
+  for (const auto& nm_typ : lst)
     {
-      std::string nm = p->first;
-
-      int types = p->second;
+      std::string nm = nm_typ.first;
+
+      int types = nm_typ.second;
 
       if (types & load_path::OCT_FILE)
         nm += ".oct";
@@ -1810,31 +1758,28 @@
 void
 load_path::do_display (std::ostream& os) const
 {
-  for (const_dir_info_list_iterator i = dir_info_list.begin ();
-       i != dir_info_list.end ();
-       i++)
+  for (const auto& di : dir_info_list)
     {
-      string_vector fcn_files = i->fcn_files;
+      string_vector fcn_files = di.fcn_files;
 
       if (! fcn_files.empty ())
         {
-          os << "\n*** function files in " << i->dir_name << ":\n\n";
+          os << "\n*** function files in " << di.dir_name << ":\n\n";
 
           fcn_files.list_in_columns (os);
         }
 
       const dir_info::method_file_map_type& method_file_map
-        = i->method_file_map;
+        = di.method_file_map;
 
       if (! method_file_map.empty ())
         {
-          for (dir_info::const_method_file_map_iterator
-               p = method_file_map.begin (); p != method_file_map.end (); p++)
+          for (const auto& cls_ci : method_file_map)
             {
-              os << "\n*** methods in " << i->dir_name
-                 << "/@" << p->first << ":\n\n";
-
-              const dir_info::class_info& ci = p->second;
+              os << "\n*** methods in " << di.dir_name
+                 << "/@" << cls_ci.first << ":\n\n";
+
+              const dir_info::class_info& ci = cls_ci.second;
 
               string_vector method_files = get_file_list (ci.method_file_map);
 
@@ -1845,9 +1790,8 @@
 
   default_loader.display (os);
 
-  for (const_loader_map_iterator l = loader_map.begin ();
-       l != loader_map.end (); ++l)
-    l->second.display (os);
+  for (const auto& nm_ldr : loader_map)
+    nm_ldr.second.display (os);
 }
 
 // True if a path is contained in a path list separated by path_sep_char
@@ -1880,15 +1824,14 @@
 
   dir_info::package_dir_map_type package_dir_map = di.package_dir_map;
 
-  for (dir_info::const_package_dir_map_iterator p = package_dir_map.begin ();
-       p != package_dir_map.end (); ++p)
+  for (const auto& pkg_di : package_dir_map)
     {
-      std::string full_name = p->first;
+      std::string full_name = pkg_di.first;
 
       if (! pname.empty ())
         full_name = pname + "." + full_name;
 
-      add (p->second, at_end, full_name);
+      add (pkg_di.second, at_end, full_name);
     }
 }
 
@@ -2012,34 +1955,28 @@
   // <CLASS_NAME, CLASS_INFO>
   dir_info::method_file_map_type method_file_map = di.method_file_map;
 
-  for (dir_info::const_method_file_map_iterator q = method_file_map.begin ();
-       q != method_file_map.end ();
-       q++)
+  for (const auto& cls_ci : method_file_map)
     {
-      std::string class_name = q->first;
+      std::string class_name = cls_ci.first;
 
       fcn_map_type& fm = method_map[class_name];
 
       std::string full_dir_name
         = octave::sys::file_ops::concat (dir_name, "@" + class_name);
 
-      const dir_info::class_info& ci = q->second;
+      const dir_info::class_info& ci = cls_ci.second;
 
       // <FCN_NAME, TYPES>
       const dir_info::fcn_file_map_type& m = ci.method_file_map;
 
-      for (dir_info::const_fcn_file_map_iterator p = m.begin ();
-           p != m.end ();
-           p++)
+      for (const auto& nm_typ : m)
         {
-          std::string base = p->first;
-
-          int types = p->second;
+          std::string base = nm_typ.first;
+          int types = nm_typ.second;
 
           file_info_list_type& file_info_list = fm[base];
 
           file_info_list_iterator p2 = file_info_list.begin ();
-
           while (p2 != file_info_list.end ())
             {
               if (p2->dir_name == full_dir_name)
@@ -2060,7 +1997,6 @@
           else
             {
               // FIXME: is this possible?
-
               file_info& fi = *p2;
 
               fi.types = types;
@@ -2080,65 +2016,53 @@
 {
   os << "*** loader: " << (prefix.empty () ? "<top-level>" : prefix) << "\n\n";
 
-  for (std::list<std::string>::const_iterator s = dir_list.begin ();
-       s != dir_list.end (); ++s)
-    os << *s << "\n";
+  for (const auto& dir : dir_list)
+    os << dir << "\n";
   os << "\n";
 
-  for (const_private_fcn_map_iterator i = private_fcn_map.begin ();
-       i != private_fcn_map.end (); i++)
+  for (const auto& dir_fnlst : private_fcn_map)
     {
       os << "\n*** private functions in "
-         << octave::sys::file_ops::concat (i->first, "private") << ":\n\n";
-
-      print_fcn_list (os, i->second);
+         << octave::sys::file_ops::concat (dir_fnlst.first, "private") << ":\n\n";
+
+      print_fcn_list (os, dir_fnlst.second);
     }
 
 #if defined (DEBUG_LOAD_PATH)
 
-  for (const_fcn_map_iterator i = fcn_map.begin ();
-       i != fcn_map.end ();
-       i++)
+  for (const auto& nm_filst : fcn_map)
     {
-      os << i->first << ":\n";
-
-      const file_info_list_type& file_info_list = i->second;
-
-      for (const_file_info_list_iterator p = file_info_list.begin ();
-           p != file_info_list.end ();
-           p++)
+      os << nm_filst.first << ":\n";
+
+      const file_info_list_type& file_info_list = nm_filst.second;
+
+      for (const auto& finfo : file_info_list)
         {
-          os << "  " << p->dir_name << " (";
-
-          print_types (os, p->types);
+          os << "  " << finfo.dir_name << " (";
+
+          print_types (os, finfo.types);
 
           os << ")\n";
         }
     }
 
-  for (const_method_map_iterator i = method_map.begin ();
-       i != method_map.end ();
-       i++)
+  for (const auto& cls_fnmap : method_map)
     {
-      os << "CLASS " << i->first << ":\n";
-
-      const fcn_map_type& fm = i->second;
-
-      for (const_fcn_map_iterator q = fm.begin ();
-           q != fm.end ();
-           q++)
+      os << "CLASS " << cls_fnmap.first << ":\n";
+
+      const fcn_map_type& fm = cls_fnmap.second;
+
+      for (const auto& nm_fnlst : fcn_map)
         {
-          os << "  " << q->first << ":\n";
-
-          const file_info_list_type& file_info_list = q->second;
-
-          for (const_file_info_list_iterator p = file_info_list.begin ();
-               p != file_info_list.end ();
-               p++)
+          os << "  " << nm_fnlst.first << ":\n";
+
+          const file_info_list_type& file_info_list = nm_fnlst.second;
+
+          for (const auto& finfo : file_info_list)
             {
-              os << "  " << p->dir_name << " (";
-
-              print_types (os, p->types);
+              os << "  " << finfo.dir_name << " (";
+
+              print_types (os, finfo.types);
 
               os << ")\n";
             }
@@ -2202,11 +2126,10 @@
 {
   std::list<std::string> retval;
 
-  for (const_loader_map_iterator l = loader_map.begin ();
-       l != loader_map.end (); ++l)
+  for (const auto& dir_ldr : loader_map)
     {
-      if (! only_top_level || l->first.find ('.') == std::string::npos)
-        retval.push_back (l->first);
+      if (! only_top_level || dir_ldr.first.find ('.') == std::string::npos)
+        retval.push_back (dir_ldr.first);
     }
 
   return retval;
@@ -2478,10 +2401,8 @@
       if (! append)
         std::reverse (dir_elts.begin (), dir_elts.end ());
 
-      for (const auto& p : dir_elts)
+      for (auto dir : dir_elts)
         {
-          std::string dir = p;
-
           // Remove duplicate directory separators
           dir.erase (std::unique (dir.begin (), dir.end (),
                                   [](char l, char r)
@@ -2545,12 +2466,8 @@
       std::string arg = args(i).xstring_value ("rmpath: all arguments must be strings");
       std::list<std::string> dir_elts = split_path (arg);
 
-      for (std::list<std::string>::const_iterator p = dir_elts.begin ();
-           p != dir_elts.end ();
-           p++)
+      for (const auto& dir : dir_elts)
         {
-          std::string dir = *p;
-
           //dir = regexprep (dir_elts{j}, '//+', "/");
           //dir = regexprep (dir, '/$', "");