meta: add compress module for (de)compressing data
This commit is contained in:
48
compress/function.c
Normal file
48
compress/function.c
Normal file
@@ -0,0 +1,48 @@
|
||||
#include "function.h"
|
||||
|
||||
#include <blue/compress/compressor.h>
|
||||
#include <blue/compress/function.h>
|
||||
|
||||
#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_compressor_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;
|
||||
}
|
||||
Reference in New Issue
Block a user