Skip to content

Commit

Permalink
[Lint] CutGeometryOnDateLineAndAddToMulti: avoid casts
Browse files Browse the repository at this point in the history
  • Loading branch information
rouault committed Nov 4, 2023
1 parent 4236873 commit c1aa9da
Showing 1 changed file with 13 additions and 22 deletions.
35 changes: 13 additions & 22 deletions ogr/ogrgeometryfactory.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -2839,17 +2839,22 @@ static void AddOffsetToLon(OGRGeometry *poGeom, double dfOffset)
switch (wkbFlatten(poGeom->getGeometryType()))
{
case wkbPolygon:
{
for (auto poSubGeom : *(poGeom->toPolygon()))
{
AddOffsetToLon(poSubGeom, dfOffset);
}

break;
}

case wkbMultiLineString:
case wkbMultiPolygon:
case wkbGeometryCollection:
{
const int nSubGeomCount =
OGR_G_GetGeometryCount(OGRGeometry::ToHandle(poGeom));
for (int iGeom = 0; iGeom < nSubGeomCount; iGeom++)
for (auto poSubGeom : *(poGeom->toGeometryCollection()))
{
AddOffsetToLon(OGRGeometry::FromHandle(OGR_G_GetGeometryRef(
OGRGeometry::ToHandle(poGeom), iGeom)),
dfOffset);
AddOffsetToLon(poSubGeom, dfOffset);
}

break;
Expand Down Expand Up @@ -2898,15 +2903,8 @@ static void AddSimpleGeomToMulti(OGRGeometryCollection *poMulti,
case wkbMultiPolygon:
case wkbGeometryCollection:
{
// TODO(schwehr): Can the const_casts be removed or improved?
const int nSubGeomCount = OGR_G_GetGeometryCount(
OGRGeometry::ToHandle(const_cast<OGRGeometry *>(poGeom)));
for (int iGeom = 0; iGeom < nSubGeomCount; iGeom++)
for (const auto poSubGeom : *(poGeom->toGeometryCollection()))
{
OGRGeometry *poSubGeom = OGRGeometry::FromHandle(
OGR_G_GetGeometryRef(OGRGeometry::ToHandle(
const_cast<OGRGeometry *>(poGeom)),
iGeom));
AddSimpleGeomToMulti(poMulti, poSubGeom);
}
break;
Expand Down Expand Up @@ -3064,15 +3062,8 @@ static void CutGeometryOnDateLineAndAddToMulti(OGRGeometryCollection *poMulti,
case wkbMultiPolygon:
case wkbGeometryCollection:
{
// TODO(schwehr): Fix the const_cast.
int nSubGeomCount = OGR_G_GetGeometryCount(
OGRGeometry::ToHandle(const_cast<OGRGeometry *>(poGeom)));
for (int iGeom = 0; iGeom < nSubGeomCount; iGeom++)
for (const auto poSubGeom : *(poGeom->toGeometryCollection()))
{
OGRGeometry *poSubGeom = OGRGeometry::FromHandle(
OGR_G_GetGeometryRef(OGRGeometry::ToHandle(
const_cast<OGRGeometry *>(poGeom)),
iGeom));
CutGeometryOnDateLineAndAddToMulti(poMulti, poSubGeom,
dfDateLineOffset);
}
Expand Down

0 comments on commit c1aa9da

Please sign in to comment.