#include #include #include #define UNINPLEMENTED printf("%s:%d: Not yet implemented", __FILE__, __LINE__) #define foreach(item, vector) \ for (int keep = 1, \ count = 0, \ size = sizeof(vector->elements) / sizeof *(vector->elements); \ keep && count != size; \ keep = !keep, count++) \ for (item = (vector->elements) + (count * vector->obj_size); keep; \ keep = !keep) typedef void (*Destructor)(void *element); struct Vector_s { void ** elements; uint32_t obj_size; uint32_t len; Destructor destructor; }; typedef struct Vector_s Vector; Vector * vec_new_with_capacity(uint32_t obj_size, uint32_t obj_number, Destructor destructor); // DONE Vector * vec_new(uint32_t obj_size, Destructor destructor); // DONE uint32_t vec_len(Vector *self); // DONE uint32_t vec_capacity(Vector *self); // DONE uint8_t vec_push(Vector *self, void *element); // TODO uint8_t vec_pop(Vector *self); // TODO void * vec_at(Vector *self, uint32_t index); // DONE void * vec_at_safe(Vector *self, uint32_t index); // DONE void vec_delete(Vector *self); // DONE