diff --git a/src/db/db/dbEdges.cc b/src/db/db/dbEdges.cc index 5c41840c6..9d2fa8d39 100644 --- a/src/db/db/dbEdges.cc +++ b/src/db/db/dbEdges.cc @@ -724,7 +724,6 @@ Edges::select_interacting (const Region &other) scanner.insert ((char *) &*e, 0); } - other.ensure_valid_polygons (); for (Region::const_iterator p = other.begin (); ! p.at_end (); ++p) { scanner.insert ((char *) &*p + 1, 1); } @@ -754,7 +753,6 @@ Edges::select_not_interacting (const Region &other) scanner.insert ((char *) &*e, 0); } - other.ensure_valid_polygons (); for (Region::const_iterator p = other.begin (); ! p.at_end (); ++p) { scanner.insert ((char *) &*p + 1, 1); } diff --git a/src/db/db/dbEdges.h b/src/db/db/dbEdges.h index fae01830e..3f31351dc 100644 --- a/src/db/db/dbEdges.h +++ b/src/db/db/dbEdges.h @@ -581,12 +581,11 @@ public: * This method will keep all edges for which the filter returns true. * Merged semantics applies. */ - template - Edges &filter (F &filter) + Edges &filter (EdgeFilterBase &filter) { edge_iterator_type ew = m_edges.get_layer ().begin (); for (const_iterator e = begin_merged (); ! e.at_end (); ++e) { - if (filter (*e)) { + if (filter.selected (*e)) { if (ew == m_edges.get_layer ().end ()) { m_edges.get_layer ().insert (*e); ew = m_edges.get_layer ().end (); @@ -609,12 +608,11 @@ public: * conform to the filter criterion. * Merged semantics applies. */ - template - Edges filtered (F &filter) const + Edges filtered (const EdgeFilterBase &filter) const { Edges d; for (const_iterator e = begin_merged (); ! e.at_end (); ++e) { - if (filter (*e)) { + if (filter.selected (*e)) { d.insert (*e); } } diff --git a/src/db/db/dbRegion.h b/src/db/db/dbRegion.h index bd357b6b7..e640125b5 100644 --- a/src/db/db/dbRegion.h +++ b/src/db/db/dbRegion.h @@ -3422,6 +3422,7 @@ private: Region selected_interacting_generic (const Edges &other, bool inverse) const; void select_interacting_generic (const Edges &other, bool inverse); }; +#endif /** * @brief A polygon receiver putting the polygons into a Region object @@ -3466,7 +3467,6 @@ private: Region *mp_region; bool m_clear; }; -#endif } // namespace db diff --git a/src/db/unit_tests/dbTilingProcessor.cc b/src/db/unit_tests/dbTilingProcessor.cc index cb67d5aad..5aa0b1216 100644 --- a/src/db/unit_tests/dbTilingProcessor.cc +++ b/src/db/unit_tests/dbTilingProcessor.cc @@ -237,7 +237,6 @@ TEST(3) tp.input ("i2", ir2.begin_iter ().first, ir2.begin_iter ().second); EXPECT_EQ (ir2.has_valid_polygons (), false); db::Region ir3 (db::RecursiveShapeIterator (ly, ly.cell (top), l3)); - ir3.ensure_valid_polygons (); tp.input ("i3", ir3.begin_iter ().first, ir3.begin_iter ().second); EXPECT_EQ (ir3.has_valid_polygons (), true); tp.output ("o1", ly, top, o1);