68 lines
2.0 KiB
C
68 lines
2.0 KiB
C
#ifndef BLUE_COMPRESS_COMPRESSOR_H_
|
|
#define BLUE_COMPRESS_COMPRESSOR_H_
|
|
|
|
#include <blue/core/macros.h>
|
|
#include <blue/core/misc.h>
|
|
#include <blue/core/ringbuffer.h>
|
|
#include <blue/core/status.h>
|
|
#include <stdbool.h>
|
|
|
|
B_DECLS_BEGIN;
|
|
|
|
typedef enum b_compressor_mode {
|
|
B_COMPRESSOR_MODE_NONE = 0,
|
|
B_COMPRESSOR_MODE_COMPRESS,
|
|
B_COMPRESSOR_MODE_DECOMPRESS,
|
|
} b_compressor_mode;
|
|
|
|
typedef enum b_compressor_flags {
|
|
B_COMPRESSOR_EOF = 0x01u,
|
|
} b_compressor_flags;
|
|
|
|
#define B_TYPE_COMPRESSOR (b_compressor_get_type())
|
|
|
|
B_DECLARE_TYPE(b_compressor);
|
|
|
|
B_TYPE_CLASS_DECLARATION_BEGIN(b_compressor)
|
|
b_status (*c_buffer_size)(b_compressor_mode, size_t *, size_t *);
|
|
b_status (*c_set_mode)(b_compressor *, b_compressor_mode);
|
|
b_status (*c_compress)(b_compressor *);
|
|
b_status (*c_compress_end)(b_compressor *);
|
|
b_status (*c_decompress)(b_compressor *);
|
|
b_status (*c_reset)(b_compressor *);
|
|
B_TYPE_CLASS_DECLARATION_END(b_compressor)
|
|
|
|
typedef struct b_compressor_data {
|
|
b_compressor_flags c_flags;
|
|
b_compressor_mode c_mode;
|
|
b_ringbuffer *c_in, *c_out;
|
|
} b_compressor_data;
|
|
|
|
BLUE_API b_type b_compressor_get_type(void);
|
|
|
|
#if 0
|
|
BLUE_API b_status b_compressor_create(
|
|
const struct b_compression_function *func, enum b_compression_mode mode,
|
|
struct b_ringbuffer *inbuf, struct b_ringbuffer *outbuf,
|
|
b_compressor **out);
|
|
#endif
|
|
|
|
BLUE_API b_status b_compressor_get_buffer_size(
|
|
b_type type, b_compressor_mode mode, size_t *inbuf_size,
|
|
size_t *outbuf_size);
|
|
|
|
BLUE_API b_status b_compressor_get_mode(
|
|
const b_compressor *compressor, b_compressor_mode *out);
|
|
BLUE_API b_status b_compressor_set_mode(
|
|
b_compressor *compressor, b_compressor_mode mode);
|
|
BLUE_API b_status b_compressor_set_buffer(
|
|
b_compressor *compressor, b_ringbuffer *inbuf, b_ringbuffer *outbuf);
|
|
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);
|
|
|
|
B_DECLS_END;
|
|
|
|
#endif
|