Bugfix: don't mess with the hier cluster structure while determining the interactions ...

This commit is contained in:
Matthias Koefferlein 2019-12-12 00:20:15 +01:00
parent e11aaf4ac2
commit 1f5ec9d3e9
2 changed files with 12 additions and 12 deletions

View File

@ -1210,10 +1210,6 @@ public:
db::ICplxTrans t;
consider_cluster_instance_pair (*c1, *i2, t, ic);
for (typename std::list<ClusterInstanceInteraction>::const_iterator i = ic.begin (); i != ic.end (); ++i) {
ensure_cluster_inst_propagated (i->other_ci, mp_cell->cell_index ());
}
m_ci_interactions.splice (m_ci_interactions.end (), ic, ic.begin (), ic.end ());
}
@ -1225,6 +1221,10 @@ public:
*/
void finish_cluster_to_instance_interactions ()
{
for (typename std::list<ClusterInstanceInteraction>::const_iterator ii = m_ci_interactions.begin (); ii != m_ci_interactions.end (); ++ii) {
ensure_cluster_inst_propagated (ii->other_ci, mp_cell->cell_index ());
}
for (typename std::list<ClusterInstanceInteraction>::const_iterator ii = m_ci_interactions.begin (); ii != m_ci_interactions.end (); ++ii) {
id_type other = mp_cell_clusters->find_cluster_with_connection (ii->other_ci);

View File

@ -201,7 +201,7 @@ private:
* of a given connectivity. The shapes will still be organised in layers.
*/
template <class T>
class DB_PUBLIC local_cluster
class DB_PUBLIC_TEMPLATE local_cluster
{
public:
typedef size_t id_type;
@ -395,7 +395,7 @@ private:
* @brief A box converter for the local_cluster class
*/
template <class T>
struct DB_PUBLIC local_cluster_box_convert
struct DB_PUBLIC_TEMPLATE local_cluster_box_convert
{
typedef typename local_cluster<T>::box_type box_type;
typedef typename db::simple_bbox_tag complexity;
@ -414,7 +414,7 @@ struct DB_PUBLIC local_cluster_box_convert
* the clusters from a cell's shapes.
*/
template <class T>
class DB_PUBLIC local_clusters
class DB_PUBLIC_TEMPLATE local_clusters
{
public:
typedef typename local_cluster<T>::id_type id_type;
@ -786,7 +786,7 @@ template <class T> class connected_clusters;
* @brief An iterator delivering all clusters of a connected_clusters set
*/
template <class T>
class DB_PUBLIC connected_clusters_iterator
class DB_PUBLIC_TEMPLATE connected_clusters_iterator
{
public:
typedef typename local_cluster<T>::id_type value_type;
@ -834,7 +834,7 @@ private:
* "half connected" clusters.
*/
template <class T>
class DB_PUBLIC connected_clusters
class DB_PUBLIC_TEMPLATE connected_clusters
: public local_clusters<T>
{
public:
@ -947,7 +947,7 @@ template <typename> class cell_clusters_box_converter;
* Hierarchical clusters
*/
template <class T>
class DB_PUBLIC hier_clusters
class DB_PUBLIC_TEMPLATE hier_clusters
: public tl::Object
{
public:
@ -1029,7 +1029,7 @@ private:
* This iterator applies to one layer.
*/
template <class T>
class DB_PUBLIC recursive_cluster_shape_iterator
class DB_PUBLIC_TEMPLATE recursive_cluster_shape_iterator
{
public:
typedef T value_type;
@ -1132,7 +1132,7 @@ private:
* This iterator will deliver the child clusters of a specific cluster.
*/
template <class T>
class DB_PUBLIC recursive_cluster_iterator
class DB_PUBLIC_TEMPLATE recursive_cluster_iterator
{
public:
/**