it.unimi.dsi.compression
Class TreeDecoder

java.lang.Object
  extended by it.unimi.dsi.compression.TreeDecoder
All Implemented Interfaces:
Decoder, Serializable

public final class TreeDecoder
extends Object
implements Decoder, Serializable

A decoder that follows 0/1 labelled paths in a tree.

Additional, the buildCodes() method returns a vector of codewords corresponding to the paths of an instance of this class. Conversely, the codeword-based constructor builds a tree out of the codewords generated by root-to-leaf paths.

See Also:
Serialized Form

Nested Class Summary
static class TreeDecoder.LeafNode
          A leaf node of the decoding tree.
static class TreeDecoder.Node
          A internal node of the decoding tree.
 
Constructor Summary
TreeDecoder(BitVector[] lexSortedCodeWord, int[] symbol)
          Creates a new codeword-based decoder starting from a set of complete, lexicographically ordered codewords.
TreeDecoder(TreeDecoder.Node root, int n)
          Creates a new codeword-based decoder using the given tree.
 
Method Summary
 BitVector[] buildCodes()
          Generate the codewords corresponding to this tree decoder.
 int decode(BooleanIterator iterator)
          Decodes the next symbol from the given boolean iterator.
 int decode(InputBitStream ibs)
          Decodes the next symbol from the given input bit stream.
 LongArrayBitVector succinctRepresentation()
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

TreeDecoder

public TreeDecoder(TreeDecoder.Node root,
                   int n)
Creates a new codeword-based decoder using the given tree. It is responsibility of the caller that the tree is well-formed, that is, that all internal nodes are instances of TreeDecoder.Node and all leaf nodes are instances of TreeDecoder.LeafNode.

Parameters:
root - the root of a decoding tree.
n - the number of leaves (symbols).

TreeDecoder

public TreeDecoder(BitVector[] lexSortedCodeWord,
                   int[] symbol)
Creates a new codeword-based decoder starting from a set of complete, lexicographically ordered codewords. It is responsibility of the caller that the tree is well-formed, that is, that the provided codewords are exactly the root-to-leaf paths of such a tree.

Parameters:
lexSortedCodeWord - a vector of lexically sorted codeWords.
symbol - a mapping from codewords to symbols.
Method Detail

decode

public int decode(BooleanIterator iterator)
Description copied from interface: Decoder
Decodes the next symbol from the given boolean iterator.

Note that InputBitStream implements BooleanIterator.

Specified by:
decode in interface Decoder
Parameters:
iterator - a boolean iterator.
Returns:
the next symbol decoded from the bits emitted by i

decode

public int decode(InputBitStream ibs)
           throws IOException
Description copied from interface: Decoder
Decodes the next symbol from the given input bit stream.

Note that InputBitStream implements BooleanIterator.

Specified by:
decode in interface Decoder
Parameters:
ibs - an input bit stream.
Returns:
the next symbol decoded from ibs.
Throws:
IOException

buildCodes

public BitVector[] buildCodes()
Generate the codewords corresponding to this tree decoder.

Returns:
a vector of codewords for this decoder.

succinctRepresentation

public LongArrayBitVector succinctRepresentation()