[geos-commits] r2924 - in trunk: include/geos/operation/polygonize
src/operation/polygonize
svn_geos at osgeo.org
svn_geos at osgeo.org
Mon Feb 22 17:06:33 EST 2010
Author: strk
Date: 2010-02-22 17:06:33 -0500 (Mon, 22 Feb 2010)
New Revision: 2924
Modified:
trunk/include/geos/operation/polygonize/Polygonizer.h
trunk/src/operation/polygonize/Polygonizer.cpp
Log:
More heap allocations bite the dust...
Modified: trunk/include/geos/operation/polygonize/Polygonizer.h
===================================================================
--- trunk/include/geos/operation/polygonize/Polygonizer.h 2010-02-22 21:51:22 UTC (rev 2923)
+++ trunk/include/geos/operation/polygonize/Polygonizer.h 2010-02-22 22:06:33 UTC (rev 2924)
@@ -100,13 +100,13 @@
std::vector<EdgeRing*> *validEdgeRingList,
std::vector<geom::LineString*> *invalidRingList);
- void findShellsAndHoles(std::vector<EdgeRing*> *edgeRingList);
+ void findShellsAndHoles(const std::vector<EdgeRing*>& edgeRingList);
- static void assignHolesToShells(std::vector<EdgeRing*> *holeList,
- std::vector<EdgeRing*> *shellList);
+ static void assignHolesToShells(const std::vector<EdgeRing*>& holeList,
+ std::vector<EdgeRing*>& shellList);
static void assignHoleToShell(EdgeRing *holeER,
- std::vector<EdgeRing*> *shellList);
+ std::vector<EdgeRing*>& shellList);
protected:
@@ -117,8 +117,8 @@
std::vector<const geom::LineString*> cutEdges;
std::vector<geom::LineString*> *invalidRingLines;
- std::vector<EdgeRing*> *holeList;
- std::vector<EdgeRing*> *shellList;
+ std::vector<EdgeRing*> holeList;
+ std::vector<EdgeRing*> shellList;
std::vector<geom::Polygon*> *polyList;
public:
Modified: trunk/src/operation/polygonize/Polygonizer.cpp
===================================================================
--- trunk/src/operation/polygonize/Polygonizer.cpp 2010-02-22 21:51:22 UTC (rev 2923)
+++ trunk/src/operation/polygonize/Polygonizer.cpp 2010-02-22 22:06:33 UTC (rev 2924)
@@ -65,8 +65,8 @@
dangles(),
cutEdges(),
invalidRingLines(NULL),
- holeList(NULL),
- shellList(NULL),
+ holeList(),
+ shellList(),
polyList(NULL)
{
}
@@ -76,8 +76,6 @@
delete lineStringAdder;
delete graph;
- delete holeList;
- delete shellList;
if ( invalidRingLines )
{
for (unsigned int i=0, n=invalidRingLines->size(); i<n; ++i)
@@ -233,28 +231,27 @@
#if GEOS_DEBUG
cerr<<"Polygonizer::polygonize(): "<<edgeRingList.size()<<" edgeRings in graph"<<endl;
#endif
- vector<EdgeRing*> *validEdgeRingList=new vector<EdgeRing*>();
+ vector<EdgeRing*> validEdgeRingList;
invalidRingLines=new vector<LineString*>();
- findValidRings(edgeRingList, validEdgeRingList, invalidRingLines);
+ findValidRings(edgeRingList, &validEdgeRingList, invalidRingLines);
#if GEOS_DEBUG
- cerr<<" "<<validEdgeRingList->size()<<" valid"<<endl;
- cerr<<" "<<invalidRingLines->size()<<" invalid"<<endl;
+ cerr<<" "<<validEdgeRingList.size()<<" valid"<<endl;
+ cerr<<" "<<invalidRingLines.size()<<" invalid"<<endl;
#endif
findShellsAndHoles(validEdgeRingList);
#if GEOS_DEBUG
- cerr<<" "<<holeList->size()<<" holes"<<endl;
- cerr<<" "<<shellList->size()<<" shells"<<endl;
+ cerr<<" "<<holeList.size()<<" holes"<<endl;
+ cerr<<" "<<shellList.size()<<" shells"<<endl;
#endif
assignHolesToShells(holeList, shellList);
- for (unsigned int i=0, n=shellList->size(); i<n; ++i)
+ for (unsigned int i=0, n=shellList.size(); i<n; ++i)
{
- EdgeRing *er=(*shellList)[i];
+ EdgeRing *er=shellList[i];
polyList->push_back(er->getPolygon());
}
- delete validEdgeRingList;
}
/* private */
@@ -277,36 +274,39 @@
}
}
+/* private */
void
-Polygonizer::findShellsAndHoles(vector<EdgeRing*> *edgeRingList)
+Polygonizer::findShellsAndHoles(const vector<EdgeRing*>& edgeRingList)
{
- holeList=new vector<EdgeRing*>();
- shellList=new vector<EdgeRing*>();
- for (unsigned int i=0, n=edgeRingList->size(); i<n; ++i)
+ holeList.clear();
+ shellList.clear();
+ for (unsigned int i=0, n=edgeRingList.size(); i<n; ++i)
{
- EdgeRing *er=(*edgeRingList)[i];
+ EdgeRing *er=edgeRingList[i];
if (er->isHole())
- holeList->push_back(er);
+ holeList.push_back(er);
else
- shellList->push_back(er);
+ shellList.push_back(er);
}
}
+/* private */
void
-Polygonizer::assignHolesToShells(vector<EdgeRing*> *holeList,vector<EdgeRing*> *shellList)
+Polygonizer::assignHolesToShells(const vector<EdgeRing*>& holeList, vector<EdgeRing*>& shellList)
{
- for (unsigned int i=0, n=holeList->size(); i<n; ++i)
+ for (unsigned int i=0, n=holeList.size(); i<n; ++i)
{
- EdgeRing *holeER=(*holeList)[i];
- assignHoleToShell(holeER,shellList);
+ EdgeRing *holeER=holeList[i];
+ assignHoleToShell(holeER, shellList);
}
}
+/* private */
void
Polygonizer::assignHoleToShell(EdgeRing *holeER,
- vector<EdgeRing*> *shellList)
+ vector<EdgeRing*>& shellList)
{
- EdgeRing *shell=EdgeRing::findEdgeRingContaining(holeER, shellList);
+ EdgeRing *shell = EdgeRing::findEdgeRingContaining(holeER, &shellList);
if (shell!=NULL)
shell->addHole(holeER->getRingOwnership());
More information about the geos-commits
mailing list