* it possible to implement this code:
*
* - divsufsort (author: Yuta Mori), for the suffix array construction code,
- * located in a separate directory (divsufsort/).
+ * located in a separate file (divsufsort.c).
*
* - "Linear-Time Longest-Common-Prefix Computation in Suffix Arrays and Its
* Applications" (Kasai et al. 2001), for the LCP array computation.
* MIN_MATCH_LEN. */
if (match_len_minus_2 < LZX_NUM_PRIMARY_LENS) {
len_header = match_len_minus_2;
- /* No length footer-- mark it with a special
- * value. */
- len_footer = (unsigned)(-1);
} else {
len_header = LZX_NUM_PRIMARY_LENS;
len_footer = match_len_minus_2 - LZX_NUM_PRIMARY_LENS;
/* If there is a length footer, output it using the
* length Huffman code. */
- if (len_footer != (unsigned)(-1)) {
+ if (len_header == LZX_NUM_PRIMARY_LENS)
bitstream_put_bits(out, codes->codewords.len[len_footer],
codes->lens.len[len_footer]);
- }
num_extra_bits = lzx_get_num_extra_bits(position_slot);
/* The match offset shall be encoded as a position slot (itself encoded
* as part of the main symbol) and a position footer. */
position_slot = lzx_get_position_slot(match_offset, queue);
- position_footer = (match_offset + LZX_OFFSET_OFFSET) &
- ((1U << lzx_get_num_extra_bits(position_slot)) - 1);
+ position_footer = (match_offset + LZX_OFFSET_OFFSET) -
+ lzx_position_base[position_slot];
/* The match length shall be encoded as a length header (itself encoded
* as part of the main symbol) and an optional length footer. */