Parolin 0.7.9 6796
Console (soon DLLs) to do a tar like job
Loading...
Searching...
No Matches
lzma_stream Struct Reference

Passing data to and from liblzma. More...

#include <base.h>

Data Fields

const uint8_t * next_in
 
size_t avail_in
 
uint64_t total_in
 
uint8_t * next_out
 
size_t avail_out
 
uint64_t total_out
 
const lzma_allocatorallocator
 Custom memory allocation functions.
 
lzma_internalinternal
 
void * reserved_ptr1
 
void * reserved_ptr2
 
void * reserved_ptr3
 
void * reserved_ptr4
 
uint64_t reserved_int1
 
uint64_t reserved_int2
 
size_t reserved_int3
 
size_t reserved_int4
 
lzma_reserved_enum reserved_enum1
 
lzma_reserved_enum reserved_enum2
 
uint64_t seek_pos
 New seek input position for LZMA_SEEK_NEEDED.
 

Detailed Description

Passing data to and from liblzma.

The lzma_stream structure is used for

  • passing pointers to input and output buffers to liblzma;
  • defining custom memory hander functions; and
  • holding a pointer to coder-specific internal data structures.

Typical usage:

  • After allocating lzma_stream (on stack or with malloc()), it must be initialized to LZMA_STREAM_INIT (see LZMA_STREAM_INIT for details).
  • Initialize a coder to the lzma_stream, for example by using lzma_easy_encoder() or lzma_auto_decoder(). Some notes:
    • In contrast to zlib, strm->next_in and strm->next_out are ignored by all initialization functions, thus it is safe to not initialize them yet.
    • The initialization functions always set strm->total_in and strm->total_out to zero.
    • If the initialization function fails, no memory is left allocated that would require freeing with lzma_end() even if some memory was associated with the lzma_stream structure when the initialization function was called.
  • Use lzma_code() to do the actual work.
  • Once the coding has been finished, the existing lzma_stream can be reused. It is OK to reuse lzma_stream with different initialization function without calling lzma_end() first. Old allocations are automatically freed.
  • Finally, use lzma_end() to free the allocated memory. lzma_end() never frees the lzma_stream structure itself.

Application may modify the values of total_in and total_out as it wants. They are updated by liblzma to match the amount of data read and written but aren't used for anything else except as a possible return values from lzma_get_progress().

The lzma_stream structure is used for

  • passing pointers to input and output buffers to liblzma;
  • defining custom memory handler functions; and
  • holding a pointer to coder-specific internal data structures.

Typical usage:

  • After allocating lzma_stream (on stack or with malloc()), it must be initialized to LZMA_STREAM_INIT (see LZMA_STREAM_INIT for details).
  • Initialize a coder to the lzma_stream, for example by using lzma_easy_encoder() or lzma_auto_decoder(). Some notes:
    • In contrast to zlib, strm->next_in and strm->next_out are ignored by all initialization functions, thus it is safe to not initialize them yet.
    • The initialization functions always set strm->total_in and strm->total_out to zero.
    • If the initialization function fails, no memory is left allocated that would require freeing with lzma_end() even if some memory was associated with the lzma_stream structure when the initialization function was called.
  • Use lzma_code() to do the actual work.
  • Once the coding has been finished, the existing lzma_stream can be reused. It is OK to reuse lzma_stream with different initialization function without calling lzma_end() first. Old allocations are automatically freed.
  • Finally, use lzma_end() to free the allocated memory. lzma_end() never frees the lzma_stream structure itself.

Application may modify the values of total_in and total_out as it wants. They are updated by liblzma to match the amount of data read and written but aren't used for anything else except as a possible return values from lzma_get_progress().

Field Documentation

◆ allocator

const lzma_allocator * allocator

Custom memory allocation functions.

In most cases this is NULL which makes liblzma use the standard malloc() and free().

Note
In 5.0.x this is not a const pointer.

◆ avail_in

size_t avail_in

Number of available input bytes in next_in.

◆ avail_out

size_t avail_out

Amount of free space in next_out.

◆ internal

lzma_internal * internal

Internal state is not visible to applications.

◆ next_in

const uint8_t * next_in

Pointer to the next input byte.

◆ next_out

uint8_t * next_out

Pointer to the next output position.

◆ reserved_enum1

lzma_reserved_enum reserved_enum1

Reserved member.

◆ reserved_enum2

lzma_reserved_enum reserved_enum2

Reserved member.

◆ reserved_int1

uint64_t reserved_int1

◆ reserved_int2

uint64_t reserved_int2

Reserved member.

◆ reserved_int3

size_t reserved_int3

Reserved member.

◆ reserved_int4

size_t reserved_int4

Reserved member.

◆ reserved_ptr1

void * reserved_ptr1

Reserved member.

◆ reserved_ptr2

void * reserved_ptr2

Reserved member.

◆ reserved_ptr3

void * reserved_ptr3

Reserved member.

◆ reserved_ptr4

void * reserved_ptr4

Reserved member.

◆ seek_pos

uint64_t seek_pos

New seek input position for LZMA_SEEK_NEEDED.

When lzma_code() returns LZMA_SEEK_NEEDED, the new input position needed by liblzma will be available seek_pos. The value is guaranteed to not exceed the file size that was specified when this lzma_stream was initialized.

In all other situations the value of this variable is undefined.

◆ total_in

uint64_t total_in

Total number of bytes read by liblzma.

◆ total_out

uint64_t total_out

Total number of bytes written by liblzma.


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