* A match-finder for Lempel-Ziv compression based on bottom-up construction and
* traversal of the Longest Common Prefix (LCP) interval tree.
*
- * Author: Eric Biggers
- * Year: 2014, 2015
+ * The following copying information applies to this specific source code file:
*
- * The author dedicates this file to the public domain.
- * You can do whatever you want with this file.
+ * Written in 2014-2015 by Eric Biggers <ebiggers3@gmail.com>
+ *
+ * To the extent possible under law, the author(s) have dedicated all copyright
+ * and related and neighboring rights to this software to the public domain
+ * worldwide via the Creative Commons Zero 1.0 Universal Public Domain
+ * Dedication (the "CC0").
+ *
+ * This software 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 CC0 for more details.
+ *
+ * You should have received a copy of the CC0 along with this software; if not
+ * see <http://creativecommons.org/publicdomain/zero/1.0/>.
*/
#ifndef _LCPIT_MATCHFINDER_H
#include "wimlib/types.h"
struct lcpit_matchfinder {
-
bool huge_mode;
-
u32 cur_pos;
-
- /* Mapping: suffix index ("window position") => lcp-interval index */
u32 *pos_data;
-
- /* Mapping: lcp-interval index => lcp-interval data
- *
- * Initially, the lcp-interval data for an lcp-interval contains that
- * interval's lcp and superinterval index.
- *
- * After a lcp-interval is visited during match-finding, its
- * lcp-interval data contains that interval's lcp and the position of
- * the next suffix to consider as a match when matching against that
- * lcp-interval. */
union {
u32 *intervals;
u64 *intervals64;
};
-
- /* The suffix array */
- u32 *SA;
-
u32 min_match_len;
u32 nice_match_len;
+ u32 next[2];
};
struct lz_match {
lcpit_matchfinder_init(struct lcpit_matchfinder *mf, size_t max_bufsize,
u32 min_match_len, u32 nice_match_len);
-extern void
-lcpit_matchfinder_destroy(struct lcpit_matchfinder *mf);
-
extern void
lcpit_matchfinder_load_buffer(struct lcpit_matchfinder *mf, const u8 *T, u32 n);
extern void
lcpit_matchfinder_skip_bytes(struct lcpit_matchfinder *mf, u32 count);
+extern void
+lcpit_matchfinder_destroy(struct lcpit_matchfinder *mf);
+
#endif /* _LCPIT_MATCHFINDER_H */