From 795aeba322fbe087bb9b650c06bd998ac52a7b60 Mon Sep 17 00:00:00 2001 From: Matthias Koefferlein Date: Fri, 17 Nov 2023 00:09:56 +0100 Subject: [PATCH] WIP --- src/db/db/dbCompoundOperation.cc | 212 +++++----- src/db/db/dbCompoundOperation.h | 471 +++++++++++----------- src/db/db/dbDeepEdges.cc | 10 +- src/db/db/dbDeepRegion.cc | 47 ++- src/db/db/dbDeepTexts.cc | 4 +- src/db/db/dbEdgePairRelations.h | 16 + src/db/db/dbEdgesLocalOperations.cc | 4 +- src/db/db/dbEdgesLocalOperations.h | 4 +- src/db/db/dbHierProcessor.cc | 107 +++-- src/db/db/dbHierProcessor.h | 80 +++- src/db/db/dbLocalOperation.cc | 10 +- src/db/db/dbLocalOperation.h | 5 +- src/db/db/dbRegionLocalOperations.cc | 54 +-- src/db/db/dbRegionLocalOperations.h | 32 +- src/db/unit_tests/dbHierProcessorTests.cc | 8 +- 15 files changed, 592 insertions(+), 472 deletions(-) diff --git a/src/db/db/dbCompoundOperation.cc b/src/db/db/dbCompoundOperation.cc index f63ca361d..a9c232ed0 100644 --- a/src/db/db/dbCompoundOperation.cc +++ b/src/db/db/dbCompoundOperation.cc @@ -106,20 +106,20 @@ static void translate (db::Layout *, const std::vector &interactions, std::vector > &results, size_t max_vertex_count, double area_ratio) const +CompoundRegionOperationNode::compute_local (CompoundRegionOperationCache *cache, db::Layout *layout, db::Cell *cell, const shape_interactions &interactions, std::vector > &results, const db::LocalProcessorBase *proc) const { std::vector > intermediate; intermediate.push_back (std::unordered_set ()); - implement_compute_local (cache, layout, interactions, intermediate, max_vertex_count, area_ratio); + implement_compute_local (cache, layout, cell, interactions, intermediate, proc); translate (layout, intermediate, results); } void -CompoundRegionOperationNode::compute_local (CompoundRegionOperationCache *cache, db::Layout *layout, const shape_interactions &interactions, std::vector > &results, size_t max_vertex_count, double area_ratio) const +CompoundRegionOperationNode::compute_local (CompoundRegionOperationCache *cache, db::Layout *layout, db::Cell *cell, const shape_interactions &interactions, std::vector > &results, const db::LocalProcessorBase *proc) const { std::vector > intermediate; intermediate.push_back (std::unordered_set ()); - implement_compute_local (cache, layout, interactions, intermediate, max_vertex_count, area_ratio); + implement_compute_local (cache, layout, cell, interactions, intermediate, proc); translate (layout, intermediate, results); } @@ -142,14 +142,14 @@ std::vector CompoundRegionOperationPrimaryNode::inputs () const return is; } -void CompoundRegionOperationPrimaryNode::do_compute_local (CompoundRegionOperationCache * /*cache*/, db::Layout *, const shape_interactions &interactions, std::vector > &results, size_t, double) const +void CompoundRegionOperationPrimaryNode::do_compute_local (CompoundRegionOperationCache * /*cache*/, db::Layout *, db::Cell *, const shape_interactions &interactions, std::vector > &results, const db::LocalProcessorBase *) const { for (shape_interactions::subject_iterator i = interactions.begin_subjects (); i != interactions.end_subjects (); ++i) { results.front ().insert (i->second); } } -void CompoundRegionOperationPrimaryNode::do_compute_local (CompoundRegionOperationCache * /*cache*/, db::Layout *, const shape_interactions &interactions, std::vector > &results, size_t, double) const +void CompoundRegionOperationPrimaryNode::do_compute_local (CompoundRegionOperationCache * /*cache*/, db::Layout *, db::Cell *, const shape_interactions &interactions, std::vector > &results, const db::LocalProcessorBase *) const { for (shape_interactions::subject_iterator i = interactions.begin_subjects (); i != interactions.end_subjects (); ++i) { results.front ().insert (i->second); @@ -177,14 +177,14 @@ std::vector CompoundRegionOperationSecondaryNode::inputs () const return iv; } -void CompoundRegionOperationSecondaryNode::do_compute_local (CompoundRegionOperationCache * /*cache*/, db::Layout *, const shape_interactions &interactions, std::vector > &results, size_t, double) const +void CompoundRegionOperationSecondaryNode::do_compute_local (CompoundRegionOperationCache * /*cache*/, db::Layout *, db::Cell *, const shape_interactions &interactions, std::vector > &results, const db::LocalProcessorBase *) const { for (shape_interactions::intruder_iterator i = interactions.begin_intruders (); i != interactions.end_intruders (); ++i) { results.front ().insert (i->second.second); } } -void CompoundRegionOperationSecondaryNode::do_compute_local (CompoundRegionOperationCache * /*cache*/, db::Layout *, const shape_interactions &interactions, std::vector > &results, size_t, double) const +void CompoundRegionOperationSecondaryNode::do_compute_local (CompoundRegionOperationCache * /*cache*/, db::Layout *, db::Cell *, const shape_interactions &interactions, std::vector > &results, const db::LocalProcessorBase *) const { for (shape_interactions::intruder_iterator i = interactions.begin_intruders (); i != interactions.end_intruders (); ++i) { results.front ().insert (i->second.second); @@ -211,14 +211,14 @@ std::vector CompoundRegionOperationForeignNode::inputs () const return iv; } -void CompoundRegionOperationForeignNode::do_compute_local (CompoundRegionOperationCache * /*cache*/, db::Layout *, const shape_interactions &interactions, std::vector > &results, size_t, double) const +void CompoundRegionOperationForeignNode::do_compute_local (CompoundRegionOperationCache * /*cache*/, db::Layout *, db::Cell *, const shape_interactions &interactions, std::vector > &results, const db::LocalProcessorBase *) const { for (shape_interactions::intruder_iterator i = interactions.begin_intruders (); i != interactions.end_intruders (); ++i) { results.front ().insert (i->second.second); } } -void CompoundRegionOperationForeignNode::do_compute_local (CompoundRegionOperationCache * /*cache*/, db::Layout *, const shape_interactions &interactions, std::vector > &results, size_t, double) const +void CompoundRegionOperationForeignNode::do_compute_local (CompoundRegionOperationCache * /*cache*/, db::Layout *, db::Cell *, const shape_interactions &interactions, std::vector > &results, const db::LocalProcessorBase *) const { for (shape_interactions::intruder_iterator i = interactions.begin_intruders (); i != interactions.end_intruders (); ++i) { results.front ().insert (i->second.second); @@ -446,7 +446,7 @@ std::string CompoundRegionLogicalBoolOperationNode::generated_description () con } template -void CompoundRegionLogicalBoolOperationNode::implement_compute_local (CompoundRegionOperationCache *cache, db::Layout *layout, const shape_interactions &interactions, std::vector > &results, size_t max_vertex_count, double area_ratio) const +void CompoundRegionLogicalBoolOperationNode::implement_compute_local (CompoundRegionOperationCache *cache, db::Layout *layout, db::Cell *cell, const shape_interactions &interactions, std::vector > &results, const db::LocalProcessorBase *proc) const { bool ok = (m_op == And ? true : false); @@ -459,7 +459,7 @@ void CompoundRegionLogicalBoolOperationNode::implement_compute_local (CompoundRe const CompoundRegionOperationNode *node = child (ci); - bool any = node->compute_local_bool (cache, layout, child_interactions, max_vertex_count, area_ratio); + bool any = node->compute_local_bool (cache, layout, cell, child_interactions, proc); if (m_op == And) { if (! any) { @@ -743,13 +743,13 @@ static void copy_results (std::vector > &, const std::vect template void -CompoundRegionGeometricalBoolOperationNode::implement_bool (CompoundRegionOperationCache *cache, db::Layout *layout, const shape_interactions &interactions, std::vector > &results, size_t max_vertex_count, double area_ratio) const +CompoundRegionGeometricalBoolOperationNode::implement_bool (CompoundRegionOperationCache *cache, db::Layout *layout, db::Cell *cell, const shape_interactions &interactions, std::vector > &results, const db::LocalProcessorBase *proc) const { std::vector > one_a; one_a.push_back (std::unordered_set ()); shape_interactions computed_a; - child (0)->compute_local (cache, layout, interactions_for_child (interactions, 0, computed_a), one_a, max_vertex_count, area_ratio); + child (0)->compute_local (cache, layout, cell, interactions_for_child (interactions, 0, computed_a), one_a, proc); if (one_a.front ().empty ()) { @@ -763,7 +763,7 @@ CompoundRegionGeometricalBoolOperationNode::implement_bool (CompoundRegionOperat one_b.push_back (std::unordered_set ()); shape_interactions computed_b; - child (1)->compute_local (cache, layout, interactions_for_child (interactions, 1, computed_b), one_b, max_vertex_count, area_ratio); + child (1)->compute_local (cache, layout, cell, interactions_for_child (interactions, 1, computed_b), one_b, proc); copy_results (results, one_b); @@ -775,7 +775,7 @@ CompoundRegionGeometricalBoolOperationNode::implement_bool (CompoundRegionOperat one_b.push_back (std::unordered_set ()); shape_interactions computed_b; - child (1)->compute_local (cache, layout, interactions_for_child (interactions, 1, computed_b), one_b, max_vertex_count, area_ratio); + child (1)->compute_local (cache, layout, cell, interactions_for_child (interactions, 1, computed_b), one_b, proc); if (one_b.front ().empty ()) { @@ -794,44 +794,44 @@ CompoundRegionGeometricalBoolOperationNode::implement_bool (CompoundRegionOperat template void -CompoundRegionGeometricalBoolOperationNode::implement_compute_local (CompoundRegionOperationCache *cache, db::Layout *layout, const shape_interactions &interactions, std::vector > &results, size_t max_vertex_count, double area_ratio) const +CompoundRegionGeometricalBoolOperationNode::implement_compute_local (CompoundRegionOperationCache *cache, db::Layout *layout, db::Cell *cell, const shape_interactions &interactions, std::vector > &results, const db::LocalProcessorBase *proc) const { ResultType res_a = child (0)->result_type (); ResultType res_b = child (1)->result_type (); if (res_a == Region && res_b == Region) { - implement_bool (cache, layout, interactions, results, max_vertex_count, area_ratio); + implement_bool (cache, layout, cell, interactions, results, proc); } else if (res_a == Region && res_b == Edges) { - implement_bool (cache, layout, interactions, results, max_vertex_count, area_ratio); + implement_bool (cache, layout, cell, interactions, results, proc); } else if (res_a == Edges && res_b == Region) { - implement_bool (cache, layout, interactions, results, max_vertex_count, area_ratio); + implement_bool (cache, layout, cell, interactions, results, proc); } else if (res_a == Edges && res_b == Edges) { - implement_bool (cache, layout, interactions, results, max_vertex_count, area_ratio); + implement_bool (cache, layout, cell, interactions, results, proc); } } void -CompoundRegionGeometricalBoolOperationNode::do_compute_local (CompoundRegionOperationCache *cache, db::Layout *layout, const shape_interactions &interactions, std::vector > &results, size_t max_vertex_count, double area_ratio) const +CompoundRegionGeometricalBoolOperationNode::do_compute_local (CompoundRegionOperationCache *cache, db::Layout *layout, db::Cell *cell, const shape_interactions &interactions, std::vector > &results, const db::LocalProcessorBase *proc) const { - implement_compute_local (cache, layout, interactions, results, max_vertex_count, area_ratio); + implement_compute_local (cache, layout, cell, interactions, results, proc); } void -CompoundRegionGeometricalBoolOperationNode::do_compute_local (CompoundRegionOperationCache *cache, db::Layout *layout, const shape_interactions &interactions, std::vector > &results, size_t max_vertex_count, double area_ratio) const +CompoundRegionGeometricalBoolOperationNode::do_compute_local (CompoundRegionOperationCache *cache, db::Layout *layout, db::Cell *cell, const shape_interactions &interactions, std::vector > &results, const db::LocalProcessorBase *proc) const { - implement_compute_local (cache, layout, interactions, results, max_vertex_count, area_ratio); + implement_compute_local (cache, layout, cell, interactions, results, proc); } void -CompoundRegionGeometricalBoolOperationNode::do_compute_local (CompoundRegionOperationCache *cache, db::Layout *layout, const shape_interactions &interactions, std::vector > &results, size_t max_vertex_count, double area_ratio) const +CompoundRegionGeometricalBoolOperationNode::do_compute_local (CompoundRegionOperationCache *cache, db::Layout *layout, db::Cell *cell, const shape_interactions &interactions, std::vector > &results, const db::LocalProcessorBase *proc) const { - implement_compute_local (cache, layout, interactions, results, max_vertex_count, area_ratio); + implement_compute_local (cache, layout, cell, interactions, results, proc); } void -CompoundRegionGeometricalBoolOperationNode::do_compute_local (CompoundRegionOperationCache *cache, db::Layout *layout, const shape_interactions &interactions, std::vector > &results, size_t max_vertex_count, double area_ratio) const +CompoundRegionGeometricalBoolOperationNode::do_compute_local (CompoundRegionOperationCache *cache, db::Layout *layout, db::Cell *cell, const shape_interactions &interactions, std::vector > &results, const db::LocalProcessorBase *proc) const { - implement_compute_local (cache, layout, interactions, results, max_vertex_count, area_ratio); + implement_compute_local (cache, layout, cell, interactions, results, proc); } // --------------------------------------------------------------------------------------------- @@ -900,7 +900,7 @@ namespace template template -void compound_region_generic_operation_node::implement_compute_local (CompoundRegionOperationCache *cache, db::Layout *layout, const shape_interactions &interactions, std::vector > &results, size_t max_vertex_count, double area_ratio) const +void compound_region_generic_operation_node::implement_compute_local (CompoundRegionOperationCache *cache, db::Layout *layout, db::Cell *cell, const shape_interactions &interactions, std::vector > &results, const db::LocalProcessorBase *proc) const { generic_result_adaptor adaptor (&results); @@ -917,7 +917,7 @@ void compound_region_generic_operation_node::implement_compute_local shape_interactions self_interactions_heap; const shape_interactions &self_interactions = interactions_for_child (interactions, 0, self_interactions_heap); - self->compute_local (cache, layout, self_interactions, self_result, max_vertex_count, area_ratio); + self->compute_local (cache, layout, cell, self_interactions, self_result, proc); db::generic_shape_iterator is (self_result.front ().begin (), self_result.front ().end ()); @@ -934,7 +934,7 @@ void compound_region_generic_operation_node::implement_compute_local shape_interactions intruder_interactions_heap; const shape_interactions &intruder_interactions = interactions_for_child (interactions, ci, intruder_interactions_heap); - intruder->compute_local (cache, layout, intruder_interactions, intruder_result, max_vertex_count, area_ratio); + intruder->compute_local (cache, layout, cell, intruder_interactions, intruder_result, proc); intruder_results.push_back (std::unordered_set ()); intruder_results.back ().swap (intruder_result.front ()); @@ -943,21 +943,21 @@ void compound_region_generic_operation_node::implement_compute_local } - db::local_processor proc (layout); - proc.run_flat (is, iiv, std::vector (), m_op, adaptor.results ()); + db::local_processor lproc (layout); + lproc.run_flat (is, iiv, std::vector (), m_op, adaptor.results ()); adaptor.finish (layout); } // explicit instantiations -template DB_PUBLIC void compound_region_generic_operation_node::implement_compute_local (db::CompoundRegionOperationCache *, db::Layout *, const shape_interactions &, std::vector > &, size_t, double) const; -template DB_PUBLIC void compound_region_generic_operation_node::implement_compute_local (db::CompoundRegionOperationCache *, db::Layout *, const shape_interactions &, std::vector > &, size_t, double) const; -template DB_PUBLIC void compound_region_generic_operation_node::implement_compute_local (db::CompoundRegionOperationCache *, db::Layout *, const shape_interactions &, std::vector > &, size_t, double) const; -template DB_PUBLIC void compound_region_generic_operation_node::implement_compute_local (db::CompoundRegionOperationCache *, db::Layout *, const shape_interactions &, std::vector > &, size_t, double) const; -template DB_PUBLIC void compound_region_generic_operation_node::implement_compute_local (db::CompoundRegionOperationCache *, db::Layout *, const shape_interactions &, std::vector > &, size_t, double) const; -template DB_PUBLIC void compound_region_generic_operation_node::implement_compute_local (db::CompoundRegionOperationCache *, db::Layout *, const shape_interactions &, std::vector > &, size_t, double) const; -template DB_PUBLIC void compound_region_generic_operation_node::implement_compute_local (db::CompoundRegionOperationCache *, db::Layout *, const shape_interactions &, std::vector > &, size_t, double) const; -template DB_PUBLIC void compound_region_generic_operation_node::implement_compute_local (db::CompoundRegionOperationCache *, db::Layout *, const shape_interactions &, std::vector > &, size_t, double) const; +template DB_PUBLIC void compound_region_generic_operation_node::implement_compute_local (db::CompoundRegionOperationCache *, db::Layout *, db::Cell *, const shape_interactions &, std::vector > &, const db::LocalProcessorBase *) const; +template DB_PUBLIC void compound_region_generic_operation_node::implement_compute_local (db::CompoundRegionOperationCache *, db::Layout *, db::Cell *, const shape_interactions &, std::vector > &, const db::LocalProcessorBase *) const; +template DB_PUBLIC void compound_region_generic_operation_node::implement_compute_local (db::CompoundRegionOperationCache *, db::Layout *, db::Cell *, const shape_interactions &, std::vector > &, const db::LocalProcessorBase *) const; +template DB_PUBLIC void compound_region_generic_operation_node::implement_compute_local (db::CompoundRegionOperationCache *, db::Layout *, db::Cell *, const shape_interactions &, std::vector > &, const db::LocalProcessorBase *) const; +template DB_PUBLIC void compound_region_generic_operation_node::implement_compute_local (db::CompoundRegionOperationCache *, db::Layout *, db::Cell *, const shape_interactions &, std::vector > &, const db::LocalProcessorBase *) const; +template DB_PUBLIC void compound_region_generic_operation_node::implement_compute_local (db::CompoundRegionOperationCache *, db::Layout *, db::Cell *, const shape_interactions &, std::vector > &, const db::LocalProcessorBase *) const; +template DB_PUBLIC void compound_region_generic_operation_node::implement_compute_local (db::CompoundRegionOperationCache *, db::Layout *, db::Cell *, const shape_interactions &, std::vector > &, const db::LocalProcessorBase *) const; +template DB_PUBLIC void compound_region_generic_operation_node::implement_compute_local (db::CompoundRegionOperationCache *, db::Layout *, db::Cell *, const shape_interactions &, std::vector > &, const db::LocalProcessorBase *) const; // --------------------------------------------------------------------------------------------- @@ -990,7 +990,7 @@ CompoundRegionLogicalCaseSelectOperationNode::result_type () const } template -void CompoundRegionLogicalCaseSelectOperationNode::implement_compute_local (db::CompoundRegionOperationCache *cache, db::Layout *layout, const shape_interactions &interactions, std::vector > &results, size_t max_vertex_count, double area_ratio) const +void CompoundRegionLogicalCaseSelectOperationNode::implement_compute_local (db::CompoundRegionOperationCache *cache, db::Layout *layout, db::Cell *cell, const shape_interactions &interactions, std::vector > &results, const db::LocalProcessorBase *proc) const { bool ok = false; @@ -1005,7 +1005,7 @@ void CompoundRegionLogicalCaseSelectOperationNode::implement_compute_local (db:: if (ci + 1 < children ()) { - ok = node->compute_local_bool (cache, layout, child_interactions, max_vertex_count, area_ratio); + ok = node->compute_local_bool (cache, layout, cell, child_interactions, proc); continue; } else { @@ -1021,12 +1021,12 @@ void CompoundRegionLogicalCaseSelectOperationNode::implement_compute_local (db:: std::vector > one; one.push_back (std::unordered_set ()); - node->compute_local (cache, layout, child_interactions, one, max_vertex_count, area_ratio); + node->compute_local (cache, layout, cell, child_interactions, one, proc); results[ci / 2].swap (one.front ()); } else { - node->compute_local (cache, layout, child_interactions, results, max_vertex_count, area_ratio); + node->compute_local (cache, layout, cell, child_interactions, results, proc); } @@ -1038,12 +1038,12 @@ void CompoundRegionLogicalCaseSelectOperationNode::implement_compute_local (db:: } -template void CompoundRegionLogicalCaseSelectOperationNode::implement_compute_local (CompoundRegionOperationCache *, db::Layout *, const shape_interactions &, std::vector > &, size_t, double) const; -template void CompoundRegionLogicalCaseSelectOperationNode::implement_compute_local (CompoundRegionOperationCache *, db::Layout *, const shape_interactions &, std::vector > &, size_t, double) const; -template void CompoundRegionLogicalCaseSelectOperationNode::implement_compute_local (CompoundRegionOperationCache *, db::Layout *, const shape_interactions &, std::vector > &, size_t, double) const; -template void CompoundRegionLogicalCaseSelectOperationNode::implement_compute_local (CompoundRegionOperationCache *, db::Layout *, const shape_interactions &, std::vector > &, size_t, double) const; -template void CompoundRegionLogicalCaseSelectOperationNode::implement_compute_local (CompoundRegionOperationCache *, db::Layout *, const shape_interactions &, std::vector > &, size_t, double) const; -template void CompoundRegionLogicalCaseSelectOperationNode::implement_compute_local (CompoundRegionOperationCache *, db::Layout *, const shape_interactions &, std::vector > &, size_t, double) const; +template void CompoundRegionLogicalCaseSelectOperationNode::implement_compute_local (CompoundRegionOperationCache *, db::Layout *, db::Cell *, const shape_interactions &, std::vector > &, const db::LocalProcessorBase *) const; +template void CompoundRegionLogicalCaseSelectOperationNode::implement_compute_local (CompoundRegionOperationCache *, db::Layout *, db::Cell *, const shape_interactions &, std::vector > &, const db::LocalProcessorBase *) const; +template void CompoundRegionLogicalCaseSelectOperationNode::implement_compute_local (CompoundRegionOperationCache *, db::Layout *, db::Cell *, const shape_interactions &, std::vector > &, const db::LocalProcessorBase *) const; +template void CompoundRegionLogicalCaseSelectOperationNode::implement_compute_local (CompoundRegionOperationCache *, db::Layout *, db::Cell *, const shape_interactions &, std::vector > &, const db::LocalProcessorBase *) const; +template void CompoundRegionLogicalCaseSelectOperationNode::implement_compute_local (CompoundRegionOperationCache *, db::Layout *, db::Cell *, const shape_interactions &, std::vector > &, const db::LocalProcessorBase *) const; +template void CompoundRegionLogicalCaseSelectOperationNode::implement_compute_local (CompoundRegionOperationCache *, db::Layout *, db::Cell *, const shape_interactions &, std::vector > &, const db::LocalProcessorBase *) const; // --------------------------------------------------------------------------------------------- @@ -1145,24 +1145,24 @@ CompoundRegionJoinOperationNode::result_type () const } template -void CompoundRegionJoinOperationNode::implement_compute_local (CompoundRegionOperationCache *cache, db::Layout *layout, const shape_interactions &interactions, std::vector > &results, size_t max_vertex_count, double area_ratio) const +void CompoundRegionJoinOperationNode::implement_compute_local (CompoundRegionOperationCache *cache, db::Layout *layout, db::Cell *cell, const shape_interactions &interactions, std::vector > &results, const db::LocalProcessorBase *proc) const { for (unsigned int ci = 0; ci < children (); ++ci) { shape_interactions computed; const shape_interactions &child_interactions = interactions_for_child (interactions, ci, computed); - child (ci)->compute_local (cache, layout, child_interactions, results, max_vertex_count, area_ratio); + child (ci)->compute_local (cache, layout, cell, child_interactions, results, proc); } } -template void CompoundRegionJoinOperationNode::implement_compute_local (CompoundRegionOperationCache *, db::Layout *, const shape_interactions &, std::vector > &, size_t, double) const; -template void CompoundRegionJoinOperationNode::implement_compute_local (CompoundRegionOperationCache *, db::Layout *, const shape_interactions &, std::vector > &, size_t, double) const; -template void CompoundRegionJoinOperationNode::implement_compute_local (CompoundRegionOperationCache *, db::Layout *, const shape_interactions &, std::vector > &, size_t, double) const; -template void CompoundRegionJoinOperationNode::implement_compute_local (CompoundRegionOperationCache *, db::Layout *, const shape_interactions &, std::vector > &, size_t, double) const; -template void CompoundRegionJoinOperationNode::implement_compute_local (CompoundRegionOperationCache *, db::Layout *, const shape_interactions &, std::vector > &, size_t, double) const; -template void CompoundRegionJoinOperationNode::implement_compute_local (CompoundRegionOperationCache *, db::Layout *, const shape_interactions &, std::vector > &, size_t, double) const; +template void CompoundRegionJoinOperationNode::implement_compute_local (CompoundRegionOperationCache *, db::Layout *, db::Cell *, const shape_interactions &, std::vector > &, const db::LocalProcessorBase *) const; +template void CompoundRegionJoinOperationNode::implement_compute_local (CompoundRegionOperationCache *, db::Layout *, db::Cell *, const shape_interactions &, std::vector > &, const db::LocalProcessorBase *) const; +template void CompoundRegionJoinOperationNode::implement_compute_local (CompoundRegionOperationCache *, db::Layout *, db::Cell *, const shape_interactions &, std::vector > &, const db::LocalProcessorBase *) const; +template void CompoundRegionJoinOperationNode::implement_compute_local (CompoundRegionOperationCache *, db::Layout *, db::Cell *, const shape_interactions &, std::vector > &, const db::LocalProcessorBase *) const; +template void CompoundRegionJoinOperationNode::implement_compute_local (CompoundRegionOperationCache *, db::Layout *, db::Cell *, const shape_interactions &, std::vector > &, const db::LocalProcessorBase *) const; +template void CompoundRegionJoinOperationNode::implement_compute_local (CompoundRegionOperationCache *, db::Layout *, db::Cell *, const shape_interactions &, std::vector > &, const db::LocalProcessorBase *) const; // --------------------------------------------------------------------------------------------- @@ -1181,15 +1181,15 @@ CompoundRegionFilterOperationNode::~CompoundRegionFilterOperationNode () } void -CompoundRegionFilterOperationNode::do_compute_local (CompoundRegionOperationCache *cache, db::Layout *layout, const shape_interactions &interactions, std::vector > &results, size_t max_vertex_count, double area_ratio) const +CompoundRegionFilterOperationNode::do_compute_local (CompoundRegionOperationCache *cache, db::Layout *layout, db::Cell *cell, const shape_interactions &interactions, std::vector > &results, const db::LocalProcessorBase *proc) const { - implement_compute_local (cache, layout, interactions, results, max_vertex_count, area_ratio); + implement_compute_local (cache, layout, cell, interactions, results, proc); } void -CompoundRegionFilterOperationNode::do_compute_local (CompoundRegionOperationCache *cache, db::Layout *layout, const shape_interactions &interactions, std::vector > &results, size_t max_vertex_count, double area_ratio) const +CompoundRegionFilterOperationNode::do_compute_local (CompoundRegionOperationCache *cache, db::Layout *layout, db::Cell *cell, const shape_interactions &interactions, std::vector > &results, const db::LocalProcessorBase *proc) const { - implement_compute_local (cache, layout, interactions, results, max_vertex_count, area_ratio); + implement_compute_local (cache, layout, cell, interactions, results, proc); } // --------------------------------------------------------------------------------------------- @@ -1209,15 +1209,15 @@ CompoundRegionEdgeFilterOperationNode::~CompoundRegionEdgeFilterOperationNode () } void -CompoundRegionEdgeFilterOperationNode::do_compute_local (CompoundRegionOperationCache *cache, db::Layout *layout, const shape_interactions &interactions, std::vector > &results, size_t max_vertex_count, double area_ratio) const +CompoundRegionEdgeFilterOperationNode::do_compute_local (CompoundRegionOperationCache *cache, db::Layout *layout, db::Cell *cell, const shape_interactions &interactions, std::vector > &results, const db::LocalProcessorBase *proc) const { - implement_compute_local (cache, layout, interactions, results, max_vertex_count, area_ratio); + implement_compute_local (cache, layout, cell, interactions, results, proc); } void -CompoundRegionEdgeFilterOperationNode::do_compute_local (CompoundRegionOperationCache *cache, db::Layout *layout, const shape_interactions &interactions, std::vector > &results, size_t max_vertex_count, double area_ratio) const +CompoundRegionEdgeFilterOperationNode::do_compute_local (CompoundRegionOperationCache *cache, db::Layout *layout, db::Cell *cell, const shape_interactions &interactions, std::vector > &results, const db::LocalProcessorBase *proc) const { - implement_compute_local (cache, layout, interactions, results, max_vertex_count, area_ratio); + implement_compute_local (cache, layout, cell, interactions, results, proc); } // --------------------------------------------------------------------------------------------- @@ -1237,15 +1237,15 @@ CompoundRegionEdgePairFilterOperationNode::~CompoundRegionEdgePairFilterOperatio } void -CompoundRegionEdgePairFilterOperationNode::do_compute_local (CompoundRegionOperationCache *cache, db::Layout *layout, const shape_interactions &interactions, std::vector > &results, size_t max_vertex_count, double area_ratio) const +CompoundRegionEdgePairFilterOperationNode::do_compute_local (CompoundRegionOperationCache *cache, db::Layout *layout, db::Cell *cell, const shape_interactions &interactions, std::vector > &results, const db::LocalProcessorBase *proc) const { - implement_compute_local (cache, layout, interactions, results, max_vertex_count, area_ratio); + implement_compute_local (cache, layout, cell, interactions, results, proc); } void -CompoundRegionEdgePairFilterOperationNode::do_compute_local (CompoundRegionOperationCache *cache, db::Layout *layout, const shape_interactions &interactions, std::vector > &results, size_t max_vertex_count, double area_ratio) const +CompoundRegionEdgePairFilterOperationNode::do_compute_local (CompoundRegionOperationCache *cache, db::Layout *layout, db::Cell *cell, const shape_interactions &interactions, std::vector > &results, const db::LocalProcessorBase *proc) const { - implement_compute_local (cache, layout, interactions, results, max_vertex_count, area_ratio); + implement_compute_local (cache, layout, cell, interactions, results, proc); } bool @@ -1271,15 +1271,15 @@ CompoundRegionProcessingOperationNode::~CompoundRegionProcessingOperationNode () } void -CompoundRegionProcessingOperationNode::do_compute_local (CompoundRegionOperationCache *cache, db::Layout *layout, const shape_interactions &interactions, std::vector > &results, size_t max_vertex_count, double area_ratio) const +CompoundRegionProcessingOperationNode::do_compute_local (CompoundRegionOperationCache *cache, db::Layout *layout, db::Cell *cell, const shape_interactions &interactions, std::vector > &results, const db::LocalProcessorBase *proc) const { - implement_compute_local (cache, layout, interactions, results, max_vertex_count, area_ratio); + implement_compute_local (cache, layout, cell, interactions, results, proc); } void -CompoundRegionProcessingOperationNode::do_compute_local (CompoundRegionOperationCache *cache, db::Layout *layout, const shape_interactions &interactions, std::vector > &results, size_t max_vertex_count, double area_ratio) const +CompoundRegionProcessingOperationNode::do_compute_local (CompoundRegionOperationCache *cache, db::Layout *layout, db::Cell *cell, const shape_interactions &interactions, std::vector > &results, const db::LocalProcessorBase *proc) const { - implement_compute_local (cache, layout, interactions, results, max_vertex_count, area_ratio); + implement_compute_local (cache, layout, cell, interactions, results, proc); } void @@ -1315,15 +1315,15 @@ CompoundRegionToEdgeProcessingOperationNode::~CompoundRegionToEdgeProcessingOper } void -CompoundRegionToEdgeProcessingOperationNode::do_compute_local (CompoundRegionOperationCache *cache, db::Layout *layout, const shape_interactions &interactions, std::vector > &results, size_t max_vertex_count, double area_ratio) const +CompoundRegionToEdgeProcessingOperationNode::do_compute_local (CompoundRegionOperationCache *cache, db::Layout *layout, db::Cell *cell, const shape_interactions &interactions, std::vector > &results, const db::LocalProcessorBase *proc) const { - implement_compute_local (cache, layout, interactions, results, max_vertex_count, area_ratio); + implement_compute_local (cache, layout, cell, interactions, results, proc); } void -CompoundRegionToEdgeProcessingOperationNode::do_compute_local (CompoundRegionOperationCache *cache, db::Layout *layout, const shape_interactions &interactions, std::vector > &results, size_t max_vertex_count, double area_ratio) const +CompoundRegionToEdgeProcessingOperationNode::do_compute_local (CompoundRegionOperationCache *cache, db::Layout *layout, db::Cell *cell, const shape_interactions &interactions, std::vector > &results, const db::LocalProcessorBase *proc) const { - implement_compute_local (cache, layout, interactions, results, max_vertex_count, area_ratio); + implement_compute_local (cache, layout, cell, interactions, results, proc); } void @@ -1355,15 +1355,15 @@ CompoundRegionEdgeProcessingOperationNode::~CompoundRegionEdgeProcessingOperatio } void -CompoundRegionEdgeProcessingOperationNode::do_compute_local (CompoundRegionOperationCache *cache, db::Layout *layout, const shape_interactions &interactions, std::vector > &results, size_t max_vertex_count, double area_ratio) const +CompoundRegionEdgeProcessingOperationNode::do_compute_local (CompoundRegionOperationCache *cache, db::Layout *layout, db::Cell *cell, const shape_interactions &interactions, std::vector > &results, const db::LocalProcessorBase *proc) const { - implement_compute_local (cache, layout, interactions, results, max_vertex_count, area_ratio); + implement_compute_local (cache, layout, cell, interactions, results, proc); } void -CompoundRegionEdgeProcessingOperationNode::do_compute_local (CompoundRegionOperationCache *cache, db::Layout *layout, const shape_interactions &interactions, std::vector > &results, size_t max_vertex_count, double area_ratio) const +CompoundRegionEdgeProcessingOperationNode::do_compute_local (CompoundRegionOperationCache *cache, db::Layout *layout, db::Cell *cell, const shape_interactions &interactions, std::vector > &results, const db::LocalProcessorBase *proc) const { - implement_compute_local (cache, layout, interactions, results, max_vertex_count, area_ratio); + implement_compute_local (cache, layout, cell, interactions, results, proc); } void CompoundRegionEdgeProcessingOperationNode::processed (db::Layout *, const db::Edge &p, std::vector &res) const @@ -1388,15 +1388,15 @@ CompoundRegionEdgeToPolygonProcessingOperationNode::~CompoundRegionEdgeToPolygon } void -CompoundRegionEdgeToPolygonProcessingOperationNode::do_compute_local (CompoundRegionOperationCache *cache, db::Layout *layout, const shape_interactions &interactions, std::vector > &results, size_t max_vertex_count, double area_ratio) const +CompoundRegionEdgeToPolygonProcessingOperationNode::do_compute_local (CompoundRegionOperationCache *cache, db::Layout *layout, db::Cell *cell, const shape_interactions &interactions, std::vector > &results, const db::LocalProcessorBase *proc) const { - implement_compute_local (cache, layout, interactions, results, max_vertex_count, area_ratio); + implement_compute_local (cache, layout, cell, interactions, results, proc); } void -CompoundRegionEdgeToPolygonProcessingOperationNode::do_compute_local (CompoundRegionOperationCache *cache, db::Layout *layout, const shape_interactions &interactions, std::vector > &results, size_t max_vertex_count, double area_ratio) const +CompoundRegionEdgeToPolygonProcessingOperationNode::do_compute_local (CompoundRegionOperationCache *cache, db::Layout *layout, db::Cell *cell, const shape_interactions &interactions, std::vector > &results, const db::LocalProcessorBase *proc) const { - implement_compute_local (cache, layout, interactions, results, max_vertex_count, area_ratio); + implement_compute_local (cache, layout, cell, interactions, results, proc); } void @@ -1433,15 +1433,15 @@ CompoundRegionToEdgePairProcessingOperationNode::~CompoundRegionToEdgePairProces } void -CompoundRegionToEdgePairProcessingOperationNode::do_compute_local (CompoundRegionOperationCache *cache, db::Layout *layout, const shape_interactions &interactions, std::vector > &results, size_t max_vertex_count, double area_ratio) const +CompoundRegionToEdgePairProcessingOperationNode::do_compute_local (CompoundRegionOperationCache *cache, db::Layout *layout, db::Cell *cell, const shape_interactions &interactions, std::vector > &results, const db::LocalProcessorBase *proc) const { - implement_compute_local (cache, layout, interactions, results, max_vertex_count, area_ratio); + implement_compute_local (cache, layout, cell, interactions, results, proc); } void -CompoundRegionToEdgePairProcessingOperationNode::do_compute_local (CompoundRegionOperationCache *cache, db::Layout *layout, const shape_interactions &interactions, std::vector > &results, size_t max_vertex_count, double area_ratio) const +CompoundRegionToEdgePairProcessingOperationNode::do_compute_local (CompoundRegionOperationCache *cache, db::Layout *layout, db::Cell *cell, const shape_interactions &interactions, std::vector > &results, const db::LocalProcessorBase *proc) const { - implement_compute_local (cache, layout, interactions, results, max_vertex_count, area_ratio); + implement_compute_local (cache, layout, cell, interactions, results, proc); } void @@ -1473,15 +1473,15 @@ CompoundRegionEdgePairToPolygonProcessingOperationNode::~CompoundRegionEdgePairT } void -CompoundRegionEdgePairToPolygonProcessingOperationNode::do_compute_local (CompoundRegionOperationCache *cache, db::Layout *layout, const shape_interactions &interactions, std::vector > &results, size_t max_vertex_count, double area_ratio) const +CompoundRegionEdgePairToPolygonProcessingOperationNode::do_compute_local (CompoundRegionOperationCache *cache, db::Layout *layout, db::Cell *cell, const shape_interactions &interactions, std::vector > &results, const db::LocalProcessorBase *proc) const { - implement_compute_local (cache, layout, interactions, results, max_vertex_count, area_ratio); + implement_compute_local (cache, layout, cell, interactions, results, proc); } void -CompoundRegionEdgePairToPolygonProcessingOperationNode::do_compute_local (CompoundRegionOperationCache *cache, db::Layout *layout, const shape_interactions &interactions, std::vector > &results, size_t max_vertex_count, double area_ratio) const +CompoundRegionEdgePairToPolygonProcessingOperationNode::do_compute_local (CompoundRegionOperationCache *cache, db::Layout *layout, db::Cell *cell, const shape_interactions &interactions, std::vector > &results, const db::LocalProcessorBase *proc) const { - implement_compute_local (cache, layout, interactions, results, max_vertex_count, area_ratio); + implement_compute_local (cache, layout, cell, interactions, results, proc); } void @@ -1518,15 +1518,15 @@ CompoundRegionEdgePairToEdgeProcessingOperationNode::~CompoundRegionEdgePairToEd } void -CompoundRegionEdgePairToEdgeProcessingOperationNode::do_compute_local (CompoundRegionOperationCache *cache, db::Layout *layout, const shape_interactions &interactions, std::vector > &results, size_t max_vertex_count, double area_ratio) const +CompoundRegionEdgePairToEdgeProcessingOperationNode::do_compute_local (CompoundRegionOperationCache *cache, db::Layout *layout, db::Cell *cell, const shape_interactions &interactions, std::vector > &results, const db::LocalProcessorBase *proc) const { - implement_compute_local (cache, layout, interactions, results, max_vertex_count, area_ratio); + implement_compute_local (cache, layout, cell, interactions, results, proc); } void -CompoundRegionEdgePairToEdgeProcessingOperationNode::do_compute_local (CompoundRegionOperationCache *cache, db::Layout *layout, const shape_interactions &interactions, std::vector > &results, size_t max_vertex_count, double area_ratio) const +CompoundRegionEdgePairToEdgeProcessingOperationNode::do_compute_local (CompoundRegionOperationCache *cache, db::Layout *layout, db::Cell *cell, const shape_interactions &interactions, std::vector > &results, const db::LocalProcessorBase *proc) const { - implement_compute_local (cache, layout, interactions, results, max_vertex_count, area_ratio); + implement_compute_local (cache, layout, cell, interactions, results, proc); } // --------------------------------------------------------------------------------------------- @@ -1591,7 +1591,7 @@ CompoundRegionCheckOperationNode::computed_dist () const } void -CompoundRegionCheckOperationNode::do_compute_local (CompoundRegionOperationCache * /*cache*/, db::Layout *layout, const shape_interactions &interactions, std::vector > &results, size_t max_vertex_count, double area_ratio) const +CompoundRegionCheckOperationNode::do_compute_local (CompoundRegionOperationCache * /*cache*/, db::Layout *layout, db::Cell *cell, const shape_interactions &interactions, std::vector > &results, const db::LocalProcessorBase *proc) const { // TODO: needs a concept to deal with merged/non-merged inputs bool is_merged = true; @@ -1599,17 +1599,17 @@ CompoundRegionCheckOperationNode::do_compute_local (CompoundRegionOperationCache tl_assert (results.size () == 1); if (results.front ().empty ()) { - op.do_compute_local (layout, interactions, results, max_vertex_count, area_ratio); + op.do_compute_local (layout, cell, interactions, results, proc); } else { std::vector > r; r.resize (1); - op.do_compute_local (layout, interactions, r, max_vertex_count, area_ratio); + op.do_compute_local (layout, cell, interactions, r, proc); results.front ().insert (r.front ().begin (), r.front ().end ()); } } void -CompoundRegionCheckOperationNode::do_compute_local (CompoundRegionOperationCache * /*cache*/, db::Layout *layout, const shape_interactions &interactions, std::vector > &results, size_t max_vertex_count, double area_ratio) const +CompoundRegionCheckOperationNode::do_compute_local (CompoundRegionOperationCache * /*cache*/, db::Layout *layout, db::Cell *cell, const shape_interactions &interactions, std::vector > &results, const db::LocalProcessorBase *proc) const { // TODO: needs a concept to deal with merged/non-merged inputs bool is_merged = true; @@ -1617,11 +1617,11 @@ CompoundRegionCheckOperationNode::do_compute_local (CompoundRegionOperationCache tl_assert (results.size () == 1); if (results.front ().empty ()) { - op.do_compute_local (layout, interactions, results, max_vertex_count, area_ratio); + op.do_compute_local (layout, cell, interactions, results, proc); } else { std::vector > r; r.resize (1); - op.do_compute_local (layout, interactions, r, max_vertex_count, area_ratio); + op.do_compute_local (layout, cell, interactions, r, proc); results.front ().insert (r.front ().begin (), r.front ().end ()); } } diff --git a/src/db/db/dbCompoundOperation.h b/src/db/db/dbCompoundOperation.h index 5c3c63c9d..d65b96ec7 100644 --- a/src/db/db/dbCompoundOperation.h +++ b/src/db/db/dbCompoundOperation.h @@ -191,62 +191,62 @@ public: */ virtual bool wants_variants () const { return false; } - void compute_local (CompoundRegionOperationCache *cache, db::Layout *layout, const shape_interactions &interactions, std::vector > &results, size_t max_vertex_count, double area_ratio) const + void compute_local (CompoundRegionOperationCache *cache, db::Layout *layout, db::Cell *cell, const shape_interactions &interactions, std::vector > &results, const db::LocalProcessorBase *proc) const { - implement_compute_local (cache, layout, interactions, results, max_vertex_count, area_ratio); + implement_compute_local (cache, layout, cell, interactions, results, proc); } - void compute_local (CompoundRegionOperationCache *cache, db::Layout *layout, const shape_interactions &interactions, std::vector > &results, size_t max_vertex_count, double area_ratio) const; + void compute_local (CompoundRegionOperationCache *cache, db::Layout *layout, db::Cell *cell, const shape_interactions &interactions, std::vector > &results, const db::LocalProcessorBase *proc) const; - void compute_local (CompoundRegionOperationCache *cache, db::Layout *layout, const shape_interactions &interactions, std::vector > &results, size_t max_vertex_count, double area_ratio) const + void compute_local (CompoundRegionOperationCache *cache, db::Layout *layout, db::Cell *cell, const shape_interactions &interactions, std::vector > &results, const db::LocalProcessorBase *proc) const { - implement_compute_local (cache, layout, interactions, results, max_vertex_count, area_ratio); + implement_compute_local (cache, layout, cell, interactions, results, proc); } - void compute_local (CompoundRegionOperationCache *cache, db::Layout *layout, const shape_interactions &interactions, std::vector > &results, size_t max_vertex_count, double area_ratio) const + void compute_local (CompoundRegionOperationCache *cache, db::Layout *layout, db::Cell *cell, const shape_interactions &interactions, std::vector > &results, const db::LocalProcessorBase *proc) const { - implement_compute_local (cache, layout, interactions, results, max_vertex_count, area_ratio); + implement_compute_local (cache, layout, cell, interactions, results, proc); } - void compute_local (CompoundRegionOperationCache *cache, db::Layout *layout, const shape_interactions &interactions, std::vector > &results, size_t max_vertex_count, double area_ratio) const + void compute_local (CompoundRegionOperationCache *cache, db::Layout *layout, db::Cell *cell, const shape_interactions &interactions, std::vector > &results, const db::LocalProcessorBase *proc) const { - implement_compute_local (cache, layout, interactions, results, max_vertex_count, area_ratio); + implement_compute_local (cache, layout, cell, interactions, results, proc); } - void compute_local (CompoundRegionOperationCache *cache, db::Layout *layout, const shape_interactions &interactions, std::vector > &results, size_t max_vertex_count, double area_ratio) const; + void compute_local (CompoundRegionOperationCache *cache, db::Layout *layout, db::Cell *cell, const shape_interactions &interactions, std::vector > &results, const db::LocalProcessorBase *proc) const; - void compute_local (CompoundRegionOperationCache *cache, db::Layout *layout, const shape_interactions &interactions, std::vector > &results, size_t max_vertex_count, double area_ratio) const + void compute_local (CompoundRegionOperationCache *cache, db::Layout *layout, db::Cell *cell, const shape_interactions &interactions, std::vector > &results, const db::LocalProcessorBase *proc) const { - implement_compute_local (cache, layout, interactions, results, max_vertex_count, area_ratio); + implement_compute_local (cache, layout, cell, interactions, results, proc); } - void compute_local (CompoundRegionOperationCache *cache, db::Layout *layout, const shape_interactions &interactions, std::vector > &results, size_t max_vertex_count, double area_ratio) const + void compute_local (CompoundRegionOperationCache *cache, db::Layout *layout, db::Cell *cell, const shape_interactions &interactions, std::vector > &results, const db::LocalProcessorBase *proc) const { - implement_compute_local (cache, layout, interactions, results, max_vertex_count, area_ratio); + implement_compute_local (cache, layout, cell, interactions, results, proc); } template - bool compute_local_bool (CompoundRegionOperationCache *cache, db::Layout *layout, const shape_interactions &interactions, size_t max_vertex_count, double area_ratio) const + bool compute_local_bool (CompoundRegionOperationCache *cache, db::Layout *layout, db::Cell *cell, const shape_interactions &interactions, const db::LocalProcessorBase *proc) const { if (result_type () == Region) { std::vector > res; res.push_back (std::unordered_set ()); - compute_local (cache, layout, interactions, res, max_vertex_count, area_ratio); + compute_local (cache, layout, cell, interactions, res, proc); return ! res.front ().empty (); } else if (result_type () == Edges) { std::vector > res; res.push_back (std::unordered_set ()); - compute_local (cache, layout, interactions, res, max_vertex_count, area_ratio); + compute_local (cache, layout, cell, interactions, res, proc); return ! res.front ().empty (); } else if (result_type () == EdgePairs) { std::vector > res; res.push_back (std::unordered_set ()); - compute_local (cache, layout, interactions, res, max_vertex_count, area_ratio); + compute_local (cache, layout, cell, interactions, res, proc); return ! res.front ().empty (); } else { @@ -256,12 +256,12 @@ public: protected: // the different computation slots - virtual void do_compute_local (CompoundRegionOperationCache * /*cache*/, db::Layout * /*layout*/, const shape_interactions & /*interactions*/, std::vector > & /*results*/, size_t /*max_vertex_count*/, double /*area_ratio*/) const { } - virtual void do_compute_local (CompoundRegionOperationCache * /*cache*/, db::Layout * /*layout*/, const shape_interactions & /*interactions*/, std::vector > & /*results*/, size_t /*max_vertex_count*/, double /*area_ratio*/) const { } - virtual void do_compute_local (CompoundRegionOperationCache * /*cache*/, db::Layout * /*layout*/, const shape_interactions & /*interactions*/, std::vector > & /*results*/, size_t /*max_vertex_count*/, double /*area_ratio*/) const { } - virtual void do_compute_local (CompoundRegionOperationCache * /*cache*/, db::Layout * /*layout*/, const shape_interactions & /*interactions*/, std::vector > & /*results*/, size_t /*max_vertex_count*/, double /*area_ratio*/) const { } - virtual void do_compute_local (CompoundRegionOperationCache * /*cache*/, db::Layout * /*layout*/, const shape_interactions & /*interactions*/, std::vector > & /*results*/, size_t /*max_vertex_count*/, double /*area_ratio*/) const { } - virtual void do_compute_local (CompoundRegionOperationCache * /*cache*/, db::Layout * /*layout*/, const shape_interactions & /*interactions*/, std::vector > & /*results*/, size_t /*max_vertex_count*/, double /*area_ratio*/) const { } + virtual void do_compute_local (CompoundRegionOperationCache * /*cache*/, db::Layout * /*layout*/, db::Cell * /*cell*/, const shape_interactions & /*interactions*/, std::vector > & /*results*/, const db::LocalProcessorBase * /*proc*/) const { } + virtual void do_compute_local (CompoundRegionOperationCache * /*cache*/, db::Layout * /*layout*/, db::Cell * /*cell*/, const shape_interactions & /*interactions*/, std::vector > & /*results*/, const db::LocalProcessorBase * /*proc*/) const { } + virtual void do_compute_local (CompoundRegionOperationCache * /*cache*/, db::Layout * /*layout*/, db::Cell * /*cell*/, const shape_interactions & /*interactions*/, std::vector > & /*results*/, const db::LocalProcessorBase * /*proc*/) const { } + virtual void do_compute_local (CompoundRegionOperationCache * /*cache*/, db::Layout * /*layout*/, db::Cell * /*cell*/, const shape_interactions & /*interactions*/, std::vector > & /*results*/, const db::LocalProcessorBase * /*proc*/) const { } + virtual void do_compute_local (CompoundRegionOperationCache * /*cache*/, db::Layout * /*layout*/, db::Cell * /*cell*/, const shape_interactions & /*interactions*/, std::vector > & /*results*/, const db::LocalProcessorBase * /*proc*/) const { } + virtual void do_compute_local (CompoundRegionOperationCache * /*cache*/, db::Layout * /*layout*/, db::Cell * /*cell*/, const shape_interactions & /*interactions*/, std::vector > & /*results*/, const db::LocalProcessorBase * /*proc*/) const { } virtual db::Coord computed_dist () const = 0; @@ -272,7 +272,7 @@ private: db::Coord m_dist; template - void implement_compute_local (CompoundRegionOperationCache *cache, db::Layout *layout, const shape_interactions &interactions, std::vector > &results, size_t max_vertex_count, double area_ratio) const + void implement_compute_local (CompoundRegionOperationCache *cache, db::Layout *layout, db::Cell *cell, const shape_interactions &interactions, std::vector > &results, const db::LocalProcessorBase *proc) const { // TODO: confine caching to those nodes which need it. @@ -283,7 +283,7 @@ private: std::vector > uncached_results; uncached_results.resize (results.size ()); - do_compute_local (cache, layout, interactions, uncached_results, max_vertex_count, area_ratio); + do_compute_local (cache, layout, cell, interactions, uncached_results, proc); cp.second->swap (uncached_results); @@ -360,14 +360,14 @@ public: virtual db::Coord computed_dist () const { return 0; } virtual ResultType result_type () const { return Region; } - virtual void do_compute_local (CompoundRegionOperationCache *cache, db::Layout *layout, const shape_interactions &interactions, std::vector > &results, size_t max_vertex_count, double area_ratio) const; - virtual void do_compute_local (CompoundRegionOperationCache *cache, db::Layout *layout, const shape_interactions &interactions, std::vector > &results, size_t max_vertex_count, double area_ratio) const; + virtual void do_compute_local (CompoundRegionOperationCache *cache, db::Layout *layout, db::Cell *cell, const shape_interactions &interactions, std::vector > &results, const db::LocalProcessorBase *proc) const; + virtual void do_compute_local (CompoundRegionOperationCache *cache, db::Layout *layout, db::Cell *cell, const shape_interactions &interactions, std::vector > &results, const db::LocalProcessorBase *proc) const; // non-implemented - virtual void do_compute_local (CompoundRegionOperationCache * /*cache*/, db::Layout * /*layout*/, const shape_interactions & /*interactions*/, std::vector > & /*results*/, size_t /*max_vertex_count*/, double /*area_ratio*/) const { } - virtual void do_compute_local (CompoundRegionOperationCache * /*cache*/, db::Layout * /*layout*/, const shape_interactions & /*interactions*/, std::vector > & /*results*/, size_t /*max_vertex_count*/, double /*area_ratio*/) const { } - virtual void do_compute_local (CompoundRegionOperationCache * /*cache*/, db::Layout * /*layout*/, const shape_interactions & /*interactions*/, std::vector > & /*results*/, size_t /*max_vertex_count*/, double /*area_ratio*/) const { } - virtual void do_compute_local (CompoundRegionOperationCache * /*cache*/, db::Layout * /*layout*/, const shape_interactions & /*interactions*/, std::vector > & /*results*/, size_t /*max_vertex_count*/, double /*area_ratio*/) const { } + virtual void do_compute_local (CompoundRegionOperationCache * /*cache*/, db::Layout * /*layout*/, db::Cell * /*cell*/, const shape_interactions & /*interactions*/, std::vector > & /*results*/, const db::LocalProcessorBase * /*proc*/) const { } + virtual void do_compute_local (CompoundRegionOperationCache * /*cache*/, db::Layout * /*layout*/, db::Cell * /*cell*/, const shape_interactions & /*interactions*/, std::vector > & /*results*/, const db::LocalProcessorBase * /*proc*/) const { } + virtual void do_compute_local (CompoundRegionOperationCache * /*cache*/, db::Layout * /*layout*/, db::Cell * /*cell*/, const shape_interactions & /*interactions*/, std::vector > & /*results*/, const db::LocalProcessorBase * /*proc*/) const { } + virtual void do_compute_local (CompoundRegionOperationCache * /*cache*/, db::Layout * /*layout*/, db::Cell * /*cell*/, const shape_interactions & /*interactions*/, std::vector > & /*results*/, const db::LocalProcessorBase * /*proc*/) const { } }; class DB_PUBLIC CompoundRegionOperationForeignNode @@ -381,14 +381,14 @@ public: virtual db::Coord computed_dist () const { return 0; } virtual ResultType result_type () const { return Region; } - virtual void do_compute_local (CompoundRegionOperationCache *cache, db::Layout *layout, const shape_interactions &interactions, std::vector > &results, size_t max_vertex_count, double area_ratio) const; - virtual void do_compute_local (CompoundRegionOperationCache *cache, db::Layout *layout, const shape_interactions &interactions, std::vector > &results, size_t max_vertex_count, double area_ratio) const; + virtual void do_compute_local (CompoundRegionOperationCache *cache, db::Layout *layout, db::Cell *cell, const shape_interactions &interactions, std::vector > &results, const db::LocalProcessorBase *proc) const; + virtual void do_compute_local (CompoundRegionOperationCache *cache, db::Layout *layout, db::Cell *cell, const shape_interactions &interactions, std::vector > &results, const db::LocalProcessorBase *proc) const; // non-implemented - virtual void do_compute_local (CompoundRegionOperationCache * /*cache*/, db::Layout * /*layout*/, const shape_interactions & /*interactions*/, std::vector > & /*results*/, size_t /*max_vertex_count*/, double /*area_ratio*/) const { } - virtual void do_compute_local (CompoundRegionOperationCache * /*cache*/, db::Layout * /*layout*/, const shape_interactions & /*interactions*/, std::vector > & /*results*/, size_t /*max_vertex_count*/, double /*area_ratio*/) const { } - virtual void do_compute_local (CompoundRegionOperationCache * /*cache*/, db::Layout * /*layout*/, const shape_interactions & /*interactions*/, std::vector > & /*results*/, size_t /*max_vertex_count*/, double /*area_ratio*/) const { } - virtual void do_compute_local (CompoundRegionOperationCache * /*cache*/, db::Layout * /*layout*/, const shape_interactions & /*interactions*/, std::vector > & /*results*/, size_t /*max_vertex_count*/, double /*area_ratio*/) const { } + virtual void do_compute_local (CompoundRegionOperationCache * /*cache*/, db::Layout * /*layout*/, db::Cell * /*cell*/, const shape_interactions & /*interactions*/, std::vector > & /*results*/, const db::LocalProcessorBase * /*proc*/) const { } + virtual void do_compute_local (CompoundRegionOperationCache * /*cache*/, db::Layout * /*layout*/, db::Cell * /*cell*/, const shape_interactions & /*interactions*/, std::vector > & /*results*/, const db::LocalProcessorBase * /*proc*/) const { } + virtual void do_compute_local (CompoundRegionOperationCache * /*cache*/, db::Layout * /*layout*/, db::Cell * /*cell*/, const shape_interactions & /*interactions*/, std::vector > & /*results*/, const db::LocalProcessorBase * /*proc*/) const { } + virtual void do_compute_local (CompoundRegionOperationCache * /*cache*/, db::Layout * /*layout*/, db::Cell * /*cell*/, const shape_interactions & /*interactions*/, std::vector > & /*results*/, const db::LocalProcessorBase * /*proc*/) const { } }; class DB_PUBLIC CompoundRegionOperationSecondaryNode @@ -402,14 +402,14 @@ public: virtual db::Coord computed_dist () const { return 0; } virtual ResultType result_type () const { return Region; } - virtual void do_compute_local (CompoundRegionOperationCache *cache, db::Layout *layout, const shape_interactions &interactions, std::vector > &results, size_t max_vertex_count, double area_ratio) const; - virtual void do_compute_local (CompoundRegionOperationCache *cache, db::Layout *layout, const shape_interactions &interactions, std::vector > &results, size_t max_vertex_count, double area_ratio) const; + virtual void do_compute_local (CompoundRegionOperationCache *cache, db::Layout *layout, db::Cell *cell, const shape_interactions &interactions, std::vector > &results, const db::LocalProcessorBase *proc) const; + virtual void do_compute_local (CompoundRegionOperationCache *cache, db::Layout *layout, db::Cell *cell, const shape_interactions &interactions, std::vector > &results, const db::LocalProcessorBase *proc) const; // non-implemented - virtual void do_compute_local (CompoundRegionOperationCache * /*cache*/, db::Layout * /*layout*/, const shape_interactions & /*interactions*/, std::vector > & /*results*/, size_t /*max_vertex_count*/, double /*area_ratio*/) const { } - virtual void do_compute_local (CompoundRegionOperationCache * /*cache*/, db::Layout * /*layout*/, const shape_interactions & /*interactions*/, std::vector > & /*results*/, size_t /*max_vertex_count*/, double /*area_ratio*/) const { } - virtual void do_compute_local (CompoundRegionOperationCache * /*cache*/, db::Layout * /*layout*/, const shape_interactions & /*interactions*/, std::vector > & /*results*/, size_t /*max_vertex_count*/, double /*area_ratio*/) const { } - virtual void do_compute_local (CompoundRegionOperationCache * /*cache*/, db::Layout * /*layout*/, const shape_interactions & /*interactions*/, std::vector > & /*results*/, size_t /*max_vertex_count*/, double /*area_ratio*/) const { } + virtual void do_compute_local (CompoundRegionOperationCache * /*cache*/, db::Layout * /*layout*/, db::Cell * /*cell*/, const shape_interactions & /*interactions*/, std::vector > & /*results*/, const db::LocalProcessorBase * /*proc*/) const { } + virtual void do_compute_local (CompoundRegionOperationCache * /*cache*/, db::Layout * /*layout*/, db::Cell * /*cell*/, const shape_interactions & /*interactions*/, std::vector > & /*results*/, const db::LocalProcessorBase * /*proc*/) const { } + virtual void do_compute_local (CompoundRegionOperationCache * /*cache*/, db::Layout * /*layout*/, db::Cell * /*cell*/, const shape_interactions & /*interactions*/, std::vector > & /*results*/, const db::LocalProcessorBase * /*proc*/) const { } + virtual void do_compute_local (CompoundRegionOperationCache * /*cache*/, db::Layout * /*layout*/, db::Cell * /*cell*/, const shape_interactions & /*interactions*/, std::vector > & /*results*/, const db::LocalProcessorBase * /*proc*/) const { } private: db::Region *mp_input; @@ -532,28 +532,28 @@ public: virtual ResultType result_type () const; // the different computation slots - virtual void do_compute_local (CompoundRegionOperationCache *cache, db::Layout *layout, const shape_interactions &interactions, std::vector > &results, size_t max_vertex_count, double area_ratio) const + virtual void do_compute_local (CompoundRegionOperationCache *cache, db::Layout *layout, db::Cell *cell, const shape_interactions &interactions, std::vector > &results, const db::LocalProcessorBase *proc) const { - implement_compute_local (cache, layout, interactions, results, max_vertex_count, area_ratio); + implement_compute_local (cache, layout, cell, interactions, results, proc); } - virtual void do_compute_local (CompoundRegionOperationCache *cache, db::Layout *layout, const shape_interactions &interactions, std::vector > &results, size_t max_vertex_count, double area_ratio) const + virtual void do_compute_local (CompoundRegionOperationCache *cache, db::Layout *layout, db::Cell *cell, const shape_interactions &interactions, std::vector > &results, const db::LocalProcessorBase *proc) const { - implement_compute_local (cache, layout, interactions, results, max_vertex_count, area_ratio); + implement_compute_local (cache, layout, cell, interactions, results, proc); } // non-implemented - virtual void do_compute_local (CompoundRegionOperationCache * /*cache*/, db::Layout * /*layout*/, const shape_interactions & /*interactions*/, std::vector > & /*results*/, size_t /*max_vertex_count*/, double /*area_ratio*/) const { } - virtual void do_compute_local (CompoundRegionOperationCache * /*cache*/, db::Layout * /*layout*/, const shape_interactions & /*interactions*/, std::vector > & /*results*/, size_t /*max_vertex_count*/, double /*area_ratio*/) const { } - virtual void do_compute_local (CompoundRegionOperationCache * /*cache*/, db::Layout * /*layout*/, const shape_interactions & /*interactions*/, std::vector > & /*results*/, size_t /*max_vertex_count*/, double /*area_ratio*/) const { } - virtual void do_compute_local (CompoundRegionOperationCache * /*cache*/, db::Layout * /*layout*/, const shape_interactions & /*interactions*/, std::vector > & /*results*/, size_t /*max_vertex_count*/, double /*area_ratio*/) const { } + virtual void do_compute_local (CompoundRegionOperationCache * /*cache*/, db::Layout * /*layout*/, db::Cell * /*cell*/, const shape_interactions & /*interactions*/, std::vector > & /*results*/, const db::LocalProcessorBase * /*proc*/) const { } + virtual void do_compute_local (CompoundRegionOperationCache * /*cache*/, db::Layout * /*layout*/, db::Cell * /*cell*/, const shape_interactions & /*interactions*/, std::vector > & /*results*/, const db::LocalProcessorBase * /*proc*/) const { } + virtual void do_compute_local (CompoundRegionOperationCache * /*cache*/, db::Layout * /*layout*/, db::Cell * /*cell*/, const shape_interactions & /*interactions*/, std::vector > & /*results*/, const db::LocalProcessorBase * /*proc*/) const { } + virtual void do_compute_local (CompoundRegionOperationCache * /*cache*/, db::Layout * /*layout*/, db::Cell * /*cell*/, const shape_interactions & /*interactions*/, std::vector > & /*results*/, const db::LocalProcessorBase * /*proc*/) const { } private: LogicalOp m_op; bool m_invert; template - void implement_compute_local (CompoundRegionOperationCache *cache, db::Layout *layout, const shape_interactions &interactions, std::vector > &results, size_t max_vertex_count, double area_ratio) const; + void implement_compute_local (CompoundRegionOperationCache *cache, db::Layout *layout, db::Cell *cell, const shape_interactions &interactions, std::vector > &results, const db::LocalProcessorBase *proc) const; }; @@ -573,34 +573,34 @@ public: } // the different computation slots - virtual void do_compute_local (CompoundRegionOperationCache *cache, db::Layout *layout, const shape_interactions &interactions, std::vector > &results, size_t max_vertex_count, double area_ratio) const + virtual void do_compute_local (CompoundRegionOperationCache *cache, db::Layout *layout, db::Cell *cell, const shape_interactions &interactions, std::vector > &results, const db::LocalProcessorBase *proc) const { - implement_compute_local (cache, layout, interactions, results, max_vertex_count, area_ratio); + implement_compute_local (cache, layout, cell, interactions, results, proc); } - virtual void do_compute_local (CompoundRegionOperationCache *cache, db::Layout *layout, const shape_interactions &interactions, std::vector > &results, size_t max_vertex_count, double area_ratio) const + virtual void do_compute_local (CompoundRegionOperationCache *cache, db::Layout *layout, db::Cell *cell, const shape_interactions &interactions, std::vector > &results, const db::LocalProcessorBase *proc) const { - implement_compute_local (cache, layout, interactions, results, max_vertex_count, area_ratio); + implement_compute_local (cache, layout, cell, interactions, results, proc); } - virtual void do_compute_local (CompoundRegionOperationCache *cache, db::Layout *layout, const shape_interactions &interactions, std::vector > &results, size_t max_vertex_count, double area_ratio) const + virtual void do_compute_local (CompoundRegionOperationCache *cache, db::Layout *layout, db::Cell *cell, const shape_interactions &interactions, std::vector > &results, const db::LocalProcessorBase *proc) const { - implement_compute_local (cache, layout, interactions, results, max_vertex_count, area_ratio); + implement_compute_local (cache, layout, cell, interactions, results, proc); } - virtual void do_compute_local (CompoundRegionOperationCache *cache, db::Layout *layout, const shape_interactions &interactions, std::vector > &results, size_t max_vertex_count, double area_ratio) const + virtual void do_compute_local (CompoundRegionOperationCache *cache, db::Layout *layout, db::Cell *cell, const shape_interactions &interactions, std::vector > &results, const db::LocalProcessorBase *proc) const { - implement_compute_local (cache, layout, interactions, results, max_vertex_count, area_ratio); + implement_compute_local (cache, layout, cell, interactions, results, proc); } - virtual void do_compute_local (CompoundRegionOperationCache *cache, db::Layout *layout, const shape_interactions &interactions, std::vector > &results, size_t max_vertex_count, double area_ratio) const + virtual void do_compute_local (CompoundRegionOperationCache *cache, db::Layout *layout, db::Cell *cell, const shape_interactions &interactions, std::vector > &results, const db::LocalProcessorBase *proc) const { - implement_compute_local (cache, layout, interactions, results, max_vertex_count, area_ratio); + implement_compute_local (cache, layout, cell, interactions, results, proc); } - virtual void do_compute_local (CompoundRegionOperationCache *cache, db::Layout *layout, const shape_interactions &interactions, std::vector > &results, size_t max_vertex_count, double area_ratio) const + virtual void do_compute_local (CompoundRegionOperationCache *cache, db::Layout *layout, db::Cell *cell, const shape_interactions &interactions, std::vector > &results, const db::LocalProcessorBase *proc) const { - implement_compute_local (cache, layout, interactions, results, max_vertex_count, area_ratio); + implement_compute_local (cache, layout, cell, interactions, results, proc); } private: @@ -608,12 +608,12 @@ private: bool m_invert; template - void implement_compute_local (CompoundRegionOperationCache *cache, db::Layout *layout, const shape_interactions &interactions, std::vector > &results, size_t max_vertex_count, double area_ratio) const + void implement_compute_local (CompoundRegionOperationCache *cache, db::Layout *layout, db::Cell *cell, const shape_interactions &interactions, std::vector > &results, const db::LocalProcessorBase *proc) const { std::vector > one; one.push_back (std::unordered_set ()); - child (0)->compute_local (cache, layout, interactions, one, max_vertex_count, area_ratio); + child (0)->compute_local (cache, layout, cell, interactions, one, proc); if ((one.front ().size () >= m_min_count && one.front ().size () < m_max_count) != m_invert) { results.front ().insert (one.front ().begin (), one.front ().end ()); @@ -637,22 +637,22 @@ public: virtual db::Coord computed_dist () const; // the different computation slots - virtual void do_compute_local (CompoundRegionOperationCache *cache, db::Layout *layout, const shape_interactions &interactions, std::vector > &results, size_t max_vertex_count, double area_ratio) const; - virtual void do_compute_local (CompoundRegionOperationCache *cache, db::Layout *layout, const shape_interactions &interactions, std::vector > &results, size_t max_vertex_count, double area_ratio) const; - virtual void do_compute_local (CompoundRegionOperationCache *cache, db::Layout *layout, const shape_interactions &interactions, std::vector > &results, size_t max_vertex_count, double area_ratio) const; - virtual void do_compute_local (CompoundRegionOperationCache *cache, db::Layout *layout, const shape_interactions &interactions, std::vector > &results, size_t max_vertex_count, double area_ratio) const; + virtual void do_compute_local (CompoundRegionOperationCache *cache, db::Layout *layout, db::Cell *cell, const shape_interactions &interactions, std::vector > &results, const db::LocalProcessorBase *proc) const; + virtual void do_compute_local (CompoundRegionOperationCache *cache, db::Layout *layout, db::Cell *cell, const shape_interactions &interactions, std::vector > &results, const db::LocalProcessorBase *proc) const; + virtual void do_compute_local (CompoundRegionOperationCache *cache, db::Layout *layout, db::Cell *cell, const shape_interactions &interactions, std::vector > &results, const db::LocalProcessorBase *proc) const; + virtual void do_compute_local (CompoundRegionOperationCache *cache, db::Layout *layout, db::Cell *cell, const shape_interactions &interactions, std::vector > &results, const db::LocalProcessorBase *proc) const; // non-implemented - virtual void do_compute_local (CompoundRegionOperationCache * /*cache*/, db::Layout * /*layout*/, const shape_interactions & /*interactions*/, std::vector > & /*results*/, size_t /*max_vertex_count*/, double /*area_ratio*/) const { } - virtual void do_compute_local (CompoundRegionOperationCache * /*cache*/, db::Layout * /*layout*/, const shape_interactions & /*interactions*/, std::vector > & /*results*/, size_t /*max_vertex_count*/, double /*area_ratio*/) const { } + virtual void do_compute_local (CompoundRegionOperationCache * /*cache*/, db::Layout * /*layout*/, db::Cell * /*cell*/, const shape_interactions & /*interactions*/, std::vector > & /*results*/, const db::LocalProcessorBase * /*proc*/) const { } + virtual void do_compute_local (CompoundRegionOperationCache * /*cache*/, db::Layout * /*layout*/, db::Cell * /*cell*/, const shape_interactions & /*interactions*/, std::vector > & /*results*/, const db::LocalProcessorBase * /*proc*/) const { } private: GeometricalOp m_op; template - void implement_compute_local (CompoundRegionOperationCache *cache, db::Layout *layout, const shape_interactions &interactions, std::vector > &results, size_t max_vertex_count, double area_ratio) const; + void implement_compute_local (CompoundRegionOperationCache *cache, db::Layout *layout, db::Cell *cell, const shape_interactions &interactions, std::vector > &results, const db::LocalProcessorBase *proc) const; template - void implement_bool (CompoundRegionOperationCache *cache, db::Layout *layout, const shape_interactions &interactions, std::vector > &results, size_t max_vertex_count, double area_ratio) const; + void implement_bool (CompoundRegionOperationCache *cache, db::Layout *layout, db::Cell *cell, const shape_interactions &interactions, std::vector > &results, const db::LocalProcessorBase *proc) const; }; template @@ -725,7 +725,7 @@ protected: } template - void implement_compute_local (db::CompoundRegionOperationCache *cache, db::Layout *layout, const shape_interactions &interactions, std::vector > &results, size_t max_vertex_count, double area_ratio) const; + void implement_compute_local (db::CompoundRegionOperationCache *cache, db::Layout *layout, db::Cell *cell, const shape_interactions &interactions, std::vector > &results, const db::LocalProcessorBase *proc) const; private: const db::local_operation *m_op; @@ -745,21 +745,21 @@ public: std::string generated_description () const; - virtual void do_compute_local (CompoundRegionOperationCache *cache, db::Layout *layout, const shape_interactions &interactions, std::vector > &results, size_t max_vertex_count, double area_ratio) const + virtual void do_compute_local (CompoundRegionOperationCache *cache, db::Layout *layout, db::Cell *cell, const shape_interactions &interactions, std::vector > &results, const db::LocalProcessorBase *proc) const { - implement_compute_local (cache, layout, interactions, results, max_vertex_count, area_ratio); + implement_compute_local (cache, layout, cell, interactions, results, proc); } - virtual void do_compute_local (CompoundRegionOperationCache *cache, db::Layout *layout, const shape_interactions &interactions, std::vector > &results, size_t max_vertex_count, double area_ratio) const + virtual void do_compute_local (CompoundRegionOperationCache *cache, db::Layout *layout, db::Cell *cell, const shape_interactions &interactions, std::vector > &results, const db::LocalProcessorBase *proc) const { - implement_compute_local (cache, layout, interactions, results, max_vertex_count, area_ratio); + implement_compute_local (cache, layout, cell, interactions, results, proc); } // non-implemented - virtual void do_compute_local (CompoundRegionOperationCache * /*cache*/, db::Layout * /*layout*/, const shape_interactions & /*interactions*/, std::vector > & /*results*/, size_t /*max_vertex_count*/, double /*area_ratio*/) const { } - virtual void do_compute_local (CompoundRegionOperationCache * /*cache*/, db::Layout * /*layout*/, const shape_interactions & /*interactions*/, std::vector > & /*results*/, size_t /*max_vertex_count*/, double /*area_ratio*/) const { } - virtual void do_compute_local (CompoundRegionOperationCache * /*cache*/, db::Layout * /*layout*/, const shape_interactions & /*interactions*/, std::vector > & /*results*/, size_t /*max_vertex_count*/, double /*area_ratio*/) const { } - virtual void do_compute_local (CompoundRegionOperationCache * /*cache*/, db::Layout * /*layout*/, const shape_interactions & /*interactions*/, std::vector > & /*results*/, size_t /*max_vertex_count*/, double /*area_ratio*/) const { } + virtual void do_compute_local (CompoundRegionOperationCache * /*cache*/, db::Layout * /*layout*/, db::Cell * /*cell*/, const shape_interactions & /*interactions*/, std::vector > & /*results*/, const db::LocalProcessorBase * /*proc*/) const { } + virtual void do_compute_local (CompoundRegionOperationCache * /*cache*/, db::Layout * /*layout*/, db::Cell * /*cell*/, const shape_interactions & /*interactions*/, std::vector > & /*results*/, const db::LocalProcessorBase * /*proc*/) const { } + virtual void do_compute_local (CompoundRegionOperationCache * /*cache*/, db::Layout * /*layout*/, db::Cell * /*cell*/, const shape_interactions & /*interactions*/, std::vector > & /*results*/, const db::LocalProcessorBase * /*proc*/) const { } + virtual void do_compute_local (CompoundRegionOperationCache * /*cache*/, db::Layout * /*layout*/, db::Cell * /*cell*/, const shape_interactions & /*interactions*/, std::vector > & /*results*/, const db::LocalProcessorBase * /*proc*/) const { } private: typedef db::interacting_local_operation op_type; @@ -774,21 +774,21 @@ public: std::string generated_description () const; - virtual void do_compute_local (CompoundRegionOperationCache *cache, db::Layout *layout, const shape_interactions &interactions, std::vector > &results, size_t max_vertex_count, double area_ratio) const + virtual void do_compute_local (CompoundRegionOperationCache *cache, db::Layout *layout, db::Cell *cell, const shape_interactions &interactions, std::vector > &results, const db::LocalProcessorBase *proc) const { - implement_compute_local (cache, layout, interactions, results, max_vertex_count, area_ratio); + implement_compute_local (cache, layout, cell, interactions, results, proc); } - virtual void do_compute_local (CompoundRegionOperationCache *cache, db::Layout *layout, const shape_interactions &interactions, std::vector > &results, size_t max_vertex_count, double area_ratio) const + virtual void do_compute_local (CompoundRegionOperationCache *cache, db::Layout *layout, db::Cell *cell, const shape_interactions &interactions, std::vector > &results, const db::LocalProcessorBase *proc) const { - implement_compute_local (cache, layout, interactions, results, max_vertex_count, area_ratio); + implement_compute_local (cache, layout, cell, interactions, results, proc); } // non-implemented - virtual void do_compute_local (CompoundRegionOperationCache * /*cache*/, db::Layout * /*layout*/, const shape_interactions & /*interactions*/, std::vector > & /*results*/, size_t /*max_vertex_count*/, double /*area_ratio*/) const { } - virtual void do_compute_local (CompoundRegionOperationCache * /*cache*/, db::Layout * /*layout*/, const shape_interactions & /*interactions*/, std::vector > & /*results*/, size_t /*max_vertex_count*/, double /*area_ratio*/) const { } - virtual void do_compute_local (CompoundRegionOperationCache * /*cache*/, db::Layout * /*layout*/, const shape_interactions & /*interactions*/, std::vector > & /*results*/, size_t /*max_vertex_count*/, double /*area_ratio*/) const { } - virtual void do_compute_local (CompoundRegionOperationCache * /*cache*/, db::Layout * /*layout*/, const shape_interactions & /*interactions*/, std::vector > & /*results*/, size_t /*max_vertex_count*/, double /*area_ratio*/) const { } + virtual void do_compute_local (CompoundRegionOperationCache * /*cache*/, db::Layout * /*layout*/, db::Cell * /*cell*/, const shape_interactions & /*interactions*/, std::vector > & /*results*/, const db::LocalProcessorBase * /*proc*/) const { } + virtual void do_compute_local (CompoundRegionOperationCache * /*cache*/, db::Layout * /*layout*/, db::Cell * /*cell*/, const shape_interactions & /*interactions*/, std::vector > & /*results*/, const db::LocalProcessorBase * /*proc*/) const { } + virtual void do_compute_local (CompoundRegionOperationCache * /*cache*/, db::Layout * /*layout*/, db::Cell * /*cell*/, const shape_interactions & /*interactions*/, std::vector > & /*results*/, const db::LocalProcessorBase * /*proc*/) const { } + virtual void do_compute_local (CompoundRegionOperationCache * /*cache*/, db::Layout * /*layout*/, db::Cell * /*cell*/, const shape_interactions & /*interactions*/, std::vector > & /*results*/, const db::LocalProcessorBase * /*proc*/) const { } private: db::interacting_with_edge_local_operation m_op; @@ -803,21 +803,21 @@ public: std::string generated_description () const; - virtual void do_compute_local (CompoundRegionOperationCache *cache, db::Layout *layout, const shape_interactions &interactions, std::vector > &results, size_t max_vertex_count, double area_ratio) const + virtual void do_compute_local (CompoundRegionOperationCache *cache, db::Layout *layout, db::Cell *cell, const shape_interactions &interactions, std::vector > &results, const db::LocalProcessorBase *proc) const { - implement_compute_local (cache, layout, interactions, results, max_vertex_count, area_ratio); + implement_compute_local (cache, layout, cell, interactions, results, proc); } - virtual void do_compute_local (CompoundRegionOperationCache *cache, db::Layout *layout, const shape_interactions &interactions, std::vector > &results, size_t max_vertex_count, double area_ratio) const + virtual void do_compute_local (CompoundRegionOperationCache *cache, db::Layout *layout, db::Cell *cell, const shape_interactions &interactions, std::vector > &results, const db::LocalProcessorBase *proc) const { - implement_compute_local (cache, layout, interactions, results, max_vertex_count, area_ratio); + implement_compute_local (cache, layout, cell, interactions, results, proc); } // non-implemented - virtual void do_compute_local (CompoundRegionOperationCache * /*cache*/, db::Layout * /*layout*/, const shape_interactions & /*interactions*/, std::vector > & /*results*/, size_t /*max_vertex_count*/, double /*area_ratio*/) const { } - virtual void do_compute_local (CompoundRegionOperationCache * /*cache*/, db::Layout * /*layout*/, const shape_interactions & /*interactions*/, std::vector > & /*results*/, size_t /*max_vertex_count*/, double /*area_ratio*/) const { } - virtual void do_compute_local (CompoundRegionOperationCache * /*cache*/, db::Layout * /*layout*/, const shape_interactions & /*interactions*/, std::vector > & /*results*/, size_t /*max_vertex_count*/, double /*area_ratio*/) const { } - virtual void do_compute_local (CompoundRegionOperationCache * /*cache*/, db::Layout * /*layout*/, const shape_interactions & /*interactions*/, std::vector > & /*results*/, size_t /*max_vertex_count*/, double /*area_ratio*/) const { } + virtual void do_compute_local (CompoundRegionOperationCache * /*cache*/, db::Layout * /*layout*/, db::Cell * /*cell*/, const shape_interactions & /*interactions*/, std::vector > & /*results*/, const db::LocalProcessorBase * /*proc*/) const { } + virtual void do_compute_local (CompoundRegionOperationCache * /*cache*/, db::Layout * /*layout*/, db::Cell * /*cell*/, const shape_interactions & /*interactions*/, std::vector > & /*results*/, const db::LocalProcessorBase * /*proc*/) const { } + virtual void do_compute_local (CompoundRegionOperationCache * /*cache*/, db::Layout * /*layout*/, db::Cell * /*cell*/, const shape_interactions & /*interactions*/, std::vector > & /*results*/, const db::LocalProcessorBase * /*proc*/) const { } + virtual void do_compute_local (CompoundRegionOperationCache * /*cache*/, db::Layout * /*layout*/, db::Cell * /*cell*/, const shape_interactions & /*interactions*/, std::vector > & /*results*/, const db::LocalProcessorBase * /*proc*/) const { } private: db::pull_local_operation m_op; @@ -831,21 +831,21 @@ public: std::string generated_description () const; - virtual void do_compute_local (CompoundRegionOperationCache *cache, db::Layout *layout, const shape_interactions &interactions, std::vector > &results, size_t max_vertex_count, double area_ratio) const + virtual void do_compute_local (CompoundRegionOperationCache *cache, db::Layout *layout, db::Cell *cell, const shape_interactions &interactions, std::vector > &results, const db::LocalProcessorBase *proc) const { - implement_compute_local (cache, layout, interactions, results, max_vertex_count, area_ratio); + implement_compute_local (cache, layout, cell, interactions, results, proc); } - virtual void do_compute_local (CompoundRegionOperationCache *cache, db::Layout *layout, const shape_interactions &interactions, std::vector > &results, size_t max_vertex_count, double area_ratio) const + virtual void do_compute_local (CompoundRegionOperationCache *cache, db::Layout *layout, db::Cell *cell, const shape_interactions &interactions, std::vector > &results, const db::LocalProcessorBase *proc) const { - implement_compute_local (cache, layout, interactions, results, max_vertex_count, area_ratio); + implement_compute_local (cache, layout, cell, interactions, results, proc); } // non-implemented - virtual void do_compute_local (CompoundRegionOperationCache * /*cache*/, db::Layout * /*layout*/, const shape_interactions & /*interactions*/, std::vector > & /*results*/, size_t /*max_vertex_count*/, double /*area_ratio*/) const { } - virtual void do_compute_local (CompoundRegionOperationCache * /*cache*/, db::Layout * /*layout*/, const shape_interactions & /*interactions*/, std::vector > & /*results*/, size_t /*max_vertex_count*/, double /*area_ratio*/) const { } - virtual void do_compute_local (CompoundRegionOperationCache * /*cache*/, db::Layout * /*layout*/, const shape_interactions & /*interactions*/, std::vector > & /*results*/, size_t /*max_vertex_count*/, double /*area_ratio*/) const { } - virtual void do_compute_local (CompoundRegionOperationCache * /*cache*/, db::Layout * /*layout*/, const shape_interactions & /*interactions*/, std::vector > & /*results*/, size_t /*max_vertex_count*/, double /*area_ratio*/) const { } + virtual void do_compute_local (CompoundRegionOperationCache * /*cache*/, db::Layout * /*layout*/, db::Cell * /*cell*/, const shape_interactions & /*interactions*/, std::vector > & /*results*/, const db::LocalProcessorBase * /*proc*/) const { } + virtual void do_compute_local (CompoundRegionOperationCache * /*cache*/, db::Layout * /*layout*/, db::Cell * /*cell*/, const shape_interactions & /*interactions*/, std::vector > & /*results*/, const db::LocalProcessorBase * /*proc*/) const { } + virtual void do_compute_local (CompoundRegionOperationCache * /*cache*/, db::Layout * /*layout*/, db::Cell * /*cell*/, const shape_interactions & /*interactions*/, std::vector > & /*results*/, const db::LocalProcessorBase * /*proc*/) const { } + virtual void do_compute_local (CompoundRegionOperationCache * /*cache*/, db::Layout * /*layout*/, db::Cell * /*cell*/, const shape_interactions & /*interactions*/, std::vector > & /*results*/, const db::LocalProcessorBase * /*proc*/) const { } private: db::pull_with_edge_local_operation m_op; @@ -870,39 +870,39 @@ public: virtual ResultType result_type () const; // the different computation slots - virtual void do_compute_local (CompoundRegionOperationCache *cache, db::Layout *layout, const shape_interactions &interactions, std::vector > &results, size_t max_vertex_count, double area_ratio) const + virtual void do_compute_local (CompoundRegionOperationCache *cache, db::Layout *layout, db::Cell *cell, const shape_interactions &interactions, std::vector > &results, const db::LocalProcessorBase *proc) const { - implement_compute_local (cache, layout, interactions, results, max_vertex_count, area_ratio); + implement_compute_local (cache, layout, cell, interactions, results, proc); } - virtual void do_compute_local (CompoundRegionOperationCache *cache, db::Layout *layout, const shape_interactions &interactions, std::vector > &results, size_t max_vertex_count, double area_ratio) const + virtual void do_compute_local (CompoundRegionOperationCache *cache, db::Layout *layout, db::Cell *cell, const shape_interactions &interactions, std::vector > &results, const db::LocalProcessorBase *proc) const { - implement_compute_local (cache, layout, interactions, results, max_vertex_count, area_ratio); + implement_compute_local (cache, layout, cell, interactions, results, proc); } - virtual void do_compute_local (CompoundRegionOperationCache *cache, db::Layout *layout, const shape_interactions &interactions, std::vector > &results, size_t max_vertex_count, double area_ratio) const + virtual void do_compute_local (CompoundRegionOperationCache *cache, db::Layout *layout, db::Cell *cell, const shape_interactions &interactions, std::vector > &results, const db::LocalProcessorBase *proc) const { - implement_compute_local (cache, layout, interactions, results, max_vertex_count, area_ratio); + implement_compute_local (cache, layout, cell, interactions, results, proc); } - virtual void do_compute_local (CompoundRegionOperationCache *cache, db::Layout *layout, const shape_interactions &interactions, std::vector > &results, size_t max_vertex_count, double area_ratio) const + virtual void do_compute_local (CompoundRegionOperationCache *cache, db::Layout *layout, db::Cell *cell, const shape_interactions &interactions, std::vector > &results, const db::LocalProcessorBase *proc) const { - implement_compute_local (cache, layout, interactions, results, max_vertex_count, area_ratio); + implement_compute_local (cache, layout, cell, interactions, results, proc); } - virtual void do_compute_local (CompoundRegionOperationCache *cache, db::Layout *layout, const shape_interactions &interactions, std::vector > &results, size_t max_vertex_count, double area_ratio) const + virtual void do_compute_local (CompoundRegionOperationCache *cache, db::Layout *layout, db::Cell *cell, const shape_interactions &interactions, std::vector > &results, const db::LocalProcessorBase *proc) const { - implement_compute_local (cache, layout, interactions, results, max_vertex_count, area_ratio); + implement_compute_local (cache, layout, cell, interactions, results, proc); } - virtual void do_compute_local (CompoundRegionOperationCache *cache, db::Layout *layout, const shape_interactions &interactions, std::vector > &results, size_t max_vertex_count, double area_ratio) const + virtual void do_compute_local (CompoundRegionOperationCache *cache, db::Layout *layout, db::Cell *cell, const shape_interactions &interactions, std::vector > &results, const db::LocalProcessorBase *proc) const { - implement_compute_local (cache, layout, interactions, results, max_vertex_count, area_ratio); + implement_compute_local (cache, layout, cell, interactions, results, proc); } private: template - void implement_compute_local (CompoundRegionOperationCache *cache, db::Layout *layout, const shape_interactions &interactions, std::vector > &results, size_t max_vertex_count, double area_ratio) const; + void implement_compute_local (CompoundRegionOperationCache *cache, db::Layout *layout, db::Cell *cell, const shape_interactions &interactions, std::vector > &results, const db::LocalProcessorBase *proc) const; }; /** @@ -927,39 +927,39 @@ public: virtual ResultType result_type () const; // the different computation slots - virtual void do_compute_local (CompoundRegionOperationCache *cache, db::Layout *layout, const shape_interactions &interactions, std::vector > &results, size_t max_vertex_count, double area_ratio) const + virtual void do_compute_local (CompoundRegionOperationCache *cache, db::Layout *layout, db::Cell *cell, const shape_interactions &interactions, std::vector > &results, const db::LocalProcessorBase *proc) const { - implement_compute_local (cache, layout, interactions, results, max_vertex_count, area_ratio); + implement_compute_local (cache, layout, cell, interactions, results, proc); } - virtual void do_compute_local (CompoundRegionOperationCache *cache, db::Layout *layout, const shape_interactions &interactions, std::vector > &results, size_t max_vertex_count, double area_ratio) const + virtual void do_compute_local (CompoundRegionOperationCache *cache, db::Layout *layout, db::Cell *cell, const shape_interactions &interactions, std::vector > &results, const db::LocalProcessorBase *proc) const { - implement_compute_local (cache, layout, interactions, results, max_vertex_count, area_ratio); + implement_compute_local (cache, layout, cell, interactions, results, proc); } - virtual void do_compute_local (CompoundRegionOperationCache *cache, db::Layout *layout, const shape_interactions &interactions, std::vector > &results, size_t max_vertex_count, double area_ratio) const + virtual void do_compute_local (CompoundRegionOperationCache *cache, db::Layout *layout, db::Cell *cell, const shape_interactions &interactions, std::vector > &results, const db::LocalProcessorBase *proc) const { - implement_compute_local (cache, layout, interactions, results, max_vertex_count, area_ratio); + implement_compute_local (cache, layout, cell, interactions, results, proc); } - virtual void do_compute_local (CompoundRegionOperationCache *cache, db::Layout *layout, const shape_interactions &interactions, std::vector > &results, size_t max_vertex_count, double area_ratio) const + virtual void do_compute_local (CompoundRegionOperationCache *cache, db::Layout *layout, db::Cell *cell, const shape_interactions &interactions, std::vector > &results, const db::LocalProcessorBase *proc) const { - implement_compute_local (cache, layout, interactions, results, max_vertex_count, area_ratio); + implement_compute_local (cache, layout, cell, interactions, results, proc); } - virtual void do_compute_local (CompoundRegionOperationCache *cache, db::Layout *layout, const shape_interactions &interactions, std::vector > &results, size_t max_vertex_count, double area_ratio) const + virtual void do_compute_local (CompoundRegionOperationCache *cache, db::Layout *layout, db::Cell *cell, const shape_interactions &interactions, std::vector > &results, const db::LocalProcessorBase *proc) const { - implement_compute_local (cache, layout, interactions, results, max_vertex_count, area_ratio); + implement_compute_local (cache, layout, cell, interactions, results, proc); } - virtual void do_compute_local (CompoundRegionOperationCache *cache, db::Layout *layout, const shape_interactions &interactions, std::vector > &results, size_t max_vertex_count, double area_ratio) const + virtual void do_compute_local (CompoundRegionOperationCache *cache, db::Layout *layout, db::Cell *cell, const shape_interactions &interactions, std::vector > &results, const db::LocalProcessorBase *proc) const { - implement_compute_local (cache, layout, interactions, results, max_vertex_count, area_ratio); + implement_compute_local (cache, layout, cell, interactions, results, proc); } private: template - void implement_compute_local (db::CompoundRegionOperationCache *cache, db::Layout *layout, const shape_interactions &interactions, std::vector > &results, size_t max_vertex_count, double area_ratio) const; + void implement_compute_local (db::CompoundRegionOperationCache *cache, db::Layout *layout, db::Cell *cell, const shape_interactions &interactions, std::vector > &results, const db::LocalProcessorBase *proc) const; bool m_multi_layer; }; @@ -975,14 +975,14 @@ public: // specifies the result type virtual ResultType result_type () const { return Region; } - virtual void do_compute_local (CompoundRegionOperationCache *cache, db::Layout *layout, const shape_interactions &interactions, std::vector > &results, size_t max_vertex_count, double area_ratio) const; - virtual void do_compute_local (CompoundRegionOperationCache *cache, db::Layout *layout, const shape_interactions &interactions, std::vector > &results, size_t max_vertex_count, double area_ratio) const; + virtual void do_compute_local (CompoundRegionOperationCache *cache, db::Layout *layout, db::Cell *cell, const shape_interactions &interactions, std::vector > &results, const db::LocalProcessorBase *proc) const; + virtual void do_compute_local (CompoundRegionOperationCache *cache, db::Layout *layout, db::Cell *cell, const shape_interactions &interactions, std::vector > &results, const db::LocalProcessorBase *proc) const; // non-implemented - virtual void do_compute_local (CompoundRegionOperationCache * /*cache*/, db::Layout * /*layout*/, const shape_interactions & /*interactions*/, std::vector > & /*results*/, size_t /*max_vertex_count*/, double /*area_ratio*/) const { } - virtual void do_compute_local (CompoundRegionOperationCache * /*cache*/, db::Layout * /*layout*/, const shape_interactions & /*interactions*/, std::vector > & /*results*/, size_t /*max_vertex_count*/, double /*area_ratio*/) const { } - virtual void do_compute_local (CompoundRegionOperationCache * /*cache*/, db::Layout * /*layout*/, const shape_interactions & /*interactions*/, std::vector > & /*results*/, size_t /*max_vertex_count*/, double /*area_ratio*/) const { } - virtual void do_compute_local (CompoundRegionOperationCache * /*cache*/, db::Layout * /*layout*/, const shape_interactions & /*interactions*/, std::vector > & /*results*/, size_t /*max_vertex_count*/, double /*area_ratio*/) const { } + virtual void do_compute_local (CompoundRegionOperationCache * /*cache*/, db::Layout * /*layout*/, db::Cell * /*cell*/, const shape_interactions & /*interactions*/, std::vector > & /*results*/, const db::LocalProcessorBase * /*proc*/) const { } + virtual void do_compute_local (CompoundRegionOperationCache * /*cache*/, db::Layout * /*layout*/, db::Cell * /*cell*/, const shape_interactions & /*interactions*/, std::vector > & /*results*/, const db::LocalProcessorBase * /*proc*/) const { } + virtual void do_compute_local (CompoundRegionOperationCache * /*cache*/, db::Layout * /*layout*/, db::Cell * /*cell*/, const shape_interactions & /*interactions*/, std::vector > & /*results*/, const db::LocalProcessorBase * /*proc*/) const { } + virtual void do_compute_local (CompoundRegionOperationCache * /*cache*/, db::Layout * /*layout*/, db::Cell * /*cell*/, const shape_interactions & /*interactions*/, std::vector > & /*results*/, const db::LocalProcessorBase * /*proc*/) const { } virtual const TransformationReducer *vars () const { return mp_filter->vars (); } virtual bool wants_variants () const { return mp_filter->wants_variants (); } @@ -993,12 +993,12 @@ private: bool m_sum_of_set; template - void implement_compute_local (db::CompoundRegionOperationCache *cache, db::Layout *layout, const shape_interactions &interactions, std::vector > &results, size_t max_vertex_count, double area_ratio) const + void implement_compute_local (db::CompoundRegionOperationCache *cache, db::Layout *layout, db::Cell *cell, const shape_interactions &interactions, std::vector > &results, const db::LocalProcessorBase *proc) const { std::vector > one; one.push_back (std::unordered_set ()); - child (0)->compute_local (cache, layout, interactions, one, max_vertex_count, area_ratio); + child (0)->compute_local (cache, layout, cell, interactions, one, proc); if (m_sum_of_set) { if (mp_filter->selected_set (one.front ())) { @@ -1024,14 +1024,14 @@ public: // specifies the result type virtual ResultType result_type () const { return Edges; } - virtual void do_compute_local (CompoundRegionOperationCache *cache, db::Layout *layout, const shape_interactions &interactions, std::vector > &results, size_t max_vertex_count, double area_ratio) const; - virtual void do_compute_local (CompoundRegionOperationCache *cache, db::Layout *layout, const shape_interactions &interactions, std::vector > &results, size_t max_vertex_count, double area_ratio) const; + virtual void do_compute_local (CompoundRegionOperationCache *cache, db::Layout *layout, db::Cell *cell, const shape_interactions &interactions, std::vector > &results, const db::LocalProcessorBase *proc) const; + virtual void do_compute_local (CompoundRegionOperationCache *cache, db::Layout *layout, db::Cell *cell, const shape_interactions &interactions, std::vector > &results, const db::LocalProcessorBase *proc) const; // non-implemented - virtual void do_compute_local (CompoundRegionOperationCache * /*cache*/, db::Layout * /*layout*/, const shape_interactions & /*interactions*/, std::vector > & /*results*/, size_t /*max_vertex_count*/, double /*area_ratio*/) const { } - virtual void do_compute_local (CompoundRegionOperationCache * /*cache*/, db::Layout * /*layout*/, const shape_interactions & /*interactions*/, std::vector > & /*results*/, size_t /*max_vertex_count*/, double /*area_ratio*/) const { } - virtual void do_compute_local (CompoundRegionOperationCache * /*cache*/, db::Layout * /*layout*/, const shape_interactions & /*interactions*/, std::vector > & /*results*/, size_t /*max_vertex_count*/, double /*area_ratio*/) const { } - virtual void do_compute_local (CompoundRegionOperationCache * /*cache*/, db::Layout * /*layout*/, const shape_interactions & /*interactions*/, std::vector > & /*results*/, size_t /*max_vertex_count*/, double /*area_ratio*/) const { } + virtual void do_compute_local (CompoundRegionOperationCache * /*cache*/, db::Layout * /*layout*/, db::Cell * /*cell*/, const shape_interactions & /*interactions*/, std::vector > & /*results*/, const db::LocalProcessorBase * /*proc*/) const { } + virtual void do_compute_local (CompoundRegionOperationCache * /*cache*/, db::Layout * /*layout*/, db::Cell * /*cell*/, const shape_interactions & /*interactions*/, std::vector > & /*results*/, const db::LocalProcessorBase * /*proc*/) const { } + virtual void do_compute_local (CompoundRegionOperationCache * /*cache*/, db::Layout * /*layout*/, db::Cell * /*cell*/, const shape_interactions & /*interactions*/, std::vector > & /*results*/, const db::LocalProcessorBase * /*proc*/) const { } + virtual void do_compute_local (CompoundRegionOperationCache * /*cache*/, db::Layout * /*layout*/, db::Cell * /*cell*/, const shape_interactions & /*interactions*/, std::vector > & /*results*/, const db::LocalProcessorBase * /*proc*/) const { } virtual const TransformationReducer *vars () const { return mp_filter->vars (); } virtual bool wants_variants () const { return mp_filter->wants_variants (); } @@ -1042,12 +1042,12 @@ private: bool m_sum_of; template - void implement_compute_local (db::CompoundRegionOperationCache *cache, db::Layout *layout, const shape_interactions &interactions, std::vector > &results, size_t max_vertex_count, double area_ratio) const + void implement_compute_local (db::CompoundRegionOperationCache *cache, db::Layout *layout, db::Cell *cell, const shape_interactions &interactions, std::vector > &results, const db::LocalProcessorBase *proc) const { std::vector > one; one.push_back (std::unordered_set ()); - child (0)->compute_local (cache, layout, interactions, one, max_vertex_count, area_ratio); + child (0)->compute_local (cache, layout, cell, interactions, one, proc); if (m_sum_of) { if (mp_filter->selected (one.front ())) { @@ -1073,14 +1073,14 @@ public: // specifies the result type virtual ResultType result_type () const { return EdgePairs; } - virtual void do_compute_local (CompoundRegionOperationCache *cache, db::Layout *layout, const shape_interactions &interactions, std::vector > &results, size_t max_vertex_count, double area_ratio) const; - virtual void do_compute_local (CompoundRegionOperationCache *cache, db::Layout *layout, const shape_interactions &interactions, std::vector > &results, size_t max_vertex_count, double area_ratio) const; + virtual void do_compute_local (CompoundRegionOperationCache *cache, db::Layout *layout, db::Cell *cell, const shape_interactions &interactions, std::vector > &results, const db::LocalProcessorBase *proc) const; + virtual void do_compute_local (CompoundRegionOperationCache *cache, db::Layout *layout, db::Cell *cell, const shape_interactions &interactions, std::vector > &results, const db::LocalProcessorBase *proc) const; // non-implemented - virtual void do_compute_local (CompoundRegionOperationCache * /*cache*/, db::Layout * /*layout*/, const shape_interactions & /*interactions*/, std::vector > & /*results*/, size_t /*max_vertex_count*/, double /*area_ratio*/) const { } - virtual void do_compute_local (CompoundRegionOperationCache * /*cache*/, db::Layout * /*layout*/, const shape_interactions & /*interactions*/, std::vector > & /*results*/, size_t /*max_vertex_count*/, double /*area_ratio*/) const { } - virtual void do_compute_local (CompoundRegionOperationCache * /*cache*/, db::Layout * /*layout*/, const shape_interactions & /*interactions*/, std::vector > & /*results*/, size_t /*max_vertex_count*/, double /*area_ratio*/) const { } - virtual void do_compute_local (CompoundRegionOperationCache * /*cache*/, db::Layout * /*layout*/, const shape_interactions & /*interactions*/, std::vector > & /*results*/, size_t /*max_vertex_count*/, double /*area_ratio*/) const { } + virtual void do_compute_local (CompoundRegionOperationCache * /*cache*/, db::Layout * /*layout*/, db::Cell * /*cell*/, const shape_interactions & /*interactions*/, std::vector > & /*results*/, const db::LocalProcessorBase * /*proc*/) const { } + virtual void do_compute_local (CompoundRegionOperationCache * /*cache*/, db::Layout * /*layout*/, db::Cell * /*cell*/, const shape_interactions & /*interactions*/, std::vector > & /*results*/, const db::LocalProcessorBase * /*proc*/) const { } + virtual void do_compute_local (CompoundRegionOperationCache * /*cache*/, db::Layout * /*layout*/, db::Cell * /*cell*/, const shape_interactions & /*interactions*/, std::vector > & /*results*/, const db::LocalProcessorBase * /*proc*/) const { } + virtual void do_compute_local (CompoundRegionOperationCache * /*cache*/, db::Layout * /*layout*/, db::Cell * /*cell*/, const shape_interactions & /*interactions*/, std::vector > & /*results*/, const db::LocalProcessorBase * /*proc*/) const { } virtual const TransformationReducer *vars () const { return mp_filter->vars (); } virtual bool wants_variants () const { return mp_filter->wants_variants (); } @@ -1092,12 +1092,12 @@ private: bool is_selected (const db::EdgePair &p) const; template - void implement_compute_local (db::CompoundRegionOperationCache *cache, db::Layout *layout, const shape_interactions &interactions, std::vector > &results, size_t max_vertex_count, double area_ratio) const + void implement_compute_local (db::CompoundRegionOperationCache *cache, db::Layout *layout, db::Cell *cell, const shape_interactions &interactions, std::vector > &results, const db::LocalProcessorBase *proc) const { std::vector > one; one.push_back (std::unordered_set ()); - child (0)->compute_local (cache, layout, interactions, one, max_vertex_count, area_ratio); + child (0)->compute_local (cache, layout, cell, interactions, one, proc); for (typename std::unordered_set::const_iterator p = one.front ().begin (); p != one.front ().end (); ++p) { if (is_selected (*p)) { @@ -1122,29 +1122,30 @@ public: virtual const TransformationReducer *vars () const { return mp_proc->vars (); } virtual bool wants_variants () const { return mp_proc->wants_variants (); } - virtual void do_compute_local (CompoundRegionOperationCache *cache, db::Layout *layout, const shape_interactions &interactions, std::vector > &results, size_t max_vertex_count, double area_ratio) const; - virtual void do_compute_local (CompoundRegionOperationCache *cache, db::Layout *layout, const shape_interactions &interactions, std::vector > &results, size_t max_vertex_count, double area_ratio) const; + virtual void do_compute_local (CompoundRegionOperationCache *cache, db::Layout *layout, db::Cell *cell, const shape_interactions &interactions, std::vector > &results, const db::LocalProcessorBase *proc) const; + virtual void do_compute_local (CompoundRegionOperationCache *cache, db::Layout *layout, db::Cell *cell, const shape_interactions &interactions, std::vector > &results, const db::LocalProcessorBase *proc) const; // non-implemented - virtual void do_compute_local (CompoundRegionOperationCache * /*cache*/, db::Layout * /*layout*/, const shape_interactions & /*interactions*/, std::vector > & /*results*/, size_t /*max_vertex_count*/, double /*area_ratio*/) const { } - virtual void do_compute_local (CompoundRegionOperationCache * /*cache*/, db::Layout * /*layout*/, const shape_interactions & /*interactions*/, std::vector > & /*results*/, size_t /*max_vertex_count*/, double /*area_ratio*/) const { } - virtual void do_compute_local (CompoundRegionOperationCache * /*cache*/, db::Layout * /*layout*/, const shape_interactions & /*interactions*/, std::vector > & /*results*/, size_t /*max_vertex_count*/, double /*area_ratio*/) const { } - virtual void do_compute_local (CompoundRegionOperationCache * /*cache*/, db::Layout * /*layout*/, const shape_interactions & /*interactions*/, std::vector > & /*results*/, size_t /*max_vertex_count*/, double /*area_ratio*/) const { } + virtual void do_compute_local (CompoundRegionOperationCache * /*cache*/, db::Layout * /*layout*/, db::Cell * /*cell*/, const shape_interactions & /*interactions*/, std::vector > & /*results*/, const db::LocalProcessorBase * /*proc*/) const { } + virtual void do_compute_local (CompoundRegionOperationCache * /*cache*/, db::Layout * /*layout*/, db::Cell * /*cell*/, const shape_interactions & /*interactions*/, std::vector > & /*results*/, const db::LocalProcessorBase * /*proc*/) const { } + virtual void do_compute_local (CompoundRegionOperationCache * /*cache*/, db::Layout * /*layout*/, db::Cell * /*cell*/, const shape_interactions & /*interactions*/, std::vector > & /*results*/, const db::LocalProcessorBase * /*proc*/) const { } + virtual void do_compute_local (CompoundRegionOperationCache * /*cache*/, db::Layout * /*layout*/, db::Cell * /*cell*/, const shape_interactions & /*interactions*/, std::vector > & /*results*/, const db::LocalProcessorBase * /*proc*/) const { } + private: PolygonProcessorBase *mp_proc; bool m_owns_proc; db::Coord m_dist_adder; void processed (db::Layout *, const db::Polygon &p, std::vector &res) const; - void processed (db::Layout *layout, const db::PolygonRef &p, std::vector &res) const; + void processed (db::Layout *, const db::PolygonRef &p, std::vector &res) const; template - void implement_compute_local (db::CompoundRegionOperationCache *cache, db::Layout *layout, const shape_interactions &interactions, std::vector > &results, size_t max_vertex_count, double area_ratio) const + void implement_compute_local (db::CompoundRegionOperationCache *cache, db::Layout *layout, db::Cell *cell, const shape_interactions &interactions, std::vector > &results, const db::LocalProcessorBase *proc) const { std::vector > one; one.push_back (std::unordered_set ()); - child (0)->compute_local (cache, layout, interactions, one, max_vertex_count, area_ratio); + child (0)->compute_local (cache, layout, cell, interactions, one, proc); std::vector res; for (typename std::unordered_set::const_iterator p = one.front ().begin (); p != one.front ().end (); ++p) { @@ -1194,33 +1195,33 @@ public: return std::string ("merged") + CompoundRegionMultiInputOperationNode::generated_description (); } - virtual void do_compute_local (CompoundRegionOperationCache *cache, db::Layout *layout, const shape_interactions &interactions, std::vector > &results, size_t max_vertex_count, double area_ratio) const + virtual void do_compute_local (CompoundRegionOperationCache *cache, db::Layout *layout, db::Cell *cell, const shape_interactions &interactions, std::vector > &results, const db::LocalProcessorBase *proc) const { - implement_compute_local (cache, layout, interactions, results, max_vertex_count, area_ratio); + implement_compute_local (cache, layout, cell, interactions, results, proc); } - virtual void do_compute_local (CompoundRegionOperationCache *cache, db::Layout *layout, const shape_interactions &interactions, std::vector > &results, size_t max_vertex_count, double area_ratio) const + virtual void do_compute_local (CompoundRegionOperationCache *cache, db::Layout *layout, db::Cell *cell, const shape_interactions &interactions, std::vector > &results, const db::LocalProcessorBase *proc) const { - implement_compute_local (cache, layout, interactions, results, max_vertex_count, area_ratio); + implement_compute_local (cache, layout, cell, interactions, results, proc); } // non-implemented - virtual void do_compute_local (CompoundRegionOperationCache * /*cache*/, db::Layout * /*layout*/, const shape_interactions & /*interactions*/, std::vector > & /*results*/, size_t /*max_vertex_count*/, double /*area_ratio*/) const { } - virtual void do_compute_local (CompoundRegionOperationCache * /*cache*/, db::Layout * /*layout*/, const shape_interactions & /*interactions*/, std::vector > & /*results*/, size_t /*max_vertex_count*/, double /*area_ratio*/) const { } - virtual void do_compute_local (CompoundRegionOperationCache * /*cache*/, db::Layout * /*layout*/, const shape_interactions & /*interactions*/, std::vector > & /*results*/, size_t /*max_vertex_count*/, double /*area_ratio*/) const { } - virtual void do_compute_local (CompoundRegionOperationCache * /*cache*/, db::Layout * /*layout*/, const shape_interactions & /*interactions*/, std::vector > & /*results*/, size_t /*max_vertex_count*/, double /*area_ratio*/) const { } + virtual void do_compute_local (CompoundRegionOperationCache * /*cache*/, db::Layout * /*layout*/, db::Cell * /*cell*/, const shape_interactions & /*interactions*/, std::vector > & /*results*/, const db::LocalProcessorBase * /*proc*/) const { } + virtual void do_compute_local (CompoundRegionOperationCache * /*cache*/, db::Layout * /*layout*/, db::Cell * /*cell*/, const shape_interactions & /*interactions*/, std::vector > & /*results*/, const db::LocalProcessorBase * /*proc*/) const { } + virtual void do_compute_local (CompoundRegionOperationCache * /*cache*/, db::Layout * /*layout*/, db::Cell * /*cell*/, const shape_interactions & /*interactions*/, std::vector > & /*results*/, const db::LocalProcessorBase * /*proc*/) const { } + virtual void do_compute_local (CompoundRegionOperationCache * /*cache*/, db::Layout * /*layout*/, db::Cell * /*cell*/, const shape_interactions & /*interactions*/, std::vector > & /*results*/, const db::LocalProcessorBase * /*proc*/) const { } private: bool m_min_coherence; unsigned int m_min_wc; template - void implement_compute_local (CompoundRegionOperationCache *cache, db::Layout *layout, const shape_interactions &interactions, std::vector > &results, size_t max_vertex_count, double area_ratio) const + void implement_compute_local (CompoundRegionOperationCache *cache, db::Layout *layout, db::Cell *cell, const shape_interactions &interactions, std::vector > &results, const db::LocalProcessorBase *proc) const { std::vector > one; one.push_back (std::unordered_set ()); - child (0)->compute_local (cache, layout, interactions, one, max_vertex_count, area_ratio); + child (0)->compute_local (cache, layout, cell, interactions, one, proc); db::EdgeProcessor ep; @@ -1259,14 +1260,14 @@ public: virtual const TransformationReducer *vars () const { return mp_proc->vars (); } virtual bool wants_variants () const { return mp_proc->wants_variants (); } - virtual void do_compute_local (CompoundRegionOperationCache *cache, db::Layout *layout, const shape_interactions &interactions, std::vector > &results, size_t max_vertex_count, double area_ratio) const; - virtual void do_compute_local (CompoundRegionOperationCache *cache, db::Layout *layout, const shape_interactions &interactions, std::vector > &results, size_t max_vertex_count, double area_ratio) const; + virtual void do_compute_local (CompoundRegionOperationCache *cache, db::Layout *layout, db::Cell *cell, const shape_interactions &interactions, std::vector > &results, const db::LocalProcessorBase *proc) const; + virtual void do_compute_local (CompoundRegionOperationCache *cache, db::Layout *layout, db::Cell *cell, const shape_interactions &interactions, std::vector > &results, const db::LocalProcessorBase *proc) const; // non-implemented - virtual void do_compute_local (CompoundRegionOperationCache * /*cache*/, db::Layout * /*layout*/, const shape_interactions & /*interactions*/, std::vector > & /*results*/, size_t /*max_vertex_count*/, double /*area_ratio*/) const { } - virtual void do_compute_local (CompoundRegionOperationCache * /*cache*/, db::Layout * /*layout*/, const shape_interactions & /*interactions*/, std::vector > & /*results*/, size_t /*max_vertex_count*/, double /*area_ratio*/) const { } - virtual void do_compute_local (CompoundRegionOperationCache * /*cache*/, db::Layout * /*layout*/, const shape_interactions & /*interactions*/, std::vector > & /*results*/, size_t /*max_vertex_count*/, double /*area_ratio*/) const { } - virtual void do_compute_local (CompoundRegionOperationCache * /*cache*/, db::Layout * /*layout*/, const shape_interactions & /*interactions*/, std::vector > & /*results*/, size_t /*max_vertex_count*/, double /*area_ratio*/) const { } + virtual void do_compute_local (CompoundRegionOperationCache * /*cache*/, db::Layout * /*layout*/, db::Cell * /*cell*/, const shape_interactions & /*interactions*/, std::vector > & /*results*/, const db::LocalProcessorBase * /*proc*/) const { } + virtual void do_compute_local (CompoundRegionOperationCache * /*cache*/, db::Layout * /*layout*/, db::Cell * /*cell*/, const shape_interactions & /*interactions*/, std::vector > & /*results*/, const db::LocalProcessorBase * /*proc*/) const { } + virtual void do_compute_local (CompoundRegionOperationCache * /*cache*/, db::Layout * /*layout*/, db::Cell * /*cell*/, const shape_interactions & /*interactions*/, std::vector > & /*results*/, const db::LocalProcessorBase * /*proc*/) const { } + virtual void do_compute_local (CompoundRegionOperationCache * /*cache*/, db::Layout * /*layout*/, db::Cell * /*cell*/, const shape_interactions & /*interactions*/, std::vector > & /*results*/, const db::LocalProcessorBase * /*proc*/) const { } private: EdgeToPolygonProcessorBase *mp_proc; @@ -1276,12 +1277,12 @@ private: void processed (db::Layout *layout, const db::Edge &p, std::vector &res) const; template - void implement_compute_local (db::CompoundRegionOperationCache *cache, db::Layout *layout, const shape_interactions &interactions, std::vector > &results, size_t max_vertex_count, double area_ratio) const + void implement_compute_local (db::CompoundRegionOperationCache *cache, db::Layout *layout, db::Cell *cell, const shape_interactions &interactions, std::vector > &results, const db::LocalProcessorBase *proc) const { std::vector > one; one.push_back (std::unordered_set ()); - child (0)->compute_local (cache, layout, interactions, one, max_vertex_count, area_ratio); + child (0)->compute_local (cache, layout, cell, interactions, one, proc); std::vector res; for (typename std::unordered_set::const_iterator p = one.front ().begin (); p != one.front ().end (); ++p) { @@ -1305,14 +1306,14 @@ public: virtual const TransformationReducer *vars () const { return mp_proc->vars (); } virtual bool wants_variants () const { return mp_proc->wants_variants (); } - virtual void do_compute_local (CompoundRegionOperationCache *cache, db::Layout *layout, const shape_interactions &interactions, std::vector > &results, size_t max_vertex_count, double area_ratio) const; - virtual void do_compute_local (CompoundRegionOperationCache *cache, db::Layout *layout, const shape_interactions &interactions, std::vector > &results, size_t max_vertex_count, double area_ratio) const; + virtual void do_compute_local (CompoundRegionOperationCache *cache, db::Layout *layout, db::Cell *cell, const shape_interactions &interactions, std::vector > &results, const db::LocalProcessorBase *proc) const; + virtual void do_compute_local (CompoundRegionOperationCache *cache, db::Layout *layout, db::Cell *cell, const shape_interactions &interactions, std::vector > &results, const db::LocalProcessorBase *proc) const; // non-implemented - virtual void do_compute_local (CompoundRegionOperationCache * /*cache*/, db::Layout * /*layout*/, const shape_interactions & /*interactions*/, std::vector > & /*results*/, size_t /*max_vertex_count*/, double /*area_ratio*/) const { } - virtual void do_compute_local (CompoundRegionOperationCache * /*cache*/, db::Layout * /*layout*/, const shape_interactions & /*interactions*/, std::vector > & /*results*/, size_t /*max_vertex_count*/, double /*area_ratio*/) const { } - virtual void do_compute_local (CompoundRegionOperationCache * /*cache*/, db::Layout * /*layout*/, const shape_interactions & /*interactions*/, std::vector > & /*results*/, size_t /*max_vertex_count*/, double /*area_ratio*/) const { } - virtual void do_compute_local (CompoundRegionOperationCache * /*cache*/, db::Layout * /*layout*/, const shape_interactions & /*interactions*/, std::vector > & /*results*/, size_t /*max_vertex_count*/, double /*area_ratio*/) const { } + virtual void do_compute_local (CompoundRegionOperationCache * /*cache*/, db::Layout * /*layout*/, db::Cell * /*cell*/, const shape_interactions & /*interactions*/, std::vector > & /*results*/, const db::LocalProcessorBase * /*proc*/) const { } + virtual void do_compute_local (CompoundRegionOperationCache * /*cache*/, db::Layout * /*layout*/, db::Cell * /*cell*/, const shape_interactions & /*interactions*/, std::vector > & /*results*/, const db::LocalProcessorBase * /*proc*/) const { } + virtual void do_compute_local (CompoundRegionOperationCache * /*cache*/, db::Layout * /*layout*/, db::Cell * /*cell*/, const shape_interactions & /*interactions*/, std::vector > & /*results*/, const db::LocalProcessorBase * /*proc*/) const { } + virtual void do_compute_local (CompoundRegionOperationCache * /*cache*/, db::Layout * /*layout*/, db::Cell * /*cell*/, const shape_interactions & /*interactions*/, std::vector > & /*results*/, const db::LocalProcessorBase * /*proc*/) const { } private: EdgeProcessorBase *mp_proc; @@ -1321,12 +1322,12 @@ private: void processed (db::Layout *, const db::Edge &p, std::vector &res) const; template - void implement_compute_local (db::CompoundRegionOperationCache *cache, db::Layout *layout, const shape_interactions &interactions, std::vector > &results, size_t max_vertex_count, double area_ratio) const + void implement_compute_local (db::CompoundRegionOperationCache *cache, db::Layout *layout, db::Cell *cell, const shape_interactions &interactions, std::vector > &results, const db::LocalProcessorBase *proc) const { std::vector > one; one.push_back (std::unordered_set ()); - child (0)->compute_local (cache, layout, interactions, one, max_vertex_count, area_ratio); + child (0)->compute_local (cache, layout, cell, interactions, one, proc); std::vector res; for (typename std::unordered_set::const_iterator p = one.front ().begin (); p != one.front ().end (); ++p) { @@ -1350,14 +1351,14 @@ public: virtual const TransformationReducer *vars () const { return mp_proc->vars (); } virtual bool wants_variants () const { return mp_proc->wants_variants (); } - virtual void do_compute_local (CompoundRegionOperationCache *cache, db::Layout *layout, const shape_interactions &interactions, std::vector > &results, size_t max_vertex_count, double area_ratio) const; - virtual void do_compute_local (CompoundRegionOperationCache *cache, db::Layout *layout, const shape_interactions &interactions, std::vector > &results, size_t max_vertex_count, double area_ratio) const; + virtual void do_compute_local (CompoundRegionOperationCache *cache, db::Layout *layout, db::Cell *cell, const shape_interactions &interactions, std::vector > &results, const db::LocalProcessorBase *proc) const; + virtual void do_compute_local (CompoundRegionOperationCache *cache, db::Layout *layout, db::Cell *cell, const shape_interactions &interactions, std::vector > &results, const db::LocalProcessorBase *proc) const; // non-implemented - virtual void do_compute_local (CompoundRegionOperationCache * /*cache*/, db::Layout * /*layout*/, const shape_interactions & /*interactions*/, std::vector > & /*results*/, size_t /*max_vertex_count*/, double /*area_ratio*/) const { } - virtual void do_compute_local (CompoundRegionOperationCache * /*cache*/, db::Layout * /*layout*/, const shape_interactions & /*interactions*/, std::vector > & /*results*/, size_t /*max_vertex_count*/, double /*area_ratio*/) const { } - virtual void do_compute_local (CompoundRegionOperationCache * /*cache*/, db::Layout * /*layout*/, const shape_interactions & /*interactions*/, std::vector > & /*results*/, size_t /*max_vertex_count*/, double /*area_ratio*/) const { } - virtual void do_compute_local (CompoundRegionOperationCache * /*cache*/, db::Layout * /*layout*/, const shape_interactions & /*interactions*/, std::vector > & /*results*/, size_t /*max_vertex_count*/, double /*area_ratio*/) const { } + virtual void do_compute_local (CompoundRegionOperationCache * /*cache*/, db::Layout * /*layout*/, db::Cell * /*cell*/, const shape_interactions & /*interactions*/, std::vector > & /*results*/, const db::LocalProcessorBase * /*proc*/) const { } + virtual void do_compute_local (CompoundRegionOperationCache * /*cache*/, db::Layout * /*layout*/, db::Cell * /*cell*/, const shape_interactions & /*interactions*/, std::vector > & /*results*/, const db::LocalProcessorBase * /*proc*/) const { } + virtual void do_compute_local (CompoundRegionOperationCache * /*cache*/, db::Layout * /*layout*/, db::Cell * /*cell*/, const shape_interactions & /*interactions*/, std::vector > & /*results*/, const db::LocalProcessorBase * /*proc*/) const { } + virtual void do_compute_local (CompoundRegionOperationCache * /*cache*/, db::Layout * /*layout*/, db::Cell * /*cell*/, const shape_interactions & /*interactions*/, std::vector > & /*results*/, const db::LocalProcessorBase * /*proc*/) const { } private: EdgePairToPolygonProcessorBase *mp_proc; @@ -1367,12 +1368,12 @@ private: void processed (db::Layout *layout, const db::EdgePair &p, std::vector &res) const; template - void implement_compute_local (db::CompoundRegionOperationCache *cache, db::Layout *layout, const shape_interactions &interactions, std::vector > &results, size_t max_vertex_count, double area_ratio) const + void implement_compute_local (db::CompoundRegionOperationCache *cache, db::Layout *layout, db::Cell *cell, const shape_interactions &interactions, std::vector > &results, const db::LocalProcessorBase *proc) const { std::vector > one; one.push_back (std::unordered_set ()); - child (0)->compute_local (cache, layout, interactions, one, max_vertex_count, area_ratio); + child (0)->compute_local (cache, layout, cell, interactions, one, proc); std::vector res; for (typename std::unordered_set::const_iterator p = one.front ().begin (); p != one.front ().end (); ++p) { @@ -1396,26 +1397,26 @@ public: virtual const TransformationReducer *vars () const { return mp_proc->vars (); } virtual bool wants_variants () const { return mp_proc->wants_variants (); } - virtual void do_compute_local (CompoundRegionOperationCache *cache, db::Layout *layout, const shape_interactions &interactions, std::vector > &results, size_t max_vertex_count, double area_ratio) const; - virtual void do_compute_local (CompoundRegionOperationCache *cache, db::Layout *layout, const shape_interactions &interactions, std::vector > &results, size_t max_vertex_count, double area_ratio) const; + virtual void do_compute_local (CompoundRegionOperationCache *cache, db::Layout *layout, db::Cell *cell, const shape_interactions &interactions, std::vector > &results, const db::LocalProcessorBase *proc) const; + virtual void do_compute_local (CompoundRegionOperationCache *cache, db::Layout *layout, db::Cell *cell, const shape_interactions &interactions, std::vector > &results, const db::LocalProcessorBase *proc) const; // non-implemented - virtual void do_compute_local (CompoundRegionOperationCache * /*cache*/, db::Layout * /*layout*/, const shape_interactions & /*interactions*/, std::vector > & /*results*/, size_t /*max_vertex_count*/, double /*area_ratio*/) const { } - virtual void do_compute_local (CompoundRegionOperationCache * /*cache*/, db::Layout * /*layout*/, const shape_interactions & /*interactions*/, std::vector > & /*results*/, size_t /*max_vertex_count*/, double /*area_ratio*/) const { } - virtual void do_compute_local (CompoundRegionOperationCache * /*cache*/, db::Layout * /*layout*/, const shape_interactions & /*interactions*/, std::vector > & /*results*/, size_t /*max_vertex_count*/, double /*area_ratio*/) const { } - virtual void do_compute_local (CompoundRegionOperationCache * /*cache*/, db::Layout * /*layout*/, const shape_interactions & /*interactions*/, std::vector > & /*results*/, size_t /*max_vertex_count*/, double /*area_ratio*/) const { } + virtual void do_compute_local (CompoundRegionOperationCache * /*cache*/, db::Layout * /*layout*/, db::Cell * /*cell*/, const shape_interactions & /*interactions*/, std::vector > & /*results*/, const db::LocalProcessorBase * /*proc*/) const { } + virtual void do_compute_local (CompoundRegionOperationCache * /*cache*/, db::Layout * /*layout*/, db::Cell * /*cell*/, const shape_interactions & /*interactions*/, std::vector > & /*results*/, const db::LocalProcessorBase * /*proc*/) const { } + virtual void do_compute_local (CompoundRegionOperationCache * /*cache*/, db::Layout * /*layout*/, db::Cell * /*cell*/, const shape_interactions & /*interactions*/, std::vector > & /*results*/, const db::LocalProcessorBase * /*proc*/) const { } + virtual void do_compute_local (CompoundRegionOperationCache * /*cache*/, db::Layout * /*layout*/, db::Cell * /*cell*/, const shape_interactions & /*interactions*/, std::vector > & /*results*/, const db::LocalProcessorBase * /*proc*/) const { } private: EdgePairToEdgeProcessorBase *mp_proc; bool m_owns_proc; template - void implement_compute_local (CompoundRegionOperationCache *cache, db::Layout *layout, const shape_interactions &interactions, std::vector > &results, size_t max_vertex_count, double area_ratio) const + void implement_compute_local (CompoundRegionOperationCache *cache, db::Layout *layout, db::Cell *cell, const shape_interactions &interactions, std::vector > &results, const db::LocalProcessorBase *proc) const { std::vector > one; one.push_back (std::unordered_set ()); - child (0)->compute_local (cache, layout, interactions, one, max_vertex_count, area_ratio); + child (0)->compute_local (cache, layout, cell, interactions, one, proc); std::vector res; for (typename std::unordered_set::const_iterator p = one.front ().begin (); p != one.front ().end (); ++p) { @@ -1439,14 +1440,14 @@ public: virtual const TransformationReducer *vars () const { return mp_proc->vars (); } virtual bool wants_variants () const { return mp_proc->wants_variants (); } - virtual void do_compute_local (CompoundRegionOperationCache *cache, db::Layout *layout, const shape_interactions &interactions, std::vector > &results, size_t max_vertex_count, double area_ratio) const; - virtual void do_compute_local (CompoundRegionOperationCache *cache, db::Layout *layout, const shape_interactions &interactions, std::vector > &results, size_t max_vertex_count, double area_ratio) const; + virtual void do_compute_local (CompoundRegionOperationCache *cache, db::Layout *layout, db::Cell *cell, const shape_interactions &interactions, std::vector > &results, const db::LocalProcessorBase *proc) const; + virtual void do_compute_local (CompoundRegionOperationCache *cache, db::Layout *layout, db::Cell *cell, const shape_interactions &interactions, std::vector > &results, const db::LocalProcessorBase *proc) const; // non-implemented - virtual void do_compute_local (CompoundRegionOperationCache * /*cache*/, db::Layout * /*layout*/, const shape_interactions & /*interactions*/, std::vector > & /*results*/, size_t /*max_vertex_count*/, double /*area_ratio*/) const { } - virtual void do_compute_local (CompoundRegionOperationCache * /*cache*/, db::Layout * /*layout*/, const shape_interactions & /*interactions*/, std::vector > & /*results*/, size_t /*max_vertex_count*/, double /*area_ratio*/) const { } - virtual void do_compute_local (CompoundRegionOperationCache * /*cache*/, db::Layout * /*layout*/, const shape_interactions & /*interactions*/, std::vector > & /*results*/, size_t /*max_vertex_count*/, double /*area_ratio*/) const { } - virtual void do_compute_local (CompoundRegionOperationCache * /*cache*/, db::Layout * /*layout*/, const shape_interactions & /*interactions*/, std::vector > & /*results*/, size_t /*max_vertex_count*/, double /*area_ratio*/) const { } + virtual void do_compute_local (CompoundRegionOperationCache * /*cache*/, db::Layout * /*layout*/, db::Cell * /*cell*/, const shape_interactions & /*interactions*/, std::vector > & /*results*/, const db::LocalProcessorBase * /*proc*/) const { } + virtual void do_compute_local (CompoundRegionOperationCache * /*cache*/, db::Layout * /*layout*/, db::Cell * /*cell*/, const shape_interactions & /*interactions*/, std::vector > & /*results*/, const db::LocalProcessorBase * /*proc*/) const { } + virtual void do_compute_local (CompoundRegionOperationCache * /*cache*/, db::Layout * /*layout*/, db::Cell * /*cell*/, const shape_interactions & /*interactions*/, std::vector > & /*results*/, const db::LocalProcessorBase * /*proc*/) const { } + virtual void do_compute_local (CompoundRegionOperationCache * /*cache*/, db::Layout * /*layout*/, db::Cell * /*cell*/, const shape_interactions & /*interactions*/, std::vector > & /*results*/, const db::LocalProcessorBase * /*proc*/) const { } private: PolygonToEdgeProcessorBase *mp_proc; @@ -1456,12 +1457,12 @@ private: void processed (db::Layout *layout, const db::PolygonRef &p, std::vector &res) const; template - void implement_compute_local (db::CompoundRegionOperationCache *cache, db::Layout *layout, const shape_interactions &interactions, std::vector > &results, size_t max_vertex_count, double area_ratio) const + void implement_compute_local (db::CompoundRegionOperationCache *cache, db::Layout *layout, db::Cell *cell, const shape_interactions &interactions, std::vector > &results, const db::LocalProcessorBase *proc) const { std::vector > one; one.push_back (std::unordered_set ()); - child (0)->compute_local (cache, layout, interactions, one, max_vertex_count, area_ratio); + child (0)->compute_local (cache, layout, cell, interactions, one, proc); std::vector res; for (typename std::unordered_set::const_iterator p = one.front ().begin (); p != one.front ().end (); ++p) { @@ -1495,14 +1496,14 @@ public: virtual const TransformationReducer *vars () const { return mp_proc->vars (); } virtual bool wants_variants () const { return mp_proc->wants_variants (); } - virtual void do_compute_local (CompoundRegionOperationCache *cache, db::Layout *layout, const shape_interactions &interactions, std::vector > &results, size_t max_vertex_count, double area_ratio) const; - virtual void do_compute_local (CompoundRegionOperationCache *cache, db::Layout *layout, const shape_interactions &interactions, std::vector > &results, size_t max_vertex_count, double area_ratio) const; + virtual void do_compute_local (CompoundRegionOperationCache *cache, db::Layout *layout, db::Cell *cell, const shape_interactions &interactions, std::vector > &results, const db::LocalProcessorBase *proc) const; + virtual void do_compute_local (CompoundRegionOperationCache *cache, db::Layout *layout, db::Cell *cell, const shape_interactions &interactions, std::vector > &results, const db::LocalProcessorBase *proc) const; // non-implemented - virtual void do_compute_local (CompoundRegionOperationCache * /*cache*/, db::Layout * /*layout*/, const shape_interactions & /*interactions*/, std::vector > & /*results*/, size_t /*max_vertex_count*/, double /*area_ratio*/) const { } - virtual void do_compute_local (CompoundRegionOperationCache * /*cache*/, db::Layout * /*layout*/, const shape_interactions & /*interactions*/, std::vector > & /*results*/, size_t /*max_vertex_count*/, double /*area_ratio*/) const { } - virtual void do_compute_local (CompoundRegionOperationCache * /*cache*/, db::Layout * /*layout*/, const shape_interactions & /*interactions*/, std::vector > & /*results*/, size_t /*max_vertex_count*/, double /*area_ratio*/) const { } - virtual void do_compute_local (CompoundRegionOperationCache * /*cache*/, db::Layout * /*layout*/, const shape_interactions & /*interactions*/, std::vector > & /*results*/, size_t /*max_vertex_count*/, double /*area_ratio*/) const { } + virtual void do_compute_local (CompoundRegionOperationCache * /*cache*/, db::Layout * /*layout*/, db::Cell * /*cell*/, const shape_interactions & /*interactions*/, std::vector > & /*results*/, const db::LocalProcessorBase * /*proc*/) const { } + virtual void do_compute_local (CompoundRegionOperationCache * /*cache*/, db::Layout * /*layout*/, db::Cell * /*cell*/, const shape_interactions & /*interactions*/, std::vector > & /*results*/, const db::LocalProcessorBase * /*proc*/) const { } + virtual void do_compute_local (CompoundRegionOperationCache * /*cache*/, db::Layout * /*layout*/, db::Cell * /*cell*/, const shape_interactions & /*interactions*/, std::vector > & /*results*/, const db::LocalProcessorBase * /*proc*/) const { } + virtual void do_compute_local (CompoundRegionOperationCache * /*cache*/, db::Layout * /*layout*/, db::Cell * /*cell*/, const shape_interactions & /*interactions*/, std::vector > & /*results*/, const db::LocalProcessorBase * /*proc*/) const { } private: PolygonToEdgePairProcessorBase *mp_proc; @@ -1512,12 +1513,12 @@ private: void processed (db::Layout *layout, const db::PolygonRef &p, std::vector &res) const; template - void implement_compute_local (db::CompoundRegionOperationCache *cache, db::Layout *layout, const shape_interactions &interactions, std::vector > &results, size_t max_vertex_count, double area_ratio) const + void implement_compute_local (db::CompoundRegionOperationCache *cache, db::Layout *layout, db::Cell *cell, const shape_interactions &interactions, std::vector > &results, const db::LocalProcessorBase *proc) const { std::vector > one; one.push_back (std::unordered_set ()); - child (0)->compute_local (cache, layout, interactions, one, max_vertex_count, area_ratio); + child (0)->compute_local (cache, layout, cell, interactions, one, proc); std::vector res; for (typename std::unordered_set::const_iterator p = one.front ().begin (); p != one.front ().end (); ++p) { @@ -1559,14 +1560,14 @@ public: virtual OnEmptyIntruderHint on_empty_intruder_hint () const; virtual db::Coord computed_dist () const; - virtual void do_compute_local (CompoundRegionOperationCache *cache, db::Layout *layout, const shape_interactions &interactions, std::vector > &results, size_t max_vertex_count, double area_ratio) const; - virtual void do_compute_local (CompoundRegionOperationCache *cache, db::Layout *layout, const shape_interactions &interactions, std::vector > &results, size_t max_vertex_count, double area_ratio) const; + virtual void do_compute_local (CompoundRegionOperationCache *cache, db::Layout *layout, db::Cell *cell, const shape_interactions &interactions, std::vector > &results, const LocalProcessorBase *proc) const; + virtual void do_compute_local (CompoundRegionOperationCache *cache, db::Layout *layout, db::Cell *cell, const shape_interactions &interactions, std::vector > &results, const LocalProcessorBase *proc) const; // non-implemented - virtual void do_compute_local (CompoundRegionOperationCache * /*cache*/, db::Layout * /*layout*/, const shape_interactions & /*interactions*/, std::vector > & /*results*/, size_t /*max_vertex_count*/, double /*area_ratio*/) const { } - virtual void do_compute_local (CompoundRegionOperationCache * /*cache*/, db::Layout * /*layout*/, const shape_interactions & /*interactions*/, std::vector > & /*results*/, size_t /*max_vertex_count*/, double /*area_ratio*/) const { } - virtual void do_compute_local (CompoundRegionOperationCache * /*cache*/, db::Layout * /*layout*/, const shape_interactions & /*interactions*/, std::vector > & /*results*/, size_t /*max_vertex_count*/, double /*area_ratio*/) const { } - virtual void do_compute_local (CompoundRegionOperationCache * /*cache*/, db::Layout * /*layout*/, const shape_interactions & /*interactions*/, std::vector > & /*results*/, size_t /*max_vertex_count*/, double /*area_ratio*/) const { } + virtual void do_compute_local (CompoundRegionOperationCache * /*cache*/, db::Layout * /*layout*/, db::Cell * /*cell*/, const shape_interactions & /*interactions*/, std::vector > & /*results*/, const db::LocalProcessorBase * /*proc*/) const { } + virtual void do_compute_local (CompoundRegionOperationCache * /*cache*/, db::Layout * /*layout*/, db::Cell * /*cell*/, const shape_interactions & /*interactions*/, std::vector > & /*results*/, const db::LocalProcessorBase * /*proc*/) const { } + virtual void do_compute_local (CompoundRegionOperationCache * /*cache*/, db::Layout * /*layout*/, db::Cell * /*cell*/, const shape_interactions & /*interactions*/, std::vector > & /*results*/, const db::LocalProcessorBase * /*proc*/) const { } + virtual void do_compute_local (CompoundRegionOperationCache * /*cache*/, db::Layout * /*layout*/, db::Cell * /*cell*/, const shape_interactions & /*interactions*/, std::vector > & /*results*/, const db::LocalProcessorBase * /*proc*/) const { } private: db::EdgeRelationFilter m_check; @@ -1599,10 +1600,10 @@ public: { } protected: - virtual void do_compute_local (db::Layout *layout, const shape_interactions &interactions, std::vector > &results, size_t max_vertex_count, double area_ratio) const + virtual void do_compute_local (db::Layout *layout, db::Cell *cell, const shape_interactions &interactions, std::vector > &results, const db::LocalProcessorBase *proc) const { CompoundRegionOperationCache cache; - mp_node->compute_local (&cache, layout, interactions, results, max_vertex_count, area_ratio); + mp_node->compute_local (&cache, layout, cell, interactions, results, proc); } virtual db::Coord dist () const { return mp_node->dist (); } @@ -1645,7 +1646,7 @@ public: } protected: - virtual void do_compute_local (db::Layout *layout, const shape_interactions, db::object_with_properties > &interactions, std::vector > > &results, size_t max_vertex_count, double area_ratio) const + virtual void do_compute_local (db::Layout *layout, db::Cell *cell, const shape_interactions, db::object_with_properties > &interactions, std::vector > > &results, const db::LocalProcessorBase *proc) const { auto interactions_by_prop_id = separate_interactions_to_interactions_by_properties (interactions, m_prop_constraint, m_pms, m_pmis); for (auto s2p = interactions_by_prop_id.begin (); s2p != interactions_by_prop_id.end (); ++s2p) { @@ -1654,7 +1655,7 @@ protected: results_wo_props.resize (results.size ()); CompoundRegionOperationCache cache; - mp_node->compute_local (&cache, layout, s2p->second, results_wo_props, max_vertex_count, area_ratio); + mp_node->compute_local (&cache, layout, cell, s2p->second, results_wo_props, proc); for (size_t n = 0; n < results.size (); ++n) { for (auto i = results_wo_props [n].begin (); i != results_wo_props [n].end (); ++i) { diff --git a/src/db/db/dbDeepEdges.cc b/src/db/db/dbDeepEdges.cc index 4c80d42ae..38428d3fc 100644 --- a/src/db/db/dbDeepEdges.cc +++ b/src/db/db/dbDeepEdges.cc @@ -1367,7 +1367,7 @@ public: return 1; } - virtual void do_compute_local (db::Layout * /*layout*/, const shape_interactions &interactions, std::vector > &results, size_t /*max_vertex_count*/, double /*area_ratio*/) const + virtual void do_compute_local (db::Layout * /*layout*/, db::Cell * /*cell*/, const shape_interactions &interactions, std::vector > &results, const db::LocalProcessorBase * /*proc*/) const { tl_assert (results.size () == (m_output_mode == Both ? 2 : 1)); @@ -1460,7 +1460,7 @@ public: return 1; } - virtual void do_compute_local (db::Layout * /*layout*/, const shape_interactions &interactions, std::vector > &results, size_t /*max_vertex_count*/, double /*area_ratio*/) const + virtual void do_compute_local (db::Layout * /*layout*/, db::Cell * /*cell*/, const shape_interactions &interactions, std::vector > &results, const db::LocalProcessorBase * /*proc*/) const { tl_assert (results.size () == 1); std::unordered_set &result = results.front (); @@ -1517,7 +1517,7 @@ public: return 1; } - virtual void do_compute_local (db::Layout * /*layout*/, const shape_interactions &interactions, std::vector > &results, size_t /*max_vertex_count*/, double /*area_ratio*/) const + virtual void do_compute_local (db::Layout * /*layout*/, db::Cell * /*cell*/, const shape_interactions &interactions, std::vector > &results, const db::LocalProcessorBase * /*proc*/) const { tl_assert (results.size () == size_t (m_output_mode == Both ? 2 : 1)); @@ -1657,7 +1657,7 @@ public: return 1; } - virtual void do_compute_local (db::Layout *layout, const shape_interactions &interactions, std::vector > &results, size_t /*max_vertex_count*/, double /*area_ratio*/) const + virtual void do_compute_local (db::Layout *layout, db::Cell * /*cell*/, const shape_interactions &interactions, std::vector > &results, const db::LocalProcessorBase * /*proc*/) const { tl_assert (results.size () == 1); std::unordered_set &result = results.front (); @@ -1941,7 +1941,7 @@ public: // .. nothing yet .. } - virtual void do_compute_local (db::Layout * /*layout*/, const shape_interactions &interactions, std::vector > &results, size_t /*max_vertex_count*/, double /*area_ratio*/) const + virtual void do_compute_local (db::Layout * /*layout*/, db::Cell * /*cell*/, const shape_interactions &interactions, std::vector > &results, const db::LocalProcessorBase * /*proc*/) const { tl_assert (results.size () == 1); std::unordered_set &result = results.front (); diff --git a/src/db/db/dbDeepRegion.cc b/src/db/db/dbDeepRegion.cc index 6c2e2fe53..df87000ae 100644 --- a/src/db/db/dbDeepRegion.cc +++ b/src/db/db/dbDeepRegion.cc @@ -1953,6 +1953,30 @@ DeepRegion::run_check (db::edge_relation_type rel, bool different_polygons, cons const db::DeepLayer &polygons = needs_merged_primary ? merged_deep_layer () : deep_layer (); + { + // create cell variants for magnification if needed + + db::cell_variants_collector vars; + vars.collect (polygons.layout (), polygons.initial_cell ()); + + // NOTE: m_merged_polygons is mutable, so why is the const_cast needed? + const_cast (polygons).separate_variants (vars); + } + + if (other_deep && &other_deep->deep_layer ().layout () != &polygons.layout ()) { + + // create cell variants for magnification for the other input if needed + + const db::DeepLayer &other_layer = other_deep->deep_layer (); + + db::cell_variants_collector vars; + vars.collect (other_layer.layout (), other_layer.initial_cell ()); + + // NOTE: m_merged_polygons is mutable, so why is the const_cast needed? + const_cast (other_layer).separate_variants (vars); + + } + EdgeRelationFilter check (rel, d, options.metrics); check.set_include_zero (false); check.set_whole_edges (options.whole_edges); @@ -2009,18 +2033,29 @@ DeepRegion::run_single_polygon_check (db::edge_relation_type rel, db::Coord d, c const db::DeepLayer &polygons = merged_deep_layer (); - EdgeRelationFilter check (rel, d, options.metrics); - check.set_include_zero (false); - check.set_whole_edges (options.whole_edges); - check.set_ignore_angle (options.ignore_angle); - check.set_min_projection (options.min_projection); - check.set_max_projection (options.max_projection); + db::cell_variants_collector vars; + vars.collect (polygons.layout (), polygons.initial_cell ()); + + // NOTE: m_merged_polygons is mutable, so why is the const_cast needed? + const_cast (polygons).separate_variants (vars); db::Layout &layout = const_cast (polygons.layout ()); std::unique_ptr res (new db::DeepEdgePairs (polygons.derived ())); for (db::Layout::iterator c = layout.begin (); c != layout.end (); ++c) { + const std::map &v = vars.variants (c->cell_index ()); + tl_assert (v.size () == size_t (1)); + double mag = v.begin ()->first.mag (); + db::Coord d_with_mag = db::coord_traits::rounded (d / mag); + + EdgeRelationFilter check (rel, d_with_mag, options.metrics); + check.set_include_zero (false); + check.set_whole_edges (options.whole_edges); + check.set_ignore_angle (options.ignore_angle); + check.set_min_projection (options.min_projection); + check.set_max_projection (options.max_projection); + const db::Shapes &shapes = c->shapes (polygons.layer ()); db::Shapes &result = c->shapes (res->deep_layer ().layer ()); diff --git a/src/db/db/dbDeepTexts.cc b/src/db/db/dbDeepTexts.cc index e5e282f87..0c1cc30e7 100644 --- a/src/db/db/dbDeepTexts.cc +++ b/src/db/db/dbDeepTexts.cc @@ -571,7 +571,7 @@ public: return 1; } - virtual void do_compute_local (db::Layout * /*layout*/, const shape_interactions &interactions, std::vector > &results, size_t /*max_vertex_count*/, double /*area_ratio*/) const + virtual void do_compute_local (db::Layout * /*layout*/, db::Cell * /*cell*/, const shape_interactions &interactions, std::vector > &results, const db::LocalProcessorBase * /*proc*/) const { tl_assert (results.size () == 1); std::unordered_set &result = results.front (); @@ -670,7 +670,7 @@ public: return 1; } - virtual void do_compute_local (db::Layout *layout, const shape_interactions &interactions, std::vector > &results, size_t /*max_vertex_count*/, double /*area_ratio*/) const + virtual void do_compute_local (db::Layout *layout, db::Cell * /*cell*/, const shape_interactions &interactions, std::vector > &results, const db::LocalProcessorBase * /*proc*/) const { tl_assert (results.size () == 1); std::unordered_set &result = results.front (); diff --git a/src/db/db/dbEdgePairRelations.h b/src/db/db/dbEdgePairRelations.h index 1d9edf7e9..6a4041764 100644 --- a/src/db/db/dbEdgePairRelations.h +++ b/src/db/db/dbEdgePairRelations.h @@ -228,6 +228,14 @@ struct DB_PUBLIC EdgeRelationFilter return m_max_projection; } + /** + * @brief sets the check distance + */ + void set_distance (distance_type d) + { + m_d = d; + } + /** * @brief Gets the check distance */ @@ -236,6 +244,14 @@ struct DB_PUBLIC EdgeRelationFilter return m_d; } + /** + * @brief Sets the relation + */ + void set_relation (edge_relation_type r) + { + m_r = r; + } + /** * @brief Gets the relation */ diff --git a/src/db/db/dbEdgesLocalOperations.cc b/src/db/db/dbEdgesLocalOperations.cc index cd69d034f..9a43060a7 100644 --- a/src/db/db/dbEdgesLocalOperations.cc +++ b/src/db/db/dbEdgesLocalOperations.cc @@ -57,7 +57,7 @@ EdgeBoolAndOrNotLocalOperation::description () const } void -EdgeBoolAndOrNotLocalOperation::do_compute_local (db::Layout * /*layout*/, const shape_interactions &interactions, std::vector > &results, size_t /*max_vertex_count*/, double /*area_ratio*/) const +EdgeBoolAndOrNotLocalOperation::do_compute_local (db::Layout * /*layout*/, db::Cell * /*cell*/, const shape_interactions &interactions, std::vector > &results, const db::LocalProcessorBase * /*proc*/) const { tl_assert (results.size () == size_t (m_op == EdgeAndNot ? 2 : 1)); @@ -140,7 +140,7 @@ EdgeToPolygonLocalOperation::description () const } void -EdgeToPolygonLocalOperation::do_compute_local (db::Layout * /*layout*/, const shape_interactions &interactions, std::vector > &results, size_t /*max_vertex_count*/, double /*area_ratio*/) const +EdgeToPolygonLocalOperation::do_compute_local (db::Layout * /*layout*/, db::Cell * /*cell*/, const shape_interactions &interactions, std::vector > &results, const db::LocalProcessorBase * /*proc*/) const { tl_assert (results.size () == size_t (m_op == EdgePolygonOp::Both ? 2 : 1)); diff --git a/src/db/db/dbEdgesLocalOperations.h b/src/db/db/dbEdgesLocalOperations.h index 163bf5a59..a57a2e020 100644 --- a/src/db/db/dbEdgesLocalOperations.h +++ b/src/db/db/dbEdgesLocalOperations.h @@ -44,7 +44,7 @@ class DB_PUBLIC EdgeBoolAndOrNotLocalOperation public: EdgeBoolAndOrNotLocalOperation (db::EdgeBoolOp op); - virtual void do_compute_local (db::Layout *layout, const shape_interactions &interactions, std::vector > &result, size_t max_vertex_count, double area_ratio) const; + virtual void do_compute_local (db::Layout *layout, db::Cell *cell, const shape_interactions &interactions, std::vector > &result, const db::LocalProcessorBase *proc) const; virtual OnEmptyIntruderHint on_empty_intruder_hint () const; virtual std::string description () const; @@ -67,7 +67,7 @@ class DB_PUBLIC EdgeToPolygonLocalOperation public: EdgeToPolygonLocalOperation (EdgePolygonOp::mode_t op, bool include_borders); - virtual void do_compute_local (db::Layout *layout, const shape_interactions &interactions, std::vector > &result, size_t max_vertex_count, double area_ratio) const; + virtual void do_compute_local (db::Layout *layout, db::Cell *cell, const shape_interactions &interactions, std::vector > &result, const db::LocalProcessorBase *proc) const; virtual OnEmptyIntruderHint on_empty_intruder_hint () const; virtual std::string description () const; diff --git a/src/db/db/dbHierProcessor.cc b/src/db/db/dbHierProcessor.cc index 9987451e2..3529db310 100644 --- a/src/db/db/dbHierProcessor.cc +++ b/src/db/db/dbHierProcessor.cc @@ -30,6 +30,7 @@ #include "dbPolygonGenerators.h" #include "dbLocalOperationUtils.h" #include "dbShapeFlags.h" +#include "dbCellVariants.h" #include "tlLog.h" #include "tlTimer.h" #include "tlInternational.h" @@ -1258,7 +1259,7 @@ private: db::ICplxTrans tn1 = inst1->complex_trans (*n); db::ICplxTrans tni1 = tn1.inverted (); - db::Box ibox1 = tn1 * cell1.bbox (m_subject_layer).enlarged (db::Vector (m_dist, m_dist)); + db::Box ibox1 = (tn1 * cell1.bbox (m_subject_layer)).enlarged (db::Vector (m_dist, m_dist)); std::set *insts = 0; @@ -1276,7 +1277,7 @@ private: db::ICplxTrans tn2 = inst2->complex_trans (*k); // NOTE: we need to enlarge both subject *and* intruder boxes - either object comes close to intruder or the other way around - db::Box ibox2 = tn2 * cell2.bbox (m_intruder_layer).enlarged (db::Vector (m_dist, m_dist)); + db::Box ibox2 = (tn2 * cell2.bbox (m_intruder_layer)).enlarged (db::Vector (m_dist, m_dist)); db::Box cbox = ibox1 & ibox2; if (! cbox.empty () && (cbox == ibox1 || cell1.has_shapes_touching (m_subject_layer, safe_box_enlarged (tni1 * cbox, -1, -1)))) { @@ -1332,7 +1333,7 @@ private: db::ICplxTrans it = i->complex_trans (*ia); - db::Box ibox2 = tni2.inverted () * it * ic.bbox (m_intruder_layer).enlarged (db::Vector (m_dist, m_dist)); + db::Box ibox2 = (tni2.inverted () * it * ic.bbox (m_intruder_layer)).enlarged (db::Vector (m_dist, m_dist)); db::Box ccbox = cbox & ibox2; if (! ccbox.empty ()) { @@ -1469,6 +1470,38 @@ local_processor_result_computation_task::perform () } } +// --------------------------------------------------------------------------------------------- +// LocalProcessorBase implementation + +LocalProcessorBase::LocalProcessorBase () + : m_report_progress (true), m_nthreads (0), m_max_vertex_count (0), m_area_ratio (0.0), m_boolean_core (false), + m_base_verbosity (30), mp_vars (0), mp_current_cell (0) +{ + // .. nothing yet .. +} + +db::Coord +LocalProcessorBase::dist_for_cell (const db::Cell *cell, db::Coord dist) const +{ + return cell ? dist_for_cell (cell->cell_index (), dist) : dist; +} + +db::Coord +LocalProcessorBase::dist_for_cell (db::cell_index_type cell_index, db::Coord dist) const +{ + if (mp_vars) { + + const std::map &v = mp_vars->variants (cell_index); + tl_assert (v.size () == size_t (1)); + + double mag = v.begin ()->first.mag (); + return db::coord_traits::rounded (dist / mag); + + } else { + return dist; + } +} + // --------------------------------------------------------------------------------------------- // LocalProcessor implementation @@ -1477,9 +1510,9 @@ local_processor::local_processor (db::Layout *layout, db::Cell *top, : mp_subject_layout (layout), mp_intruder_layout (layout), mp_subject_top (top), mp_intruder_top (top), mp_subject_breakout_cells (breakout_cells), mp_intruder_breakout_cells (breakout_cells), - m_report_progress (true), m_nthreads (0), m_max_vertex_count (0), m_area_ratio (0.0), m_boolean_core (default_boolean_core () ()), m_base_verbosity (30), m_progress (0), mp_progress (0) + m_progress (0), mp_progress (0) { - // .. nothing yet .. + set_boolean_core (default_boolean_core () ()); } template @@ -1487,19 +1520,9 @@ local_processor::local_processor (db::Layout *subject_layout, db::Ce : mp_subject_layout (subject_layout), mp_intruder_layout (intruder_layout), mp_subject_top (subject_top), mp_intruder_top (intruder_top), mp_subject_breakout_cells (subject_breakout_cells), mp_intruder_breakout_cells (intruder_breakout_cells), - m_report_progress (true), m_nthreads (0), m_max_vertex_count (0), m_area_ratio (0.0), m_boolean_core (default_boolean_core () ()), m_base_verbosity (30), m_progress (0), mp_progress (0) + m_progress (0), mp_progress (0) { - // .. nothing yet .. -} - -template -std::string local_processor::description (const local_operation *op) const -{ - if (op && m_description.empty ()) { - return op->description (); - } else { - return m_description; - } + set_boolean_core (default_boolean_core () ()); } template @@ -1555,7 +1578,7 @@ void local_processor::run (local_operation *op, unsigned template void local_processor::run (local_operation *op, unsigned int subject_layer, const std::vector &intruder_layers, const std::vector &output_layers) { - tl::SelfTimer timer (tl::verbosity () > m_base_verbosity, tl::to_string (tr ("Executing ")) + description (op)); + tl::SelfTimer timer (tl::verbosity () > base_verbosity (), tl::to_string (tr ("Executing ")) + description (op)); local_processor_contexts contexts; compute_contexts (contexts, op, subject_layer, intruder_layers); @@ -1576,10 +1599,10 @@ void local_processor::compute_contexts (local_processor_contexts m_base_verbosity + 10, tl::to_string (tr ("Computing contexts for ")) + description (op)); + tl::SelfTimer timer (tl::verbosity () > base_verbosity () + 10, tl::to_string (tr ("Computing contexts for ")) + description (op)); - if (m_nthreads > 0) { - mp_cc_job.reset (new tl::Job > (m_nthreads)); + if (threads () > 0) { + mp_cc_job.reset (new tl::Job > (threads ())); } else { mp_cc_job.reset (0); } @@ -1629,11 +1652,11 @@ void local_processor::compute_contexts (local_processor_contexts::context_key_type &intruders, - db::Coord dist) const + db::Coord dist_top) const { CRONOLOGY_COLLECTION_BRACKET(event_compute_contexts) - if (tl::verbosity () >= m_base_verbosity + 20) { + if (tl::verbosity () >= base_verbosity () + 20) { if (! subject_parent) { tl::log << tr ("Computing context for top cell ") << mp_subject_layout->cell_name (subject_cell->cell_index ()); } else { @@ -1641,6 +1664,8 @@ void local_processor::compute_contexts (local_processor_contextscell_index (), dist_top); + db::local_processor_cell_context *cell_context = 0; // prepare a new cell context: this has to happen in a thread-safe way as we share the contexts @@ -1821,7 +1846,7 @@ local_processor::compute_results (local_processor_contexts m_base_verbosity + 10, tl::to_string (tr ("Computing results for ")) + description (op)); + tl::SelfTimer timer (tl::verbosity () > base_verbosity () + 10, tl::to_string (tr ("Computing results for ")) + description (op)); // avoids updates while we work on the layout mp_subject_layout->update (); @@ -1829,7 +1854,7 @@ local_processor::compute_results (local_processor_contexts::iterator c = contexts.begin (); c != contexts.end (); ++c) { comp_effort += c->second.size (); } @@ -1839,9 +1864,9 @@ local_processor::compute_results (local_processor_contexts 0) { + if (threads () > 0) { - std::unique_ptr > > rc_job (new tl::Job > (m_nthreads)); + std::unique_ptr > > rc_job (new tl::Job > (threads ())); // schedule computation jobs in "waves": we need to make sure they are executed // bottom-up. So we identify a new bunch of cells each time we pass through the cell set @@ -1857,7 +1882,7 @@ local_processor::compute_results (local_processor_contexts m_base_verbosity + 10, tl::sprintf (tl::to_string (tr ("Computing results iteration #%d")), iter)); + tl::SelfTimer timer (tl::verbosity () > base_verbosity () + 10, tl::sprintf (tl::to_string (tr ("Computing results iteration #%d")), iter)); bool any = false; std::unordered_set later; @@ -1917,7 +1942,7 @@ local_processor::compute_results (local_processor_contextsbegin_bottom_up (); bu != mp_subject_layout->end_bottom_up (); ++bu) { @@ -2045,6 +2070,8 @@ template void local_processor::compute_local_cell (const db::local_processor_contexts &contexts, db::Cell *subject_cell, const db::Cell *intruder_cell, const local_operation *op, const typename local_processor_cell_contexts::context_key_type &intruders, std::vector > &result) const { + db::Coord dist = dist_for_cell (subject_cell->cell_index (), op->dist ()); + const db::Shapes *subject_shapes = &subject_cell->shapes (contexts.subject_layer ()); db::shape_to_object s2o; @@ -2091,12 +2118,12 @@ local_processor::compute_local_cell (const db::local_processor_conte if (subject_cell == intruder_cell && contexts.subject_layer () == ail && !foreign) { - scan_shape2shape_same_layer () (subject_shapes, subject_id0, ipl == intruders.second.end () ? empty_intruders : ipl->second, il_index, interactions, op->dist ()); + scan_shape2shape_same_layer () (subject_shapes, subject_id0, ipl == intruders.second.end () ? empty_intruders : ipl->second, il_index, interactions, dist); } else { db::Layout *target_layout = (mp_subject_layout == mp_intruder_layout ? 0 : mp_subject_layout); - scan_shape2shape_different_layers () (target_layout, subject_shapes, intruder_shapes, subject_id0, &(ipl == intruders.second.end () ? empty_intruders : ipl->second), il_index, interactions, op->dist ()); + scan_shape2shape_different_layers () (target_layout, subject_shapes, intruder_shapes, subject_id0, &(ipl == intruders.second.end () ? empty_intruders : ipl->second), il_index, interactions, dist); } @@ -2106,7 +2133,7 @@ local_processor::compute_local_cell (const db::local_processor_conte db::box_scanner2 scanner; db::addressable_object_from_shape heap; - interaction_registration_shape2inst rec (mp_subject_layout, mp_intruder_layout, ail, il_index, op->dist (), &interactions); + interaction_registration_shape2inst rec (mp_subject_layout, mp_intruder_layout, ail, il_index, dist, &interactions); unsigned int id = subject_id0; for (db::Shapes::shape_iterator i = subject_shapes->begin (shape_flags ()); !i.at_end (); ++i) { @@ -2137,7 +2164,7 @@ local_processor::compute_local_cell (const db::local_processor_conte } } - scanner.process (rec, op->dist (), db::box_convert (), inst_bci); + scanner.process (rec, dist, db::box_convert (), inst_bci); } @@ -2154,7 +2181,7 @@ local_processor::compute_local_cell (const db::local_processor_conte } - op->compute_local (mp_subject_layout, interactions, result, m_max_vertex_count, m_area_ratio); + op->compute_local (mp_subject_layout, subject_cell, interactions, result, this); } } @@ -2264,7 +2291,7 @@ local_processor::run_flat (const generic_shape_iterator &subject std::string process_description, scan_description; - if (m_report_progress) { + if (report_progress ()) { process_description = description (op); if (process_description.empty ()) { @@ -2327,7 +2354,7 @@ local_processor::run_flat (const generic_shape_iterator &subject if (*il == subjects && ! ff) { - interaction_registration_shape1_scanner_combo scanner (&interactions, il_index, m_report_progress, scan_description); + interaction_registration_shape1_scanner_combo scanner (&interactions, il_index, report_progress (), scan_description); for (typename shape_interactions::subject_iterator s = interactions.begin_subjects (); s != interactions.end_subjects (); ++s) { scanner.insert (&s->second, s->first); @@ -2337,7 +2364,7 @@ local_processor::run_flat (const generic_shape_iterator &subject } else { - db::box_scanner2 scanner (m_report_progress, scan_description); + db::box_scanner2 scanner (report_progress (), scan_description); interaction_registration_shape2shape rec (0 /*layout*/, &interactions, il_index); for (typename shape_interactions::subject_iterator s = interactions.begin_subjects (); s != interactions.end_subjects (); ++s) { @@ -2393,7 +2420,7 @@ local_processor::run_flat (const generic_shape_iterator &subject if (*il == subjects && ! ff) { - interaction_registration_shape1_scanner_combo scanner (&interactions, il_index, m_report_progress, scan_description); + interaction_registration_shape1_scanner_combo scanner (&interactions, il_index, report_progress (), scan_description); addressable_shape_delivery is (subjects.confined (common_box, false)); unsigned int id = id_first; @@ -2406,7 +2433,7 @@ local_processor::run_flat (const generic_shape_iterator &subject } else { - db::box_scanner2 scanner (m_report_progress, scan_description); + db::box_scanner2 scanner (report_progress (), scan_description); interaction_registration_shape2shape rec (0 /*layout*/, &interactions, il_index); if (*il == subjects) { @@ -2463,7 +2490,7 @@ local_processor::run_flat (const generic_shape_iterator &subject std::vector > result; result.resize (result_shapes.size ()); - op->compute_local (mp_subject_layout, interactions, result, m_max_vertex_count, m_area_ratio, m_report_progress, process_description); + op->compute_local (mp_subject_layout, 0, interactions, result, this); for (std::vector::const_iterator r = result_shapes.begin (); r != result_shapes.end (); ++r) { if (*r) { diff --git a/src/db/db/dbHierProcessor.h b/src/db/db/dbHierProcessor.h index 9bb95f18f..416b2612f 100644 --- a/src/db/db/dbHierProcessor.h +++ b/src/db/db/dbHierProcessor.h @@ -44,6 +44,8 @@ namespace db { +class VariantsCollectorBase; + template class local_processor; template class local_processor_cell_context; template class local_processor_contexts; @@ -413,22 +415,10 @@ public: } }; -template -class DB_PUBLIC local_processor +class DB_PUBLIC LocalProcessorBase { public: - local_processor (db::Layout *layout = 0, db::Cell *top = 0, const std::set *breakout_cells = 0); - local_processor (db::Layout *subject_layout, db::Cell *subject_top, const db::Layout *intruder_layout, const db::Cell *intruder_cell, const std::set *subject_breakout_cells = 0, const std::set *intruder_breakout_cells = 0); - void run (local_operation *op, unsigned int subject_layer, unsigned int intruder_layer, unsigned int output_layers); - void run (local_operation *op, unsigned int subject_layer, unsigned int intruder_layer, const std::vector &output_layers); - void run (local_operation *op, unsigned int subject_layer, const std::vector &intruder_layers, const std::vector &output_layers); - void run (local_operation *op, unsigned int subject_layer, const std::vector &intruder_layers, unsigned int output_layer); - void compute_contexts (local_processor_contexts &contexts, const local_operation *op, unsigned int subject_layer, const std::vector &intruder_layers) const; - void compute_results (local_processor_contexts &contexts, const local_operation *op, const std::vector &output_layers) const; - - void run_flat (const db::Shapes *subject_shapes, const db::Shapes *intruders, const local_operation *op, db::Shapes *result_shapes) const; - void run_flat (const db::Shapes *subjects, const std::vector &intruders, const local_operation *op, const std::vector &result_shapes) const; - void run_flat (const generic_shape_iterator &subjects, const std::vector > &intruders, const std::vector &foreign, const local_operation *op, const std::vector &result_shapes) const; + LocalProcessorBase (); void set_description (const std::string &d) { @@ -440,6 +430,11 @@ public: m_report_progress = rp; } + bool report_progress () const + { + return m_report_progress; + } + void set_base_verbosity (int vb) { m_base_verbosity = vb; @@ -490,6 +485,55 @@ public: return m_boolean_core; } + void set_vars (const db::VariantsCollectorBase *vars) + { + mp_vars = vars; + } + + db::Coord dist_for_cell (db::cell_index_type cell_index, db::Coord dist) const; + db::Coord dist_for_cell (const db::Cell *cell, db::Coord dist) const; + + template + std::string description (const local_operation *op) const + { + if (op && m_description.empty ()) { + return op->description (); + } else { + return m_description; + } + } + +private: + std::string m_description; + bool m_report_progress; + unsigned int m_nthreads; + size_t m_max_vertex_count; + double m_area_ratio; + bool m_boolean_core; + int m_base_verbosity; + const db::VariantsCollectorBase *mp_vars; + mutable const db::Cell *mp_current_cell; +}; + +template +class DB_PUBLIC local_processor + : public LocalProcessorBase +{ +public: + local_processor (db::Layout *layout = 0, db::Cell *top = 0, const std::set *breakout_cells = 0); + local_processor (db::Layout *subject_layout, db::Cell *subject_top, const db::Layout *intruder_layout, const db::Cell *intruder_cell, const std::set *subject_breakout_cells = 0, const std::set *intruder_breakout_cells = 0); + + void run (local_operation *op, unsigned int subject_layer, unsigned int intruder_layer, unsigned int output_layers); + void run (local_operation *op, unsigned int subject_layer, unsigned int intruder_layer, const std::vector &output_layers); + void run (local_operation *op, unsigned int subject_layer, const std::vector &intruder_layers, const std::vector &output_layers); + void run (local_operation *op, unsigned int subject_layer, const std::vector &intruder_layers, unsigned int output_layer); + void compute_contexts (local_processor_contexts &contexts, const local_operation *op, unsigned int subject_layer, const std::vector &intruder_layers) const; + void compute_results (local_processor_contexts &contexts, const local_operation *op, const std::vector &output_layers) const; + + void run_flat (const db::Shapes *subject_shapes, const db::Shapes *intruders, const local_operation *op, db::Shapes *result_shapes) const; + void run_flat (const db::Shapes *subjects, const std::vector &intruders, const local_operation *op, const std::vector &result_shapes) const; + void run_flat (const generic_shape_iterator &subjects, const std::vector > &intruders, const std::vector &foreign, const local_operation *op, const std::vector &result_shapes) const; + private: template friend class local_processor_cell_contexts; template friend class local_processor_context_computation_task; @@ -500,18 +544,10 @@ private: const db::Cell *mp_intruder_top; const std::set *mp_subject_breakout_cells; const std::set *mp_intruder_breakout_cells; - std::string m_description; - bool m_report_progress; - unsigned int m_nthreads; - size_t m_max_vertex_count; - double m_area_ratio; - bool m_boolean_core; - int m_base_verbosity; mutable std::unique_ptr > > mp_cc_job; mutable size_t m_progress; mutable tl::Progress *mp_progress; - std::string description (const local_operation *op) const; void next () const; size_t get_progress () const; void compute_contexts (db::local_processor_contexts &contexts, db::local_processor_cell_context *parent_context, db::Cell *subject_parent, db::Cell *subject_cell, const db::ICplxTrans &subject_cell_inst, const db::Cell *intruder_cell, const typename local_processor_cell_contexts::context_key_type &intruders, db::Coord dist) const; diff --git a/src/db/db/dbLocalOperation.cc b/src/db/db/dbLocalOperation.cc index 94eb19e29..5e7a98d1d 100644 --- a/src/db/db/dbLocalOperation.cc +++ b/src/db/db/dbLocalOperation.cc @@ -30,17 +30,17 @@ namespace db // local_operations implementation template -void local_operation::compute_local (db::Layout *layout, const shape_interactions &interactions, std::vector > &results, size_t max_vertex_count, double area_ratio, bool report_progress, const std::string &progress_desc) const +void local_operation::compute_local (db::Layout *layout, db::Cell *subject_cell, const shape_interactions &interactions, std::vector > &results, const db::LocalProcessorBase *proc) const { if (interactions.num_subjects () <= 1 || ! requests_single_subjects ()) { - do_compute_local (layout, interactions, results, max_vertex_count, area_ratio); + do_compute_local (layout, subject_cell, interactions, results, proc); } else { std::unique_ptr progress; - if (report_progress) { - progress.reset (new tl::RelativeProgress (progress_desc, interactions.size ())); + if (proc->report_progress ()) { + progress.reset (new tl::RelativeProgress (proc->description (this), interactions.size ())); } for (typename shape_interactions::iterator i = interactions.begin (); i != interactions.end (); ++i) { @@ -62,7 +62,7 @@ void local_operation::compute_local (db::Layout *layout, const shape single_interactions.add_interaction (i->first, *ii); } - do_compute_local (layout, single_interactions, results, max_vertex_count, area_ratio); + do_compute_local (layout, subject_cell, single_interactions, results, proc); if (progress.get ()) { ++*progress; diff --git a/src/db/db/dbLocalOperation.h b/src/db/db/dbLocalOperation.h index 87161fd20..faccd6bf1 100644 --- a/src/db/db/dbLocalOperation.h +++ b/src/db/db/dbLocalOperation.h @@ -37,6 +37,7 @@ namespace db { template class shape_interactions; +class LocalProcessorBase; /** * @brief Indicates the desired behaviour for subject shapes for which there is no intruder @@ -93,7 +94,7 @@ public: * * If the operation requests single subject mode, the interactions will be split into single subject/intruder clusters */ - void compute_local (db::Layout *layout, const shape_interactions &interactions, std::vector > &results, size_t max_vertex_count, double area_ratio, bool report_progress = false, const std::string &progress_desc = std::string ()) const; + void compute_local (db::Layout *layout, db::Cell *subject_cell, const shape_interactions &interactions, std::vector > &results, const db::LocalProcessorBase *proc) const; /** * @brief Indicates the desired behaviour when a shape does not have an intruder @@ -123,7 +124,7 @@ protected: * @param interactions The interaction set * @param result The container to which the results are written */ - virtual void do_compute_local (db::Layout *layout, const shape_interactions &interactions, std::vector > &result, size_t max_vertex_count, double area_ratio) const = 0; + virtual void do_compute_local (db::Layout *layout, db::Cell *subject_cell, const shape_interactions &interactions, std::vector > &result, const db::LocalProcessorBase *proc) const = 0; }; } diff --git a/src/db/db/dbRegionLocalOperations.cc b/src/db/db/dbRegionLocalOperations.cc index aaaa73cf3..915763b5d 100644 --- a/src/db/db/dbRegionLocalOperations.cc +++ b/src/db/db/dbRegionLocalOperations.cc @@ -199,12 +199,16 @@ check_local_operation_base::check_local_operation_base (const EdgeRelati template void -check_local_operation_base::compute_results (db::Layout *layout, const std::vector &subjects, const std::set &intruders, std::unordered_set &result, std::unordered_set &intra_polygon_result) const +check_local_operation_base::compute_results (db::Layout *layout, db::Cell *subject_cell, const std::vector &subjects, const std::set &intruders, std::unordered_set &result, std::unordered_set &intra_polygon_result, const db::LocalProcessorBase *proc) const { // NOTE: the rectangle and opposite filters are unsymmetric bool symmetric_edge_pairs = ! m_has_other && m_options.opposite_filter == db::NoOppositeFilter && m_options.rect_filter == RectFilter::NoRectFilter; - edge2edge_check_negative_or_positive > edge_check (m_check, result, intra_polygon_result, m_options.negative, m_different_polygons, m_has_other, m_options.shielded, symmetric_edge_pairs); + // modify the check to take into account scaled cells + EdgeRelationFilter check = m_check; + check.set_distance (proc->dist_for_cell (subject_cell, check.distance ())); + + edge2edge_check_negative_or_positive > edge_check (check, result, intra_polygon_result, m_options.negative, m_different_polygons, m_has_other, m_options.shielded, symmetric_edge_pairs); poly2poly_check poly_check (edge_check); std::unordered_set polygons; @@ -677,7 +681,7 @@ check_local_operation::check_local_operation (const EdgeRelationFilter & template void -check_local_operation::do_compute_local (db::Layout *layout, const shape_interactions &interactions, std::vector > &results, size_t /*max_vertex_count*/, double /*area_ratio*/) const +check_local_operation::do_compute_local (db::Layout *layout, db::Cell *subject_cell, const shape_interactions &interactions, std::vector > &results, const db::LocalProcessorBase *proc) const { std::vector subjects; subjects.reserve (interactions.size ()); @@ -696,7 +700,7 @@ check_local_operation::do_compute_local (db::Layout *layout, const shape std::unordered_set result, intra_polygon_result; // perform the basic check - check_local_operation_base::compute_results (layout, subjects, intruders, result, intra_polygon_result); + check_local_operation_base::compute_results (layout, subject_cell, subjects, intruders, result, intra_polygon_result, proc); // detect and remove parts of the result which have or do not have results "opposite" // ("opposite" is defined by the projection of edges "through" the subject shape) @@ -752,7 +756,7 @@ check_local_operation_with_properties::check_local_operation_with_proper template void -check_local_operation_with_properties::do_compute_local (db::Layout *layout, const shape_interactions, db::object_with_properties > &interactions, std::vector > &results, size_t /*max_vertex_count*/, double /*area_ratio*/) const +check_local_operation_with_properties::do_compute_local (db::Layout *layout, db::Cell *subject_cell, const shape_interactions, db::object_with_properties > &interactions, std::vector > &results, const db::LocalProcessorBase *proc) const { tl_assert (results.size () == 1); @@ -766,7 +770,7 @@ check_local_operation_with_properties::do_compute_local (db::Layout *lay const std::set &intruders = s2p->second.second; // perform the basic check - check_local_operation_base::compute_results (layout, subjects, intruders, result, intra_polygon_result); + check_local_operation_base::compute_results (layout, subject_cell, subjects, intruders, result, intra_polygon_result, proc); // detect and remove parts of the result which have or do not have results "opposite" // ("opposite" is defined by the projection of edges "through" the subject shape) @@ -852,7 +856,7 @@ db::Coord interacting_local_operation::dist () const } template -void interacting_local_operation::do_compute_local (db::Layout * /*layout*/, const shape_interactions &interactions, std::vector > &results, size_t /*max_vertex_count*/, double /*area_ratio*/) const +void interacting_local_operation::do_compute_local (db::Layout * /*layout*/, db::Cell * /*cell*/, const shape_interactions &interactions, std::vector > &results, const db::LocalProcessorBase * /*proc*/) const { if (m_output_mode == None) { return; @@ -1031,7 +1035,7 @@ db::Coord contained_local_operation::dist () const } template -void contained_local_operation::do_compute_local (db::Layout * /*layout*/, const shape_interactions &interactions, std::vector > &results, size_t /*max_vertex_count*/, double /*area_ratio*/) const +void contained_local_operation::do_compute_local (db::Layout * /*layout*/, db::Cell * /*cell*/, const shape_interactions &interactions, std::vector > &results, const db::LocalProcessorBase * /*proc*/) const { if (m_output_mode == None) { return; @@ -1106,7 +1110,7 @@ db::Coord pull_local_operation::dist () const } template -void pull_local_operation::do_compute_local (db::Layout * /*layout*/, const shape_interactions &interactions, std::vector > &results, size_t /*max_vertex_count*/, double /*area_ratio*/) const +void pull_local_operation::do_compute_local (db::Layout * /*layout*/, db::Cell * /*cell*/, const shape_interactions &interactions, std::vector > &results, const db::LocalProcessorBase * /*proc*/) const { tl_assert (results.size () == 1); std::unordered_set &result = results.front (); @@ -1186,7 +1190,7 @@ db::Coord interacting_with_edge_local_operation::dist () const } template -void interacting_with_edge_local_operation::do_compute_local (db::Layout *layout, const shape_interactions &interactions, std::vector > &results, size_t /*max_vertex_count*/, double /*area_ratio*/) const +void interacting_with_edge_local_operation::do_compute_local (db::Layout *layout, db::Cell * /*cell*/, const shape_interactions &interactions, std::vector > &results, const db::LocalProcessorBase * /*proc*/) const { if (m_output_mode == None) { return; @@ -1313,7 +1317,7 @@ db::Coord pull_with_edge_local_operation::dist () const } template -void pull_with_edge_local_operation::do_compute_local (db::Layout *layout, const shape_interactions &interactions, std::vector > &results, size_t /*max_vertex_count*/, double /*area_ratio*/) const +void pull_with_edge_local_operation::do_compute_local (db::Layout *layout, db::Cell * /*cell*/, const shape_interactions &interactions, std::vector > &results, const db::LocalProcessorBase * /*proc*/) const { tl_assert (results.size () == 1); std::unordered_set &result = results.front (); @@ -1374,7 +1378,7 @@ db::Coord pull_with_text_local_operation::dist () const } template -void pull_with_text_local_operation::do_compute_local (db::Layout *layout, const shape_interactions &interactions, std::vector > &results, size_t /*max_vertex_count*/, double /*area_ratio*/) const +void pull_with_text_local_operation::do_compute_local (db::Layout *layout, db::Cell * /*cell*/, const shape_interactions &interactions, std::vector > &results, const db::LocalProcessorBase * /*proc*/) const { tl_assert (results.size () == 1); std::unordered_set &result = results.front (); @@ -1443,7 +1447,7 @@ db::Coord interacting_with_text_local_operation::dist () const template -void interacting_with_text_local_operation::do_compute_local (db::Layout *layout, const shape_interactions &interactions, std::vector > &results, size_t /*max_vertex_count*/, double /*area_ratio*/) const +void interacting_with_text_local_operation::do_compute_local (db::Layout *layout, db::Cell * /*cell*/, const shape_interactions &interactions, std::vector > &results, const db::LocalProcessorBase * /*proc*/) const { if (m_output_mode == None) { return; @@ -1555,7 +1559,7 @@ bool_and_or_not_local_operation::description () const template void -bool_and_or_not_local_operation::do_compute_local (db::Layout *layout, const shape_interactions &interactions, std::vector > &results, size_t max_vertex_count, double area_ratio) const +bool_and_or_not_local_operation::do_compute_local (db::Layout *layout, db::Cell * /*cell*/, const shape_interactions &interactions, std::vector > &results, const db::LocalProcessorBase *proc) const { tl_assert (results.size () == 1); std::unordered_set &result = results.front (); @@ -1603,7 +1607,7 @@ bool_and_or_not_local_operation::do_compute_local (db::Layout *layou db::BooleanOp op (m_is_and ? db::BooleanOp::And : db::BooleanOp::ANotB); db::polygon_ref_generator pr (layout, result); - db::PolygonSplitter splitter (pr, area_ratio, max_vertex_count); + db::PolygonSplitter splitter (pr, proc->area_ratio (), proc->max_vertex_count ()); db::PolygonGenerator pg (splitter, true, true); ep.set_base_verbosity (50); ep.process (pg, op); @@ -1640,7 +1644,7 @@ bool_and_or_not_local_operation_with_properties::description () cons template void -bool_and_or_not_local_operation_with_properties::do_compute_local (db::Layout *layout, const shape_interactions, db::object_with_properties > &interactions, std::vector > > &results, size_t max_vertex_count, double area_ratio) const +bool_and_or_not_local_operation_with_properties::do_compute_local (db::Layout *layout, db::Cell * /*cell*/, const shape_interactions, db::object_with_properties > &interactions, std::vector > > &results, const db::LocalProcessorBase *proc) const { tl_assert (results.size () == 1); std::unordered_set > &result = results.front (); @@ -1717,7 +1721,7 @@ bool_and_or_not_local_operation_with_properties::do_compute_local (d db::BooleanOp op (m_is_and ? db::BooleanOp::And : db::BooleanOp::ANotB); db::polygon_ref_generator_with_properties > pr (layout, result, prop_id); - db::PolygonSplitter splitter (pr, area_ratio, max_vertex_count); + db::PolygonSplitter splitter (pr, proc->area_ratio (), proc->max_vertex_count ()); db::PolygonGenerator pg (splitter, true, true); ep.set_base_verbosity (50); ep.process (pg, op); @@ -1742,7 +1746,7 @@ two_bool_and_not_local_operation::two_bool_and_not_local_operation ( template void -two_bool_and_not_local_operation::do_compute_local (db::Layout *layout, const shape_interactions &interactions, std::vector > &results, size_t max_vertex_count, double area_ratio) const +two_bool_and_not_local_operation::do_compute_local (db::Layout *layout, db::Cell * /*cell*/, const shape_interactions &interactions, std::vector > &results, const db::LocalProcessorBase *proc) const { tl_assert (results.size () == 2); @@ -1788,12 +1792,12 @@ two_bool_and_not_local_operation::do_compute_local (db::Layout *layo db::BooleanOp op0 (db::BooleanOp::And); db::polygon_ref_generator pr0 (layout, result0); - db::PolygonSplitter splitter0 (pr0, area_ratio, max_vertex_count); + db::PolygonSplitter splitter0 (pr0, proc->area_ratio (), proc->max_vertex_count ()); db::PolygonGenerator pg0 (splitter0, true, true); db::BooleanOp op1 (db::BooleanOp::ANotB); db::polygon_ref_generator pr1 (layout, result1); - db::PolygonSplitter splitter1 (pr1, area_ratio, max_vertex_count); + db::PolygonSplitter splitter1 (pr1, proc->area_ratio (), proc->max_vertex_count ()); db::PolygonGenerator pg1 (splitter1, true, true); ep.set_base_verbosity (50); @@ -1829,7 +1833,7 @@ two_bool_and_not_local_operation_with_properties::two_bool_and_not_l template void -two_bool_and_not_local_operation_with_properties::do_compute_local (db::Layout *layout, const shape_interactions, db::object_with_properties > &interactions, std::vector > > &results, size_t max_vertex_count, double area_ratio) const +two_bool_and_not_local_operation_with_properties::do_compute_local (db::Layout *layout, db::Cell * /*cell*/, const shape_interactions, db::object_with_properties > &interactions, std::vector > > &results, const db::LocalProcessorBase *proc) const { tl_assert (results.size () == 2); std::unordered_set > &result0 = results [0]; @@ -1904,12 +1908,12 @@ two_bool_and_not_local_operation_with_properties::do_compute_local ( db::BooleanOp op0 (db::BooleanOp::And); db::polygon_ref_generator pr0 (layout, result0_wo_props); - db::PolygonSplitter splitter0 (pr0, area_ratio, max_vertex_count); + db::PolygonSplitter splitter0 (pr0, proc->area_ratio (), proc->max_vertex_count ()); db::PolygonGenerator pg0 (splitter0, true, true); db::BooleanOp op1 (db::BooleanOp::ANotB); db::polygon_ref_generator pr1 (layout, result1_wo_props); - db::PolygonSplitter splitter1 (pr1, area_ratio, max_vertex_count); + db::PolygonSplitter splitter1 (pr1, proc->area_ratio (), proc->max_vertex_count ()); db::PolygonGenerator pg1 (splitter1, true, true); ep.set_base_verbosity (50); @@ -1949,7 +1953,7 @@ SelfOverlapMergeLocalOperation::SelfOverlapMergeLocalOperation (unsigned int wra } void -SelfOverlapMergeLocalOperation::do_compute_local (db::Layout *layout, const shape_interactions &interactions, std::vector > &results, size_t /*max_vertex_count*/, double /*area_ratio*/) const +SelfOverlapMergeLocalOperation::do_compute_local (db::Layout *layout, db::Cell * /*cell*/, const shape_interactions &interactions, std::vector > &results, const db::LocalProcessorBase * /*proc*/) const { tl_assert (results.size () == 1); std::unordered_set &result = results.front (); @@ -2021,7 +2025,7 @@ PolygonToEdgeLocalOperation::description () const } void -PolygonToEdgeLocalOperation::do_compute_local (db::Layout * /*layout*/, const shape_interactions &interactions, std::vector > &results, size_t /*max_vertex_count*/, double /*area_ratio*/) const +PolygonToEdgeLocalOperation::do_compute_local (db::Layout * /*layout*/, db::Cell * /*cell*/, const shape_interactions &interactions, std::vector > &results, const db::LocalProcessorBase * /*proc*/) const { db::EdgeProcessor ep; ep.set_base_verbosity (50); diff --git a/src/db/db/dbRegionLocalOperations.h b/src/db/db/dbRegionLocalOperations.h index f5e4a238a..76166715b 100644 --- a/src/db/db/dbRegionLocalOperations.h +++ b/src/db/db/dbRegionLocalOperations.h @@ -236,7 +236,7 @@ protected: bool m_other_is_merged; db::RegionCheckOptions m_options; - void compute_results (db::Layout *layout, const std::vector &subjects, const std::set &intruders, std::unordered_set &result, std::unordered_set &intra_polygon_result) const; + void compute_results (db::Layout *layout, db::Cell *subject_cell, const std::vector &subjects, const std::set &intruders, std::unordered_set &result, std::unordered_set &intra_polygon_result, const LocalProcessorBase *proc) const; void apply_opposite_filter (const std::vector &subjects, std::unordered_set &result, std::unordered_set &intra_polygon_result) const; void apply_rectangle_filter (const std::vector &subjects, std::unordered_set &result) const; }; @@ -253,7 +253,7 @@ public: virtual bool requests_single_subjects () const { return true; } virtual std::string description () const; - virtual void do_compute_local (db::Layout * /*layout*/, const shape_interactions &interactions, std::vector > &results, size_t /*max_vertex_count*/, double /*area_ratio*/) const; + virtual void do_compute_local (db::Layout *layout, db::Cell *subject_cell, const shape_interactions &interactions, std::vector > &results, const db::LocalProcessorBase * /*proc*/) const; }; template @@ -268,7 +268,7 @@ public: virtual bool requests_single_subjects () const { return true; } virtual std::string description () const; - virtual void do_compute_local (db::Layout * /*layout*/, const shape_interactions, db::object_with_properties > &interactions, std::vector > &results, size_t /*max_vertex_count*/, double /*area_ratio*/) const; + virtual void do_compute_local (db::Layout *layout, db::Cell *subject_cell, const shape_interactions, db::object_with_properties > &interactions, std::vector > &results, const db::LocalProcessorBase * /*proc*/) const; private: mutable db::PropertyMapper m_pms, m_pmi; @@ -288,7 +288,7 @@ public: interacting_local_operation (int mode, bool touching, InteractingOutputMode output_mode, size_t min_count, size_t max_count, bool other_is_merged); virtual db::Coord dist () const; - virtual void do_compute_local (db::Layout * /*layout*/, const shape_interactions &interactions, std::vector > &results, size_t /*max_vertex_count*/, double /*area_ratio*/) const; + virtual void do_compute_local (db::Layout *layout, db::Cell *subject_cell, const shape_interactions &interactions, std::vector > &results, const db::LocalProcessorBase * /*proc*/) const; virtual OnEmptyIntruderHint on_empty_intruder_hint () const; virtual std::string description () const; @@ -310,7 +310,7 @@ public: pull_local_operation (int mode, bool touching); virtual db::Coord dist () const; - virtual void do_compute_local (db::Layout * /*layout*/, const shape_interactions &interactions, std::vector > &results, size_t /*max_vertex_count*/, double /*area_ratio*/) const; + virtual void do_compute_local (db::Layout *layout, db::Cell *subject_cell, const shape_interactions &interactions, std::vector > &results, const db::LocalProcessorBase * /*proc*/) const; virtual OnEmptyIntruderHint on_empty_intruder_hint () const; virtual std::string description () const; @@ -329,7 +329,7 @@ public: interacting_with_edge_local_operation (InteractingOutputMode output_mode, size_t min_count, size_t max_count, bool other_is_merged); virtual db::Coord dist () const; - virtual void do_compute_local (db::Layout *layout, const shape_interactions &interactions, std::vector > &results, size_t /*max_vertex_count*/, double /*area_ratio*/) const; + virtual void do_compute_local (db::Layout *layout, db::Cell *subject_cell, const shape_interactions &interactions, std::vector > &results, const db::LocalProcessorBase * /*proc*/) const; virtual OnEmptyIntruderHint on_empty_intruder_hint () const; virtual std::string description () const; @@ -349,7 +349,7 @@ public: pull_with_edge_local_operation (); virtual db::Coord dist () const; - virtual void do_compute_local (db::Layout *, const shape_interactions &interactions, std::vector > &results, size_t /*max_vertex_count*/, double /*area_ratio*/) const; + virtual void do_compute_local (db::Layout *layout, db::Cell *subject_cell, const shape_interactions &interactions, std::vector > &results, const db::LocalProcessorBase * /*proc*/) const; virtual OnEmptyIntruderHint on_empty_intruder_hint () const; virtual std::string description () const; }; @@ -364,7 +364,7 @@ public: interacting_with_text_local_operation (InteractingOutputMode output_mode, size_t min_count, size_t max_count); virtual db::Coord dist () const; - virtual void do_compute_local (db::Layout *layout, const shape_interactions &interactions, std::vector > &results, size_t /*max_vertex_count*/, double /*area_ratio*/) const; + virtual void do_compute_local (db::Layout *layout, db::Cell *subject_cell, const shape_interactions &interactions, std::vector > &results, const db::LocalProcessorBase * /*proc*/) const; virtual OnEmptyIntruderHint on_empty_intruder_hint () const; virtual std::string description () const; @@ -383,7 +383,7 @@ public: pull_with_text_local_operation (); virtual db::Coord dist () const; - virtual void do_compute_local (db::Layout *, const shape_interactions &interactions, std::vector > &results, size_t /*max_vertex_count*/, double /*area_ratio*/) const; + virtual void do_compute_local (db::Layout *layout, db::Cell *subject_cell, const shape_interactions &interactions, std::vector > &results, const db::LocalProcessorBase * /*proc*/) const; virtual OnEmptyIntruderHint on_empty_intruder_hint () const; virtual std::string description () const; }; @@ -398,7 +398,7 @@ public: contained_local_operation (InteractingOutputMode output_mode); virtual db::Coord dist () const; - virtual void do_compute_local (db::Layout * /*layout*/, const shape_interactions &interactions, std::vector > &results, size_t /*max_vertex_count*/, double /*area_ratio*/) const; + virtual void do_compute_local (db::Layout *layout, db::Cell *subject_cell, const shape_interactions &interactions, std::vector > &results, const LocalProcessorBase * /*proc*/) const; virtual OnEmptyIntruderHint on_empty_intruder_hint () const; virtual std::string description () const; @@ -421,7 +421,7 @@ class DB_PUBLIC bool_and_or_not_local_operation public: bool_and_or_not_local_operation (bool is_and); - virtual void do_compute_local (db::Layout *layout, const shape_interactions &interactions, std::vector > &result, size_t max_vertex_count, double area_ratio) const; + virtual void do_compute_local (db::Layout *layout, db::Cell *subject_cell, const shape_interactions &interactions, std::vector > &result, const db::LocalProcessorBase *proc) const; virtual OnEmptyIntruderHint on_empty_intruder_hint () const; virtual std::string description () const; @@ -441,7 +441,7 @@ class DB_PUBLIC bool_and_or_not_local_operation_with_properties public: bool_and_or_not_local_operation_with_properties (bool is_and, db::PropertiesRepository *target_pr, const db::PropertiesRepository *subject_pr, const db::PropertiesRepository *intruder_pr, db::PropertyConstraint property_constraint); - virtual void do_compute_local (db::Layout * /*layout*/, const shape_interactions, db::object_with_properties > &interactions, std::vector > > &result, size_t max_vertex_count, double area_ratio) const; + virtual void do_compute_local (db::Layout *layout, db::Cell *subject_cell, const shape_interactions, db::object_with_properties > &interactions, std::vector > > &result, const db::LocalProcessorBase *proc) const; virtual OnEmptyIntruderHint on_empty_intruder_hint () const; virtual std::string description () const; @@ -468,7 +468,7 @@ class DB_PUBLIC two_bool_and_not_local_operation public: two_bool_and_not_local_operation (); - virtual void do_compute_local (db::Layout *layout, const shape_interactions &interactions, std::vector > &result, size_t max_vertex_count, double area_ratio) const; + virtual void do_compute_local (db::Layout *layout, db::Cell *subject_cell, const shape_interactions &interactions, std::vector > &result, const db::LocalProcessorBase *proc) const; virtual std::string description () const; }; @@ -487,7 +487,7 @@ class DB_PUBLIC two_bool_and_not_local_operation_with_properties public: two_bool_and_not_local_operation_with_properties (db::PropertiesRepository *target1_pr, db::PropertiesRepository *target2_pr, const db::PropertiesRepository *subject_pr, const db::PropertiesRepository *intruder_pr, db::PropertyConstraint property_constraint); - virtual void do_compute_local (db::Layout *layout, const shape_interactions, db::object_with_properties > &interactions, std::vector > > &result, size_t max_vertex_count, double area_ratio) const; + virtual void do_compute_local (db::Layout *layout, db::Cell *subject_cell, const shape_interactions, db::object_with_properties > &interactions, std::vector > > &result, const db::LocalProcessorBase *proc) const; virtual std::string description () const; private: @@ -508,7 +508,7 @@ class DB_PUBLIC SelfOverlapMergeLocalOperation public: SelfOverlapMergeLocalOperation (unsigned int wrap_count); - virtual void do_compute_local (db::Layout *layout, const shape_interactions &interactions, std::vector > &result, size_t max_vertex_count, double area_ratio) const; + virtual void do_compute_local (db::Layout *layout, db::Cell *subject_cell, const shape_interactions &interactions, std::vector > &result, const db::LocalProcessorBase *proc) const; virtual OnEmptyIntruderHint on_empty_intruder_hint () const; virtual std::string description () const; @@ -529,7 +529,7 @@ public: virtual bool requests_single_subjects () const { return true; } virtual std::string description () const; - virtual void do_compute_local (db::Layout * /*layout*/, const shape_interactions &interactions, std::vector > &results, size_t /*max_vertex_count*/, double /*area_ratio*/) const; + virtual void do_compute_local (db::Layout *layout, db::Cell *subject_cell, const shape_interactions &interactions, std::vector > &results, const db::LocalProcessorBase *proc) const; private: mutable db::PropertyMapper m_pm; diff --git a/src/db/unit_tests/dbHierProcessorTests.cc b/src/db/unit_tests/dbHierProcessorTests.cc index 504f36c2e..452b092c5 100644 --- a/src/db/unit_tests/dbHierProcessorTests.cc +++ b/src/db/unit_tests/dbHierProcessorTests.cc @@ -61,7 +61,7 @@ public: // .. nothing yet .. } - virtual void do_compute_local (db::Layout *layout, const db::shape_interactions &interactions, std::vector > &results, size_t max_vertex_count, double area_ratio) const + virtual void do_compute_local (db::Layout *layout, const db::shape_interactions &interactions, std::vector > &results, const db::LocalProcessorBase *proc) const { db::shape_interactions sized_interactions = interactions; for (db::shape_interactions::iterator i = sized_interactions.begin (); i != sized_interactions.end (); ++i) { @@ -73,7 +73,7 @@ public: } } - db::BoolAndOrNotLocalOperation::do_compute_local (layout, sized_interactions, results, max_vertex_count, area_ratio); + db::BoolAndOrNotLocalOperation::do_compute_local (layout, sized_interactions, results, proc); } db::Coord dist () const @@ -98,7 +98,7 @@ public: // .. nothing yet .. } - virtual void do_compute_local (db::Layout *layout, const db::shape_interactions &interactions, std::vector > &results, size_t max_vertex_count, double area_ratio) const + virtual void do_compute_local (db::Layout *layout, const db::shape_interactions &interactions, std::vector > &results, const db::LocalProcessorBase *proc) const { db::shape_interactions sized_interactions = interactions; for (db::shape_interactions::iterator i = sized_interactions.begin (); i != sized_interactions.end (); ++i) { @@ -119,7 +119,7 @@ public: } - SelfOverlapMergeLocalOperation::do_compute_local (layout, sized_interactions, results, max_vertex_count, area_ratio); + SelfOverlapMergeLocalOperation::do_compute_local (layout, sized_interactions, results, proc); } db::Coord dist () const