meta: add compress module for (de)compressing data

This commit is contained in:
2025-07-28 22:27:24 +01:00
parent 65ee2a91b8
commit 56399b07d8
14 changed files with 610 additions and 1 deletions

48
compress/function.c Normal file
View 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;
}