/*
* Copyright (C) 2012, 2013, 2014 Eric Biggers
*
- * This file is part of wimlib, a library for working with WIM files.
+ * This file is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU Lesser General Public License as published by the Free
+ * Software Foundation; either version 3 of the License, or (at your option) any
+ * later version.
*
- * wimlib is free software; you can redistribute it and/or modify it under the
- * terms of the GNU General Public License as published by the Free
- * Software Foundation; either version 3 of the License, or (at your option)
- * any later version.
- *
- * wimlib is distributed in the hope that it will be useful, but WITHOUT ANY
- * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
- * A PARTICULAR PURPOSE. See the GNU General Public License for more
+ * This file is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
* details.
*
- * You should have received a copy of the GNU General Public License
- * along with wimlib; if not, see http://www.gnu.org/licenses/.
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this file; if not, see http://www.gnu.org/licenses/.
*/
/* Write a coding unit, unless it would overflow the buffer. */
if (os->next != os->end)
- *os->next++ = cpu_to_le16(os->bitbuf >> os->bitcount);
+ put_unaligned_u16_le(os->bitbuf >> os->bitcount, os->next++);
/* If writing 17 bits, a second coding unit might need to be
* written. But because 'max_num_bits' is a compile-time
* call sites. */
if (max_num_bits == 17 && os->bitcount == 16) {
if (os->next != os->end)
- *os->next++ = cpu_to_le16(os->bitbuf);
+ put_unaligned_u16_le(os->bitbuf, os->next++);
os->bitcount = 0;
}
}
return 0;
if (os->bitcount != 0)
- *os->next++ = cpu_to_le16(os->bitbuf << (16 - os->bitcount));
+ put_unaligned_u16_le(os->bitbuf << (16 - os->bitcount), os->next++);
return (const u8 *)os->next - (const u8 *)os->start;
}
* offset.
*/
static inline unsigned
-lzx_get_matches(struct lzx_compressor *c,
- const struct lz_match **matches_ret)
+lzx_get_matches(struct lzx_compressor *c, const struct lz_match **matches_ret)
{
return (*c->get_matches_func)(c, matches_ret);
}
unsigned main_symbol;
if (len - LZX_MIN_MATCH_LEN < LZX_NUM_PRIMARY_LENS) {
- len_header = len - LZX_MIN_MATCH_LEN ;
+ len_header = len - LZX_MIN_MATCH_LEN;
cost = 0;
} else {
len_header = LZX_NUM_PRIMARY_LENS;
lzx_choose_verbatim_or_aligned(const struct lzx_freqs * freqs,
const struct lzx_codes * codes)
{
- unsigned aligned_cost = 0;
- unsigned verbatim_cost = 0;
+ u32 aligned_cost = 0;
+ u32 verbatim_cost = 0;
- /* A verbatim block require 3 bits in each place that an aligned symbol
- * was used. */
+ /* A verbatim block requires 3 bits in each place that an aligned symbol
+ * would be used in an aligned offset block. */
for (unsigned i = 0; i < LZX_ALIGNEDCODE_NUM_SYMBOLS; i++) {
verbatim_cost += 3 * freqs->aligned[i];
aligned_cost += codes->lens.aligned[i] * freqs->aligned[i];