java.lang.Object
org.apache.commons.compress.harmony.pack200.Codec
org.apache.commons.compress.harmony.pack200.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 Details

  • Method Details

    • decode

      Description copied from class: Codec
      Decodes 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:
      IOException - if there is a problem reading from the underlying input stream
      Pack200Exception - if the encoding is a delta encoding
    • decode

      public int decode(InputStream in, long last) throws IOException, Pack200Exception
      Description copied from class: Codec
      Decodes 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:
      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, InputStream in) throws 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:
      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
    • encode

      public byte[] encode(int value) throws Pack200Exception
      Description copied from class: Codec
      Encodes 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
    • encode

      public byte[] encode(int value, int last) throws Pack200Exception
      Description copied from class: Codec
      Encodes 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
    • getACodec

      public Codec getACodec()
    • getBCodec

      public Codec getBCodec()
    • getK

      public int getK()
    • toString

      public String toString()
      Overrides:
      toString in class Object