compress: compressor: merge compress and decompress functions into a single step function
This commit is contained in:
@@ -57,7 +57,7 @@ enum b_status b_compressor_destroy(struct b_compressor *compressor)
|
|||||||
return B_SUCCESS;
|
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) {
|
if (compressor->c_mode != B_COMPRESSION_MODE_COMPRESS) {
|
||||||
return B_ERR_BAD_STATE;
|
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);
|
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;
|
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) {
|
if (!compressor->c_func->f_compress_end) {
|
||||||
return B_ERR_NOT_SUPPORTED;
|
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;
|
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)) {
|
if (!B_OK(status)) {
|
||||||
return 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);
|
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)
|
enum b_status b_compressor_reset(struct b_compressor *compressor)
|
||||||
{
|
{
|
||||||
compressor->c_flags &= ~COMPRESSOR_EOF;
|
compressor->c_flags &= ~COMPRESSOR_EOF;
|
||||||
|
|||||||
@@ -21,9 +21,8 @@ BLUE_API b_status b_compressor_destroy(b_compressor *compressor);
|
|||||||
BLUE_API b_status b_compressor_get_buffer_size(
|
BLUE_API b_status b_compressor_get_buffer_size(
|
||||||
const b_compressor *compressor, size_t *inbuf_size, size_t *outbuf_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_step(b_compressor *compressor);
|
||||||
BLUE_API b_status b_compressor_compress_end(b_compressor *compressor);
|
BLUE_API b_status b_compressor_end(b_compressor *compressor);
|
||||||
BLUE_API b_status b_compressor_decompress(b_compressor *compressor);
|
|
||||||
BLUE_API b_status b_compressor_reset(b_compressor *compressor);
|
BLUE_API b_status b_compressor_reset(b_compressor *compressor);
|
||||||
BLUE_API bool b_compressor_eof(const b_compressor *compressor);
|
BLUE_API bool b_compressor_eof(const b_compressor *compressor);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user