Files
fx/fx.collections/include/fx/collections/buffer.h
T

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