From 3efe460ed49351730bf2baff2c6bd2fe2b1009f8 Mon Sep 17 00:00:00 2001 From: Sebastian Buchwald Date: Mon, 8 Dec 2008 23:00:39 +0000 Subject: [PATCH] Extract function to update bucket. [r24416] --- bucket.c | 13 +++++++++++-- bucket.h | 3 ++- heuristical.c | 3 ++- 3 files changed, 15 insertions(+), 4 deletions(-) diff --git a/bucket.c b/bucket.c index c82f542b2..5909d6082 100644 --- a/bucket.c +++ b/bucket.c @@ -63,14 +63,23 @@ int node_bucket_contains(pbqp_node_bucket bucket, pbqp_node *node) && bucket[node->bucket_index] == node; } -void node_bucket_copy(pbqp *pbqp, pbqp_node_bucket *dst, pbqp_node_bucket src) +void node_bucket_copy(pbqp_node_bucket *dst, pbqp_node_bucket src) { unsigned src_index; unsigned src_length = node_bucket_get_length(src); for (src_index = 0; src_index < src_length; ++src_index) { node_bucket_insert(dst, src[src_index]); - pbqp->nodes[src[src_index]->index] = src[src_index]; + } +} + +void node_bucket_update(pbqp *pbqp, pbqp_node_bucket bucket) +{ + unsigned index; + unsigned length = node_bucket_get_length(bucket); + + for (index = 0; index < length; ++index) { + pbqp->nodes[bucket[index]->index] = bucket[index]; } } diff --git a/bucket.h b/bucket.h index 462367172..b19fc1c5c 100644 --- a/bucket.h +++ b/bucket.h @@ -11,7 +11,7 @@ void edge_bucket_insert(pbqp_edge_bucket *bucket, pbqp_edge *edge); pbqp_edge *edge_bucket_pop(pbqp_edge_bucket *bucket); int node_bucket_contains(pbqp_node_bucket bucket, pbqp_node *node); -void node_bucket_copy(pbqp *pbqp, pbqp_node_bucket *dst, pbqp_node_bucket src); +void node_bucket_copy(pbqp_node_bucket *dst, pbqp_node_bucket src); void node_bucket_deep_copy(pbqp *pbqp, pbqp_node_bucket *dst, pbqp_node_bucket src); void node_bucket_free(pbqp_node_bucket *bucket); unsigned node_bucket_get_length(pbqp_node_bucket bucket); @@ -20,5 +20,6 @@ void node_bucket_insert(pbqp_node_bucket *bucket, pbqp_node *node); pbqp_node *node_bucket_pop(pbqp_node_bucket *bucket); void node_bucket_remove(pbqp_node_bucket *bucket, pbqp_node *node); void node_bucket_shrink(pbqp_node_bucket *bucket, unsigned len); +void node_bucket_update(pbqp *pbqp, pbqp_node_bucket bucket); #endif /* KAPS_BUCKET_H */ diff --git a/heuristical.c b/heuristical.c index 90296b529..75446a817 100644 --- a/heuristical.c +++ b/heuristical.c @@ -916,7 +916,8 @@ static unsigned get_minimal_alternative(pbqp *pbqp, pbqp_node *node) /* ... and restore old PBQP state. */ node_bucket_shrink(&node_buckets[0], bucket_0_length); node_bucket_shrink(&reduced_bucket, bucket_red_length); - node_bucket_copy(pbqp, &node_buckets[3], bucket_deg3); + node_bucket_copy(&node_buckets[3], bucket_deg3); + node_bucket_update(pbqp, node_buckets[3]); /* Free copies. */ /* obstack_free(&pbqp->obstack, tmp); */ -- 2.20.1