Files
bluelib/ds/include/blue/ds/buffer.h

50 lines
1.7 KiB
C
Raw Normal View History

#ifndef BLUE_DS_BUFFER_H_
#define BLUE_DS_BUFFER_H_
2024-10-24 19:24:54 +01:00
#include <blue/core/macros.h>
2024-10-24 19:24:54 +01:00
#include <stddef.h>
B_DECLS_BEGIN;
2024-10-24 19:24:54 +01:00
#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);
2024-10-24 19:24:54 +01:00
2024-11-14 16:56:12 +00:00
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);
2024-11-14 16:56:12 +00:00
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);
2024-10-24 19:24:54 +01:00
2024-11-14 16:56:12 +00:00
BLUE_API b_status b_buffer_append(b_buffer *dest, const void *p, size_t count);
BLUE_API b_status b_buffer_prepend(b_buffer *dest, const void *p, size_t count);
BLUE_API b_status b_buffer_insert(
b_buffer *dest, const void *p, size_t count, size_t at);
BLUE_API b_status b_buffer_remove(b_buffer *dest, size_t at, size_t count);
BLUE_API b_status b_buffer_clear(b_buffer *buf);
BLUE_API b_status b_buffer_push_back(b_buffer *buf, size_t count, void **p);
BLUE_API b_status b_buffer_push_front(b_buffer *buf, size_t count, void **p);
BLUE_API b_status b_buffer_pop_back(b_buffer *buf, size_t count);
BLUE_API b_status b_buffer_pop_front(b_buffer *buf, size_t count);
2024-10-24 19:24:54 +01:00
BLUE_API size_t b_buffer_get_size(const b_buffer *buf);
BLUE_API size_t b_buffer_get_item_size(const b_buffer *buf);
BLUE_API size_t b_buffer_get_capacity(const b_buffer *buf);
2024-10-24 19:24:54 +01:00
BLUE_API void *b_buffer_ptr(const b_buffer *buf);
BLUE_API void *b_buffer_get(const b_buffer *buf, size_t at);
2024-10-24 19:24:54 +01:00
B_DECLS_END;
2024-10-24 19:24:54 +01:00
#endif