53 lines
1.7 KiB
C
53 lines
1.7 KiB
C
#ifndef FX_DS_BUFFER_H_
|
|
#define FX_DS_BUFFER_H_
|
|
|
|
#include <fx/macros.h>
|
|
#include <stddef.h>
|
|
|
|
FX_DECLS_BEGIN;
|
|
|
|
#define FX_TYPE_BUFFER (fx_buffer_get_type())
|
|
|
|
FX_DECLARE_TYPE(fx_buffer);
|
|
|
|
FX_TYPE_CLASS_DECLARATION_BEGIN(fx_buffer)
|
|
FX_TYPE_CLASS_DECLARATION_END(fx_buffer)
|
|
|
|
FX_API fx_type fx_buffer_get_type(void);
|
|
|
|
FX_API fx_buffer *fx_buffer_create(size_t item_sz);
|
|
FX_API fx_buffer *fx_buffer_create_from_bytes(const void *p, size_t len);
|
|
FX_API fx_buffer *fx_buffer_create_from_array(
|
|
const void *p,
|
|
size_t item_sz,
|
|
size_t len);
|
|
|
|
FX_API void *fx_buffer_steal(fx_buffer *buf);
|
|
FX_API fx_status fx_buffer_reserve(fx_buffer *buf, size_t capacity);
|
|
FX_API fx_status fx_buffer_resize(fx_buffer *buf, size_t length);
|
|
|
|
FX_API fx_status fx_buffer_append(fx_buffer *dest, const void *p, size_t count);
|
|
FX_API fx_status
|
|
fx_buffer_prepend(fx_buffer *dest, const void *p, size_t count);
|
|
FX_API fx_status
|
|
fx_buffer_insert(fx_buffer *dest, const void *p, size_t count, size_t at);
|
|
FX_API fx_status fx_buffer_remove(fx_buffer *dest, size_t at, size_t count);
|
|
FX_API fx_status fx_buffer_clear(fx_buffer *buf);
|
|
|
|
FX_API fx_status fx_buffer_push_back(fx_buffer *buf, size_t count, void **p);
|
|
FX_API fx_status fx_buffer_push_front(fx_buffer *buf, size_t count, void **p);
|
|
|
|
FX_API fx_status fx_buffer_pop_back(fx_buffer *buf, size_t count);
|
|
FX_API fx_status fx_buffer_pop_front(fx_buffer *buf, size_t count);
|
|
|
|
FX_API size_t fx_buffer_get_size(const fx_buffer *buf);
|
|
FX_API size_t fx_buffer_get_item_size(const fx_buffer *buf);
|
|
FX_API size_t fx_buffer_get_capacity(const fx_buffer *buf);
|
|
|
|
FX_API void *fx_buffer_ptr(const fx_buffer *buf);
|
|
FX_API void *fx_buffer_get(const fx_buffer *buf, size_t at);
|
|
|
|
FX_DECLS_END;
|
|
|
|
#endif
|