From eb7e88d9fa4844c1755e8778ec95b69dfd1f1cb2 Mon Sep 17 00:00:00 2001 From: Max Wash Date: Fri, 11 Apr 2025 13:56:26 +0100 Subject: [PATCH] object: start implement bit-buffer data structure --- object/bitbuffer.c | 0 object/bitbuffer.h | 0 object/include/blue/object/bitbuffer.h | 30 ++++++++++++++++++++++++++ 3 files changed, 30 insertions(+) create mode 100644 object/bitbuffer.c create mode 100644 object/bitbuffer.h create mode 100644 object/include/blue/object/bitbuffer.h diff --git a/object/bitbuffer.c b/object/bitbuffer.c new file mode 100644 index 0000000..e69de29 diff --git a/object/bitbuffer.h b/object/bitbuffer.h new file mode 100644 index 0000000..e69de29 diff --git a/object/include/blue/object/bitbuffer.h b/object/include/blue/object/bitbuffer.h new file mode 100644 index 0000000..cf40e45 --- /dev/null +++ b/object/include/blue/object/bitbuffer.h @@ -0,0 +1,30 @@ +#ifndef BLUE_OBJECT_BITBUFFER_H_ +#define BLUE_OBJECT_BITBUFFER_H_ + +#include + +#define B_BITBUFFER(p) ((b_bitbuffer *)(p)) + +typedef struct b_bitbuffer b_bitbuffer; + +BLUE_API b_bitbuffer *b_bitbuffer_create(void); + +static inline b_bitbuffer *b_bitbuffer_retain(b_bitbuffer *buf) +{ + return B_BITBUFFER(b_retain(B_OBJECT(buf))); +} +static inline void b_bitbuffer_release(b_bitbuffer *buf) +{ + b_release(B_OBJECT(buf)); +} + +BLUE_API b_status b_bitbuffer_put_bit(b_bitbuffer *buf, int bit); +BLUE_API b_status b_bitbuffer_put_bool(b_bitbuffer *buf, bool b); +BLUE_API b_status b_bitbuffer_put_int( + b_bitbuffer *buf, uint64_t v, unsigned int nr_bits); +BLUE_API b_status b_bitbuffer_put_bytes( + b_bitbuffer *buf, const void *p, size_t len, size_t bits_per_byte); +BLUE_API b_status b_bitbuffer_put_string( + b_bitbuffer *buf, const char *p, size_t len, size_t bits_per_char); + +#endif