Class DebuggingBitIn

  • All Implemented Interfaces:
    java.io.Closeable, java.lang.AutoCloseable, BitIn

    public class DebuggingBitIn
    extends java.lang.Object
    implements BitIn, java.io.Closeable
    This class provides debugging at the bit stream level. All read*() and skip*() methods log verbosely for each request.
    Since:
    3.5
    Author:
    Craig Macdonald
    See Also:
    BitIn
    • Constructor Summary

      Constructors 
      Constructor Description
      DebuggingBitIn​(BitIn _in)
      Wraps a BitIn implementation with logging calls
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      void align()
      Aligns the stream to the next byte
      void close()  
      byte getBitOffset()
      Returns the bit offset in the last byte.
      long getByteOffset()
      Returns the byte offset of the stream.
      int readBinary​(int len)
      Reads a binary integer from the already read buffer.
      int readDelta()
      Reads a delta encoded integer from the underlying stream
      int readGamma()
      Reads a gamma encoded integer from the underlying stream
      int readGolomb​(int b)
      Reads a Golomb encoded integer
      void readInterpolativeCoding​(int[] data, int offset, int len, int lo, int hi)
      Reads a sequence of numbers from the stream interpolative coded.
      int readMinimalBinary​(int b)
      Reads a binary encoded integer, given an upper bound
      int readMinimalBinaryZero​(int b)
      Reads a minimal binary encoded number, when the upper bound can b zero.
      int readSkewedGolomb​(int b)
      Reads a skewed-golomb encoded integer from the underlying stream Consider a bucket-vector v = <0, 2b, 4b, ...
      int readUnary()
      Reads a unary encoded integer from the underlying stream
      void skipBits​(int len)
      Skip a number of bits while reading the bit file.
      void skipBytes​(long len)
      Skip a number of bytes while reading the bit file.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Constructor Detail

      • DebuggingBitIn

        public DebuggingBitIn​(BitIn _in)
        Wraps a BitIn implementation with logging calls
    • Method Detail

      • align

        public void align()
                   throws java.io.IOException
        Description copied from interface: BitIn
        Aligns the stream to the next byte
        Specified by:
        align in interface BitIn
        Throws:
        java.io.IOException - if an I/O error occurs
      • getBitOffset

        public byte getBitOffset()
        Description copied from interface: BitIn
        Returns the bit offset in the last byte. It corresponds to the position in which the next bit will be written. Use only when writting.
        Specified by:
        getBitOffset in interface BitIn
        Returns:
        the bit offset in the stream.
      • getByteOffset

        public long getByteOffset()
        Description copied from interface: BitIn
        Returns the byte offset of the stream. It corresponds to the position of the byte in which the next bit will be written. Use only when writting
        Specified by:
        getByteOffset in interface BitIn
        Returns:
        the byte offset in the stream.
      • readBinary

        public int readBinary​(int len)
                       throws java.io.IOException
        Description copied from interface: BitIn
        Reads a binary integer from the already read buffer.
        Specified by:
        readBinary in interface BitIn
        Parameters:
        len - the number of binary bits to read
        Returns:
        the decoded integer
        Throws:
        java.io.IOException - if an I/O error occurs
      • readDelta

        public int readDelta()
                      throws java.io.IOException
        Description copied from interface: BitIn
        Reads a delta encoded integer from the underlying stream
        Specified by:
        readDelta in interface BitIn
        Returns:
        the number read
        Throws:
        java.io.IOException - if an I/O error occurs
      • readGamma

        public int readGamma()
                      throws java.io.IOException
        Description copied from interface: BitIn
        Reads a gamma encoded integer from the underlying stream
        Specified by:
        readGamma in interface BitIn
        Returns:
        the number read
        Throws:
        java.io.IOException - if an I/O error occurs
      • readGolomb

        public int readGolomb​(int b)
                       throws java.io.IOException
        Description copied from interface: BitIn
        Reads a Golomb encoded integer
        Specified by:
        readGolomb in interface BitIn
        Parameters:
        b - the golomb modulus
        Returns:
        the int read
        Throws:
        java.io.IOException - if and I/O error occurs
      • readInterpolativeCoding

        public void readInterpolativeCoding​(int[] data,
                                            int offset,
                                            int len,
                                            int lo,
                                            int hi)
                                     throws java.io.IOException
        Description copied from interface: BitIn
        Reads a sequence of numbers from the stream interpolative coded.
        Specified by:
        readInterpolativeCoding in interface BitIn
        Parameters:
        data - the result vector
        offset - offset where to write in the vector
        len - the number of integers to decode.
        lo - a lower bound (the same one passed to writeInterpolativeCoding)
        hi - an upper bound (the same one passed to writeInterpolativeCoding)
        Throws:
        java.io.IOException - if an I/O error occurs
      • readMinimalBinary

        public int readMinimalBinary​(int b)
                              throws java.io.IOException
        Description copied from interface: BitIn
        Reads a binary encoded integer, given an upper bound
        Specified by:
        readMinimalBinary in interface BitIn
        Parameters:
        b - the upper bound
        Returns:
        the int read
        Throws:
        java.io.IOException - if an I/O error occurs
      • readMinimalBinaryZero

        public int readMinimalBinaryZero​(int b)
                                  throws java.io.IOException
        Description copied from interface: BitIn
        Reads a minimal binary encoded number, when the upper bound can b zero. Used to interpolative code
        Specified by:
        readMinimalBinaryZero in interface BitIn
        Parameters:
        b - the upper bound
        Returns:
        the int read
        Throws:
        java.io.IOException - if an I/O error occurs
      • readSkewedGolomb

        public int readSkewedGolomb​(int b)
                             throws java.io.IOException
        Description copied from interface: BitIn
        Reads a skewed-golomb encoded integer from the underlying stream Consider a bucket-vector v = <0, 2b, 4b, ... , 2^i b, ...> The sum of the elements in the vector goes b, 3b, 7b, 2^(i-1)*b
        Specified by:
        readSkewedGolomb in interface BitIn
        Returns:
        the number read
        Throws:
        java.io.IOException - if an I/O error occurs
      • readUnary

        public int readUnary()
                      throws java.io.IOException
        Description copied from interface: BitIn
        Reads a unary encoded integer from the underlying stream
        Specified by:
        readUnary in interface BitIn
        Returns:
        the number read
        Throws:
        java.io.IOException - if an I/O error occurs
      • skipBits

        public void skipBits​(int len)
                      throws java.io.IOException
        Description copied from interface: BitIn
        Skip a number of bits while reading the bit file.
        Specified by:
        skipBits in interface BitIn
        Parameters:
        len - The number of bits to skip
        Throws:
        java.io.IOException - if an I/O error occurs
      • skipBytes

        public void skipBytes​(long len)
                       throws java.io.IOException
        Description copied from interface: BitIn
        Skip a number of bytes while reading the bit file. After this opteration, getBitOffset() == 0, so use skipBits(int) to get getBitOffset() to desired value.
        Specified by:
        skipBytes in interface BitIn
        Parameters:
        len - The number of bytes to skip
        Throws:
        java.io.IOException - if an I/O error occurs
      • close

        public void close()
                   throws java.io.IOException
        Specified by:
        close in interface java.lang.AutoCloseable
        Specified by:
        close in interface java.io.Closeable
        Throws:
        java.io.IOException