[SCM] PostGIS branch master updated. 3.5.0-432-g3724e0f25
git at osgeo.org
git at osgeo.org
Mon Jul 7 11:59:02 PDT 2025
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "PostGIS".
The branch, master has been updated
via 3724e0f256c8bd19828eda9ea0b89e330ba1ab0b (commit)
from 6e21283f070fb16cd638046f2f14191f6a347ec3 (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
commit 3724e0f256c8bd19828eda9ea0b89e330ba1ab0b
Author: Paul Ramsey <paul.ramsey at snowflake.com>
Date: Mon Jul 7 11:43:39 2025 -0700
Simplify the internal API of the interval tree
diff --git a/liblwgeom/intervaltree.c b/liblwgeom/intervaltree.c
index 03bd52e50..5716dc3ee 100644
--- a/liblwgeom/intervaltree.c
+++ b/liblwgeom/intervaltree.c
@@ -234,10 +234,11 @@ itree_add_pointarray(IntervalTree *itree, const POINTARRAY *pa)
}
-static void
-itree_add_polygon(IntervalTree *itree, const LWPOLY *poly)
+static IntervalTree *
+itree_from_polygon(const LWPOLY *poly)
{
- if (poly->nrings == 0) return;
+ IntervalTree *itree = lwalloc0(sizeof(IntervalTree));
+ if (poly->nrings == 0) return itree;
itree->maxNodes = itree_num_nodes_polygon(poly);
itree->nodes = lwalloc0(itree->maxNodes * sizeof(IntervalTreeNode));
@@ -260,14 +261,15 @@ itree_add_polygon(IntervalTree *itree, const LWPOLY *poly)
itree->ringCounts[itree->numPolys] += 1;
}
itree->numPolys = 1;
- return;
+ return itree;
}
-static void
-itree_add_multipolygon(IntervalTree *itree, const LWMPOLY *mpoly)
+static IntervalTree *
+itree_from_multipolygon(const LWMPOLY *mpoly)
{
- if (mpoly->ngeoms == 0) return;
+ IntervalTree *itree = lwalloc0(sizeof(IntervalTree));
+ if (mpoly->ngeoms == 0) return itree;
itree->maxNodes = itree_num_nodes_multipolygon(mpoly);
itree->nodes = lwalloc0(itree->maxNodes * sizeof(IntervalTreeNode));
@@ -300,7 +302,7 @@ itree_add_multipolygon(IntervalTree *itree, const LWMPOLY *mpoly)
itree->numPolys += 1;
}
- return;
+ return itree;
}
@@ -308,23 +310,16 @@ IntervalTree *
itree_from_lwgeom(const LWGEOM *geom)
{
if (!geom) lwerror("%s called with null geometry", __func__);
- if (lwgeom_get_type(geom) == MULTIPOLYGONTYPE)
+ switch(lwgeom_get_type(geom))
{
- IntervalTree *itree = lwalloc0(sizeof(IntervalTree));
- itree_add_multipolygon(itree, lwgeom_as_lwmpoly(geom));
- return itree;
- }
- else if (lwgeom_get_type(geom) == POLYGONTYPE)
- {
- IntervalTree *itree = lwalloc0(sizeof(IntervalTree));
- itree_add_polygon(itree, lwgeom_as_lwpoly(geom));
- return itree;
- }
- else
- {
- lwerror("%s got asked to build index on non-polygon", __func__);
- return NULL;
+ case MULTIPOLYGONTYPE:
+ return itree_from_multipolygon(lwgeom_as_lwmpoly(geom));
+ case POLYGONTYPE:
+ return itree_from_polygon(lwgeom_as_lwpoly(geom));
+ default:
+ lwerror("%s got asked to build index on non-polygon", __func__);
}
+ return NULL;
}
-----------------------------------------------------------------------
Summary of changes:
liblwgeom/intervaltree.c | 41 ++++++++++++++++++-----------------------
1 file changed, 18 insertions(+), 23 deletions(-)
hooks/post-receive
--
PostGIS
More information about the postgis-tickets
mailing list