Queue.h 643 B

12345678910111213141516171819202122232425
  1. #ifndef CORE_QUEUE_H
  2. #define CORE_QUEUE_H
  3. #include "core/Types.h"
  4. struct QueueT {
  5. size_t writeIndex;
  6. size_t readIndex;
  7. size_t length;
  8. size_t capacity;
  9. size_t dataSize;
  10. void* data;
  11. };
  12. typedef struct QueueT Queue;
  13. void initQueue(Queue* r, size_t capacity, size_t dataSize);
  14. void destroyQueue(Queue* r);
  15. void pushQueueData(Queue* r, const void* data);
  16. #define pushQueueType(l, type, ...) pushQueueData(l, &(type){__VA_ARGS__})
  17. void* getQueueIndex(const Queue* r, size_t index);
  18. #define getTypedQueueIndex(r, index, type) (*(type*)getQueueIndex(r, index))
  19. void clearQueue(Queue* r);
  20. void popQueueData(Queue* r);
  21. #endif