Data Structures | Defines | Typedefs | Functions

/tmp/buildd/xz-utils-5.0.0/src/liblzma/lz/lz_encoder.h File Reference

LZ in window and match finder API. More...

#include "common.h"

Data Structures

struct  lzma_match
struct  lzma_mf_s
struct  lzma_lz_options
struct  lzma_lz_encoder

Defines

#define mf_find   lzma_mf_find
 Since everything else begins with mf_, use it also for lzma_mf_find().

Typedefs

typedef struct lzma_mf_s lzma_mf

Functions

static const uint8_t * mf_ptr (const lzma_mf *mf)
 Get pointer to the first byte not ran through the match finder.
static uint32_t mf_avail (const lzma_mf *mf)
 Get the number of bytes that haven't been ran through the match finder yet.
static uint32_t mf_unencoded (const lzma_mf *mf)
static uint32_t mf_position (const lzma_mf *mf)
static void mf_skip (lzma_mf *mf, uint32_t amount)
static void mf_read (lzma_mf *mf, uint8_t *out, size_t *out_pos, size_t out_size, size_t *left)
lzma_ret lzma_lz_encoder_init (lzma_next_coder *next, lzma_allocator *allocator, const lzma_filter_info *filters, lzma_ret(*lz_init)(lzma_lz_encoder *lz, lzma_allocator *allocator, const void *options, lzma_lz_options *lz_options))
uint64_t lzma_lz_encoder_memusage (const lzma_lz_options *lz_options)
uint32_t lzma_mf_find (lzma_mf *mf, uint32_t *count, lzma_match *matches)
 Find matches starting from the current byte.
uint32_t lzma_mf_hc3_find (lzma_mf *dict, lzma_match *matches)
void lzma_mf_hc3_skip (lzma_mf *dict, uint32_t amount)
uint32_t lzma_mf_hc4_find (lzma_mf *dict, lzma_match *matches)
void lzma_mf_hc4_skip (lzma_mf *dict, uint32_t amount)
uint32_t lzma_mf_bt2_find (lzma_mf *dict, lzma_match *matches)
void lzma_mf_bt2_skip (lzma_mf *dict, uint32_t amount)
uint32_t lzma_mf_bt3_find (lzma_mf *dict, lzma_match *matches)
void lzma_mf_bt3_skip (lzma_mf *dict, uint32_t amount)
uint32_t lzma_mf_bt4_find (lzma_mf *dict, lzma_match *matches)
void lzma_mf_bt4_skip (lzma_mf *dict, uint32_t amount)

Detailed Description

LZ in window and match finder API.


Define Documentation

#define mf_find   lzma_mf_find

Since everything else begins with mf_, use it also for lzma_mf_find().


Function Documentation

static const uint8_t* mf_ptr ( const lzma_mf mf  )  [inline, static]

Get pointer to the first byte not ran through the match finder.

References lzma_mf_s::buffer, and lzma_mf_s::read_pos.

Referenced by lzma_mf_find().

static uint32_t mf_avail ( const lzma_mf mf  )  [inline, static]

Get the number of bytes that haven't been ran through the match finder yet.

References lzma_mf_s::read_pos, and lzma_mf_s::write_pos.

Referenced by lzma_mf_find().

static uint32_t mf_unencoded ( const lzma_mf mf  )  [inline, static]

Get the number of bytes that haven't been encoded yet (some of these bytes may have been ran through the match finder though).

References lzma_mf_s::read_ahead, lzma_mf_s::read_pos, and lzma_mf_s::write_pos.

static uint32_t mf_position ( const lzma_mf mf  )  [inline, static]

Calculate the absolute offset from the beginning of the most recent dictionary reset. Only the lowest four bits are important, so there's no problem that we don't know the 64-bit size of the data encoded so far.

NOTE: When moving the input window, we need to do it so that the lowest bits of dict->read_pos are not modified to keep this macro working as intended.

References lzma_mf_s::read_ahead, and lzma_mf_s::read_pos.

static void mf_skip ( lzma_mf mf,
uint32_t  amount 
) [inline, static]

Skip the given number of bytes. This is used when a good match was found. For example, if mf_find() finds a match of 200 bytes long, the first byte of that match was already consumed by mf_find(), and the rest 199 bytes have to be skipped with mf_skip(mf, 199).

References lzma_mf_s::read_ahead, and lzma_mf_s::skip.

static void mf_read ( lzma_mf mf,
uint8_t *  out,
size_t *  out_pos,
size_t  out_size,
size_t *  left 
) [inline, static]

Copies at most *left number of bytes from the history buffer to out[]. This is needed by LZMA2 to encode uncompressed chunks.

References lzma_mf_s::buffer, lzma_mf_s::read_ahead, and lzma_mf_s::read_pos.

uint32_t lzma_mf_find ( lzma_mf mf,
uint32_t *  count_ptr,
lzma_match matches 
)

Find matches starting from the current byte.

Returns:
The length of the longest match found

References lzma_mf_s::find, lzma_mf_s::match_len_max, mf_avail(), mf_ptr(), lzma_mf_s::nice_len, and lzma_mf_s::read_ahead.