1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 |
- #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__})
- CoreList* coreListAddLast(CoreList* l);
- void* coreListAddEmpty(CoreList* l);
- void* coreListGetVoidPointer(CoreList* l, size_t index);
- #define coreListGetPointer(l, index, type) \
- ((type*)coreListGetVoidPointer(l, index))
- #define coreListGet(l, index, type) (*coreListGetPointer(l, index, type))
- const void* coreListGetVoidPointerC(const CoreList* l, size_t index);
- #define coreListGetPointerC(l, index, type) \
- ((const type*)coreListGetVoidPointerC(l, index))
- #define coreListGetC(l, index, type) (*coreListGetPointerC(l, index, type))
- void* coreListLastVoidPointer(CoreList* l);
- #define coreListLastPointer(l, type) ((type*)coreListLastVoidPointer(l))
- #define coreListLast(l, type) (*coreListLastPointer(l, type))
- const void* coreListLastVoidPointerC(const CoreList* l);
- #define coreListLastPointerC(l, type) ((const type*)coreListLastVoidPointerC(l))
- #define coreListLastC(l, type) (*coreListLastPointerC(l, type))
- 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);
- void* coreListBegin(CoreList* l);
- void* coreListEnd(CoreList* l);
- #endif
|