Rev 49813 | Blame | Last modification | View Log | Download | RSS feed
//////////////////////////////////////////////////////////////////////////////////// \file simple_private.h/// \brief Private definitions for so called simple filters//// Author: Lasse Collin//// This file has been put into the public domain.// You can do whatever you want with this file./////////////////////////////////////////////////////////////////////////////////#ifndef LZMA_SIMPLE_PRIVATE_H#define LZMA_SIMPLE_PRIVATE_H#include "simple_coder.h"typedef struct lzma_simple_s lzma_simple;struct lzma_coder_s {/// Next filter in the chainlzma_next_coder next;/// True if the next coder in the chain has returned LZMA_STREAM_END.bool end_was_reached;/// True if filter() should encode the data; false to decode./// Currently all simple filters use the same function for encoding/// and decoding, because the difference between encoders and decoders/// is very small.bool is_encoder;/// Pointer to filter-specific function, which does/// the actual filtering.size_t (*filter)(lzma_simple *simple, uint32_t now_pos,bool is_encoder, uint8_t *buffer, size_t size);/// Pointer to filter-specific data, or NULL if filter doesn't need/// any extra data.lzma_simple *simple;/// The lowest 32 bits of the current position in the data. Most/// filters need this to do conversions between absolute and relative/// addresses.uint32_t now_pos;/// Size of the memory allocated for the buffer.size_t allocated;/// Flushing position in the temporary buffer. buffer[pos] is the/// next byte to be copied to out[].size_t pos;/// buffer[filtered] is the first unfiltered byte. When pos is smaller/// than filtered, there is unflushed filtered data in the buffer.size_t filtered;/// Total number of bytes (both filtered and unfiltered) currently/// in the temporary buffer.size_t size;/// Temporary bufferuint8_t buffer[];};extern lzma_ret lzma_simple_coder_init(lzma_next_coder *next,lzma_allocator *allocator, const lzma_filter_info *filters,size_t (*filter)(lzma_simple *simple, uint32_t now_pos,bool is_encoder, uint8_t *buffer, size_t size),size_t simple_size, size_t unfiltered_max,uint32_t alignment, bool is_encoder);#endif