compress: compressor: merge compress and decompress functions into a single step function

This commit is contained in:
2025-07-30 18:31:28 +01:00
parent 051d371eb5
commit 5a7f0b8535
2 changed files with 31 additions and 20 deletions

View File

@@ -57,7 +57,7 @@ enum b_status b_compressor_destroy(struct b_compressor *compressor)
return B_SUCCESS;
}
enum b_status b_compressor_compress(struct b_compressor *compressor)
static enum b_status compress(struct b_compressor *compressor)
{
if (compressor->c_mode != B_COMPRESSION_MODE_COMPRESS) {
return B_ERR_BAD_STATE;
@@ -70,12 +70,37 @@ enum b_status b_compressor_compress(struct b_compressor *compressor)
return compressor->c_func->f_compress(compressor);
}
enum b_status b_compressor_compress_end(struct b_compressor *compressor)
static enum b_status decompress(struct b_compressor *compressor)
{
if (compressor->c_mode != B_COMPRESSOR_MODE_COMPRESS) {
if (compressor->c_mode != B_COMPRESSION_MODE_DECOMPRESS) {
return B_ERR_BAD_STATE;
}
if (!compressor->c_func->f_decompress) {
return B_ERR_NOT_SUPPORTED;
}
return compressor->c_func->f_decompress(compressor);
}
enum b_status b_compressor_step(struct b_compressor *compressor)
{
switch (compressor->c_mode) {
case B_COMPRESSION_MODE_COMPRESS:
return compress(compressor);
case B_COMPRESSION_MODE_DECOMPRESS:
return decompress(compressor);
default:
return B_ERR_BAD_STATE;
}
}
enum b_status b_compressor_end(struct b_compressor *compressor)
{
if (compressor->c_mode != B_COMPRESSION_MODE_COMPRESS) {
return B_SUCCESS;
}
if (!compressor->c_func->f_compress_end) {
return B_ERR_NOT_SUPPORTED;
}
@@ -85,7 +110,7 @@ enum b_status b_compressor_compress_end(struct b_compressor *compressor)
return B_ERR_NO_SPACE;
}
enum b_status status = b_compressor_compress(compressor);
enum b_status status = b_compressor_step(compressor);
if (!B_OK(status)) {
return status;
}
@@ -94,19 +119,6 @@ enum b_status b_compressor_compress_end(struct b_compressor *compressor)
return compressor->c_func->f_compress_end(compressor);
}
enum b_status b_compressor_decompress(struct b_compressor *compressor)
{
if (compressor->c_mode != B_COMPRESSION_MODE_DECOMPRESS) {
return B_ERR_BAD_STATE;
}
if (!compressor->c_func->f_decompress) {
return B_ERR_NOT_SUPPORTED;
}
return compressor->c_func->f_decompress(compressor);
}
enum b_status b_compressor_reset(struct b_compressor *compressor)
{
compressor->c_flags &= ~COMPRESSOR_EOF;

View File

@@ -21,9 +21,8 @@ BLUE_API b_status b_compressor_destroy(b_compressor *compressor);
BLUE_API b_status b_compressor_get_buffer_size(
const b_compressor *compressor, size_t *inbuf_size, size_t *outbuf_size);
BLUE_API b_status b_compressor_compress(b_compressor *compressor);
BLUE_API b_status b_compressor_compress_end(b_compressor *compressor);
BLUE_API b_status b_compressor_decompress(b_compressor *compressor);
BLUE_API b_status b_compressor_step(b_compressor *compressor);
BLUE_API b_status b_compressor_end(b_compressor *compressor);
BLUE_API b_status b_compressor_reset(b_compressor *compressor);
BLUE_API bool b_compressor_eof(const b_compressor *compressor);