Class RunCodec


  • public class RunCodec
    extends Codec
    A run codec is a grouping of two nested codecs; K values are decoded from the first codec, and the remaining codes are decoded from the remaining codec. Note that since this codec maintains state, the instances are not reusable.
    • Constructor Summary

      Constructors 
      Constructor Description
      RunCodec​(int k, Codec aCodec, Codec bCodec)  
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      int decode​(java.io.InputStream in)
      Decode a sequence of bytes from the given input stream, returning the value as a long.
      int decode​(java.io.InputStream in, long last)
      Decode a sequence of bytes from the given input stream, returning the value as a long.
      int[] decodeInts​(int n, java.io.InputStream in)
      Decodes a sequence of n values from in.
      byte[] encode​(int value)
      Encode a single value into a sequence of bytes.
      byte[] encode​(int value, int last)
      Encode a single value into a sequence of bytes.
      Codec getACodec()  
      Codec getBCodec()  
      int getK()  
      java.lang.String toString()  
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
    • Method Detail

      • decode

        public int decode​(java.io.InputStream in)
                   throws java.io.IOException,
                          Pack200Exception
        Description copied from class: Codec
        Decode a sequence of bytes from the given input stream, returning the value as a long. Note that this method can only be applied for non-delta encodings.
        Specified by:
        decode in class Codec
        Parameters:
        in - the input stream to read from
        Returns:
        the value as a long
        Throws:
        java.io.IOException - if there is a problem reading from the underlying input stream
        Pack200Exception - if the encoding is a delta encoding
      • decode

        public int decode​(java.io.InputStream in,
                          long last)
                   throws java.io.IOException,
                          Pack200Exception
        Description copied from class: Codec
        Decode a sequence of bytes from the given input stream, returning the value as a long. If this encoding is a delta encoding (d=1) then the previous value must be passed in as a parameter. If it is a non-delta encoding, then it does not matter what value is passed in, so it makes sense for the value to be passed in by default using code similar to:
         long last = 0;
         while (condition) {
             last = codec.decode(in, last);
             // do something with last
         }
         
        Specified by:
        decode in class Codec
        Parameters:
        in - the input stream to read from
        last - the previous value read, which must be supplied if the codec is a delta encoding
        Returns:
        the value as a long
        Throws:
        java.io.IOException - if there is a problem reading from the underlying input stream
        Pack200Exception - if there is a problem decoding the value or that the value is invalid
      • decodeInts

        public int[] decodeInts​(int n,
                                java.io.InputStream in)
                         throws java.io.IOException,
                                Pack200Exception
        Description copied from class: Codec
        Decodes a sequence of n values from in. This should probably be used in most cases, since some codecs (such as PopulationCodec) only work when the number of values to be read is known.
        Overrides:
        decodeInts in class Codec
        Parameters:
        n - the number of values to decode
        in - the input stream to read from
        Returns:
        an array of int values corresponding to values decoded
        Throws:
        java.io.IOException - if there is a problem reading from the underlying input stream
        Pack200Exception - if there is a problem decoding the value or that the value is invalid
      • toString

        public java.lang.String toString()
        Overrides:
        toString in class java.lang.Object
      • encode

        public byte[] encode​(int value,
                             int last)
                      throws Pack200Exception
        Description copied from class: Codec
        Encode a single value into a sequence of bytes.
        Specified by:
        encode in class Codec
        Parameters:
        value - the value to encode
        last - the previous value encoded (for delta encodings)
        Returns:
        the encoded bytes
        Throws:
        Pack200Exception - TODO
      • encode

        public byte[] encode​(int value)
                      throws Pack200Exception
        Description copied from class: Codec
        Encode a single value into a sequence of bytes. Note that this method can only be used for non-delta encodings.
        Specified by:
        encode in class Codec
        Parameters:
        value - the value to encode
        Returns:
        the encoded bytes
        Throws:
        Pack200Exception - TODO
      • getK

        public int getK()