[geos-commits] r2563 - in trunk/source: headers/geos/operation/linemerge headers/geos/planargraph operation/linemerge

svn_geos at osgeo.org svn_geos at osgeo.org
Mon Jun 8 11:43:40 EDT 2009


Author: strk
Date: 2009-06-08 11:43:40 -0400 (Mon, 08 Jun 2009)
New Revision: 2563

Modified:
   trunk/source/headers/geos/operation/linemerge/LineMerger.h
   trunk/source/headers/geos/planargraph/GraphComponent.h
   trunk/source/operation/linemerge/LineMerger.cpp
Log:
Add missing setMarked static methods in GraphComponent and make use of them in LineMerger making it able to be called incrementally (JTS-1.10)


Modified: trunk/source/headers/geos/operation/linemerge/LineMerger.h
===================================================================
--- trunk/source/headers/geos/operation/linemerge/LineMerger.h	2009-06-08 15:28:27 UTC (rev 2562)
+++ trunk/source/headers/geos/operation/linemerge/LineMerger.h	2009-06-08 15:43:40 UTC (rev 2563)
@@ -13,7 +13,7 @@
  *
  **********************************************************************
  *
- * Last port: operation/linemerge/LineMerger.java rev. 1.6 (JTS-1.7)
+ * Last port: operation/linemerge/LineMerger.java rev. 1.7 (JTS-1.10)
  *
  **********************************************************************/
 

Modified: trunk/source/headers/geos/planargraph/GraphComponent.h
===================================================================
--- trunk/source/headers/geos/planargraph/GraphComponent.h	2009-06-08 15:28:27 UTC (rev 2562)
+++ trunk/source/headers/geos/planargraph/GraphComponent.h	2009-06-08 15:43:40 UTC (rev 2563)
@@ -12,6 +12,10 @@
  * by the Free Software Foundation. 
  * See the COPYING file for more information.
  *
+ **********************************************************************
+ *
+ * Last port: planargraph/GraphComponent.java rev. 1.7 (JTS-1.7)
+ *
  **********************************************************************/
 
 #ifndef GEOS_PLANARGRAPH_GRAPHCOMPONENT_H
@@ -39,8 +43,6 @@
  *    The visited flag may be set and cleared many times during the
  *    lifetime of a graph.
  *
- * Last port: planargraph/GraphComponent.java rev. 1.7 (JTS-1.7)
- *
  */
 class GEOS_DLL GraphComponent {
 
@@ -87,7 +89,6 @@
 	template <typename T>
 	static void setVisited(T start, T end, bool visited) {
 		for(T i=start; i!=end; ++i) {
-			//i->second->setVisited(visited);
 			(*i)->setVisited(visited);
 		}
 	}
@@ -108,6 +109,37 @@
 	}
 
 	/** \brief
+	 * Sets the Marked state for the elements of a container,
+	 * from start to end iterator.
+	 *
+	 * @param start the start element
+	 * @param end one past the last element
+	 * @param marked the state to set the marked flag to
+	 */
+	template <typename T>
+	static void setMarked(T start, T end, bool marked) {
+		for(T i=start; i!=end; ++i) {
+			(*i)->setMarked(marked);
+		}
+	}
+
+
+	/** \brief
+	 * Sets the Marked state for the values of each map
+	 * container element, from start to end iterator.
+	 *
+	 * @param start the start element
+	 * @param end one past the last element
+	 * @param marked the state to set the visited flag to
+	 */
+	template <typename T>
+	static void setMarkedMap(T start, T end, bool marked) {
+		for(T i=start; i!=end; ++i) {
+			i->second->setMarked(marked);
+		}
+	}
+
+	/** \brief
 	 * Tests if a component has been marked at some point
 	 * during the processing involving this graph.
 	 * @return <code>true</code> if the component has been marked

Modified: trunk/source/operation/linemerge/LineMerger.cpp
===================================================================
--- trunk/source/operation/linemerge/LineMerger.cpp	2009-06-08 15:28:27 UTC (rev 2562)
+++ trunk/source/operation/linemerge/LineMerger.cpp	2009-06-08 15:43:40 UTC (rev 2563)
@@ -14,7 +14,7 @@
  *
  **********************************************************************
  *
- * Last port: operation/linemerge/LineMerger.java rev. 1.6 (JTS-1.7)
+ * Last port: operation/linemerge/LineMerger.java rev. 1.7 (JTS-1.10)
  *
  **********************************************************************/
 
@@ -103,15 +103,15 @@
 {
 	if (mergedLineStrings!=NULL) return;
 
-#if 0 // requires changes to GraphComponent to enhance porting to rev 1.7
 	// reset marks (this allows incremental processing)
-	GraphComponent::setMarked(graph.nodeIterator(), false);
-	GraphComponent::setMarked(graph.edgeIterator(), false);
+	GraphComponent::setMarkedMap(graph.nodeIterator(), graph.nodeEnd(),
+	                                                              false);
+	GraphComponent::setMarked(graph.edgeIterator(), graph.edgeEnd(),
+	                                                              false);
 
 	for (size_t i=0, n=edgeStrings.size(); i<n; ++i) 
 		delete edgeStrings[i];
 	edgeStrings.clear();
-#endif
 
 	buildEdgeStringsForObviousStartNodes();
 	buildEdgeStringsForIsolatedLoops();



More information about the geos-commits mailing list