Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "vector.h"
- #define INITIAL_CAPACITY 2
- #define RESIZE_FACTOR 2
- vector* init_vector_with_init_cap(size_t initCap) {
- vector* v = (vector*)malloc(sizeof(vector));
- if(v == NULL)
- return NULL;
- v->size = 0;
- v->capacity = initCap;
- v->data = (vector_data**)malloc(v->capacity * sizeof(vector_data*));
- if(v->data == NULL) {
- free(v);
- return NULL;
- }
- return v;
- }
- vector* init_vector() {
- return init_vector_with_init_cap(INITIAL_CAPACITY);
- }
- void free_vector(vector* v) {
- //check
- for(int i = 0; i < v->size; i++) {
- free_vector_data(v->data[i]);
- }
- free(v->data);
- free(v);
- }
- static bool resize(vector* v) {
- size_t factor = RESIZE_FACTOR;
- vector_data** tmp = (vector_data**)realloc(v->data, factor * v->capacity * sizeof(vector_data*));
- if(tmp == NULL)
- return false;
- v->capacity *= factor;
- v->data = tmp;
- return true;
- }
- bool add_to_vector(vector* v, vector_data* data) {
- if(data == NULL)
- return false;
- if(v->size >= v->capacity)
- if(!resize(v))
- return false;
- v->data[v->size] = data;
- v->size++;
- return true;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement