]> wimlib.net Git - wimlib/blobdiff - src/lzx-compress.c
lzx-compress.c: Rename lzx_write_matches_and_literals()
[wimlib] / src / lzx-compress.c
index fbe255688f5004cda4e2d5d477464caeae0152af..513b09dc66ec63c9596f22519c4e777d51de33df 100644 (file)
@@ -279,7 +279,7 @@ struct lzx_lens {
  *
  * If a codeword has zero frequency, it must still be assigned some nonzero cost
  * --- generally a high cost, since even if it gets used in the next iteration,
- * it probably will not be used very times.  */
+ * it probably will not be used very many times.  */
 struct lzx_costs {
        u8 main[LZX_MAINCODE_MAX_NUM_SYMBOLS];
        u8 len[LZX_LENCODE_NUM_SYMBOLS];
@@ -294,9 +294,9 @@ struct lzx_codes {
 
 /* Tables for tallying symbol frequencies in the three LZX alphabets  */
 struct lzx_freqs {
-       input_idx_t main[LZX_MAINCODE_MAX_NUM_SYMBOLS];
-       input_idx_t len[LZX_LENCODE_NUM_SYMBOLS];
-       input_idx_t aligned[LZX_ALIGNEDCODE_NUM_SYMBOLS];
+       u32 main[LZX_MAINCODE_MAX_NUM_SYMBOLS];
+       u32 len[LZX_LENCODE_NUM_SYMBOLS];
+       u32 aligned[LZX_ALIGNEDCODE_NUM_SYMBOLS];
 };
 
 /* LZX intermediate match/literal format  */
@@ -325,16 +325,16 @@ struct lzx_block_spec {
        int block_type;
 
        /* 0-based position in the window at which this block starts.  */
-       input_idx_t window_pos;
+       u32 window_pos;
 
        /* The number of bytes of uncompressed data this block represents.  */
-       input_idx_t block_size;
+       u32 block_size;
 
        /* The match/literal sequence for this block.  */
        struct lzx_item *chosen_items;
 
        /* The length of the @chosen_items sequence.  */
-       input_idx_t num_chosen_items;
+       u32 num_chosen_items;
 
        /* Huffman codes for this block.  */
        struct lzx_codes codes;
@@ -363,10 +363,10 @@ struct lzx_compressor {
 
        /* Number of bytes of data to be compressed, which is the number of
         * bytes of data in @window that are actually valid.  */
-       input_idx_t window_size;
+       u32 window_size;
 
        /* Allocated size of the @window.  */
-       input_idx_t max_window_size;
+       u32 max_window_size;
 
        /* Number of symbols in the main alphabet (depends on the
         * @max_window_size since it determines the maximum allowed offset).  */
@@ -397,17 +397,17 @@ struct lzx_compressor {
        struct lzx_costs costs;
 
        /* Fast algorithm only:  Array of hash table links.  */
-       input_idx_t *prev_tab;
+       u32 *prev_tab;
 
        /* Slow algorithm only: Binary tree match-finder.  */
        struct lz_bt mf;
 
        /* Position in window of next match to return.  */
-       input_idx_t match_window_pos;
+       u32 match_window_pos;
 
        /* The end-of-block position.  We can't allow any matches to span this
         * position.  */
-       input_idx_t match_window_end;
+       u32 match_window_end;
 
        /* Matches found by the match-finder are cached in the following array
         * to achieve a slight speedup when the same matches are needed on
@@ -453,22 +453,22 @@ struct lzx_mc_pos_data {
                        /* Position of the start of the match or literal that
                         * was taken to get to this position in the approximate
                         * minimum-cost parse.  */
-                       input_idx_t link;
+                       u32 link;
 
                        /* Offset (as in an LZ (length, offset) pair) of the
                         * match or literal that was taken to get to this
                         * position in the approximate minimum-cost parse.  */
-                       input_idx_t match_offset;
+                       u32 match_offset;
                } prev;
                struct {
                        /* Position at which the match or literal starting at
                         * this position ends in the minimum-cost parse.  */
-                       input_idx_t link;
+                       u32 link;
 
                        /* Offset (as in an LZ (length, offset) pair) of the
                         * match or literal starting at this position in the
                         * approximate minimum-cost parse.  */
-                       input_idx_t match_offset;
+                       u32 match_offset;
                } next;
        };
 
@@ -550,7 +550,7 @@ lzx_make_huffman_codes(const struct lzx_freqs *freqs,
  *     The type of the LZX block (LZX_BLOCKTYPE_ALIGNED or
  *     LZX_BLOCKTYPE_VERBATIM)
  * @match:
- *     The match, as a (length, offset) pair.
+ *     The match data.
  * @codes:
  *     Pointer to a structure that contains the codewords for the main, length,
  *     and aligned offset Huffman codes for the current LZX compressed block.
@@ -643,7 +643,7 @@ static unsigned
 lzx_build_precode(const u8 lens[restrict],
                  const u8 prev_lens[restrict],
                  const unsigned num_syms,
-                 input_idx_t precode_freqs[restrict LZX_PRECODE_NUM_SYMBOLS],
+                 u32 precode_freqs[restrict LZX_PRECODE_NUM_SYMBOLS],
                  u8 output_syms[restrict num_syms],
                  u8 precode_lens[restrict LZX_PRECODE_NUM_SYMBOLS],
                  u32 precode_codewords[restrict LZX_PRECODE_NUM_SYMBOLS],
@@ -812,7 +812,7 @@ lzx_write_compressed_code(struct output_bitstream *out,
                          const u8 prev_lens[restrict],
                          unsigned num_syms)
 {
-       input_idx_t precode_freqs[LZX_PRECODE_NUM_SYMBOLS];
+       u32 precode_freqs[LZX_PRECODE_NUM_SYMBOLS];
        u8 output_syms[num_syms];
        u8 precode_lens[LZX_PRECODE_NUM_SYMBOLS];
        u32 precode_codewords[LZX_PRECODE_NUM_SYMBOLS];
@@ -872,31 +872,27 @@ lzx_write_compressed_code(struct output_bitstream *out,
  * @block_type
  *     The chosen type of the LZX compressed block (LZX_BLOCKTYPE_ALIGNED or
  *     LZX_BLOCKTYPE_VERBATIM).
- * @match_tab
+ * @items
  *     The array of matches/literals to output.
- * @match_count
- *     Number of matches/literals to output (length of @match_tab).
+ * @num_items
+ *     Number of matches/literals to output (length of @items).
  * @codes
  *     The main, length, and aligned offset Huffman codes for the current
  *     LZX compressed block.
  */
 static void
-lzx_write_matches_and_literals(struct output_bitstream *ostream,
-                              int block_type,
-                              const struct lzx_item match_tab[],
-                              unsigned match_count,
-                              const struct lzx_codes *codes)
+lzx_write_items(struct output_bitstream *ostream, int block_type,
+               const struct lzx_item items[], u32 num_items,
+               const struct lzx_codes *codes)
 {
-       for (unsigned i = 0; i < match_count; i++) {
-               struct lzx_item match = match_tab[i];
-
+       for (u32 i = 0; i < num_items; i++) {
                /* The high bit of the 32-bit intermediate representation
                 * indicates whether the item is an actual LZ-style match (1) or
                 * a literal byte (0).  */
-               if (match.data & 0x80000000)
-                       lzx_write_match(ostream, block_type, match, codes);
+               if (items[i].data & 0x80000000)
+                       lzx_write_match(ostream, block_type, items[i], codes);
                else
-                       lzx_write_literal(ostream, match.data, codes);
+                       lzx_write_literal(ostream, items[i].data, codes);
        }
 }
 
@@ -1021,9 +1017,8 @@ lzx_write_compressed_block(int block_type,
        LZX_DEBUG("Writing matches and literals...");
 
        /* Write the actual matches and literals.  */
-       lzx_write_matches_and_literals(ostream, block_type,
-                                      chosen_items, num_chosen_items,
-                                      codes);
+       lzx_write_items(ostream, block_type,
+                       chosen_items, num_chosen_items, codes);
 
        LZX_DEBUG("Done writing block.");
 }
@@ -2086,7 +2081,7 @@ lzx_compress(const void *uncompressed_data, size_t uncompressed_size,
 
        LZX_DEBUG("Flushing bitstream...");
        compressed_size = flush_output_bitstream(&ostream);
-       if (compressed_size == ~(input_idx_t)0) {
+       if (compressed_size == (u32)~0UL) {
                LZX_DEBUG("Data did not compress to %zu bytes or less!",
                          compressed_size_avail);
                return 0;
@@ -2220,8 +2215,6 @@ lzx_create_compressor(size_t window_size,
        if (!lzx_window_size_valid(window_size))
                return WIMLIB_ERR_INVALID_PARAM;
 
-       LZX_DEBUG("Allocating memory.");
-
        ctx = CALLOC(1, sizeof(struct lzx_compressor));
        if (ctx == NULL)
                goto oom;
@@ -2262,7 +2255,7 @@ lzx_create_compressor(size_t window_size,
                                       min(params->alg_params.slow.nice_match_length,
                                           LZX_MAX_MATCH_LEN)) *
                                                sizeof(ctx->optimum[0]));
-               if (!ctx->optimum)
+               if (ctx->optimum == NULL)
                        goto oom;
        }