diff --git a/GeoLib/GEOObjects.cpp b/GeoLib/GEOObjects.cpp index 114e70630b24bbe5003c7197a9c8dd957310af5f..a48c2cd0a033a0a1f01671b144a52610dedf05ea 100644 --- a/GeoLib/GEOObjects.cpp +++ b/GeoLib/GEOObjects.cpp @@ -589,30 +589,21 @@ void GEOObjects::renameGeometry(std::string const& old_name, std::string const& new_name) { _callbacks->renameGeometry(old_name, new_name); - for (auto* pnt_vec : _pnt_vecs) - { - if (pnt_vec->getName() == old_name) - { - pnt_vec->setName(new_name); - break; - } - } - for (auto* ply_vec : _ply_vecs) - { - if (ply_vec->getName() == old_name) - { - ply_vec->setName(new_name); - break; - } - } - for (auto* sfc_vec : _sfc_vecs) + + auto rename = [&old_name, &new_name](auto const& container) { - if (sfc_vec->getName() == old_name) + auto it = std::find_if(container.begin(), container.end(), + [&old_name](auto const item) + { return item->getName() == old_name; }); + if (it != container.end()) { - sfc_vec->setName(new_name); - break; + (*it)->setName(new_name); } - } + }; + + rename(_pnt_vecs); + rename(_ply_vecs); + rename(_sfc_vecs); } void markUnusedPoints(GEOObjects const& geo_objects,