apfl/src/resizable.h

67 lines
1.2 KiB
C
Raw Normal View History

2021-12-10 20:22:16 +00:00
#ifndef APFL_RESIZABLE
#define APFL_RESIZABLE 1
#include <stddef.h>
#include <stdbool.h>
#include "apfl.h"
2021-12-10 20:22:16 +00:00
#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(
struct apfl_allocator,
size_t elem_size,
void **mem,
size_t *len,
size_t *cap,
size_t newlen
);
2021-12-10 20:22:16 +00:00
bool apfl_resizable_ensure_cap(
struct apfl_allocator,
size_t elem_size,
void **mem,
size_t *cap,
size_t want_cap
);
bool apfl_resizable_ensure_cap_for_more_elements(
struct apfl_allocator,
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(
struct apfl_allocator,
2022-01-20 20:33:04 +00:00
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(
struct apfl_allocator,
size_t elem_size,
void **mem,
size_t *len,
size_t *cap,
const void *other_mem,
size_t other_len
);
2021-12-10 20:22:16 +00:00
2022-01-20 20:33:04 +00:00
2021-12-10 20:22:16 +00:00
#endif