Skip to content

Commit f342e36

Browse files
authored
Merge pull request #1811 from joto/performance-fix-move
Add non-const accessor to multigeometry members for performance
2 parents d6013c4 + f1d01f1 commit f342e36

File tree

2 files changed

+9
-2
lines changed

2 files changed

+9
-2
lines changed

src/geom-from-osm.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -168,6 +168,8 @@ void create_multilinestring(geometry_t *geom,
168168
// others were not available turn it into a linestring geometry
169169
// retroactively.
170170
if (multiline.num_geometries() == 1 && !force_multi) {
171+
// This has to be done in two steps, because the set<>()
172+
// destroys the content of mulitline.
171173
auto p = std::move(multiline[0]);
172174
geom->set<linestring_t>() = std::move(p);
173175
}

src/geom.hpp

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -212,9 +212,14 @@ class multigeometry_t
212212
const_iterator cbegin() const noexcept { return m_geometry.cbegin(); }
213213
const_iterator cend() const noexcept { return m_geometry.cend(); }
214214

215-
GEOM const &operator[](std::size_t i) const noexcept
215+
GEOM const &operator[](std::size_t n) const noexcept
216216
{
217-
return m_geometry[i];
217+
return m_geometry[n];
218+
}
219+
220+
GEOM &operator[](std::size_t n) noexcept
221+
{
222+
return m_geometry[n];
218223
}
219224

220225
void remove_last()

0 commit comments

Comments
 (0)