Fixing compile issues

This commit is contained in:
Matthias Koefferlein 2024-12-29 22:48:34 +01:00
parent 8eb181c05f
commit 941c0fff90
11 changed files with 146 additions and 51 deletions

View File

@ -1005,29 +1005,6 @@ private:
bool m_owns_filter;
bool m_sum_of_set;
/* @@@
template <class T>
void implement_compute_local (db::CompoundRegionOperationCache *cache, db::Layout *layout, db::Cell *cell, const shape_interactions<T, T> &interactions, std::vector<std::unordered_set<T> > &results, const db::LocalProcessorBase *proc) const
{
std::vector<std::unordered_set<T> > one;
one.push_back (std::unordered_set<T> ());
child (0)->compute_local (cache, layout, cell, interactions, one, proc);
if (m_sum_of_set) {
if (mp_filter->selected_set (one.front ())) {
results.front ().insert (one.front ().begin (), one.front ().end ());
}
} else {
for (typename std::unordered_set<T>::const_iterator p = one.front ().begin (); p != one.front ().end (); ++p) {
if (mp_filter->selected (*p)) {
results.front ().insert (*p);
}
}
}
}
@@@ */
template <class T>
void implement_compute_local (db::CompoundRegionOperationCache *cache, db::Layout *layout, db::Cell *cell, const shape_interactions<db::object_with_properties<T>, db::object_with_properties<T> > &interactions, std::vector<std::unordered_set<db::object_with_properties<T> > > &results, const db::LocalProcessorBase *proc) const
{
@ -1079,29 +1056,6 @@ private:
bool m_owns_filter;
bool m_sum_of;
/* @@@
template <class T>
void implement_compute_local (db::CompoundRegionOperationCache *cache, db::Layout *layout, db::Cell *cell, const shape_interactions<T, T> &interactions, std::vector<std::unordered_set<db::Edge> > &results, const db::LocalProcessorBase *proc) const
{
std::vector<std::unordered_set<db::Edge> > one;
one.push_back (std::unordered_set<Edge> ());
child (0)->compute_local (cache, layout, cell, interactions, one, proc);
if (m_sum_of) {
if (mp_filter->selected (one.front ())) {
results.front ().insert (one.front ().begin (), one.front ().end ());
}
} else {
for (typename std::unordered_set<db::Edge>::const_iterator p = one.front ().begin (); p != one.front ().end (); ++p) {
if (mp_filter->selected (*p)) {
results.front ().insert (*p);
}
}
}
}
@@@ */
template <class T>
void implement_compute_local (db::CompoundRegionOperationCache *cache, db::Layout *layout, db::Cell *cell, const shape_interactions<db::object_with_properties<T>, db::object_with_properties<T> > &interactions, std::vector<std::unordered_set<db::EdgeWithProperties> > &results, const db::LocalProcessorBase *proc) const
{

View File

@ -217,13 +217,20 @@ private:
db::SimplePolygon per_edge_clip_box (db::Box (xmin, -m_din - 1, xmax, m_dout + 1));
// compute the merged neighbors
// NOTE: we first separate by layer and properties ID before we merge. Hence
// shapes with different properties IDs are kept separate.
std::map<unsigned int, std::vector<db::PolygonWithProperties> > merged_neighbors;
db::EdgeProcessor ep;
std::map<std::pair<unsigned int, db::properties_id_type>, std::vector<const db::Polygon *> > neighbors_by_prop_ids;
for (auto n = neighbors.begin (); n != neighbors.end (); ++n) {
for (auto p = n->second.begin (); p != n->second.end (); ++p) {
neighbors_by_prop_ids [std::make_pair (n->first, (*p)->properties_id ())].push_back (*p);
}
}
// @@@ TODO: separate by properties ID and feed individually ...
db::properties_id_type prop_id = 0;
db::EdgeProcessor ep;
for (auto n = neighbors_by_prop_ids.begin (); n != neighbors_by_prop_ids.end (); ++n) {
ep.clear ();
@ -238,7 +245,7 @@ private:
ep.insert (per_edge_clip_box, size_t (1));
db::BooleanOp and_op (db::BooleanOp::And);
db::PolygonContainerWithProperties pc (merged_neighbors [n->first], prop_id);
db::PolygonContainerWithProperties pc (merged_neighbors [n->first.first], n->first.second);
db::PolygonGenerator pg (pc, false);
ep.process (pg, and_op);

View File

@ -218,6 +218,11 @@ template DB_PUBLIC void Edges::insert (const db::SimplePolygon &);
template DB_PUBLIC void Edges::insert (const db::Polygon &);
template DB_PUBLIC void Edges::insert (const db::Path &);
template DB_PUBLIC void Edges::insert (const db::Edge &);
template DB_PUBLIC void Edges::insert (const db::BoxWithProperties &);
template DB_PUBLIC void Edges::insert (const db::SimplePolygonWithProperties &);
template DB_PUBLIC void Edges::insert (const db::PolygonWithProperties &);
template DB_PUBLIC void Edges::insert (const db::PathWithProperties &);
template DB_PUBLIC void Edges::insert (const db::EdgeWithProperties &);
void Edges::insert (const db::Shape &shape)
{

View File

@ -1812,11 +1812,16 @@ template class DB_PUBLIC shape_interactions<db::Polygon, db::TextRef>;
template class DB_PUBLIC shape_interactions<db::Polygon, db::Edge>;
template class DB_PUBLIC shape_interactions<db::PolygonRefWithProperties, db::PolygonRefWithProperties>;
template class DB_PUBLIC shape_interactions<db::PolygonWithProperties, db::PolygonWithProperties>;
template class DB_PUBLIC shape_interactions<db::PolygonWithProperties, db::TextWithProperties>;
template class DB_PUBLIC shape_interactions<db::PolygonWithProperties, db::EdgeWithProperties>;
template class DB_PUBLIC shape_interactions<db::PolygonRef, db::PolygonRef>;
template class DB_PUBLIC shape_interactions<db::PolygonRef, db::TextRef>;
template class DB_PUBLIC shape_interactions<db::PolygonRefWithProperties, db::TextRefWithProperties>;
template class DB_PUBLIC shape_interactions<db::PolygonRef, db::Text>;
template class DB_PUBLIC shape_interactions<db::PolygonRef, db::Edge>;
template class DB_PUBLIC shape_interactions<db::PolygonRefWithProperties, db::EdgeWithProperties>;
template class DB_PUBLIC shape_interactions<db::Edge, db::Edge>;
template class DB_PUBLIC shape_interactions<db::EdgeWithProperties, db::EdgeWithProperties>;
template class DB_PUBLIC shape_interactions<db::Edge, db::PolygonRef>;
template class DB_PUBLIC shape_interactions<db::Edge, db::Polygon>;
template class DB_PUBLIC shape_interactions<db::TextRef, db::TextRef>;
@ -1839,6 +1844,8 @@ template class DB_PUBLIC local_processor_context_computation_task<db::PolygonWit
template class DB_PUBLIC local_processor_context_computation_task<db::PolygonWithProperties, db::PolygonWithProperties, db::EdgeWithProperties>;
template class DB_PUBLIC local_processor_context_computation_task<db::PolygonWithProperties, db::PolygonWithProperties, db::EdgePairWithProperties>;
template class DB_PUBLIC local_processor_context_computation_task<db::PolygonWithProperties, db::PolygonWithProperties, db::EdgePair>;
template class DB_PUBLIC local_processor_context_computation_task<db::PolygonWithProperties, db::EdgeWithProperties, db::PolygonWithProperties>;
template class DB_PUBLIC local_processor_context_computation_task<db::PolygonWithProperties, db::EdgeWithProperties, db::EdgeWithProperties>;
template class DB_PUBLIC local_processor_context_computation_task<db::PolygonRef, db::PolygonRef, db::PolygonRef>;
template class DB_PUBLIC local_processor_context_computation_task<db::PolygonRef, db::TextRef, db::TextRef>;
template class DB_PUBLIC local_processor_context_computation_task<db::PolygonRef, db::TextRef, db::PolygonRef>;
@ -1876,6 +1883,8 @@ template class DB_PUBLIC local_processor_result_computation_task<db::PolygonWith
template class DB_PUBLIC local_processor_result_computation_task<db::PolygonWithProperties, db::PolygonWithProperties, db::EdgeWithProperties>;
template class DB_PUBLIC local_processor_result_computation_task<db::PolygonWithProperties, db::PolygonWithProperties, db::EdgePairWithProperties>;
template class DB_PUBLIC local_processor_result_computation_task<db::PolygonWithProperties, db::PolygonWithProperties, db::EdgePair>;
template class DB_PUBLIC local_processor_result_computation_task<db::PolygonWithProperties, db::EdgeWithProperties, db::PolygonWithProperties>;
template class DB_PUBLIC local_processor_result_computation_task<db::PolygonWithProperties, db::EdgeWithProperties, db::EdgeWithProperties>;
template class DB_PUBLIC local_processor_result_computation_task<db::PolygonRef, db::PolygonRef, db::PolygonRef>;
template class DB_PUBLIC local_processor_result_computation_task<db::PolygonRef, db::Edge, db::PolygonRef>;
template class DB_PUBLIC local_processor_result_computation_task<db::PolygonRef, db::PolygonRef, db::EdgePair>;
@ -1905,6 +1914,8 @@ template class DB_PUBLIC local_processor<db::PolygonWithProperties, db::PolygonW
template class DB_PUBLIC local_processor<db::PolygonWithProperties, db::PolygonWithProperties, db::EdgeWithProperties>;
template class DB_PUBLIC local_processor<db::PolygonWithProperties, db::PolygonWithProperties, db::EdgePair>;
template class DB_PUBLIC local_processor<db::PolygonWithProperties, db::PolygonWithProperties, db::EdgePairWithProperties>;
template class DB_PUBLIC local_processor<db::PolygonWithProperties, db::EdgeWithProperties, db::PolygonWithProperties>;
template class DB_PUBLIC local_processor<db::PolygonWithProperties, db::EdgeWithProperties, db::EdgeWithProperties>;
template class DB_PUBLIC local_processor<db::PolygonRef, db::PolygonRef, db::PolygonRef>;
template class DB_PUBLIC local_processor<db::PolygonRef, db::Edge, db::PolygonRef>;
template class DB_PUBLIC local_processor<db::PolygonRef, db::Edge, db::Edge>;

View File

@ -544,6 +544,8 @@ template class DB_PUBLIC local_processor_cell_context<db::PolygonWithProperties,
template class DB_PUBLIC local_processor_cell_context<db::PolygonWithProperties, db::PolygonWithProperties, db::EdgeWithProperties>;
template class DB_PUBLIC local_processor_cell_context<db::PolygonWithProperties, db::PolygonWithProperties, db::EdgePairWithProperties>;
template class DB_PUBLIC local_processor_cell_context<db::PolygonWithProperties, db::PolygonWithProperties, db::EdgePair>;
template class DB_PUBLIC local_processor_cell_context<db::PolygonWithProperties, db::EdgeWithProperties, db::PolygonWithProperties>;
template class DB_PUBLIC local_processor_cell_context<db::PolygonWithProperties, db::EdgeWithProperties, db::EdgeWithProperties>;
template class DB_PUBLIC local_processor_cell_context<db::PolygonRef, db::PolygonRef, db::PolygonRef>;
template class DB_PUBLIC local_processor_cell_context<db::PolygonRef, db::Edge, db::PolygonRef>;
template class DB_PUBLIC local_processor_cell_context<db::PolygonRef, db::PolygonRef, db::EdgePair>;
@ -581,6 +583,8 @@ template class DB_PUBLIC local_processor_cell_contexts<db::PolygonWithProperties
template class DB_PUBLIC local_processor_cell_contexts<db::PolygonWithProperties, db::PolygonWithProperties, db::EdgeWithProperties>;
template class DB_PUBLIC local_processor_cell_contexts<db::PolygonWithProperties, db::PolygonWithProperties, db::EdgePairWithProperties>;
template class DB_PUBLIC local_processor_cell_contexts<db::PolygonWithProperties, db::PolygonWithProperties, db::EdgePair>;
template class DB_PUBLIC local_processor_cell_contexts<db::PolygonWithProperties, db::EdgeWithProperties, db::PolygonWithProperties>;
template class DB_PUBLIC local_processor_cell_contexts<db::PolygonWithProperties, db::EdgeWithProperties, db::EdgeWithProperties>;
template class DB_PUBLIC local_processor_cell_contexts<db::PolygonRef, db::PolygonRef, db::PolygonRef>;
template class DB_PUBLIC local_processor_cell_contexts<db::PolygonRef, db::Edge, db::PolygonRef>;
template class DB_PUBLIC local_processor_cell_contexts<db::PolygonRef, db::PolygonRef, db::EdgePair>;

View File

@ -89,6 +89,8 @@ template class DB_PUBLIC local_operation<db::PolygonWithProperties, db::PolygonW
template class DB_PUBLIC local_operation<db::PolygonWithProperties, db::PolygonWithProperties, db::EdgeWithProperties>;
template class DB_PUBLIC local_operation<db::PolygonWithProperties, db::PolygonWithProperties, db::EdgePairWithProperties>;
template class DB_PUBLIC local_operation<db::PolygonWithProperties, db::PolygonWithProperties, db::EdgePair>;
template class DB_PUBLIC local_operation<db::PolygonWithProperties, db::EdgeWithProperties, db::EdgeWithProperties>;
template class DB_PUBLIC local_operation<db::PolygonWithProperties, db::EdgeWithProperties, db::PolygonWithProperties>;
template class DB_PUBLIC local_operation<db::PolygonRef, db::PolygonRef, db::PolygonRef>;
template class DB_PUBLIC local_operation<db::PolygonRef, db::Text, db::PolygonRef>;
template class DB_PUBLIC local_operation<db::PolygonRef, db::TextRef, db::PolygonRef>;

View File

@ -97,6 +97,34 @@ private:
std::unordered_set<db::PolygonRef> *mp_polyrefs;
};
template <>
class DB_PUBLIC polygon_ref_generator<db::PolygonRefWithProperties>
: public PolygonSink
{
public:
/**
* @brief Constructor
*/
polygon_ref_generator (db::Layout *layout, std::unordered_set<db::PolygonRefWithProperties> &polyrefs)
: PolygonSink (), mp_layout (layout), mp_polyrefs (&polyrefs)
{
// .. nothing yet ..
}
/**
* @brief Implementation of the PolygonSink interface
*/
void put (const db::Polygon &polygon)
{
tl::MutexLocker locker (&mp_layout->lock ());
mp_polyrefs->insert (db::PolygonRefWithProperties (db::PolygonRef (polygon, mp_layout->shape_repository ()), db::properties_id_type (0)));
}
private:
db::Layout *mp_layout;
std::unordered_set<db::PolygonRefWithProperties> *mp_polyrefs;
};
template <>
class DB_PUBLIC polygon_ref_generator<db::Polygon>
: public PolygonSink
@ -123,6 +151,32 @@ private:
std::unordered_set<db::Polygon> *mp_polygons;
};
template <>
class DB_PUBLIC polygon_ref_generator<db::PolygonWithProperties>
: public PolygonSink
{
public:
/**
* @brief Constructor
*/
polygon_ref_generator (db::Layout *, std::unordered_set<db::PolygonWithProperties> &polygons)
: mp_polygons (&polygons)
{
// .. nothing yet ..
}
/**
* @brief Implementation of the PolygonSink interface
*/
virtual void put (const db::Polygon &polygon)
{
mp_polygons->insert (db::PolygonWithProperties (polygon, db::properties_id_type (0)));
}
private:
std::unordered_set<db::PolygonWithProperties> *mp_polygons;
};
typedef polygon_ref_generator<db::PolygonRef> PolygonRefGenerator;
template <class T>

View File

@ -79,6 +79,16 @@ public:
// .. nothing yet ..
}
/**
* @brief Create myself from a object
* The properties ID is initialized with zero (= no properties)
*/
object_with_properties (const Obj &obj)
: Obj (obj), m_id (0)
{
// .. nothing yet ..
}
/**
* @brief Create myself from a object and an id
*/

View File

@ -657,6 +657,10 @@ template DB_PUBLIC bool suggest_split_polygon<> (const db::Polygon &polygon, siz
template DB_PUBLIC bool suggest_split_polygon<> (const db::SimplePolygon &polygon, size_t max_vertex_count, double max_area_ratio);
template DB_PUBLIC bool suggest_split_polygon<> (const db::DPolygon &polygon, size_t max_vertex_count, double max_area_ratio);
template DB_PUBLIC bool suggest_split_polygon<> (const db::DSimplePolygon &polygon, size_t max_vertex_count, double max_area_ratio);
template DB_PUBLIC bool suggest_split_polygon<> (const db::PolygonWithProperties &polygon, size_t max_vertex_count, double max_area_ratio);
template DB_PUBLIC bool suggest_split_polygon<> (const db::SimplePolygonWithProperties &polygon, size_t max_vertex_count, double max_area_ratio);
template DB_PUBLIC bool suggest_split_polygon<> (const db::DPolygonWithProperties &polygon, size_t max_vertex_count, double max_area_ratio);
template DB_PUBLIC bool suggest_split_polygon<> (const db::DSimplePolygonWithProperties &polygon, size_t max_vertex_count, double max_area_ratio);
// -------------------------------------------------------------------------
// Implementation of split_polygon

View File

@ -525,6 +525,8 @@ poly2poly_check<PolygonType>::process ()
// explicit instantiations
template class poly2poly_check<db::Polygon>;
template class poly2poly_check<db::PolygonRef>;
template class poly2poly_check<db::PolygonWithProperties>;
template class poly2poly_check<db::PolygonRefWithProperties>;
// -------------------------------------------------------------------------------------
// RegionToEdgeInteractionFilterBase implementation
@ -593,6 +595,10 @@ template class region_to_edge_interaction_filter_base<db::Polygon, db::Edge, db:
template class region_to_edge_interaction_filter_base<db::PolygonRef, db::Edge, db::PolygonRef>;
template class region_to_edge_interaction_filter_base<db::Polygon, db::Edge, db::Edge>;
template class region_to_edge_interaction_filter_base<db::PolygonRef, db::Edge, db::Edge>;
template class region_to_edge_interaction_filter_base<db::PolygonWithProperties, db::EdgeWithProperties, db::PolygonWithProperties>;
template class region_to_edge_interaction_filter_base<db::PolygonRefWithProperties, db::EdgeWithProperties, db::PolygonRefWithProperties>;
template class region_to_edge_interaction_filter_base<db::PolygonWithProperties, db::EdgeWithProperties, db::EdgeWithProperties>;
template class region_to_edge_interaction_filter_base<db::PolygonRefWithProperties, db::EdgeWithProperties, db::EdgeWithProperties>;
// -------------------------------------------------------------------------------------
// RegionToTextInteractionFilterBase implementation
@ -652,5 +658,10 @@ template class region_to_text_interaction_filter_base<db::Polygon, db::Text, db:
template class region_to_text_interaction_filter_base<db::Polygon, db::Text, db::Text>;
template class region_to_text_interaction_filter_base<db::Polygon, db::TextRef, db::TextRef>;
template class region_to_text_interaction_filter_base<db::PolygonRef, db::TextRef, db::TextRef>;
template class region_to_text_interaction_filter_base<db::PolygonRefWithProperties, db::TextRefWithProperties, db::PolygonRefWithProperties>;
template class region_to_text_interaction_filter_base<db::PolygonWithProperties, db::TextWithProperties, db::PolygonWithProperties>;
template class region_to_text_interaction_filter_base<db::PolygonWithProperties, db::TextWithProperties, db::TextWithProperties>;
template class region_to_text_interaction_filter_base<db::PolygonWithProperties, db::TextRefWithProperties, db::TextRefWithProperties>;
template class region_to_text_interaction_filter_base<db::PolygonRefWithProperties, db::TextRefWithProperties, db::TextRefWithProperties>;
}

View File

@ -40,6 +40,11 @@ static inline const db::Polygon *push_polygon_to_heap (db::Layout *, const db::P
return &p;
}
static inline const db::PolygonWithProperties *push_polygon_to_heap (db::Layout *, const db::PolygonWithProperties &p, std::list<db::PolygonWithProperties> &)
{
return &p;
}
static inline const db::PolygonRef *push_polygon_to_heap (db::Layout *layout, const db::PolygonRef &p, std::list<db::PolygonRef> &heap)
{
db::PolygonRef ref = db::PolygonRef (p, layout->shape_repository ());
@ -47,6 +52,13 @@ static inline const db::PolygonRef *push_polygon_to_heap (db::Layout *layout, co
return &heap.back ();
}
static inline const db::PolygonRefWithProperties *push_polygon_to_heap (db::Layout *layout, const db::PolygonRefWithProperties &p, std::list<db::PolygonRefWithProperties> &heap)
{
db::PolygonRefWithProperties ref = db::PolygonRefWithProperties (db::PolygonRef (p, layout->shape_repository ()), p.properties_id ());
heap.push_back (ref);
return &heap.back ();
}
template <class TR>
struct result_counting_inserter
{
@ -758,6 +770,8 @@ check_local_operation<TS, TI>::description () const
// explicit instantiations
template class DB_PUBLIC check_local_operation<db::PolygonRef, db::PolygonRef>;
template class DB_PUBLIC check_local_operation<db::Polygon, db::Polygon>;
template class DB_PUBLIC check_local_operation<db::PolygonRefWithProperties, db::PolygonRefWithProperties>;
template class DB_PUBLIC check_local_operation<db::PolygonWithProperties, db::PolygonWithProperties>;
// ---------------------------------------------------------------------------------------------------------------
@ -831,6 +845,8 @@ check_local_operation_with_properties<TS, TI>::description () const
// explicit instantiations
template class DB_PUBLIC check_local_operation_with_properties<db::PolygonRef, db::PolygonRef>;
template class DB_PUBLIC check_local_operation_with_properties<db::Polygon, db::Polygon>;
template class DB_PUBLIC check_local_operation_with_properties<db::PolygonRefWithProperties, db::PolygonRefWithProperties>;
template class DB_PUBLIC check_local_operation_with_properties<db::PolygonWithProperties, db::PolygonWithProperties>;
// ---------------------------------------------------------------------------------------------------------------
@ -1032,6 +1048,8 @@ std::string interacting_local_operation<TS, TI, TR>::description () const
// explicit instantiations
template class DB_PUBLIC interacting_local_operation<db::PolygonRef, db::PolygonRef, db::PolygonRef>;
template class DB_PUBLIC interacting_local_operation<db::Polygon, db::Polygon, db::Polygon>;
template class DB_PUBLIC interacting_local_operation<db::PolygonRefWithProperties, db::PolygonRefWithProperties, db::PolygonRefWithProperties>;
template class DB_PUBLIC interacting_local_operation<db::PolygonWithProperties, db::PolygonWithProperties, db::PolygonWithProperties>;
// ---------------------------------------------------------------------------------------------------------------
@ -1107,6 +1125,9 @@ std::string contained_local_operation<TS, TI, TR>::description () const
template class DB_PUBLIC contained_local_operation<db::PolygonRef, db::PolygonRef, db::PolygonRef>;
template class DB_PUBLIC contained_local_operation<db::Polygon, db::Polygon, db::Polygon>;
template class DB_PUBLIC contained_local_operation<db::Edge, db::Edge, db::Edge>;
template class DB_PUBLIC contained_local_operation<db::PolygonRefWithProperties, db::PolygonRefWithProperties, db::PolygonRefWithProperties>;
template class DB_PUBLIC contained_local_operation<db::PolygonWithProperties, db::PolygonWithProperties, db::PolygonWithProperties>;
template class DB_PUBLIC contained_local_operation<db::EdgeWithProperties, db::EdgeWithProperties, db::EdgeWithProperties>;
// ---------------------------------------------------------------------------------------------------------------
@ -1186,6 +1207,8 @@ std::string pull_local_operation<TS, TI, TR>::description () const
template class DB_PUBLIC pull_local_operation<db::PolygonRef, db::PolygonRef, db::PolygonRef>;
template class DB_PUBLIC pull_local_operation<db::Polygon, db::Polygon, db::Polygon>;
template class DB_PUBLIC pull_local_operation<db::PolygonRefWithProperties, db::PolygonRefWithProperties, db::PolygonRefWithProperties>;
template class DB_PUBLIC pull_local_operation<db::PolygonWithProperties, db::PolygonWithProperties, db::PolygonWithProperties>;
// ---------------------------------------------------------------------------------------------------------------
@ -1244,7 +1267,7 @@ void interacting_with_edge_local_operation<TS, TI, TR>::do_compute_local (db::La
}
}
merge_scanner.process (cluster_collector, 1, db::box_convert<db::Edge> ());
merge_scanner.process (cluster_collector, 1, db::box_convert<TI> ());
for (typename std::unordered_set<TI>::const_iterator e = merged_heap.begin (); e != merged_heap.end (); ++e) {
scanner.insert2 (e.operator-> (), 0);
@ -1314,6 +1337,8 @@ std::string interacting_with_edge_local_operation<TS, TI, TR>::description () co
template class DB_PUBLIC interacting_with_edge_local_operation<db::PolygonRef, db::Edge, db::PolygonRef>;
template class DB_PUBLIC interacting_with_edge_local_operation<db::Polygon, db::Edge, db::Polygon>;
template class DB_PUBLIC interacting_with_edge_local_operation<db::PolygonRefWithProperties, db::EdgeWithProperties, db::PolygonRefWithProperties>;
template class DB_PUBLIC interacting_with_edge_local_operation<db::PolygonWithProperties, db::EdgeWithProperties, db::PolygonWithProperties>;
// ---------------------------------------------------------------------------------------------------------------
@ -1375,6 +1400,8 @@ std::string pull_with_edge_local_operation<TS, TI, TR>::description () const
template class DB_PUBLIC pull_with_edge_local_operation<db::PolygonRef, db::Edge, db::Edge>;
template class DB_PUBLIC pull_with_edge_local_operation<db::Polygon, db::Edge, db::Edge>;
template class DB_PUBLIC pull_with_edge_local_operation<db::PolygonRefWithProperties, db::EdgeWithProperties, db::EdgeWithProperties>;
template class DB_PUBLIC pull_with_edge_local_operation<db::PolygonWithProperties, db::EdgeWithProperties, db::EdgeWithProperties>;
// ---------------------------------------------------------------------------------------------------------------
@ -1442,6 +1469,8 @@ std::string pull_with_text_local_operation<TS, TI, TR>::description () const
template class DB_PUBLIC pull_with_text_local_operation<db::PolygonRef, db::TextRef, db::TextRef>;
template class DB_PUBLIC pull_with_text_local_operation<db::Polygon, db::Text, db::Text>;
template class DB_PUBLIC pull_with_text_local_operation<db::PolygonRefWithProperties, db::TextRefWithProperties, db::TextRefWithProperties>;
template class DB_PUBLIC pull_with_text_local_operation<db::PolygonWithProperties, db::TextWithProperties, db::TextWithProperties>;
// ---------------------------------------------------------------------------------------------------------------
@ -1546,6 +1575,8 @@ std::string interacting_with_text_local_operation<TS, TI, TR>::description () co
// explicit instantiations
template class DB_PUBLIC interacting_with_text_local_operation<db::PolygonRef, db::TextRef, db::PolygonRef>;
template class DB_PUBLIC interacting_with_text_local_operation<db::Polygon, db::Text, db::Polygon>;
template class DB_PUBLIC interacting_with_text_local_operation<db::PolygonRefWithProperties, db::TextRefWithProperties, db::PolygonRefWithProperties>;
template class DB_PUBLIC interacting_with_text_local_operation<db::PolygonWithProperties, db::TextWithProperties, db::PolygonWithProperties>;
// ---------------------------------------------------------------------------------------------
// BoolAndOrNotLocalOperation implementation
@ -1631,6 +1662,8 @@ bool_and_or_not_local_operation<TS, TI, TR>::do_compute_local (db::Layout *layou
template class DB_PUBLIC bool_and_or_not_local_operation<db::PolygonRef, db::PolygonRef, db::PolygonRef>;
template class DB_PUBLIC bool_and_or_not_local_operation<db::Polygon, db::Polygon, db::Polygon>;
template class DB_PUBLIC bool_and_or_not_local_operation<db::PolygonRefWithProperties, db::PolygonRefWithProperties, db::PolygonRefWithProperties>;
template class DB_PUBLIC bool_and_or_not_local_operation<db::PolygonWithProperties, db::PolygonWithProperties, db::PolygonWithProperties>;
// ---------------------------------------------------------------------------------------------
// BoolAndOrNotLocalOperationWithProperties implementation