BUG-7464: clean up CNode.dual() call convention 49/49949/9
authorRobert Varga <rovarga@cisco.com>
Mon, 2 Jan 2017 17:11:15 +0000 (18:11 +0100)
committerRobert Varga <rovarga@cisco.com>
Tue, 10 Jan 2017 19:12:11 +0000 (20:12 +0100)
Update package-protected entrypoint to not require the second
SNode, as it can be easily instantiated. This makes the callers
a bit less verbose and allows us to adjust the recursive part
as needed.

Change-Id: Ic9b97fe23143b3a5cdab57750958237072dcda1e
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
third-party/triemap/src/main/java/org/opendaylight/yangtools/triemap/CNode.java
third-party/triemap/src/main/java/org/opendaylight/yangtools/triemap/INode.java

index 2f25b6cc16dfd461af497b31f1f581a36b37499a..9b20a1bb03103df1ace56a6c1b14059c4a725303 100644 (file)
@@ -42,7 +42,12 @@ final class CNode<K, V> extends MainNode<K, V> {
         this(gen, 0, EMPTY_ARRAY);
     }
 
-    static <K, V> MainNode<K,V> dual(final SNode<K, V> x, final int xhc, final SNode<K, V> y, final int yhc,
+    static <K, V> MainNode<K,V> dual(final SNode<K, V> x, final K k, final V v, final int hc, final int lev,
+            final Gen gen) {
+        return dual(x, x.hc, new SNode<>(k, v, hc), hc, lev, gen);
+    }
+
+    private static <K, V> MainNode<K,V> dual(final SNode<K, V> x, final int xhc, final SNode<K, V> y, final int yhc,
             final int lev, final Gen gen) {
         if (lev >= 35) {
             return new LNode<>(x.k, x.v, y.k, y.v);
@@ -53,8 +58,7 @@ final class CNode<K, V> extends MainNode<K, V> {
         final int bmp = (1 << xidx) | (1 << yidx);
 
         if (xidx == yidx) {
-            INode<K, V> subinode = new INode<>(gen, dual(x, xhc, y, yhc, lev + 5, gen));
-            return new CNode<>(gen, bmp, subinode);
+            return new CNode<>(gen, bmp, new INode<>(gen, dual(x, xhc, y, yhc, lev + 5, gen)));
         }
 
         return xidx < yidx ? new CNode<>(gen, bmp, x, y) : new CNode<>(gen, bmp, y, x);
index af9a8a2bd62c4ba27f55d7f0987c9d3a793a7d08..7031b396c50c8fa12159146d8ef819e3824b1c4b 100644 (file)
@@ -164,8 +164,7 @@ final class INode<K, V> extends BasicNode {
                         }
 
                         final CNode<K, V> rn = (cn.gen == gen) ? cn : cn.renewed(gen, ct);
-                        final MainNode<K, V> nn = rn.updatedAt(pos, inode(CNode.dual(sn, sn.hc, new SNode<>(k, v, hc),
-                                hc, lev + 5, gen)), gen);
+                        final MainNode<K, V> nn = rn.updatedAt(pos, inode(CNode.dual(sn, k, v, hc, lev + 5, gen)), gen);
                         return GCAS (cn, nn, ct);
                     }
                 } else {
@@ -207,8 +206,7 @@ final class INode<K, V> extends BasicNode {
     private Optional<V> insertDual(final TrieMap<K, V> ct, final CNode<K, V> cn, final int pos, final SNode<K, V> sn,
             final K k, final V v, final int hc, final int lev) {
         final CNode<K, V> rn = (cn.gen == gen) ? cn : cn.renewed(gen, ct);
-        final MainNode<K, V> nn = rn.updatedAt(pos, inode(CNode.dual(sn, sn.hc, new SNode<>(k, v, hc),
-            hc, lev + 5, gen)), gen);
+        final MainNode<K, V> nn = rn.updatedAt(pos, inode(CNode.dual(sn, k, v, hc, lev + 5, gen)), gen);
         return GCAS(cn, nn, ct) ? Optional.empty() : null;
     }