public int decode( final BooleanIterator iterator ) { final int[] lengthIncrement = this.lengthIncrement; final long[] lastCodeWordPlusOne = this.lastCodeWordPlusOne; int curr = 0, l; long x; x = readLong( iterator, lengthIncrement[ curr ] ); for(;;) { if ( x < lastCodeWordPlusOne[ curr ] ) return symbol[ (int)( howManyUpToBlock[ curr ] - lastCodeWordPlusOne[ curr ] + x ) ]; l = lengthIncrement[ ++curr ]; x = x << l | readLong( iterator, l ); } }
public int decode( final BooleanIterator iterator ) { final int[] lengthIncrement = this.lengthIncrement; final long[] lastCodeWordPlusOne = this.lastCodeWordPlusOne; int curr = 0, l; long x; x = readLong( iterator, lengthIncrement[ curr ] ); for(;;) { if ( x < lastCodeWordPlusOne[ curr ] ) return symbol[ (int)( howManyUpToBlock[ curr ] - lastCodeWordPlusOne[ curr ] + x ) ]; l = lengthIncrement[ ++curr ]; x = x << l | readLong( iterator, l ); } }
@Override public int decode(final BooleanIterator iterator) { final int[] lengthIncrement = this.lengthIncrement; final long[] lastCodeWordPlusOne = this.lastCodeWordPlusOne; int curr = 0, l; long x; x = readLong(iterator, lengthIncrement[curr]); for(;;) { if (x < lastCodeWordPlusOne[curr]) return symbol[(int)(howManyUpToBlock[curr] - lastCodeWordPlusOne[curr] + x)]; l = lengthIncrement[++curr]; x = x << l | readLong(iterator, l); } }