feat(vector): shrink, insert, pop
This commit is contained in:
@@ -5,21 +5,43 @@
|
||||
#include <stdint.h>
|
||||
#include <threads.h>
|
||||
|
||||
typedef struct vector {
|
||||
typedef struct vec {
|
||||
void *data;
|
||||
size_t elem_size;
|
||||
size_t size;
|
||||
size_t capacity;
|
||||
mtx_t lock;
|
||||
} vector_s;
|
||||
} vec_s;
|
||||
|
||||
vector_s *vector_new(size_t initial_capacity, size_t element_size);
|
||||
int vector_push(vector_s *vec, void *elem);
|
||||
size_t vector_size(vector_s *vec);
|
||||
size_t vector_cap(vector_s *vec);
|
||||
vec_s *vec_new(size_t initial_capacity, size_t element_size);
|
||||
|
||||
void *vector_get(vector_s *vec, size_t index);
|
||||
size_t vec_size(vec_s *vec);
|
||||
|
||||
void vector_free(vector_s *vec);
|
||||
size_t vec_cap(vec_s *vec);
|
||||
|
||||
int vec_shrink(vec_s *vec);
|
||||
|
||||
int vec_push(vec_s *vec, void *elem);
|
||||
|
||||
// free the returned value
|
||||
void *vec_pop(vec_s *vec);
|
||||
|
||||
int vec_insert(vec_s *vec, size_t index, void *value);
|
||||
|
||||
// TODO
|
||||
int vec_remove(vec_s *vec, size_t index);
|
||||
|
||||
// free the returned value
|
||||
void *vec_get(vec_s *vec, size_t index);
|
||||
|
||||
// TODO
|
||||
int vec_set(vec_s *vec, size_t index, void *value);
|
||||
|
||||
int vec_clear(vec_s *vec);
|
||||
|
||||
// void *vec_foreach(vec_s *, void (* fefn)(void *)) ??
|
||||
// void *vec_sort(vec_s *, void (* sortfn)(void *a, void *b))
|
||||
|
||||
void vec_free(vec_s *vec);
|
||||
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user