/* * compressor_ops.h * * Interface implemented by compressors for specific formats. */ #ifndef _WIMLIB_COMPRESSOR_OPS_H #define _WIMLIB_COMPRESSOR_OPS_H #include struct compressor_ops { bool (*params_valid)(const struct wimlib_compressor_params_header *params); u64 (*get_needed_memory)(size_t max_block_size, const struct wimlib_compressor_params_header *params); int (*create_compressor)(size_t max_block_size, const struct wimlib_compressor_params_header *params, void **private_ret); size_t (*compress)(const void *uncompressed_data, size_t uncompressed_size, void *compressed_data, size_t compressed_size_avail, void *private); void (*free_compressor)(void *private); }; extern const struct compressor_ops lzx_compressor_ops; extern const struct compressor_ops xpress_compressor_ops; extern const struct compressor_ops lzms_compressor_ops; extern void cleanup_compressor_params(void); #endif /* _WIMLIB_COMPRESSOR_OPS_H */