package edu.berkeley.nlp.lm.values;
import edu.berkeley.nlp.lm.bits.BitList;
import edu.berkeley.nlp.lm.bits.BitStream;
import edu.berkeley.nlp.lm.util.Annotations.OutputParameter;
public interface CompressibleValueContainer<V> extends ValueContainer<V>
{
/**
* Swaps values at offsets a and b.
*
* @param a
* @param b
* @param ngramOrder
*/
public void swap(long a, long b, int ngramOrder);
/**
* Compresses the value at the given offset into a list of bits.
*
* @param offset
* @param ngramOrder
* @return
*/
public BitList getCompressed(long offset, int ngramOrder);
/**
* Reads and decompresses from the bit stream bits.
*
* @param bits
* @param ngramOrder
* @param justConsume
* If true, nothing is returned, and the function simply consumes
* the appropriate number of bits from the BitStream.
*
* @return
*/
public void decompress(BitStream bits, int ngramOrder, boolean justConsume, @OutputParameter V outputVal);
public void clearStorageAfterCompression(int ngramOrder);
}