X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=third-party%2Ftriemap%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fyangtools%2Ftriemap%2FCNode.java;h=489a6ef109826ccc0ea3e4f11abae12d8cab1a9b;hb=refs%2Fchanges%2F74%2F49874%2F6;hp=581594346e0728aa21f1a4c313cc5afad63ad580;hpb=13352e4f7d9d018b0e70df8ec2f86967b08496d3;p=yangtools.git 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 581594346e..489a6ef109 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 @@ -16,12 +16,17 @@ package org.opendaylight.yangtools.triemap; final class CNode extends CNodeBase { + private static final BasicNode[] EMPTY_ARRAY = new BasicNode[0]; final int bitmap; final BasicNode[] array; final Gen gen; - CNode(final int bitmap, 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; @@ -76,7 +81,7 @@ final class CNode extends CNodeBase { BasicNode[] narr = new BasicNode[len]; System.arraycopy(array, 0, narr, 0, len); narr[pos] = nn; - return new CNode<>(bitmap, narr, gen); + return new CNode<>(gen, bitmap, narr); } CNode removedAt(final int pos, final int flag, final Gen gen) { @@ -85,7 +90,7 @@ final class CNode extends CNodeBase { BasicNode[] narr = new BasicNode[len - 1]; System.arraycopy(arr, 0, narr, 0, pos); System.arraycopy(arr, pos + 1, narr, pos, len - pos - 1); - return new CNode<>(bitmap ^ flag, narr, gen); + return new CNode<>(gen, bitmap ^ flag, narr); } CNode insertedAt(final int pos, final int flag, final BasicNode nn, final Gen gen) { @@ -95,7 +100,7 @@ final class CNode extends CNodeBase { System.arraycopy(array, 0, narr, 0, pos); narr [pos] = nn; System.arraycopy(array, pos, narr, pos + 1, len - pos); - return new CNode<>(bmp | flag, narr, gen); + return new CNode<>(gen, bmp | flag, narr); } /** @@ -117,7 +122,7 @@ final class CNode extends CNodeBase { } i += 1; } - return new CNode<>(bitmap, narr, ngen); + return new CNode<>(ngen, bitmap, narr); } private BasicNode resurrect(final INode inode, final Object inodemain) { @@ -166,7 +171,7 @@ final class CNode extends CNodeBase { i += 1; } - return new CNode (bmp, tmparray, gen).toContracted (lev); + return new CNode(gen, bmp, tmparray).toContracted(lev); } @Override @@ -217,12 +222,12 @@ final class CNode extends CNodeBase { if (xidx == yidx) { INode subinode = new INode<>(gen, dual(x, xhc, y, yhc, lev + 5, gen)); - return new CNode<>(bmp, new BasicNode[] { subinode }, gen); + return new CNode<>(gen, bmp, subinode); } else { if (xidx < yidx) { - return new CNode<>(bmp, new BasicNode[] { x, y }, gen); + return new CNode<>(gen, bmp, x, y); } else { - return new CNode<>(bmp, new BasicNode[] { y, x }, gen); + return new CNode<>(gen, bmp, y, x); } } } else {