vector.h 951 B

1234567891011121314151617181920212223242526272829303132333435363738394041
  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_container_s * zv_vector_t;
  14. typedef int32_t zv_vector_count_t;
  15. zv_vector_t * zv_vector_create(void);
  16. void zv_vector_clear(zv_vector_t *self);
  17. void zv_vector_remove(zv_vector_t *self);
  18. zv_vector_count_t zv_vector_length(zv_vector_t *self);
  19. zv_universal_t zv_vector_pop(zv_vector_t *self);
  20. bool zv_vector_append(zv_vector_t *self, zv_universal_t content);
  21. zv_universal_t zv_vector_indexed_pop(
  22. zv_vector_t *self,
  23. zv_vector_count_t index
  24. );
  25. bool zv_vector_insert(
  26. zv_vector_t *self,
  27. zv_universal_t content,
  28. zv_vector_count_t index
  29. );
  30. #endif