Skip to content

Commit 32b9aad

Browse files
authored
Merge pull request #2046 from joto/geom-point
Pass points as values, other geoms as reference to add_geometry()
2 parents 17976f6 + 5aa4bd6 commit 32b9aad

File tree

2 files changed

+13
-9
lines changed

2 files changed

+13
-9
lines changed

src/geom.hpp

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
#include <cassert>
2323
#include <cmath>
2424
#include <initializer_list>
25+
#include <type_traits>
2526
#include <utility>
2627
#include <variant>
2728
#include <vector>
@@ -197,12 +198,15 @@ class multigeometry_t
197198
using iterator = typename std::vector<GEOM>::iterator;
198199
using value_type = GEOM;
199200

201+
static constexpr bool const for_point = std::is_same_v<GEOM, point_t>;
202+
200203
[[nodiscard]] std::size_t num_geometries() const noexcept
201204
{
202205
return m_geometry.size();
203206
}
204207

205-
GEOM &add_geometry(GEOM &&geom)
208+
GEOM &
209+
add_geometry(typename std::conditional_t<for_point, point_t, GEOM &&> geom)
206210
{
207211
m_geometry.push_back(std::forward<GEOM>(geom));
208212
return m_geometry.back();

tests/test-expire-from-geometry.cpp

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -332,31 +332,31 @@ TEST_CASE("expire multipoint geometry", "[NoDB]")
332332
expire_config_t const expire_config;
333333
expire_tiles et{zoom, defproj};
334334

335-
geom::point_t p1{0.0, 0.0};
336-
geom::point_t p2{15000.0, 15000.0};
335+
geom::point_t const p1{0.0, 0.0};
336+
geom::point_t const p2{15000.0, 15000.0};
337337

338338
SECTION("multipoint")
339339
{
340340
geom::multipoint_t mpt;
341-
mpt.add_geometry(std::move(p1));
342-
mpt.add_geometry(std::move(p2));
341+
mpt.add_geometry(p1);
342+
mpt.add_geometry(p2);
343343
et.from_geometry(mpt, expire_config);
344344
}
345345

346346
SECTION("geom")
347347
{
348348
geom::multipoint_t mpt;
349-
mpt.add_geometry(std::move(p1));
350-
mpt.add_geometry(std::move(p2));
349+
mpt.add_geometry(p1);
350+
mpt.add_geometry(p2);
351351
geom::geometry_t const geom{std::move(mpt)};
352352
et.from_geometry(geom, expire_config);
353353
}
354354

355355
SECTION("geom with check")
356356
{
357357
geom::multipoint_t mpt;
358-
mpt.add_geometry(std::move(p1));
359-
mpt.add_geometry(std::move(p2));
358+
mpt.add_geometry(p1);
359+
mpt.add_geometry(p2);
360360
geom::geometry_t geom{std::move(mpt)};
361361
geom.set_srid(3857);
362362
et.from_geometry_if_3857(geom, expire_config);

0 commit comments

Comments
 (0)