Package it.unimi.dsi.sux4j.mph.codec
Class Codec.Huffman.Coder
java.lang.Object
it.unimi.dsi.sux4j.mph.codec.Codec.Huffman.Coder
- All Implemented Interfaces:
Codec.Coder
- Enclosing class:
- Codec.Huffman
-
Nested Class Summary
-
Constructor Summary
ConstructorDescriptionCoder
(long[] codeWord, int[] codewordLength, long[] symbol, Long2IntMap symbol2Rank, int escapedSymbolLength) -
Method Summary
Modifier and TypeMethodDescriptionint
codewordLength
(long symbol) Returns the length of the codeword associated with the given symbol.long
encode
(long symbol) Returns the codeword associated with a symbol, or −1 if the provided symbol should be escaped.long
escape()
Returns the escape codeword, if it exists.int
Returns the length in bit of an escaped symbol, or zero if there are no escaped symbols.Return a decoder associated with this coder.int
Returns the maximum length of a codeword (including escaped symbols).
-
Constructor Details
-
Coder
public Coder(long[] codeWord, int[] codewordLength, long[] symbol, Long2IntMap symbol2Rank, int escapedSymbolLength)
-
-
Method Details
-
encode
public long encode(long symbol) Description copied from interface:Codec.Coder
Returns the codeword associated with a symbol, or −1 if the provided symbol should be escaped.If a symbol needs to be escaped, it must be encoded using the escape codeword followed by the symbol written in a field of
Codec.Coder.escapedSymbolLength()
bits.- Specified by:
encode
in interfaceCodec.Coder
- Parameters:
symbol
- a symbol.- Returns:
- the associated codeword.
-
codewordLength
public int codewordLength(long symbol) Description copied from interface:Codec.Coder
Returns the length of the codeword associated with the given symbol.For escaped symbols, the returned values is the length of the escape codeword plus
Codec.Coder.escapedSymbolLength()
.- Specified by:
codewordLength
in interfaceCodec.Coder
- Parameters:
symbol
- a symbol provided at construction time.- Returns:
- the length of the codeword associated with the given symbol.
-
maxCodewordLength
public int maxCodewordLength()Description copied from interface:Codec.Coder
Returns the maximum length of a codeword (including escaped symbols).- Specified by:
maxCodewordLength
in interfaceCodec.Coder
- Returns:
- the maximum length of a codeword (including escaped symbols).
-
escape
public long escape()Description copied from interface:Codec.Coder
Returns the escape codeword, if it exists.Note that the length of the escape codeword can be recovered by subtracting from the length of the codeword of an escaped symbol the length of an escaped symbol.
- Specified by:
escape
in interfaceCodec.Coder
- Returns:
- the escape codeword, if it exists.
-
escapedSymbolLength
public int escapedSymbolLength()Description copied from interface:Codec.Coder
Returns the length in bit of an escaped symbol, or zero if there are no escaped symbols.- Specified by:
escapedSymbolLength
in interfaceCodec.Coder
- Returns:
- the length in bit of an escaped symbol, or zero if there are no escaped symbols.
-
getDecoder
Description copied from interface:Codec.Coder
Return a decoder associated with this coder.- Specified by:
getDecoder
in interfaceCodec.Coder
- Returns:
- a decoder associated with this coder.
-