50 lines
1.7 KiB
C
50 lines
1.7 KiB
C
#ifndef BLUE_DS_BUFFER_H_
|
|
#define BLUE_DS_BUFFER_H_
|
|
|
|
#include <blue/core/macros.h>
|
|
#include <stddef.h>
|
|
|
|
B_DECLS_BEGIN;
|
|
|
|
#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);
|
|
|
|
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);
|
|
|
|
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);
|
|
|
|
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);
|
|
|
|
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
|