Added function to check whether an edge is deleted.
authorSebastian Buchwald <Sebastian.Buchwald@kit.edu>
Mon, 16 Aug 2010 07:49:36 +0000 (07:49 +0000)
committerSebastian Buchwald <Sebastian.Buchwald@kit.edu>
Mon, 16 Aug 2010 07:49:36 +0000 (07:49 +0000)
[r27929]

optimal.c
pbqp_edge.c
pbqp_edge.h

index c93ad9c..37fdc95 100644 (file)
--- a/optimal.c
+++ b/optimal.c
@@ -665,7 +665,7 @@ void simplify_edge(pbqp *pbqp, pbqp_edge *edge)
        assert(tgt_node);
 
        /* If edge are already deleted, we have nothing to do. */
-       if (!is_connected(src_node, edge) || !is_connected(tgt_node, edge))
+       if (is_deleted(edge))
                return;
 
 #if    KAPS_DUMP
index d2d2730..d0b7904 100644 (file)
@@ -92,10 +92,24 @@ void delete_edge(pbqp_edge *edge)
        disconnect_edge(src_node, edge);
        disconnect_edge(tgt_node, edge);
 
+       edge->src = NULL;
+       edge->tgt = NULL;
+
        reorder_node(src_node);
        reorder_node(tgt_node);
 }
 
+unsigned is_deleted(pbqp_edge *edge)
+{
+       unsigned deleted;
+
+       assert(edge);
+
+       deleted = (edge->src == NULL) && (edge-> tgt == NULL);
+
+       return deleted;
+}
+
 pbqp_edge *pbqp_edge_deep_copy(pbqp *pbqp, pbqp_edge *edge,
                pbqp_node *src_node, pbqp_node *tgt_node)
 {
index d59fec4..d7a7866 100644 (file)
@@ -35,5 +35,6 @@ pbqp_edge *pbqp_edge_deep_copy(pbqp *pbqp, pbqp_edge *edge,
                pbqp_node *src_node, pbqp_node *tgt_node);
 
 void delete_edge(pbqp_edge *edge);
+unsigned is_deleted(pbqp_edge *edge);
 
 #endif /* KAPS_PBQP_EDGE_H */