ds: buffer: convert to new object system

This commit is contained in:
2025-10-19 11:03:09 +01:00
parent 0a9eb4a085
commit dacbc5e9c2
3 changed files with 236 additions and 138 deletions

View File

@@ -1,27 +1,25 @@
#ifndef BLUELIB_BUFFER_H_
#define BLUELIB_BUFFER_H_
#ifndef BLUE_DS_BUFFER_H_
#define BLUE_DS_BUFFER_H_
#include <blue/ds/object.h>
#include <blue/ds/type.h>
#include <blue/core/macros.h>
#include <stddef.h>
#define B_BUFFER(p) ((b_buffer *)(p))
B_DECLS_BEGIN;
typedef struct b_buffer b_buffer;
#define B_TYPE_BUFFER (b_buffer_get_type())
B_DECLARE_TYPE(b_buffer);
B_TYPE_CLASS_DECLARATION_BEGIN(b_buffer)
B_TYPE_CLASS_DECLARATION_END(b_buffer)
BLUE_API b_type b_buffer_get_type(void);
BLUE_API b_buffer *b_buffer_create(size_t item_sz);
BLUE_API b_buffer *b_buffer_create_from_bytes(const void *p, size_t len);
BLUE_API b_buffer *b_buffer_create_from_array(
const void *p, size_t item_sz, size_t len);
static inline b_buffer *b_buffer_retain(b_buffer *buf)
{
return B_BUFFER(b_retain(B_DSREF(buf)));
}
static inline void b_buffer_release(b_buffer *buf)
{
b_release(B_DSREF(buf));
}
BLUE_API void *b_buffer_steal(b_buffer *buf);
BLUE_API b_status b_buffer_reserve(b_buffer *buf, size_t capacity);
BLUE_API b_status b_buffer_resize(b_buffer *buf, size_t length);
@@ -46,4 +44,6 @@ BLUE_API size_t b_buffer_get_capacity(const b_buffer *buf);
BLUE_API void *b_buffer_ptr(const b_buffer *buf);
BLUE_API void *b_buffer_get(const b_buffer *buf, size_t at);
B_DECLS_END;
#endif