package org.opendaylight.yangtools.triemap;
final class CNode<K, V> extends CNodeBase<K, V> {
+ 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;
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<K, V> removedAt(final int pos, final int flag, final Gen gen) {
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<K, V> insertedAt(final int pos, final int flag, final BasicNode nn, final Gen gen) {
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);
}
/**
}
i += 1;
}
- return new CNode<>(bitmap, narr, ngen);
+ return new CNode<>(ngen, bitmap, narr);
}
private BasicNode resurrect(final INode<K, V> inode, final Object inodemain) {
i += 1;
}
- return new CNode<K, V> (bmp, tmparray, gen).toContracted (lev);
+ return new CNode<K, V>(gen, bmp, tmparray).toContracted(lev);
}
@Override
if (xidx == yidx) {
INode<K, V> 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 {