From ad4e49338bec429546457cb5abf95e0803271fa1 Mon Sep 17 00:00:00 2001 From: darkblue-b Date: Thu, 27 Oct 2016 19:30:50 -0700 Subject: [PATCH 1/7] geos36 constructor --- geometry-builder.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/geometry-builder.cpp b/geometry-builder.cpp index dd848a97..238ae716 100644 --- a/geometry-builder.cpp +++ b/geometry-builder.cpp @@ -557,7 +557,9 @@ geometry_builder::pg_geoms_t geometry_builder::build_both(const multinodelist_t try { - GeometryFactory gf; + // geos36 - auto-allocation no longer supported in GEOS 3.6+ + GeometryFactory &gf = *GeometryFactory::getDefaultInstance(); + geom_ptr mline = create_multi_line(gf, xnodes); //geom_ptr noded (segment->Union(mline.get())); LineMerger merger; From aaec07af6ae5e3ec78c7cc2684c17c90fa0a4ea3 Mon Sep 17 00:00:00 2001 From: darkblue-b Date: Thu, 27 Oct 2016 19:56:50 -0700 Subject: [PATCH 2/7] geos36 * only --- geometry-builder.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/geometry-builder.cpp b/geometry-builder.cpp index 238ae716..495f832b 100644 --- a/geometry-builder.cpp +++ b/geometry-builder.cpp @@ -558,7 +558,7 @@ geometry_builder::pg_geoms_t geometry_builder::build_both(const multinodelist_t try { // geos36 - auto-allocation no longer supported in GEOS 3.6+ - GeometryFactory &gf = *GeometryFactory::getDefaultInstance(); + GeometryFactory *gf = GeometryFactory::getDefaultInstance(); geom_ptr mline = create_multi_line(gf, xnodes); //geom_ptr noded (segment->Union(mline.get())); From 3fded4378e51c0b4e6ed13b59f155a2b91cf8dc4 Mon Sep 17 00:00:00 2001 From: darkblue-b Date: Thu, 27 Oct 2016 20:01:07 -0700 Subject: [PATCH 3/7] geos36 * ref --- geometry-builder.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/geometry-builder.cpp b/geometry-builder.cpp index 495f832b..e25e7023 100644 --- a/geometry-builder.cpp +++ b/geometry-builder.cpp @@ -558,7 +558,8 @@ geometry_builder::pg_geoms_t geometry_builder::build_both(const multinodelist_t try { // geos36 - auto-allocation no longer supported in GEOS 3.6+ - GeometryFactory *gf = GeometryFactory::getDefaultInstance(); + GeometryFactory *gf_p = GeometryFactory::getDefaultInstance(); + GeometryFactory& gf = *gf_p; geom_ptr mline = create_multi_line(gf, xnodes); //geom_ptr noded (segment->Union(mline.get())); From 9eb20b9ec02e893be8a612c865ff405ba3410d5f Mon Sep 17 00:00:00 2001 From: darkblue-b Date: Thu, 27 Oct 2016 20:03:53 -0700 Subject: [PATCH 4/7] geos36 const --- geometry-builder.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/geometry-builder.cpp b/geometry-builder.cpp index e25e7023..664e88af 100644 --- a/geometry-builder.cpp +++ b/geometry-builder.cpp @@ -559,7 +559,7 @@ geometry_builder::pg_geoms_t geometry_builder::build_both(const multinodelist_t { // geos36 - auto-allocation no longer supported in GEOS 3.6+ GeometryFactory *gf_p = GeometryFactory::getDefaultInstance(); - GeometryFactory& gf = *gf_p; + const GeometryFactory& gf = *gf_p; geom_ptr mline = create_multi_line(gf, xnodes); //geom_ptr noded (segment->Union(mline.get())); From f9edb7e2d2097b858954d3249e11da7c4d724961 Mon Sep 17 00:00:00 2001 From: darkblue-b Date: Thu, 27 Oct 2016 20:07:10 -0700 Subject: [PATCH 5/7] geos36 const --- geometry-builder.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/geometry-builder.cpp b/geometry-builder.cpp index 664e88af..40d9d442 100644 --- a/geometry-builder.cpp +++ b/geometry-builder.cpp @@ -558,8 +558,8 @@ geometry_builder::pg_geoms_t geometry_builder::build_both(const multinodelist_t try { // geos36 - auto-allocation no longer supported in GEOS 3.6+ - GeometryFactory *gf_p = GeometryFactory::getDefaultInstance(); - const GeometryFactory& gf = *gf_p; + const GeometryFactory *gf_p = GeometryFactory::getDefaultInstance(); + GeometryFactory& gf = *gf_p; geom_ptr mline = create_multi_line(gf, xnodes); //geom_ptr noded (segment->Union(mline.get())); From 65aa13ed4f28a0443ba77e13ce5b441118985ce2 Mon Sep 17 00:00:00 2001 From: darkblue-b Date: Thu, 27 Oct 2016 20:44:59 -0700 Subject: [PATCH 6/7] geos36 const gf all around --- geometry-builder.cpp | 33 ++++++++++++++++++++++++--------- geometry-builder.hpp | 2 +- 2 files changed, 25 insertions(+), 10 deletions(-) diff --git a/geometry-builder.cpp b/geometry-builder.cpp index 40d9d442..de9b865d 100644 --- a/geometry-builder.cpp +++ b/geometry-builder.cpp @@ -74,7 +74,7 @@ void coords2nodes(CoordinateSequence * coords, nodelist_t &nodes) } } -coord_ptr nodes2coords(GeometryFactory &gf, const nodelist_t &nodes) +coord_ptr nodes2coords(const GeometryFactory &gf, const nodelist_t &nodes) { coord_ptr coords(gf.getCoordinateSequenceFactory()->create(size_t(0), size_t(2))); @@ -85,7 +85,7 @@ coord_ptr nodes2coords(GeometryFactory &gf, const nodelist_t &nodes) return coords; } -geom_ptr create_multi_line(GeometryFactory &gf, const multinodelist_t &xnodes) +geom_ptr create_multi_line(const GeometryFactory &gf, const multinodelist_t &xnodes) { // XXX leaks memory if an exception is thrown std::unique_ptr > lines(new std::vector); @@ -202,7 +202,7 @@ void geometry_builder::pg_geom_t::set(const geos::geom::Geometry *g, bool poly, } } -geom_ptr geometry_builder::create_simple_poly(GeometryFactory &gf, +geom_ptr geometry_builder::create_simple_poly(const GeometryFactory &gf, std::unique_ptr coords) const { std::unique_ptr shell(gf.createLinearRing(coords.release())); @@ -227,7 +227,10 @@ geometry_builder::pg_geom_t geometry_builder::get_wkb_simple(const nodelist_t &n try { - GeometryFactory gf; + // geos36 - auto-allocation no longer supported in GEOS 3.6+ + const GeometryFactory *gf_p = GeometryFactory::getDefaultInstance(); + const GeometryFactory& gf = *gf_p; + auto coords = nodes2coords(gf, nodes); if (polygon && is_polygon_line(coords.get())) { auto geom = create_simple_poly(gf, std::move(coords)); @@ -263,7 +266,10 @@ geometry_builder::pg_geoms_t geometry_builder::get_wkb_split(const nodelist_t &n try { - GeometryFactory gf; + // geos36 - auto-allocation no longer supported in GEOS 3.6+ + const GeometryFactory *gf_p = GeometryFactory::getDefaultInstance(); + const GeometryFactory& gf = *gf_p; + auto coords = nodes2coords(gf, nodes); if (polygon && is_polygon_line(coords.get())) { @@ -340,7 +346,10 @@ geometry_builder::pg_geoms_t geometry_builder::get_wkb_split(const nodelist_t &n } int geometry_builder::parse_wkb(const char* wkb, multinodelist_t &nodes, bool *polygon) { - GeometryFactory gf; + // geos36 - auto-allocation no longer supported in GEOS 3.6+ + const GeometryFactory *gf_p = GeometryFactory::getDefaultInstance(); + const GeometryFactory& gf = *gf_p; + geos::io::WKBReader reader(gf); *polygon = false; @@ -395,7 +404,10 @@ geometry_builder::pg_geoms_t geometry_builder::build_polygons(const multinodelis try { - GeometryFactory gf; + // geos36 - auto-allocation no longer supported in GEOS 3.6+ + const GeometryFactory *gf_p = GeometryFactory::getDefaultInstance(); + const GeometryFactory& gf = *gf_p; + geom_ptr mline = create_multi_line(gf, xnodes); //geom_ptr noded (segment->Union(mline.get())); @@ -533,7 +545,10 @@ geometry_builder::pg_geom_t geometry_builder::build_multilines(const multinodeli try { - GeometryFactory gf; + // geos36 - auto-allocation no longer supported in GEOS 3.6+ + const GeometryFactory *gf_p = GeometryFactory::getDefaultInstance(); + const GeometryFactory& gf = *gf_p; + geom_ptr mline = create_multi_line(gf, xnodes); wkb.set(mline.get(), false); @@ -559,7 +574,7 @@ geometry_builder::pg_geoms_t geometry_builder::build_both(const multinodelist_t { // geos36 - auto-allocation no longer supported in GEOS 3.6+ const GeometryFactory *gf_p = GeometryFactory::getDefaultInstance(); - GeometryFactory& gf = *gf_p; + const GeometryFactory& gf = *gf_p; geom_ptr mline = create_multi_line(gf, xnodes); //geom_ptr noded (segment->Union(mline.get())); diff --git a/geometry-builder.hpp b/geometry-builder.hpp index 56457c17..e10d51c7 100644 --- a/geometry-builder.hpp +++ b/geometry-builder.hpp @@ -104,7 +104,7 @@ class geometry_builder private: std::unique_ptr - create_simple_poly(geos::geom::GeometryFactory &gf, + create_simple_poly(const geos::geom::GeometryFactory &gf, std::unique_ptr coords) const; bool excludepoly = false; From ad82c56d5634fac2fe2e2ed5742c1db586ee8670 Mon Sep 17 00:00:00 2001 From: darkblue-b Date: Thu, 27 Oct 2016 20:58:03 -0700 Subject: [PATCH 7/7] geos36 detab --- geometry-builder.cpp | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/geometry-builder.cpp b/geometry-builder.cpp index de9b865d..7d8b4998 100644 --- a/geometry-builder.cpp +++ b/geometry-builder.cpp @@ -228,8 +228,8 @@ geometry_builder::pg_geom_t geometry_builder::get_wkb_simple(const nodelist_t &n try { // geos36 - auto-allocation no longer supported in GEOS 3.6+ - const GeometryFactory *gf_p = GeometryFactory::getDefaultInstance(); - const GeometryFactory& gf = *gf_p; + const GeometryFactory *gf_p = GeometryFactory::getDefaultInstance(); + const GeometryFactory& gf = *gf_p; auto coords = nodes2coords(gf, nodes); if (polygon && is_polygon_line(coords.get())) { @@ -267,8 +267,8 @@ geometry_builder::pg_geoms_t geometry_builder::get_wkb_split(const nodelist_t &n try { // geos36 - auto-allocation no longer supported in GEOS 3.6+ - const GeometryFactory *gf_p = GeometryFactory::getDefaultInstance(); - const GeometryFactory& gf = *gf_p; + const GeometryFactory *gf_p = GeometryFactory::getDefaultInstance(); + const GeometryFactory& gf = *gf_p; auto coords = nodes2coords(gf, nodes); @@ -405,8 +405,8 @@ geometry_builder::pg_geoms_t geometry_builder::build_polygons(const multinodelis try { // geos36 - auto-allocation no longer supported in GEOS 3.6+ - const GeometryFactory *gf_p = GeometryFactory::getDefaultInstance(); - const GeometryFactory& gf = *gf_p; + const GeometryFactory *gf_p = GeometryFactory::getDefaultInstance(); + const GeometryFactory& gf = *gf_p; geom_ptr mline = create_multi_line(gf, xnodes); @@ -546,8 +546,8 @@ geometry_builder::pg_geom_t geometry_builder::build_multilines(const multinodeli try { // geos36 - auto-allocation no longer supported in GEOS 3.6+ - const GeometryFactory *gf_p = GeometryFactory::getDefaultInstance(); - const GeometryFactory& gf = *gf_p; + const GeometryFactory *gf_p = GeometryFactory::getDefaultInstance(); + const GeometryFactory& gf = *gf_p; geom_ptr mline = create_multi_line(gf, xnodes); @@ -573,9 +573,9 @@ geometry_builder::pg_geoms_t geometry_builder::build_both(const multinodelist_t try { // geos36 - auto-allocation no longer supported in GEOS 3.6+ - const GeometryFactory *gf_p = GeometryFactory::getDefaultInstance(); - const GeometryFactory& gf = *gf_p; - + const GeometryFactory *gf_p = GeometryFactory::getDefaultInstance(); + const GeometryFactory& gf = *gf_p; + geom_ptr mline = create_multi_line(gf, xnodes); //geom_ptr noded (segment->Union(mline.get())); LineMerger merger;