From: Maciej Piechotka Date: Tue, 20 Sep 2011 16:56:00 +0000 (+0200) Subject: Move to new syntax of out parameters X-Git-Tag: 0.7.1~6 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=78946cc45d354634247e000f10db0fcd57fa0192;p=platform%2Fupstream%2Flibgee.git Move to new syntax of out parameters --- diff --git a/gee/abstractmap.vala b/gee/abstractmap.vala index ea6982d..33a1ab6 100644 --- a/gee/abstractmap.vala +++ b/gee/abstractmap.vala @@ -104,12 +104,7 @@ public abstract class Gee.AbstractMap : Object, Traversable> * {@inheritDoc} */ public bool remove (K key, out V? value = null) { - V removed_value; - bool result = unset (key, out removed_value); - if (&value != null) { - value = removed_value; - } - return result; + return unset (key, out value); } /** diff --git a/gee/hashmap.vala b/gee/hashmap.vala index aeb5c96..57f1412 100644 --- a/gee/hashmap.vala +++ b/gee/hashmap.vala @@ -211,9 +211,7 @@ public class Gee.HashMap : Gee.AbstractMap { if (*node != null) { Node next = (owned) (*node)->next; - if (&value != null) { - value = (owned) (*node)->value; - } + value = (owned) (*node)->value; (*node)->key = null; (*node)->value = null; @@ -225,6 +223,8 @@ public class Gee.HashMap : Gee.AbstractMap { resize (); _stamp++; return true; + } else { + value = null; } return false; } diff --git a/gee/traversable.vala b/gee/traversable.vala index a9ade84..9af35eb 100644 --- a/gee/traversable.vala +++ b/gee/traversable.vala @@ -142,6 +142,7 @@ public interface Gee.Traversable : Object return stream((state, item, out val) => { switch (state) { case Stream.YIELD: + val = null; return Stream.CONTINUE; case Stream.CONTINUE: val = new Lazy(() => { @@ -151,6 +152,7 @@ public interface Gee.Traversable : Object }); return Stream.YIELD; case Stream.END: + val = null; return Stream.END; default: assert_not_reached (); @@ -181,6 +183,7 @@ public interface Gee.Traversable : Object switch (state) { case Stream.YIELD: if (seed_emitted) { + val = null; return Stream.CONTINUE; } else { val = new Lazy.from_value (seed); @@ -196,6 +199,7 @@ public interface Gee.Traversable : Object }); return Stream.YIELD; case Stream.END: + val = null; return Stream.END; default: assert_not_reached (); @@ -253,6 +257,7 @@ public interface Gee.Traversable : Object return input.stream ((state, item, out val) => { switch (state) { case Stream.YIELD: + val = null; return Stream.CONTINUE; case Stream.CONTINUE: G g = item.get (); @@ -260,9 +265,11 @@ public interface Gee.Traversable : Object val = item; return Stream.YIELD; } else { + val = null; return Stream.CONTINUE; } case Stream.END: + val = null; return Stream.END; default: assert_not_reached (); @@ -282,6 +289,7 @@ public interface Gee.Traversable : Object return input.stream ((state, item, out val) => { switch (state) { case Stream.YIELD: + val = null; if (offset > 0) { return Stream.CONTINUE; } else if (length > 0) { @@ -297,10 +305,12 @@ public interface Gee.Traversable : Object val = item; return Stream.YIELD; } else { + val = null; offset--; return Stream.CONTINUE; } case Stream.END: + val = null; return Stream.END; default: assert_not_reached (); diff --git a/gee/treemap.vala b/gee/treemap.vala index 9da2b8e..02587c6 100644 --- a/gee/treemap.vala +++ b/gee/treemap.vala @@ -195,8 +195,9 @@ public class Gee.TreeMap : Gee.AbstractSortedMap { return null; } - private bool set_to_node (ref Node? node, K key, V value, out V old_value, Node? prev, Node? next) { + private bool set_to_node (ref Node? node, K key, V value, out V? old_value, Node? prev, Node? next) { if (node == null) { + old_value = null; node = new Node (key, value, prev, next); if (prev == null) { first = node; @@ -212,6 +213,7 @@ public class Gee.TreeMap : Gee.AbstractSortedMap { bool changed; if (cmp == 0) { if (value_equal_func (value, node.value)) { + old_value = null; changed = false; } else { old_value = (owned) node.value; @@ -257,12 +259,8 @@ public class Gee.TreeMap : Gee.AbstractSortedMap { private void fix_removal (ref Node node, out K? key = null, out V? value) { Node n = (owned) node; - if (&key != null) - key = (owned) n.key; - else - n.key = null; - if (&value != null) - value = (owned) n.value; + key = (owned) n.key; + value = (owned) n.value; if (n.prev != null) { n.prev.next = n.next; } else { @@ -293,12 +291,18 @@ public class Gee.TreeMap : Gee.AbstractSortedMap { fix_up (ref node); } - private bool remove_from_node (ref Node? node, K key, out V value, out unowned Node? prev = null, out unowned Node? next = null) { + private bool remove_from_node (ref Node? node, K key, out V? value, out unowned Node? prev = null, out unowned Node? next = null) { if (node == null) { + value = null; + next = null; + prev = null; return false; } else if (key_compare_func (key, node.key) < 0) { weak Node left = node.left; if (left == null) { + value = null; + next = null; + prev = null; return false; } if (node.left != null && is_black (left) && is_black (left.left)) { @@ -314,10 +318,8 @@ public class Gee.TreeMap : Gee.AbstractSortedMap { weak Node? r = node.right; if (key_compare_func (key, node.key) == 0 && r == null) { - if (&prev != null) - prev = node.prev; - if (&next != null) - next = node.next; + prev = node.prev; + next = node.next; fix_removal (ref node, null, out value); return true; } @@ -326,10 +328,8 @@ public class Gee.TreeMap : Gee.AbstractSortedMap { } if (key_compare_func (key, node.key) == 0) { value = (owned) node.value; - if (&prev != null) - prev = node.prev; - if (&next != null) - next = node; + prev = node.prev; + next = node; remove_minimal (ref node.right, out node.key, out node.value); fix_up (ref node); return true; @@ -357,12 +357,7 @@ public class Gee.TreeMap : Gee.AbstractSortedMap { * {@inheritDoc} */ public override bool unset (K key, out V? value = null) { - V node_value; - bool b = remove_from_node (ref root, key, out node_value); - - if (&value != null) { - value = (owned) node_value; - } + bool b = remove_from_node (ref root, key, out value); if (root != null) { root.color = Node.Color.BLACK; @@ -822,6 +817,7 @@ public class Gee.TreeMap : Gee.AbstractSortedMap { } public override bool unset (K key, out V? value = null) { + value = null; return range.in_range (key) && map.unset (key, out value); } diff --git a/gee/treeset.vala b/gee/treeset.vala index 55be728..6bcc0a5 100644 --- a/gee/treeset.vala +++ b/gee/treeset.vala @@ -219,10 +219,7 @@ public class Gee.TreeSet : AbstractSortedSet { private inline void fix_removal (ref Node node, out G? key = null) { Node n = (owned)node; - if (&key != null) - key = (owned) n.key; - else - n.key = null; + key = (owned) n.key; if (n.prev != null) { n.prev.next = n.next; } else { @@ -257,10 +254,14 @@ public class Gee.TreeSet : AbstractSortedSet { stdout.printf ("Removing %s from %s\n", (string)item, node != null ? (string)node.key : null); #endif if (node == null) { + prev = null; + next = null; return false; } else if (compare_func (item, node.key) < 0) { weak Node left = node.left; if (left == null) { + prev = null; + next = null; return false; } if (is_black (left) && is_black (left.left)) { @@ -276,10 +277,8 @@ public class Gee.TreeSet : AbstractSortedSet { weak Node? r = node.right; if (compare_func (item, node.key) == 0 && r == null) { - if (&prev != null) - prev = node.prev; - if (&next != null) - next = node.next; + prev = node.prev; + next = node.next; fix_removal (ref node, null); return true; } @@ -287,10 +286,8 @@ public class Gee.TreeSet : AbstractSortedSet { move_red_right (ref node); } if (compare_func (item, node.key) == 0) { - if (&prev != null) - prev = node.prev; - if (&next != null) - next = node; + prev = node.prev; + next = node; remove_minimal (ref node.right, out node.key); fix_up (ref node); return true;