vector.h 919 B

123456789101112131415161718192021222324252627282930313233343536373839
  1. #ifndef CX_ZIVUOS_VECTOR_H_INCLUDED
  2. #define CX_ZIVUOS_VECTOR_H_INCLUDED
  3. #include <stdint.h>
  4. #include <stddef.h>
  5. #include <stdbool.h>
  6. #include "systypes.h"
  7. #include "zalloc.h"
  8. typedef struct zv_vector_container_s {
  9. zv_universal_t content;
  10. struct zv_vector_container_s *next;
  11. struct zv_vector_container_s *previous;
  12. } zv_vector_container_t;
  13. typedef struct zv_vector_s {
  14. struct zv_vector_container_s *first;
  15. struct zv_vector_container_s *last;
  16. size_t length;
  17. } zv_vector_t;
  18. zv_vector_t * zv_vector_create(void);
  19. void zv_vector_clear(zv_vector_t *self);
  20. void zv_vector_remove(zv_vector_t *self);
  21. zv_universal_t zv_vector_pop(zv_vector_t *self);
  22. zv_universal_t zv_vector_indexed_pop(zv_vector_t *self, size_t index);
  23. bool zv_vector_insert(
  24. zv_vector_t *self,
  25. zv_universal_t content,
  26. size_t index
  27. );
  28. bool zv_vector_append(zv_vector_t *self, zv_universal_t content);
  29. #endif