2021-12-10 20:22:16 +00:00
|
|
|
#ifndef APFL_RESIZABLE
|
|
|
|
|
#define APFL_RESIZABLE 1
|
|
|
|
|
|
|
|
|
|
#include <stddef.h>
|
|
|
|
|
#include <stdbool.h>
|
|
|
|
|
|
|
|
|
|
#define APFL_RESIZABLE_TRAIT(T, N) \
|
|
|
|
|
T* N; \
|
|
|
|
|
size_t len; \
|
|
|
|
|
size_t cap;
|
|
|
|
|
|
|
|
|
|
#define APFL_RESIZABLE_ARGS(S, N) (void **)(&(S).N), &(S).len, &(S).cap
|
|
|
|
|
|
|
|
|
|
void apfl_resizable_init(void **mem, size_t *len, size_t *cap);
|
|
|
|
|
|
|
|
|
|
bool apfl_resizable_resize(size_t elem_size, void **mem, size_t *len, size_t *cap, size_t newlen);
|
|
|
|
|
|
2022-01-02 16:16:32 +00:00
|
|
|
bool apfl_resizable_ensure_cap(size_t elem_size, void **mem, size_t *cap, size_t want_cap);
|
|
|
|
|
bool apfl_resizable_ensure_cap_for_more_elements(size_t elem_size, void **mem, size_t len, size_t *cap, size_t more_elements);
|
|
|
|
|
|
2022-01-20 20:33:04 +00:00
|
|
|
bool apfl_resizable_splice(
|
|
|
|
|
size_t elem_size,
|
|
|
|
|
void **mem,
|
|
|
|
|
size_t *len,
|
|
|
|
|
size_t *cap,
|
|
|
|
|
size_t start,
|
|
|
|
|
size_t cut_len,
|
|
|
|
|
const void *other_mem,
|
|
|
|
|
size_t other_len
|
|
|
|
|
);
|
2021-12-10 20:22:16 +00:00
|
|
|
|
|
|
|
|
bool apfl_resizable_append(size_t elem_size, void **mem, size_t *len, size_t *cap, const void *other_mem, size_t other_len);
|
|
|
|
|
|
2022-01-20 20:33:04 +00:00
|
|
|
|
2021-12-10 20:22:16 +00:00
|
|
|
#endif
|