12345678910111213141516171819202122232425262728293031 |
- #ifndef CORE_QUEUE_H
- #define CORE_QUEUE_H
- #include "core/Types.h"
- struct CoreQueueT {
- size_t writeIndex;
- size_t readIndex;
- size_t length;
- size_t capacity;
- size_t dataSize;
- void* data;
- };
- typedef struct CoreQueueT CoreQueue;
- void coreInitQueue(CoreQueue* r, size_t capacity, size_t dataSize);
- void coreDestroyQueue(CoreQueue* r);
- void coreQueueAddPointer(CoreQueue* r, const void* data);
- #define coreQueueAdd(l, type, ...) coreQueueAddPointer(l, &(type){__VA_ARGS__})
- void* coreQueueGetVoidPointer(const CoreQueue* r, size_t index);
- #define coreQueueGetPointer(r, index, type) \
- ((type*)coreQueueGetVoidPointer(r, index))
- #define coreQueueGet(r, index, type) (*coreQueueGetPointer(r, index, type))
- const void* coreQueueGetVoidPointerC(const CoreQueue* r, size_t index);
- #define coreQueueGetPointerC(r, index, type) \
- ((const type*)coreQueueGetVoidPointerC(r, index))
- #define coreQueueGetC(r, index, type) (*coreQueueGetPointerC(r, index, type))
- void coreClearQueue(CoreQueue* r);
- void coreQueueRemove(CoreQueue* r);
- #endif
|