# HG changeset patch # User Arun Giridhar # Date 1675356084 18000 # Node ID e25bf4beb488b389bb1019356a452a6f7e2e31f8 # Parent 142dc0aaa98ce5daed0de1d440fea19710edd548 Replace various iterators with range-based loops (bug #63738) Replace various iterator-based loops with range-based loops where possible, for brevity. * libgui/src/documentation-bookmarks.cc: Use range-based loop * libgui/src/documentation.cc: Use range-based loop * libgui/src/files-dock-widget.cc: Use range-based loop * libgui/src/history-dock-widget.cc: Use range-based loop * libinterp/corefcn/gl-render.cc: Use range-based loop * libinterp/corefcn/gl2ps-print.cc: Use range-based loop * libinterp/corefcn/graphics.cc: Use range-based loop * libinterp/corefcn/sysdep.cc: Use range-based loop * libinterp/dldfcn/__init_fltk__.cc: Use range-based loop * libinterp/octave-value/cdef-class.cc: Use range-based loop * libinterp/octave-value/cdef-package.cc: Use range-based loop * libgui/src/find-files-model.cc: Add FIXME to note sorted insertion. * src/octave-svgconvert.cc: Use range-based loop, add FIXME to note duplicate code, eliminate loop with call to 2-argument constructor. diff -r 142dc0aaa98c -r e25bf4beb488 libgui/src/documentation-bookmarks.cc --- a/libgui/src/documentation-bookmarks.cc Wed Feb 01 16:10:44 2023 -0500 +++ b/libgui/src/documentation-bookmarks.cc Thu Feb 02 11:41:24 2023 -0500 @@ -365,11 +365,9 @@ { QList items = m_tree->selectedItems (); - for (auto it = items.begin () ; it != items.end (); it++) - { - if (*it) - m_tree->takeTopLevelItem (m_tree->indexOfTopLevelItem (*it)); - } + for (const auto& it : items) + if (it) + m_tree->takeTopLevelItem (m_tree->indexOfTopLevelItem (it)); } void documentation_bookmarks::show_filter (bool) diff -r 142dc0aaa98c -r e25bf4beb488 libgui/src/documentation.cc --- a/libgui/src/documentation.cc Wed Feb 01 16:10:44 2023 -0500 +++ b/libgui/src/documentation.cc Thu Feb 02 11:41:24 2023 -0500 @@ -514,14 +514,14 @@ // Remove the quotes we added QString search_string = m_internal_search; - for (auto r = res.begin (); r != res.end (); r++) + for (const auto& r : res) { #if defined (HAVE_QHELPSEARCHQUERYWIDGET_SEARCHINPUT) - QString title = r->title ().toLower (); - QUrl tmpurl = r->url (); + QString title = r.title ().toLower (); + QUrl tmpurl = r.url (); #else - QString title = r->second.toLower (); - QUrl tmpurl = r->first; + QString title = r.second.toLower (); + QUrl tmpurl = r.first; #endif if (title.contains (search_string.toLower ())) { diff -r 142dc0aaa98c -r e25bf4beb488 libgui/src/files-dock-widget.cc --- a/libgui/src/files-dock-widget.cc Wed Feb 01 16:10:44 2023 -0500 +++ b/libgui/src/files-dock-widget.cc Thu Feb 02 11:41:24 2023 -0500 @@ -726,9 +726,9 @@ QItemSelectionModel *m = m_file_tree_view->selectionModel (); QModelIndexList rows = m->selectedRows (); - for (auto it = rows.begin (); it != rows.end (); it++) + for (const auto& it : rows) { - QFileInfo file = m_file_system_model->fileInfo (*it); + QFileInfo file = m_file_system_model->fileInfo (it); if (file.exists ()) display_directory (file.absoluteFilePath ()); } @@ -740,9 +740,9 @@ QItemSelectionModel *m = m_file_tree_view->selectionModel (); QModelIndexList rows = m->selectedRows (); - for (auto it = rows.begin (); it != rows.end (); it++) + for (const auto& it : rows) { - QFileInfo file = m_file_system_model->fileInfo (*it); + QFileInfo file = m_file_system_model->fileInfo (it); if (file.exists ()) emit open_file (file.absoluteFilePath ()); } @@ -753,8 +753,8 @@ QItemSelectionModel *m = m_file_tree_view->selectionModel (); QModelIndexList rows = m->selectedRows (); - for (auto it = rows.begin (); it != rows.end (); it++) - open_item_in_app (*it); + for (const auto& it : rows) + open_item_in_app (it); } void files_dock_widget::contextmenu_copy_selection (bool) @@ -764,10 +764,9 @@ QStringList selection; - for (auto it = rows.begin (); it != rows.end (); it++) + for (const auto& it : rows) { - QFileInfo info = m_file_system_model->fileInfo (*it); - + QFileInfo info = m_file_system_model->fileInfo (it); selection << info.fileName (); } @@ -899,11 +898,9 @@ QList infos; - for (auto it = rows.begin (); it != rows.end (); it++) + for (const auto& idx : rows) { - QModelIndex index = *it; - - QFileInfo info = m_file_system_model->fileInfo (index); + QFileInfo info = m_file_system_model->fileInfo (idx); if (info.exists () && ((dir & info.isDir ()) || (! dir && info.isFile ()))) diff -r 142dc0aaa98c -r e25bf4beb488 libgui/src/find-files-model.cc --- a/libgui/src/find-files-model.cc Wed Feb 01 16:10:44 2023 -0500 +++ b/libgui/src/find-files-model.cc Thu Feb 02 11:41:24 2023 -0500 @@ -111,6 +111,9 @@ QList::Iterator it; find_file_less_than less_than (m_sortorder); + // FIXME: This loop is trying to insert info in a sorted QList. + // Is there a library function or data structure + // that can do this without a loop? for (it = m_files.begin (); it != m_files.end (); it++) { if (less_than (info, *it)) diff -r 142dc0aaa98c -r e25bf4beb488 libgui/src/history-dock-widget.cc --- a/libgui/src/history-dock-widget.cc Wed Feb 01 16:10:44 2023 -0500 +++ b/libgui/src/history-dock-widget.cc Thu Feb 02 11:41:24 2023 -0500 @@ -179,13 +179,13 @@ QItemSelectionModel *selectionModel = m_history_list_view->selectionModel (); QModelIndexList rows = selectionModel->selectedRows (); bool prev_valid_row = false; - for (auto it = rows.begin (); it != rows.end (); it++) + for (const auto& it : rows) { - if ((*it).isValid ()) + if (it.isValid ()) { if (prev_valid_row) text += '\n'; - text += (*it).data ().toString (); + text += it.data ().toString (); prev_valid_row = true; } } @@ -196,11 +196,9 @@ { QItemSelectionModel *selectionModel = m_history_list_view->selectionModel (); QModelIndexList rows = selectionModel->selectedRows (); - for (auto it = rows.begin () ; it != rows.end (); it++) - { - if ((*it).isValid ()) - emit command_double_clicked ((*it).data ().toString ()); - } + for (const auto& it : rows) + if (it.isValid ()) + emit command_double_clicked (it.data ().toString ()); } void history_dock_widget::handle_contextmenu_create_script (bool) @@ -210,13 +208,13 @@ QModelIndexList rows = selectionModel->selectedRows (); bool prev_valid_row = false; - for (auto it = rows.begin (); it != rows.end (); it++) + for (const auto& it : rows) { - if ((*it).isValid ()) + if (it.isValid ()) { if (prev_valid_row) text += '\n'; - text += (*it).data ().toString (); + text += it.data ().toString (); prev_valid_row = true; } } diff -r 142dc0aaa98c -r e25bf4beb488 libinterp/corefcn/gl-render.cc --- a/libinterp/corefcn/gl-render.cc Wed Feb 01 16:10:44 2023 -0500 +++ b/libinterp/corefcn/gl-render.cc Thu Feb 02 11:41:24 2023 -0500 @@ -2273,10 +2273,8 @@ m_glfcns.glDisable (GL_DEPTH_TEST); - for (it = obj_list.begin (); it != obj_list.end (); it++) + for (const graphics_object& go : obj_list) { - graphics_object go = (*it); - set_clipping (go.get_properties ().is_clipping ()); draw (go); } diff -r 142dc0aaa98c -r e25bf4beb488 libinterp/corefcn/gl2ps-print.cc --- a/libinterp/corefcn/gl2ps-print.cc Wed Feb 01 16:10:44 2023 -0500 +++ b/libinterp/corefcn/gl2ps-print.cc Thu Feb 02 11:41:24 2023 -0500 @@ -1010,8 +1010,8 @@ // provide an x coordinate for each character in the string os << "x=\""; std::vector xdata = p->get_xdata (); - for (auto q = xdata.begin (); q != xdata.end (); q++) - os << (*q) << " "; + for (const auto& q : xdata) + os << q << " "; os << '"'; os << '>'; @@ -1022,10 +1022,10 @@ else { const std::string str = p->get_string (); - for (auto q = str.begin (); q != str.end (); q++) + for (const auto& q : str) { std::stringstream chr; - chr << *q; + chr << q; if (chr.str () == "\"") os << """; else if (chr.str () == "'") diff -r 142dc0aaa98c -r e25bf4beb488 libinterp/corefcn/graphics.cc --- a/libinterp/corefcn/graphics.cc Wed Feb 01 16:10:44 2023 -0500 +++ b/libinterp/corefcn/graphics.cc Thu Feb 02 11:41:24 2023 -0500 @@ -2541,11 +2541,11 @@ { octave_scalar_map m; - for (auto p = begin (); p != end (); p++) - { - std::string prefix = prefix_arg + p->first; - - for (const auto& prop_val : p->second) + for (const auto& p : *this) + { + std::string prefix = prefix_arg + p.first; + + for (const auto& prop_val : p.second) m.assign (prefix + prop_val.first, prop_val.second); } @@ -3031,10 +3031,9 @@ { octave_scalar_map m; - for (std::map::const_iterator - it = m_all_props.begin (); it != m_all_props.end (); ++it) - if (all || ! it->second.is_hidden ()) - m.assign (it->second.get_name (), it->second.get ()); + for (const auto& it : m_all_props) + if (all || ! it.second.is_hidden ()) + m.assign (it.second.get_name (), it.second.get ()); return m; } diff -r 142dc0aaa98c -r e25bf4beb488 libinterp/corefcn/sysdep.cc --- a/libinterp/corefcn/sysdep.cc Wed Feb 01 16:10:44 2023 -0500 +++ b/libinterp/corefcn/sysdep.cc Thu Feb 02 11:41:24 2023 -0500 @@ -1134,10 +1134,9 @@ error ("winqueryreg: error %ld reading names from registry", retval); Cell fieldnames (dim_vector (1, fields.size ())); - std::size_t i; - std::list::const_iterator it; - for (i = 0, it = fields.begin (); it != fields.end (); ++it, ++i) - fieldnames(i) = *it; + std::size_t i = 0; + for (const auto& it : fields) + fieldnames(i++) = it; return ovl (fieldnames); } diff -r 142dc0aaa98c -r e25bf4beb488 libinterp/dldfcn/__init_fltk__.cc --- a/libinterp/dldfcn/__init_fltk__.cc Wed Feb 01 16:10:44 2023 -0500 +++ b/libinterp/dldfcn/__init_fltk__.cc Thu Feb 02 11:41:24 2023 -0500 @@ -2041,9 +2041,8 @@ void do_close_all () { - wm_iterator win; - for (win = windows.begin (); win != windows.end (); win++) - delete win->second; + for (auto& win : windows) + delete win.second; windows.clear (); } diff -r 142dc0aaa98c -r e25bf4beb488 libinterp/octave-value/cdef-class.cc --- a/libinterp/octave-value/cdef-class.cc Wed Feb 01 16:10:44 2023 -0500 +++ b/libinterp/octave-value/cdef-class.cc Thu Feb 02 11:41:24 2023 -0500 @@ -319,26 +319,24 @@ { load_all_methods (); - method_const_iterator it; - - for (it = m_method_map.begin (); it != m_method_map.end (); ++it) + for (const auto& it : m_method_map) { - if (include_ctor || ! it->second.is_constructor ()) + if (include_ctor || ! it.second.is_constructor ()) { - std::string nm = it->second.get_name (); + std::string nm = it.second.get_name (); if (meths.find (nm) == meths.end ()) { if (only_inherited) { - octave_value acc = it->second.get ("Access"); + octave_value acc = it.second.get ("Access"); if (! acc.is_string () || acc.string_value () == "private") continue; } - meths[nm] = it->second; + meths[nm] = it.second; } } } @@ -425,24 +423,22 @@ cdef_property>& props, int mode) { - property_const_iterator it; - - for (it = m_property_map.begin (); it != m_property_map.end (); ++it) + for (const auto& it : m_property_map) { - std::string nm = it->second.get_name (); + std::string nm = it.second.get_name (); if (props.find (nm) == props.end ()) { if (mode == property_inherited) { - octave_value acc = it->second.get ("GetAccess"); + octave_value acc = it.second.get ("GetAccess"); if (! acc.is_string () || acc.string_value () == "private") continue; } - props[nm] = it->second; + props[nm] = it.second; } } diff -r 142dc0aaa98c -r e25bf4beb488 libinterp/octave-value/cdef-package.cc --- a/libinterp/octave-value/cdef-package.cc Wed Feb 01 16:10:44 2023 -0500 +++ b/libinterp/octave-value/cdef-package.cc Thu Feb 02 11:41:24 2023 -0500 @@ -84,8 +84,8 @@ Cell retval (1, m.size ()); int i = 0; - for (auto it = m.begin (); it != m.end (); ++it, ++i) - retval(i) = to_ov (it->second); + for (const auto& it : m) + retval(i++) = to_ov (it.second); return retval; } diff -r 142dc0aaa98c -r e25bf4beb488 src/octave-svgconvert.cc --- a/src/octave-svgconvert.cc Wed Feb 01 16:10:44 2023 -0500 +++ b/src/octave-svgconvert.cc Thu Feb 02 11:41:24 2023 -0500 @@ -81,23 +81,20 @@ { QVector pts; QStringList coords = str.split (","); - for (QStringList::iterator p = coords.begin (); p != coords.end (); p += 1) - { - double pt = (*p).toDouble (); - pts.append (pt); - } + for (auto& p : coords) + pts.append (p.toDouble ()); + return pts; } +// FIXME: What's the difference between qstr2vectorf and qstr2vectord? +// Can one be called from the other to avoid code duplication, or deleted? QVector qstr2vectord (QString str) { QVector pts; QStringList coords = str.split (","); - for (QStringList::iterator p = coords.begin (); p != coords.end (); p += 1) - { - double pt = (*p).toDouble (); - pts.append (pt); - } + for (auto& p : coords) + pts.append (p.toDouble ()); return pts; } @@ -116,6 +113,8 @@ return pts; } +// FIXME: What's the difference between qstr2ptsvector and qstr2ptsvectord? +// Can one be called from the other to avoid code duplication, or deleted? QVector qstr2ptsvectord (QString str) { QVector pts; @@ -169,9 +168,7 @@ return m_polygons; // Once a polygon has been merged to another, it is marked unsuded - QVector unused; - for (auto it = m_polygons.begin (); it != m_polygons.end (); it++) - unused.push_back (false); + QVector unused (m_polygons.count (), false); bool tryagain = (m_polygons.count () > 1);