xref: /freebsd-src/contrib/xz/src/liblzma/common/filter_common.h (revision 3b35e7ee8de9b0260149a2b77e87a2b9c7a36244)
1 // SPDX-License-Identifier: 0BSD
2 
3 ///////////////////////////////////////////////////////////////////////////////
4 //
5 /// \file       filter_common.h
6 /// \brief      Filter-specific stuff common for both encoder and decoder
7 //
8 //  Author:     Lasse Collin
9 //
10 ///////////////////////////////////////////////////////////////////////////////
11 
12 #ifndef LZMA_FILTER_COMMON_H
13 #define LZMA_FILTER_COMMON_H
14 
15 #include "common.h"
16 
17 
18 /// Both lzma_filter_encoder and lzma_filter_decoder begin with these members.
19 typedef struct {
20 	/// Filter ID
21 	lzma_vli id;
22 
23 	/// Initializes the filter encoder and calls lzma_next_filter_init()
24 	/// for filters + 1.
25 	lzma_init_function init;
26 
27 	/// Calculates memory usage of the encoder. If the options are
28 	/// invalid, UINT64_MAX is returned.
29 	uint64_t (*memusage)(const void *options);
30 
31 } lzma_filter_coder;
32 
33 
34 typedef const lzma_filter_coder *(*lzma_filter_find)(lzma_vli id);
35 
36 
37 extern lzma_ret lzma_validate_chain(const lzma_filter *filters, size_t *count);
38 
39 
40 extern lzma_ret lzma_raw_coder_init(
41 		lzma_next_coder *next, const lzma_allocator *allocator,
42 		const lzma_filter *filters,
43 		lzma_filter_find coder_find, bool is_encoder);
44 
45 
46 extern uint64_t lzma_raw_coder_memusage(lzma_filter_find coder_find,
47 		const lzma_filter *filters);
48 
49 
50 #endif
51