summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/libcola/connected_components.cpp12
-rw-r--r--src/libvpsc/remove_rectangle_overlap.h5
2 files changed, 10 insertions, 7 deletions
diff --git a/src/libcola/connected_components.cpp b/src/libcola/connected_components.cpp
index 7e72d46a7..0cf6ee45a 100644
--- a/src/libcola/connected_components.cpp
+++ b/src/libcola/connected_components.cpp
@@ -1,6 +1,7 @@
#include <map>
-#include "cola.h"
+#include <list>
#include <libvpsc/remove_rectangle_overlap.h>
+#include "cola.h"
using namespace std;
namespace cola {
@@ -34,15 +35,16 @@ namespace cola {
unsigned id;
bool visited;
vector<Node*> neighbours;
+ list<Node*>::iterator listPos;
Rectangle* r;
};
// Depth first search traversal of graph to find connected component
void dfs(Node* v,
- set<Node*>& remaining,
+ list<Node*>& remaining,
Component* component,
map<unsigned,pair<Component*,unsigned> > &cmap) {
v->visited=true;
- remaining.erase(v);
+ remaining.erase(v->listPos);
cmap[v->id]=make_pair(component,component->node_ids.size());
component->node_ids.push_back(v->id);
component->rects.push_back(v->r);
@@ -66,12 +68,12 @@ namespace cola {
vector<Component*> &components) {
unsigned n=rs.size();
vector<Node> vs(n);
- set<Node*> remaining;
+ list<Node*> remaining;
for(unsigned i=0;i<n;i++) {
vs[i].id=i;
vs[i].visited=false;
vs[i].r=rs[i];
- remaining.insert(&vs[i]);
+ vs[i].listPos = remaining.insert(remaining.end(),&vs[i]);
}
vector<Edge>::const_iterator ei;
SimpleConstraints::const_iterator ci;
diff --git a/src/libvpsc/remove_rectangle_overlap.h b/src/libvpsc/remove_rectangle_overlap.h
index 82f3ef494..baa15b594 100644
--- a/src/libvpsc/remove_rectangle_overlap.h
+++ b/src/libvpsc/remove_rectangle_overlap.h
@@ -12,8 +12,9 @@
*
* Released under GNU LGPL. Read the file 'COPYING' for more information.
*/
-
-class vpsc::Rectangle;
+namespace vpsc {
+ class Rectangle;
+}
void removeRectangleOverlap(unsigned n, vpsc::Rectangle *rs[], double xBorder, double yBorder);