cpfast/vec.h
Slendi 414decf167
Initial commit.
Signed-off-by: Slendi <slendi@socopon.com>
2023-09-08 01:13:04 +03:00

38 lines
1.1 KiB
C

#ifndef VEC_H
# define VEC_H
#include "stdlib.h"
#include "unistd.h"
#include "string.h"
#include "stdbool.h"
typedef struct s_vec
{
unsigned char *memory;
size_t elem_size;
size_t alloc_size;
size_t len;
} t_vec;
int vec_new(t_vec *src, size_t init_len, size_t elem_size);
void vec_free(t_vec *src);
int vec_from(t_vec *dst, void *src, size_t len, size_t elem_size);
int vec_resize(t_vec *src, size_t target_size);
int vec_clear(t_vec *src);
int vec_push(t_vec *src, void *elem);
int vec_pop(void *dst, t_vec *src);
int vec_copy(t_vec *dst, t_vec *src);
void *vec_get(t_vec *src, size_t index);
int vec_insert(t_vec *dst, void *elem, size_t index);
int vec_remove(t_vec *src, size_t index);
int vec_append(t_vec *dst, t_vec *src);
int vec_prepend(t_vec *dst, t_vec *src);
void vec_iter(t_vec *src, void (*f) (void *));
void *vec_find(t_vec *src, bool (*f) (void *));
int vec_map(t_vec *dst, t_vec *src, void (*f) (void *));
int vec_filter(t_vec *dst, t_vec *src, bool (*f) (void *));
int vec_reduce(void *dst, t_vec *src, void (*f) (void *, void *));
void vec_sort(t_vec *src, int (*f)(void *, void *));
#endif