lzma_stream_coder Struct Reference

## Public Types

enum | { SEQ_STREAM_HEADER , SEQ_BLOCK_HEADER , SEQ_BLOCK , SEQ_INDEX , SEQ_STREAM_FOOTER , SEQ_STREAM_PADDING }
enum | { SEQ_STREAM_HEADER , SEQ_BLOCK_INIT , SEQ_BLOCK_HEADER , SEQ_BLOCK_ENCODE , SEQ_INDEX_ENCODE , SEQ_STREAM_FOOTER }

## Data Fields

enum lzma_stream_coder:: { ... } | sequence
lzma_next_coder | block_decoder
lzma_block | block_options
| Options for the Block encoder. More...
lzma_stream_flags | stream_flags
| Stream Flags from Stream Header. More...
lzma_index_hash * | index_hash
uint64_t | memlimit
| Memory usage limit. More...
uint64_t | memusage
| Amount of memory actually needed (only an estimate) More...
bool | tell_no_check
bool | tell_unsupported_check
bool | tell_any_check
| If true, LZMA_GET_CHECK is returned after decoding Stream Header. More...
bool | ignore_check
bool | concatenated
bool | first_stream
size_t | pos
| Write position in buffer[] and position in Stream Padding. More...
uint8_t | buffer [LZMA_BLOCK_HEADER_SIZE_MAX]
enum lzma_stream_coder:: { ... } | sequence
bool | block_encoder_is_initialized
lzma_next_coder | block_encoder
| Block. More...
lzma_filter | filters [LZMA_FILTERS_MAX+1]
| The filter chain currently in use. More...
lzma_next_coder | index_encoder
lzma_index * | index
| Index to hold sizes of the Blocks. More...
size_t | buffer_pos
| Read position in buffer[]. More...
size_t | buffer_size
| Total number of bytes in buffer[]. More...

## Field Documentation

## block_decoder

lzma_next_coder lzma_stream_coder::block_decoder

Block or Metadata decoder. This takes little memory and the same data structure can be used to decode every Block Header, so it's a good idea to have a separate lzma_next_coder structure for it.

## block_options

lzma_block lzma_stream_coder::block_options

Options for the Block encoder.

Block options decoded by the Block Header decoder and used by the Block decoder.

## stream_flags

lzma_stream_flags lzma_stream_coder::stream_flags

Stream Flags from Stream Header.

## index_hash

lzma_index_hash* lzma_stream_coder::index_hash

Index is hashed so that it can be compared to the sizes of Blocks with O(1) memory usage.

## memlimit

uint64_t lzma_stream_coder::memlimit

Memory usage limit.

## memusage

uint64_t lzma_stream_coder::memusage

Amount of memory actually needed (only an estimate)

## tell_no_check

bool lzma_stream_coder::tell_no_check

If true, LZMA_NO_CHECK is returned if the Stream has no integrity check.

## tell_unsupported_check

bool lzma_stream_coder::tell_unsupported_check

If true, LZMA_UNSUPPORTED_CHECK is returned if the Stream has an integrity check that isn't supported by this liblzma build.

## tell_any_check

bool lzma_stream_coder::tell_any_check

If true, LZMA_GET_CHECK is returned after decoding Stream Header.

## ignore_check

bool lzma_stream_coder::ignore_check

If true, we will tell the Block decoder to skip calculating and verifying the integrity check.

## concatenated

bool lzma_stream_coder::concatenated

If true, we will decode concatenated Streams that possibly have Stream Padding between or after them. LZMA_STREAM_END is returned once the application isn't giving us any new input, and we aren't in the middle of a Stream, and possible Stream Padding is a multiple of four bytes.

## first_stream

bool lzma_stream_coder::first_stream

When decoding concatenated Streams, this is true as long as we are decoding the first Stream. This is needed to avoid misleading LZMA_FORMAT_ERROR in case the later Streams don't have valid magic bytes.

## pos

size_t lzma_stream_coder::pos

Write position in buffer[] and position in Stream Padding.

## buffer

uint8_t lzma_stream_coder::buffer

Buffer to hold Stream Header, Block Header, and Stream Footer. Block Header has biggest maximum size.

## block_encoder_is_initialized

bool lzma_stream_coder::block_encoder_is_initialized

True if Block encoder has been initialized by stream_encoder_init() or stream_encoder_update() and thus doesn't need to be initialized in stream_encode().

## block_encoder

lzma_next_coder lzma_stream_coder::block_encoder

Block.

## filters

lzma_filter lzma_stream_coder::filters[LZMA_FILTERS_MAX+1]

The filter chain currently in use.

## index_encoder

lzma_next_coder lzma_stream_coder::index_encoder

Index encoder. This is separate from Block encoder, because this doesn't take much memory, and when encoding multiple Streams with the same encoding options we avoid reallocating memory.

## index

lzma_index* lzma_stream_coder::index

Index to hold sizes of the Blocks.

## buffer_pos

size_t lzma_stream_coder::buffer_pos

Read position in buffer[].

## buffer_size

size_t lzma_stream_coder::buffer_size

Total number of bytes in buffer[].

The documentation for this struct was generated from the following files:

- liblzma/common/stream_decoder.c
- liblzma/common/stream_encoder.c