123456789101112131415161718192021222324252627282930313233343536 |
- #ifndef CORE_LIST_H
- #define CORE_LIST_H
- #include "core/Types.h"
- typedef struct {
- size_t length;
- size_t capacity;
- size_t dataSize;
- void* data;
- } CoreList;
- #define CORE_LIST(dataSize) ((CoreList){0, 0, dataSize, nullptr})
- void coreCopyList(CoreList* l, const CoreList* other);
- void coreMoveList(CoreList* l, CoreList* other);
- void coreDestroyList(CoreList* l);
- void coreListReserve(CoreList* l, size_t n);
- void coreShrinkList(CoreList* l);
- void coreResizeList(CoreList* l, size_t n);
- void coreResizeListPointer(CoreList* l, size_t n, const void* data);
- #define coreResizeListV(l, n, type, ...) \
- coreResizeListPointer(l, n, &(type){__VA_ARGS__})
- CoreList* coreListAddPointer(CoreList* l, const void* data);
- #define coreListAdd(l, type, ...) coreListAddPointer(l, &(type){__VA_ARGS__})
- void* coreListGetPointer(CoreList* l, size_t index);
- #define coreListGet(l, index, type) *(type*)coreListGetPointer(l, index)
- const void* coreListGetPointerC(const CoreList* l, size_t index);
- #define coreListGetC(l, index, type) *(const type*)coreListGetPointerC(l, index)
- void coreClearList(CoreList* l);
- void coreListRemoveBySwap(CoreList* l, size_t index);
- void coreListRemove(CoreList* l, size_t index);
- void coreListRemoveLast(CoreList* l);
- size_t coreToStringList(CoreList* l, char* buffer, size_t n, CoreToString c);
- void coreSwapList(CoreList* a, CoreList* b);
- #endif
|