ZyanListNode
ZyanListNode* first_unused;
ZYCORE_EXPORT ZyanStatus ZyanListGetHeadNode(const ZyanList* list, const ZyanListNode** node);
ZYCORE_EXPORT ZyanStatus ZyanListGetTailNode(const ZyanList* list, const ZyanListNode** node);
ZYCORE_EXPORT ZyanStatus ZyanListGetPrevNode(const ZyanListNode** node);
ZYCORE_EXPORT ZyanStatus ZyanListGetNextNode(const ZyanListNode** node);
ZYCORE_EXPORT const void* ZyanListGetNodeData(const ZyanListNode* node);
ZYCORE_EXPORT ZyanStatus ZyanListGetNodeDataEx(const ZyanListNode* node, const void** value);
ZYCORE_EXPORT void* ZyanListGetNodeDataMutable(const ZyanListNode* node);
ZYCORE_EXPORT ZyanStatus ZyanListGetNodeDataMutableEx(const ZyanListNode* node, void** value);
ZYCORE_EXPORT ZyanStatus ZyanListSetNodeData(const ZyanList* list, const ZyanListNode* node,
ZYCORE_EXPORT ZyanStatus ZyanListRemove(ZyanList* list, const ZyanListNode* node);
ZYCORE_EXPORT ZyanStatus ZyanListRemoveRange(ZyanList* list, const ZyanListNode* first,
const ZyanListNode* last);
ZyanListNode* head;
ZyanListNode* tail;
static ZyanStatus ZyanListDeallocateNode(ZyanList* list, ZyanListNode* node)
sizeof(ZyanListNode) + list->element_size, 1));
ZyanListNode* node = (is_dynamic || list->destructor) ? list->head : ZYAN_NULL;
ZyanListNode* const next = node->next;
sizeof(ZyanListNode) + list->element_size, 1));
ZyanStatus ZyanListGetHeadNode(const ZyanList* list, const ZyanListNode** node)
ZyanStatus ZyanListGetTailNode(const ZyanList* list, const ZyanListNode** node)
ZyanStatus ZyanListGetPrevNode(const ZyanListNode** node)
ZyanStatus ZyanListGetNextNode(const ZyanListNode** node)
const void* ZyanListGetNodeData(const ZyanListNode* node)
ZyanStatus ZyanListGetNodeDataEx(const ZyanListNode* node, const void** value)
void* ZyanListGetNodeDataMutable(const ZyanListNode* node)
ZyanStatus ZyanListGetNodeDataMutableEx(const ZyanListNode* node, void** value)
ZyanStatus ZyanListSetNodeData(const ZyanList* list, const ZyanListNode* node, const void* value)
ZyanListNode* node;
ZyanListNode* node;
ZyanListNode* node;
ZyanListNode* node;
ZyanListNode* const node = list->tail;
ZyanListNode* const node = list->head;
ZyanStatus ZyanListRemove(ZyanList* list, const ZyanListNode* node)
ZyanStatus ZyanListRemoveRange(ZyanList* list, const ZyanListNode* first, const ZyanListNode* last)
ZyanListNode* node = (is_dynamic || list->destructor) ? list->head : ZYAN_NULL;
ZyanListNode* const next = node->next;
sizeof(ZyanListNode) + list->element_size, 1));
static ZyanStatus ZyanListAllocateNode(ZyanList* list, ZyanListNode** node)
ZyanListNode* node;
ZyanListNode* const node = list->tail;
sizeof(ZyanListNode) + list->element_size, 1));
const ZyanUSize size = list->size * (sizeof(ZyanListNode) + list->element_size);
if (size + (sizeof(ZyanListNode) + list->element_size) > list->capacity)
*node = (ZyanListNode*)((ZyanU8*)list->buffer + size);