From: Robert Varga Date: Sat, 31 Dec 2016 12:44:57 +0000 (+0100) Subject: BUG-7464: Cleanup if-else branches in CNode X-Git-Tag: release/carbon~157 X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=commitdiff_plain;h=0c7a59f5d967341f028269879afa09d742a92de5;hp=e9f947d8abf7afbff4dc49766af3c3430f129ca7;p=yangtools.git BUG-7464: Cleanup if-else branches in CNode Fixes eclipse warnings and makes the code more readable by having a more flat structure. Change-Id: If9241e9f5b0557090785afe375e8b3dccda37390 Signed-off-by: Robert Varga --- diff --git a/third-party/triemap/src/main/java/org/opendaylight/yangtools/triemap/CNode.java b/third-party/triemap/src/main/java/org/opendaylight/yangtools/triemap/CNode.java index b4882da95b..3784ede483 100644 --- a/third-party/triemap/src/main/java/org/opendaylight/yangtools/triemap/CNode.java +++ b/third-party/triemap/src/main/java/org/opendaylight/yangtools/triemap/CNode.java @@ -22,16 +22,34 @@ final class CNode extends CNodeBase { final BasicNode[] array; final Gen gen; - CNode(final Gen gen) { - this(gen, 0, EMPTY_ARRAY); - } - private CNode(final Gen gen, final int bitmap, final BasicNode... array) { this.bitmap = bitmap; this.array = array; this.gen = gen; } + CNode(final Gen gen) { + this(gen, 0, EMPTY_ARRAY); + } + + static MainNode dual(final SNode x, final int xhc, final SNode y, final int yhc, + final int lev, final Gen gen) { + if (lev >= 35) { + return new LNode<>(x.k, x.v, y.k, y.v); + } + + final int xidx = (xhc >>> lev) & 0x1f; + final int yidx = (yhc >>> lev) & 0x1f; + final int bmp = (1 << xidx) | (1 << yidx); + + if (xidx == yidx) { + INode subinode = new INode<>(gen, dual(x, xhc, y, yhc, lev + 5, gen)); + return new CNode<>(gen, bmp, subinode); + } + + return xidx < yidx ? new CNode<>(gen, bmp, x, y) : new CNode<>(gen, bmp, y, x); + } + // this should only be called from within read-only snapshots @Override int cachedSize(final TrieMap ct) { @@ -136,15 +154,14 @@ final class CNode extends CNodeBase { MainNode toContracted(final int lev) { if (array.length == 1 && lev > 0) { - if (array [0] instanceof SNode) { - SNode sn = (SNode) array[0]; + if (array[0] instanceof SNode) { + final SNode sn = (SNode) array[0]; return sn.copyTombed(); - } else { - return this; } - } else { return this; } + + return this; } // - if the branching factor is 1 for this CNode, and the child @@ -212,26 +229,4 @@ final class CNode extends CNodeBase { // elems.sorted.mkString(", ")) return "CNode"; } - - static MainNode dual(final SNode x, final int xhc, final SNode y, final int yhc, - final int lev, final Gen gen) { - if (lev < 35) { - int xidx = (xhc >>> lev) & 0x1f; - int yidx = (yhc >>> lev) & 0x1f; - int bmp = (1 << xidx) | (1 << yidx); - - if (xidx == yidx) { - INode subinode = new INode<>(gen, dual(x, xhc, y, yhc, lev + 5, gen)); - return new CNode<>(gen, bmp, subinode); - } else { - if (xidx < yidx) { - return new CNode<>(gen, bmp, x, y); - } else { - return new CNode<>(gen, bmp, y, x); - } - } - } else { - return new LNode<>(x.k, x.v, y.k, y.v); - } - } }