[libgee] Making PriorityQueue.NodePair a compact class
- From: Maciej Marcin Piechotka <mpiechotka src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [libgee] Making PriorityQueue.NodePair a compact class
- Date: Sun, 2 Dec 2012 14:10:20 +0000 (UTC)
commit f987368bed522bc3e21c2d3d316d882fddbf0f19
Author: Maciej Piechotka <uzytkownik2 gmail com>
Date: Sun Dec 2 02:41:04 2012 +0000
Making PriorityQueue.NodePair a compact class
gee/priorityqueue.vala | 29 +++++++++++++++--------------
1 files changed, 15 insertions(+), 14 deletions(-)
---
diff --git a/gee/priorityqueue.vala b/gee/priorityqueue.vala
index c294172..bee5217 100644
--- a/gee/priorityqueue.vala
+++ b/gee/priorityqueue.vala
@@ -61,7 +61,7 @@ public class Gee.PriorityQueue<G> : Gee.AbstractQueue<G> {
private Type1Node<G>?[] _a = new Type1Node<G>[0];
#endif
private NodePair<G>? _lp_head = null;
- private NodePair<G>? _lp_tail = null;
+ private unowned NodePair<G>? _lp_tail = null;
private bool[] _b = new bool[0];
private Type1Node<G>? _ll_head = null;
private Type1Node<G>? _ll_tail = null;
@@ -533,7 +533,7 @@ public class Gee.PriorityQueue<G> : Gee.AbstractQueue<G> {
#endif
if (_lp_head != null) {
- NodePair<G> pair = _lp_head;
+ unowned NodePair<G> pair = _lp_head;
_link (pair.node1, pair.node2);
return true;
}
@@ -705,12 +705,12 @@ public class Gee.PriorityQueue<G> : Gee.AbstractQueue<G> {
node.brothers_next.pair = pair;
node.pair = pair;
if (_lp_head == null) {
- _lp_head = pair;
_lp_tail = pair;
+ _lp_head = (owned)pair;
} else {
pair.lp_prev = _lp_tail;
- _lp_tail.lp_next = pair;
- _lp_tail = pair;
+ _lp_tail.lp_next = (owned)pair;
+ _lp_tail = _lp_tail.lp_next;
}
// There is now an even number of child of such degree
_b[degree] = false;
@@ -829,20 +829,20 @@ public class Gee.PriorityQueue<G> : Gee.AbstractQueue<G> {
// Maintain LP
if (node.pair != null) {
- NodePair<G> pair = node.pair;
+ unowned NodePair<G> pair = node.pair;
Type1Node<G> other = (pair.node1 == node ? pair.node2 : pair.node1);
node.pair = null;
other.pair = null;
- if (pair.lp_prev != null) {
- pair.lp_prev.lp_next = pair.lp_next;
- } else {
- _lp_head = pair.lp_next;
- }
if (pair.lp_next != null) {
pair.lp_next.lp_prev = pair.lp_prev;
} else {
_lp_tail = pair.lp_prev;
}
+ if (pair.lp_prev != null) {
+ pair.lp_prev.lp_next = (owned)pair.lp_next;
+ } else {
+ _lp_head = (owned)pair.lp_next;
+ }
}
}
@@ -1110,11 +1110,12 @@ public class Gee.PriorityQueue<G> : Gee.AbstractQueue<G> {
#endif
}
+ [Compact]
private class NodePair<G> {
- public weak NodePair<G>? lp_prev = null;
+ public unowned NodePair<G>? lp_prev = null;
public NodePair<G>? lp_next = null;
- public Type1Node<G> node1 = null;
- public Type1Node<G> node2 = null;
+ public unowned Type1Node<G> node1 = null;
+ public unowned Type1Node<G> node2 = null;
public NodePair (Type1Node<G> node1, Type1Node<G> node2) {
this.node1 = node1;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]