vector.h 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. #ifndef CX_ZIVUOS_VECTOR_H_INCLUDED
  2. #define CX_ZIVUOS_VECTOR_H_INCLUDED
  3. #include <stdbool.h>
  4. #include "systypes.h"
  5. #include "memory.h"
  6. typedef struct zv_vector_container_s {
  7. struct zv_vector_container_s *previous;
  8. struct zv_vector_container_s *next;
  9. zv_universal_t content;
  10. } zv_vector_container_t;
  11. typedef struct zv_vector_s {
  12. zv_vector_container_t *first;
  13. zv_vector_container_t *last;
  14. zv_size_t size;
  15. } zv_vector_t;
  16. zv_vector_t * zv_vector_create(void);
  17. void zv_vector_delete(zv_vector_t *self);
  18. bool zv_vector_avairable(void);
  19. bool zv_vector_push(zv_vector_t *self, zv_universal_t content);
  20. zv_universal_t zv_vector_pop(zv_vector_t *self);
  21. zv_universal_t * zv_vector_get_pointer(zv_vector_t *self, zv_size_t target);
  22. zv_universal_t zv_vector_get(zv_vector_t *self, zv_size_t target);
  23. bool zv_vector_insert(
  24. zv_vector_t *self,
  25. zv_universal_t content,
  26. zv_size_t after
  27. );
  28. zv_universal_t zv_vector_remove(
  29. zv_vector_t *self,
  30. zv_size_t target
  31. );
  32. zv_universal_t zv_vector_set(
  33. zv_vector_t *self,
  34. zv_universal_t content,
  35. zv_size_t target
  36. );
  37. #endif