reader.setByteBuf(in); if (!reader.hasReadableBytes(10)) { return; final int magic1 = reader.readBits(24); final int magic2 = reader.readBits(24); if (magic1 == END_OF_STREAM_MAGIC_1 && magic2 == END_OF_STREAM_MAGIC_2) { final int storedCombinedCRC = reader.readInt(); if (storedCombinedCRC != streamCRC) { throw new DecompressionException("stream CRC error"); blockCRC = reader.readInt(); currentState = State.INIT_BLOCK_PARAMS; if (!reader.hasReadableBits(25)) { return; final boolean blockRandomised = reader.readBoolean(); final int bwtStartPointer = reader.readBits(24); if (!reader.hasReadableBits(16)) { return; blockDecompressor.huffmanInUse16 = reader.readBits(16); currentState = State.RECEIVE_HUFFMAN_USED_BITMAPS; if (!reader.hasReadableBits(bitNumber * HUFFMAN_SYMBOL_RANGE_SIZE + 3)) {
/** * Reads a single bit from the {@link ByteBuf}. * @return {@code true} if the bit read was {@code 1}, otherwise {@code false} */ boolean readBoolean() { return readBits(1) != 0; }
/** * Checks that the specified number of bytes available for reading. * @param count The number of bytes to check * @return {@code true} if {@code count} bytes are available for reading, otherwise {@code false} */ boolean hasReadableBytes(int count) { if (count < 0 || count > MAX_COUNT_OF_READABLE_BYTES) { throw new IllegalArgumentException("count: " + count + " (expected: 0-" + MAX_COUNT_OF_READABLE_BYTES + ')'); } return hasReadableBits(count << 3); } }
/** * Reads 32 bits of input as an integer. * @return The integer read */ int readInt() { return readBits(32); }
/** * Checks that the specified number of bytes available for reading. * @param count The number of bytes to check * @return {@code true} if {@code count} bytes are available for reading, otherwise {@code false} */ boolean hasReadableBytes(int count) { if (count < 0 || count > MAX_COUNT_OF_READABLE_BYTES) { throw new IllegalArgumentException("count: " + count + " (expected: 0-" + MAX_COUNT_OF_READABLE_BYTES + ')'); } return hasReadableBits(count << 3); } }
reader.setByteBuf(in); if (!reader.hasReadableBytes(10)) { return; final int magic1 = reader.readBits(24); final int magic2 = reader.readBits(24); if (magic1 == END_OF_STREAM_MAGIC_1 && magic2 == END_OF_STREAM_MAGIC_2) { final int storedCombinedCRC = reader.readInt(); if (storedCombinedCRC != streamCRC) { throw new DecompressionException("stream CRC error"); blockCRC = reader.readInt(); currentState = State.INIT_BLOCK_PARAMS; if (!reader.hasReadableBits(25)) { return; final boolean blockRandomised = reader.readBoolean(); final int bwtStartPointer = reader.readBits(24); if (!reader.hasReadableBits(16)) { return; blockDecompressor.huffmanInUse16 = reader.readBits(16); currentState = State.RECEIVE_HUFFMAN_USED_BITMAPS; if (!reader.hasReadableBits(bitNumber * HUFFMAN_SYMBOL_RANGE_SIZE + 3)) {
/** * Reads 32 bits of input as an integer. * @return The integer read */ int readInt() { return readBits(32); }
/** * Checks that the specified number of bytes available for reading. * @param count The number of bytes to check * @return {@code true} if {@code count} bytes are available for reading, otherwise {@code false} */ boolean hasReadableBytes(int count) { if (count < 0 || count > MAX_COUNT_OF_READABLE_BYTES) { throw new IllegalArgumentException("count: " + count + " (expected: 0-" + MAX_COUNT_OF_READABLE_BYTES + ')'); } return hasReadableBits(count << 3); } }
reader.setByteBuf(in); if (!reader.hasReadableBytes(10)) { return; final int magic1 = reader.readBits(24); final int magic2 = reader.readBits(24); if (magic1 == END_OF_STREAM_MAGIC_1 && magic2 == END_OF_STREAM_MAGIC_2) { final int storedCombinedCRC = reader.readInt(); if (storedCombinedCRC != streamCRC) { throw new DecompressionException("stream CRC error"); blockCRC = reader.readInt(); currentState = State.INIT_BLOCK_PARAMS; if (!reader.hasReadableBits(25)) { return; final boolean blockRandomised = reader.readBoolean(); final int bwtStartPointer = reader.readBits(24); if (!reader.hasReadableBits(16)) { return; blockDecompressor.huffmanInUse16 = reader.readBits(16); currentState = State.RECEIVE_HUFFMAN_USED_BITMAPS; if (!reader.hasReadableBits(bitNumber * HUFFMAN_SYMBOL_RANGE_SIZE + 3)) {
/** * Reads a single bit from the {@link ByteBuf}. * @return {@code true} if the bit read was {@code 1}, otherwise {@code false} */ boolean readBoolean() { return readBits(1) != 0; }
if (!reader.hasReadableBits(HUFFMAN_DECODE_MAX_CODE_LENGTH)) { this.bwtBlockLength = bwtBlockLength; this.repeatCount = repeatCount;
reader.setByteBuf(in); if (!reader.hasReadableBytes(10)) { return; final int magic1 = reader.readBits(24); final int magic2 = reader.readBits(24); if (magic1 == END_OF_STREAM_MAGIC_1 && magic2 == END_OF_STREAM_MAGIC_2) { final int storedCombinedCRC = reader.readInt(); if (storedCombinedCRC != streamCRC) { throw new DecompressionException("stream CRC error"); blockCRC = reader.readInt(); currentState = State.INIT_BLOCK_PARAMS; if (!reader.hasReadableBits(25)) { return; final boolean blockRandomised = reader.readBoolean(); final int bwtStartPointer = reader.readBits(24); if (!reader.hasReadableBits(16)) { return; blockDecompressor.huffmanInUse16 = reader.readBits(16); currentState = State.RECEIVE_HUFFMAN_USED_BITMAPS; if (!reader.hasReadableBits(bitNumber * HUFFMAN_SYMBOL_RANGE_SIZE + 3)) {
/** * Reads a single bit from the {@link ByteBuf}. * @return {@code true} if the bit read was {@code 1}, otherwise {@code false} */ boolean readBoolean() { return readBits(1) != 0; }
if (!reader.hasReadableBits(HUFFMAN_DECODE_MAX_CODE_LENGTH)) { this.bwtBlockLength = bwtBlockLength; this.repeatCount = repeatCount;
reader.setByteBuf(in); if (!reader.hasReadableBytes(10)) { return; final int magic1 = reader.readBits(24); final int magic2 = reader.readBits(24); if (magic1 == END_OF_STREAM_MAGIC_1 && magic2 == END_OF_STREAM_MAGIC_2) { final int storedCombinedCRC = reader.readInt(); if (storedCombinedCRC != streamCRC) { throw new DecompressionException("stream CRC error"); blockCRC = reader.readInt(); currentState = State.INIT_BLOCK_PARAMS; if (!reader.hasReadableBits(25)) { return; final boolean blockRandomised = reader.readBoolean(); final int bwtStartPointer = reader.readBits(24); if (!reader.hasReadableBits(16)) { return; blockDecompressor.huffmanInUse16 = reader.readBits(16); currentState = State.RECEIVE_HUFFMAN_USED_BITMAPS; if (!reader.hasReadableBits(bitNumber * HUFFMAN_SYMBOL_RANGE_SIZE + 3)) {
/** * Reads 32 bits of input as an integer. * @return The integer read */ int readInt() { return readBits(32); }
if (!reader.hasReadableBits(HUFFMAN_DECODE_MAX_CODE_LENGTH)) { this.bwtBlockLength = bwtBlockLength; this.repeatCount = repeatCount;
reader.setByteBuf(in); if (!reader.hasReadableBytes(10)) { return; final int magic1 = reader.readBits(24); final int magic2 = reader.readBits(24); if (magic1 == END_OF_STREAM_MAGIC_1 && magic2 == END_OF_STREAM_MAGIC_2) { final int storedCombinedCRC = reader.readInt(); if (storedCombinedCRC != streamCRC) { throw new DecompressionException("stream CRC error"); blockCRC = reader.readInt(); currentState = State.INIT_BLOCK_PARAMS; if (!reader.hasReadableBits(25)) { return; final boolean blockRandomised = reader.readBoolean(); final int bwtStartPointer = reader.readBits(24); if (!reader.hasReadableBits(16)) { return; blockDecompressor.huffmanInUse16 = reader.readBits(16); currentState = State.RECEIVE_HUFFMAN_USED_BITMAPS; if (!reader.hasReadableBits(bitNumber * HUFFMAN_SYMBOL_RANGE_SIZE + 3)) {
/** * Checks that the specified number of bytes available for reading. * @param count The number of bytes to check * @return {@code true} if {@code count} bytes are available for reading, otherwise {@code false} */ boolean hasReadableBytes(int count) { if (count < 0 || count > MAX_COUNT_OF_READABLE_BYTES) { throw new IllegalArgumentException("count: " + count + " (expected: 0-" + MAX_COUNT_OF_READABLE_BYTES + ')'); } return hasReadableBits(count << 3); } }