package de.gaalop.tba.table.BitIO; import java.io.IOException; /** * Implements a bit reader which reads no padding bits, * except at the end of the file. * @author christian */ public class MaxReader extends AbsBitReader { private long cache = 0; private int cachedBits = 0; @Override public int read(int bitCount) throws IOException { while (cachedBits < bitCount) { cache <<= 16; cache |= in.readChar(); cachedBits += 16; } long cacheD = cache; cacheD >>= cachedBits-bitCount; long maskD = 0;maskD = ~maskD;maskD <<= bitCount;maskD = ~maskD;cacheD &= maskD; long maskC = 0;maskC = ~maskC;maskC <<= cachedBits-bitCount;maskC=~maskC;cache &= maskC; cachedBits -= bitCount; return (int) cacheD; } }