#include "function.h" #include #include #ifdef B_COMPRESSOR_SUPPORTED_ZSTD extern const struct b_compression_function z__b_compression_function_zstd; #endif static const struct b_compression_function *compressor_functions[] = { #ifdef B_COMPRESSOR_SUPPORTED_ZSTD [B_COMPRESSOR_FUNCTION_ZSTD] = &z__b_compression_function_zstd, #endif }; static const size_t nr_compressor_functions = sizeof compressor_functions / sizeof compressor_functions[0]; const struct b_compression_function *b_compression_function_get_by_id( enum b_compression_function_id id) { if (id < 0 || id >= nr_compressor_functions) { return NULL; } return compressor_functions[id]; } enum b_status b_compression_function_get_buffer_size( const struct b_compression_function *func, enum b_compression_mode mode, size_t *inbuf_size, size_t *outbuf_size) { if (!func->f_buffer_size) { return B_ERR_NOT_SUPPORTED; } size_t in = 0, out = 0; enum b_status status = func->f_buffer_size(mode, &in, &out); if (inbuf_size) { *inbuf_size = in; } if (outbuf_size) { *outbuf_size = out; } return status; }