]> wimlib.net Git - wimlib/blob - include/wimlib/compressor_ops.h
wimlib_iterate_dir_tree(): iterate in default case order
[wimlib] / include / wimlib / compressor_ops.h
1 /*
2  * compressor_ops.h
3  *
4  * Interface implemented by compressors for specific formats.
5  */
6
7 #ifndef _WIMLIB_COMPRESSOR_OPS_H
8 #define _WIMLIB_COMPRESSOR_OPS_H
9
10 #include "wimlib/types.h"
11
12 struct compressor_ops {
13
14         u64 (*get_needed_memory)(size_t max_block_size,
15                                  unsigned int compression_level);
16
17         int (*create_compressor)(size_t max_block_size,
18                                  unsigned int compression_level,
19                                  void **private_ret);
20
21         size_t (*compress)(const void *uncompressed_data,
22                            size_t uncompressed_size,
23                            void *compressed_data,
24                            size_t compressed_size_avail,
25                            void *private);
26
27         void (*free_compressor)(void *private);
28 };
29
30 extern const struct compressor_ops lzx_compressor_ops;
31 extern const struct compressor_ops xpress_compressor_ops;
32 extern const struct compressor_ops lzms_compressor_ops;
33
34 #endif /* _WIMLIB_COMPRESSOR_OPS_H */