vector.c 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. #include "vector.h"
  2. bool Vector_push(struct Vector* self, const void* value){
  3. return vc_vector_push_back(self->_vector, value);
  4. }
  5. void* Vector_pop(struct Vector* self){
  6. void* item = vc_vector_end(self->_vector);
  7. if(vc_vector_pop_back(self->_vector)){
  8. return NULL;
  9. }
  10. return item;
  11. }
  12. bool Vector_replace(struct Vector* self, size_t i, const void* value){
  13. return vc_vector_replace(self->_vector, i, value);
  14. }
  15. void Vector_clear(struct Vector* self){
  16. vc_vector_clear(self->_vector);
  17. }
  18. size_t Vector_count(struct Vector* self){
  19. return self->_vector->count;
  20. }
  21. void Vector_free(struct Vector* self){
  22. vc_vector_release(self->_vector);
  23. free(self);
  24. }
  25. void* Vector_get(Vector* self, size_t i){
  26. return vc_vector_at(self->_vector, i);
  27. }
  28. Vector* new_Vector(int size, size_t obj_size, vc_vector_deleter* deleter){
  29. return new_VectorFromVC(vc_vector_create(size, obj_size, deleter));
  30. }
  31. Vector* new_VectorFromVC(vc_vector* vector){
  32. Vector* self = (Vector*)malloc(sizeof(Vector));
  33. self->_vector = vector;
  34. self->push = &Vector_push;
  35. self->pop = &Vector_pop;
  36. self->replace = &Vector_replace;
  37. self->clear = &Vector_clear;
  38. self->count = &Vector_count;
  39. self->free = &Vector_free;
  40. self->get = &Vector_get;
  41. return self;
  42. }
  43. Vector* copy_Vector(struct Vector* vector){
  44. return new_VectorFromVC(vc_vector_create_copy(vector->_vector));
  45. }