Standardize naming conventions #12

Merged
abdelrahman merged 26 commits from naming-conventions into main 2026-06-26 17:17:27 +00:00
3 changed files with 180 additions and 180 deletions
Showing only changes of commit 1a0a5b5192 - Show all commits
+20 -20
View File
@@ -20,26 +20,26 @@ BEGIN_C_LINKAGE
typedef struct WpStr8 WpStr8; typedef struct WpStr8 WpStr8;
// NOTE (Abdelrahman): Typedefs to distinguish arrays from regular pointers // NOTE (Abdelrahman): Typedefs to distinguish arrays from regular pointers
typedef void *WpArray; typedef void *WpArray;
typedef void **WpVoidPtrArray; typedef void **WpVoidPtrArray;
typedef c8 *WpC8Array; typedef c8 *WpC8Array;
typedef c16 *WpC16Array; typedef c16 *WpC16Array;
typedef c32 *WpC32Array; typedef c32 *WpC32Array;
typedef u8 *WpU8Array; typedef u8 *WpU8Array;
typedef u16 *WpU16Array; typedef u16 *WpU16Array;
typedef u32 *WpU32Array; typedef u32 *WpU32Array;
typedef u64 *WpU64Array; typedef u64 *WpU64Array;
typedef b8 *WpB8Array; typedef b8 *WpB8Array;
typedef i8 *WpI8Array; typedef i8 *WpI8Array;
typedef i16 *WpI16Array; typedef i16 *WpI16Array;
typedef i32 *WpI32Array; typedef i32 *WpI32Array;
typedef i64 *WpI64Array; typedef i64 *WpI64Array;
typedef f32 *WpF32Array; typedef f32 *WpF32Array;
typedef f64 *WpF64Array; typedef f64 *WpF64Array;
typedef f128 *WpF128Array; typedef f128 *WpF128Array;
typedef uptr *WpUptrArray; typedef uptr *WpUptrArray;
typedef iptr *WpIptrArray; typedef iptr *WpIptrArray;
typedef WpStr8 *WpStr8Array; typedef WpStr8 *WpStr8Array;
typedef enum { typedef enum {
WP_ARRAY_INIT_NONE = 0, WP_ARRAY_INIT_NONE = 0,
+57 -57
View File
@@ -7,46 +7,46 @@
#include "../../common/platform/platform.h" #include "../../common/platform/platform.h"
#include <stddef.h> #include <stddef.h>
wp_intern GenericList _node_to_list(GenericNode *node, u64 item_size); wp_intern WpDblList _node_to_list(WpDblNode *node, u64 item_size);
wp_intern inline void _dbl_list_validate(const GenericList *list, u64 item_size); wp_intern inline void _dblListValidate(const WpDblList *list, u64 item_size);
wp_intern inline void _dbl_list_node_validate(const GenericList *list, const GenericNode *node, u64 item_size); wp_intern inline void _dblListNodeValidate(const WpDblList *list, const WpDblNode *node, u64 item_size);
GenericList *_dbl_list_alloc(const WpAllocator *allocator, u64 item_size) { WpDblList *_dblListAlloc(const WpAllocator *allocator, u64 item_size) {
wpDebugAssert(allocator != NULL, "`allocator` should not be NULL"); wpDebugAssert(allocator != NULL, "`allocator` should not be NULL");
GenericList *list = wpMemAllocatorAlloc(allocator, sizeof(GenericList)); WpDblList *list = wpMemAllocatorAlloc(allocator, sizeof(WpDblList));
if (!list) { goto DBL_LIST_ALLOC_RETURN; } if (!list) { goto DBL_LIST_ALLOC_RETURN; }
memset((void *)list, 0, sizeof(GenericList)); memset((void *)list, 0, sizeof(WpDblList));
list->magic = WAPP_DBL_LIST_MAGIC; list->magic = WP_DBL_LIST_MAGIC;
list->item_size = item_size; list->item_size = item_size;
DBL_LIST_ALLOC_RETURN: DBL_LIST_ALLOC_RETURN:
return list; return list;
} }
GenericNode *_dbl_list_node_alloc(const WpAllocator *allocator, void *item, u64 item_size) { WpDblNode *_dblListNodeAlloc(const WpAllocator *allocator, void *item, u64 item_size) {
wpDebugAssert(allocator != NULL, "`allocator` should not be NULL"); wpDebugAssert(allocator != NULL, "`allocator` should not be NULL");
GenericNode *node = wpMemAllocatorAlloc(allocator, sizeof(GenericNode)); WpDblNode *node = wpMemAllocatorAlloc(allocator, sizeof(WpDblNode));
if (!node) { goto DBL_LIST_NODE_ALLOC_RETURN; } if (!node) { goto DBL_LIST_NODE_ALLOC_RETURN; }
memset((void *)node, 0, sizeof(GenericNode)); memset((void *)node, 0, sizeof(WpDblNode));
node->item = item; node->item = item;
node->header.magic = WAPP_DBL_NODE_MAGIC; node->header.magic = WP_DBL_NODE_MAGIC;
node->header.item_size = item_size; node->header.item_size = item_size;
DBL_LIST_NODE_ALLOC_RETURN: DBL_LIST_NODE_ALLOC_RETURN:
return node; return node;
} }
GenericNode *_dbl_list_get(const GenericList *list, u64 index, u64 item_size) { WpDblNode *_dblListGet(const WpDblList *list, u64 index, u64 item_size) {
wpDebugAssert(list != NULL, "`list` should not be NULL"); wpDebugAssert(list != NULL, "`list` should not be NULL");
_dbl_list_validate(list, item_size); _dblListValidate(list, item_size);
wpRuntimeAssert(index < list->node_count, "`index` is out of bounds"); wpRuntimeAssert(index < list->node_count, "`index` is out of bounds");
GenericNode *output = NULL; WpDblNode *output = NULL;
GenericNode *current = list->first; WpDblNode *current = list->first;
for (u64 i = 1; i <= index; ++i) { for (u64 i = 1; i <= index; ++i) {
current = current->header.next; current = current->header.next;
} }
@@ -56,12 +56,12 @@ GenericNode *_dbl_list_get(const GenericList *list, u64 index, u64 item_size) {
return output; return output;
} }
void _dbl_list_push_front(GenericList *list, GenericNode *node, u64 item_size) { void _dblListPushFront(WpDblList *list, WpDblNode *node, u64 item_size) {
wpDebugAssert(list != NULL && node != NULL && (node->item) != NULL, "`list`, `node` and `node->item` should not be NULL"); wpDebugAssert(list != NULL && node != NULL && (node->item) != NULL, "`list`, `node` and `node->item` should not be NULL");
_dbl_list_validate(list, item_size); _dblListValidate(list, item_size);
_dbl_list_node_validate(list, node, item_size); _dblListNodeValidate(list, node, item_size);
GenericList node_list = _node_to_list(node, item_size); WpDblList node_list = _node_to_list(node, item_size);
if (list->node_count == 0) { if (list->node_count == 0) {
*list = node_list; *list = node_list;
@@ -70,7 +70,7 @@ void _dbl_list_push_front(GenericList *list, GenericNode *node, u64 item_size) {
list->node_count += node_list.node_count; list->node_count += node_list.node_count;
GenericNode *first = list->first; WpDblNode *first = list->first;
if (first) { if (first) {
first->header.prev = node_list.last; first->header.prev = node_list.last;
} }
@@ -79,12 +79,12 @@ void _dbl_list_push_front(GenericList *list, GenericNode *node, u64 item_size) {
node_list.last->header.next = first; node_list.last->header.next = first;
} }
void _dbl_list_push_back(GenericList *list, GenericNode *node, u64 item_size) { void _dblListPushBack(WpDblList *list, WpDblNode *node, u64 item_size) {
wpDebugAssert(list != NULL && node != NULL && (node->item) != NULL, "`list`, `node` and `node->item` should not be NULL"); wpDebugAssert(list != NULL && node != NULL && (node->item) != NULL, "`list`, `node` and `node->item` should not be NULL");
_dbl_list_validate(list, item_size); _dblListValidate(list, item_size);
_dbl_list_node_validate(list, node, item_size); _dblListNodeValidate(list, node, item_size);
GenericList node_list = _node_to_list(node, item_size); WpDblList node_list = _node_to_list(node, item_size);
if (list->node_count == 0) { if (list->node_count == 0) {
*list = node_list; *list = node_list;
@@ -93,7 +93,7 @@ void _dbl_list_push_back(GenericList *list, GenericNode *node, u64 item_size) {
list->node_count += node_list.node_count; list->node_count += node_list.node_count;
GenericNode *last = list->last; WpDblNode *last = list->last;
if (last) { if (last) {
last->header.next = node_list.first; last->header.next = node_list.first;
} }
@@ -102,29 +102,29 @@ void _dbl_list_push_back(GenericList *list, GenericNode *node, u64 item_size) {
node_list.first->header.prev = last; node_list.first->header.prev = last;
} }
void _dbl_list_insert(GenericList *list, GenericNode *node, u64 index, u64 item_size) { void _dblListInsert(WpDblList *list, WpDblNode *node, u64 index, u64 item_size) {
wpDebugAssert(list != NULL && node != NULL && (node->item) != NULL, "`list`, `node` and `node->item` should not be NULL"); wpDebugAssert(list != NULL && node != NULL && (node->item) != NULL, "`list`, `node` and `node->item` should not be NULL");
_dbl_list_validate(list, item_size); _dblListValidate(list, item_size);
_dbl_list_node_validate(list, node, item_size); _dblListNodeValidate(list, node, item_size);
if (index == 0) { if (index == 0) {
_dbl_list_push_front(list, node, item_size); _dblListPushFront(list, node, item_size);
return; return;
} else if (index == list->node_count) { } else if (index == list->node_count) {
_dbl_list_push_back(list, node, item_size); _dblListPushBack(list, node, item_size);
return; return;
} }
GenericNode *dst_node = _dbl_list_get(list, index, item_size); WpDblNode *dst_node = _dblListGet(list, index, item_size);
if (!dst_node) { if (!dst_node) {
return; return;
} }
GenericList node_list = _node_to_list(node, item_size); WpDblList node_list = _node_to_list(node, item_size);
list->node_count += node_list.node_count; list->node_count += node_list.node_count;
GenericNode *prev = dst_node->header.prev; WpDblNode *prev = dst_node->header.prev;
dst_node->header.prev = node_list.last; dst_node->header.prev = node_list.last;
prev->header.next = node_list.first; prev->header.next = node_list.first;
@@ -133,11 +133,11 @@ void _dbl_list_insert(GenericList *list, GenericNode *node, u64 index, u64 item_
node_list.last->header.next = dst_node; node_list.last->header.next = dst_node;
} }
GenericNode *_dbl_list_pop_front(GenericList *list, u64 item_size) { WpDblNode *_dblListPopFront(WpDblList *list, u64 item_size) {
wpDebugAssert(list != NULL, "`list` should not be NULL"); wpDebugAssert(list != NULL, "`list` should not be NULL");
_dbl_list_validate(list, item_size); _dblListValidate(list, item_size);
GenericNode *output = NULL; WpDblNode *output = NULL;
if (list->node_count == 0) { if (list->node_count == 0) {
goto RETURN_LIST_POP_FRONT; goto RETURN_LIST_POP_FRONT;
@@ -146,7 +146,7 @@ GenericNode *_dbl_list_pop_front(GenericList *list, u64 item_size) {
output = list->first; output = list->first;
if (list->node_count == 1) { if (list->node_count == 1) {
*list = (GenericList){.magic = WAPP_DBL_LIST_MAGIC, .item_size = item_size}; *list = (WpDblList){.magic = WP_DBL_LIST_MAGIC, .item_size = item_size};
goto RETURN_LIST_POP_FRONT; goto RETURN_LIST_POP_FRONT;
} }
@@ -159,11 +159,11 @@ RETURN_LIST_POP_FRONT:
return output; return output;
} }
GenericNode *_dbl_list_pop_back(GenericList *list, u64 item_size) { WpDblNode *_dblListPopBack(WpDblList *list, u64 item_size) {
wpDebugAssert(list != NULL, "`list` should not be NULL"); wpDebugAssert(list != NULL, "`list` should not be NULL");
_dbl_list_validate(list, item_size); _dblListValidate(list, item_size);
GenericNode *output = NULL; WpDblNode *output = NULL;
if (list->node_count == 0) { if (list->node_count == 0) {
goto RETURN_LIST_POP_BACK; goto RETURN_LIST_POP_BACK;
@@ -172,7 +172,7 @@ GenericNode *_dbl_list_pop_back(GenericList *list, u64 item_size) {
output = list->last; output = list->last;
if (list->node_count == 1) { if (list->node_count == 1) {
*list = (GenericList){.magic = WAPP_DBL_LIST_MAGIC, .item_size = item_size}; *list = (WpDblList){.magic = WP_DBL_LIST_MAGIC, .item_size = item_size};
goto RETURN_LIST_POP_BACK; goto RETURN_LIST_POP_BACK;
} }
@@ -185,21 +185,21 @@ RETURN_LIST_POP_BACK:
return output; return output;
} }
GenericNode *_dbl_list_remove(GenericList *list, u64 index, u64 item_size) { WpDblNode *_dblListRemove(WpDblList *list, u64 index, u64 item_size) {
wpDebugAssert(list != NULL, "`list` should not be NULL"); wpDebugAssert(list != NULL, "`list` should not be NULL");
_dbl_list_validate(list, item_size); _dblListValidate(list, item_size);
GenericNode *output = NULL; WpDblNode *output = NULL;
if (index == 0) { if (index == 0) {
output = _dbl_list_pop_front(list, item_size); output = _dblListPopFront(list, item_size);
goto RETURN_LIST_REMOVE; goto RETURN_LIST_REMOVE;
} else if (index == list->node_count) { } else if (index == list->node_count) {
output = _dbl_list_pop_back(list, item_size); output = _dblListPopBack(list, item_size);
goto RETURN_LIST_REMOVE; goto RETURN_LIST_REMOVE;
} }
output = _dbl_list_get(list, index, item_size); output = _dblListGet(list, index, item_size);
if (!output) { if (!output) {
goto RETURN_LIST_REMOVE; goto RETURN_LIST_REMOVE;
} }
@@ -215,19 +215,19 @@ RETURN_LIST_REMOVE:
return output; return output;
} }
void _dbl_list_empty(GenericList *list, u64 item_size) { void _dblListEmpty(WpDblList *list, u64 item_size) {
wpDebugAssert(list != NULL, "`list` should not be NULL"); wpDebugAssert(list != NULL, "`list` should not be NULL");
_dbl_list_validate(list, item_size); _dblListValidate(list, item_size);
u64 count = list->node_count; u64 count = list->node_count;
for (u64 i = 0; i < count; ++i) { for (u64 i = 0; i < count; ++i) {
_dbl_list_pop_back(list, item_size); _dblListPopBack(list, item_size);
} }
} }
wp_intern GenericList _node_to_list(GenericNode *node, u64 item_size) { wp_intern WpDblList _node_to_list(WpDblNode *node, u64 item_size) {
GenericList output = { WpDblList output = {
.magic = WAPP_DBL_LIST_MAGIC, .magic = WP_DBL_LIST_MAGIC,
.first = node, .first = node,
.last = node, .last = node,
.node_count = 1, .node_count = 1,
@@ -247,13 +247,13 @@ wp_intern GenericList _node_to_list(GenericNode *node, u64 item_size) {
return output; return output;
} }
wp_intern inline void _dbl_list_validate(const GenericList *list, u64 item_size) { wp_intern inline void _dblListValidate(const WpDblList *list, u64 item_size) {
wpRuntimeAssert(list->magic == WAPP_DBL_LIST_MAGIC, "`list` isn't a valid wapp list type"); wpRuntimeAssert(list->magic == WP_DBL_LIST_MAGIC, "`list` isn't a valid wp list type");
wpRuntimeAssert(list->item_size == item_size, "Invalid item provided"); wpRuntimeAssert(list->item_size == item_size, "Invalid item provided");
} }
wp_intern inline void _dbl_list_node_validate(const GenericList *list, const GenericNode *node, u64 item_size) { wp_intern inline void _dblListNodeValidate(const WpDblList *list, const WpDblNode *node, u64 item_size) {
wpRuntimeAssert(node->header.magic == WAPP_DBL_NODE_MAGIC, "`node` isn't a valid wapp node type"); wpRuntimeAssert(node->header.magic == WP_DBL_NODE_MAGIC, "`node` isn't a valid wp node type");
wpRuntimeAssert(list->item_size == node->header.item_size, "Mismatched `list` and `node` types"); wpRuntimeAssert(list->item_size == node->header.item_size, "Mismatched `list` and `node` types");
wpRuntimeAssert(node->header.item_size == item_size, "Invalid item provided"); wpRuntimeAssert(node->header.item_size == item_size, "Invalid item provided");
} }
+103 -103
View File
@@ -11,20 +11,20 @@
BEGIN_C_LINKAGE BEGIN_C_LINKAGE
#endif // !WP_PLATFORM_CPP #endif // !WP_PLATFORM_CPP
#define WAPP_DBL_LIST_MAGIC (u64)0x57415f444c5354 #define WP_DBL_LIST_MAGIC (u64)0x57415f444c5354
#define WAPP_DBL_NODE_MAGIC (u64)0x57415f444e44 #define WP_DBL_NODE_MAGIC (u64)0x57415f444e44
typedef struct GenericNode GenericNode; typedef struct WpDblNode WpDblNode;
typedef struct { typedef struct {
u64 magic; u64 magic;
u64 item_size; u64 item_size;
GenericNode *prev; WpDblNode *prev;
GenericNode *next; WpDblNode *next;
} NodeHeader; } WpDblNodeHeader;
struct GenericNode { struct WpDblNode {
NodeHeader header; WpDblNodeHeader header;
void *item; void *item;
}; };
@@ -32,150 +32,150 @@ typedef struct {
u64 magic; u64 magic;
u64 node_count; u64 node_count;
u64 item_size; u64 item_size;
GenericNode *first; WpDblNode *first;
GenericNode *last; WpDblNode *last;
} GenericList; } WpDblList;
// NOTE (Abdelrahman): GenericList typedefs for readability // NOTE (Abdelrahman): WpDblList typedefs for readability
typedef GenericList VoidPtrList; typedef WpDblList WpVoidPtrList;
typedef GenericList C8List; typedef WpDblList WpC8List;
typedef GenericList C16List; typedef WpDblList WpC16List;
typedef GenericList C32List; typedef WpDblList WpC32List;
typedef GenericList U8List; typedef WpDblList WpU8List;
typedef GenericList U16List; typedef WpDblList WpU16List;
typedef GenericList U32List; typedef WpDblList WpU32List;
typedef GenericList U64List; typedef WpDblList WpU64List;
typedef GenericList B8List; typedef WpDblList WpB8List;
typedef GenericList I8List; typedef WpDblList WpI8List;
typedef GenericList I16List; typedef WpDblList WpI16List;
typedef GenericList I32List; typedef WpDblList WpI32List;
typedef GenericList I64List; typedef WpDblList WpI64List;
typedef GenericList F32List; typedef WpDblList WpF32List;
typedef GenericList F64List; typedef WpDblList WpF64List;
typedef GenericList F128List; typedef WpDblList WpF128List;
typedef GenericList UptrList; typedef WpDblList WpUptrList;
typedef GenericList IptrList; typedef WpDblList WpIptrList;
typedef GenericList WpStr8List; typedef WpDblList WpStr8List;
// NOTE (Abdelrahman): GenericNode typedefs for readability // NOTE (Abdelrahman): WpDblNode typedefs for readability
typedef GenericNode VoidPtrNode; typedef WpDblNode WpVoidPtrNode;
typedef GenericNode C8Node; typedef WpDblNode WpC8Node;
typedef GenericNode C16Node; typedef WpDblNode WpC16Node;
typedef GenericNode C32Node; typedef WpDblNode WpC32Node;
typedef GenericNode U8Node; typedef WpDblNode WpU8Node;
typedef GenericNode U16Node; typedef WpDblNode WpU16Node;
typedef GenericNode U32Node; typedef WpDblNode WpU32Node;
typedef GenericNode U64Node; typedef WpDblNode WpU64Node;
typedef GenericNode B8Node; typedef WpDblNode WpB8Node;
typedef GenericNode I8Node; typedef WpDblNode WpI8Node;
typedef GenericNode I16Node; typedef WpDblNode WpI16Node;
typedef GenericNode I32Node; typedef WpDblNode WpI32Node;
typedef GenericNode I64Node; typedef WpDblNode WpI64Node;
typedef GenericNode F32Node; typedef WpDblNode WpF32Node;
typedef GenericNode F64Node; typedef WpDblNode WpF64Node;
typedef GenericNode F128Node; typedef WpDblNode WpF128Node;
typedef GenericNode UptrNode; typedef WpDblNode WpUptrNode;
typedef GenericNode IptrNode; typedef WpDblNode WpIptrNode;
typedef GenericNode WpStr8Node; typedef WpDblNode WpStr8Node;
#ifdef WP_PLATFORM_CPP #ifdef WP_PLATFORM_CPP
#define wapp_dbl_list(TYPE) \ #define wpDblList(TYPE) \
GenericList{WAPP_DBL_LIST_MAGIC, 0, sizeof(TYPE), nullptr, nullptr} WpDblList{WP_DBL_LIST_MAGIC, 0, sizeof(TYPE), nullptr, nullptr}
#define _dbl_list_node(TYPE, ITEM_PTR) ([&]() { \ #define _dblListNode(TYPE, ITEM_PTR) ([&]() { \
wp_persist GenericNode node = { \ wp_persist WpDblNode node = { \
NodeHeader{WAPP_DBL_NODE_MAGIC, sizeof(TYPE), nullptr, nullptr}, \ WpDblNodeHeader{WP_DBL_NODE_MAGIC, sizeof(TYPE), nullptr, nullptr}, \
ITEM_PTR, \ ITEM_PTR, \
}; \ }; \
\ \
return &node; \ return &node; \
}()) }())
#else #else
#define wapp_dbl_list(TYPE) ( \ #define wpDblList(TYPE) ( \
(GenericList){.magic = WAPP_DBL_LIST_MAGIC, .item_size = sizeof(TYPE)} \ (WpDblList){.magic = WP_DBL_LIST_MAGIC, .item_size = sizeof(TYPE)} \
) )
#define _dbl_list_node(TYPE, ITEM_PTR) ( \ #define _dblListNode(TYPE, ITEM_PTR) ( \
&((GenericNode){.header = {.magic = WAPP_DBL_NODE_MAGIC, .item_size = sizeof(TYPE)}, \ &((WpDblNode){.header = {.magic = WP_DBL_NODE_MAGIC, .item_size = sizeof(TYPE)}, \
.item = ITEM_PTR}) \ .item = ITEM_PTR}) \
) )
#endif // !WP_PLATFORM_CPP #endif // !WP_PLATFORM_CPP
#define wapp_dbl_list_alloc(TYPE, ALLOCATOR) \ #define wpDblListAlloc(TYPE, ALLOCATOR) \
(_dbl_list_alloc(ALLOCATOR, sizeof(TYPE))) (_dblListAlloc(ALLOCATOR, sizeof(TYPE)))
#define wapp_dbl_list_get(TYPE, LIST_PTR, ITEM_INDEX) \ #define wpDblListGet(TYPE, LIST_PTR, ITEM_INDEX) \
((TYPE *)(_dbl_list_get(LIST_PTR, ITEM_INDEX, sizeof(TYPE))->item)) ((TYPE *)(_dblListGet(LIST_PTR, ITEM_INDEX, sizeof(TYPE))->item))
#define wapp_dbl_list_get_node(TYPE, LIST_PTR, ITEM_INDEX) \ #define wpDblListGet_node(TYPE, LIST_PTR, ITEM_INDEX) \
(_dbl_list_get(LIST_PTR, ITEM_INDEX, sizeof(TYPE))) (_dblListGet(LIST_PTR, ITEM_INDEX, sizeof(TYPE)))
#define wapp_dbl_list_get_node_item(TYPE, NODE_PTR) \ #define wpDblListGet_node_item(TYPE, NODE_PTR) \
((TYPE *)( \ ((TYPE *)( \
(NODE_PTR == NULL) ? \ (NODE_PTR == NULL) ? \
NULL : \ NULL : \
(NODE_PTR)->item \ (NODE_PTR)->item \
)) ))
#define wapp_dbl_list_push_front(TYPE, LIST_PTR, ITEM_PTR) \ #define wpDblListPush_front(TYPE, LIST_PTR, ITEM_PTR) \
(_dbl_list_push_front(LIST_PTR, _dbl_list_node(TYPE, ITEM_PTR), sizeof(TYPE))) (_dblListPushFront(LIST_PTR, _dblListNode(TYPE, ITEM_PTR), sizeof(TYPE)))
#define wapp_dbl_list_push_back(TYPE, LIST_PTR, ITEM_PTR) \ #define wpDblListPush_back(TYPE, LIST_PTR, ITEM_PTR) \
(_dbl_list_push_back(LIST_PTR, _dbl_list_node(TYPE, ITEM_PTR), sizeof(TYPE))) (_dblListPushBack(LIST_PTR, _dblListNode(TYPE, ITEM_PTR), sizeof(TYPE)))
#define wapp_dbl_list_insert(TYPE, LIST_PTR, ITEM_PTR, ITEM_INDEX) \ #define wpDblListInsert(TYPE, LIST_PTR, ITEM_PTR, ITEM_INDEX) \
(_dbl_list_insert(LIST_PTR, _dbl_list_node(TYPE, ITEM_PTR), \ (_dblListInsert(LIST_PTR, _dblListNode(TYPE, ITEM_PTR), \
ITEM_INDEX, sizeof(TYPE))) ITEM_INDEX, sizeof(TYPE)))
#define wapp_dbl_list_push_front_alloc(TYPE, ALLOCATOR, LIST_PTR, ITEM_PTR) \ #define wpDblListPush_front_alloc(TYPE, ALLOCATOR, LIST_PTR, ITEM_PTR) \
(_dbl_list_push_front(LIST_PTR, _dbl_list_node_alloc(ALLOCATOR, ITEM_PTR, sizeof(TYPE)), \ (_dblListPushFront(LIST_PTR, _dblListNodeAlloc(ALLOCATOR, ITEM_PTR, sizeof(TYPE)), \
sizeof(TYPE))) sizeof(TYPE)))
#define wapp_dbl_list_push_back_alloc(TYPE, ALLOCATOR, LIST_PTR, ITEM_PTR) \ #define wpDblListPush_back_alloc(TYPE, ALLOCATOR, LIST_PTR, ITEM_PTR) \
(_dbl_list_push_back(LIST_PTR, _dbl_list_node_alloc(ALLOCATOR, ITEM_PTR, sizeof(TYPE)), \ (_dblListPushBack(LIST_PTR, _dblListNodeAlloc(ALLOCATOR, ITEM_PTR, sizeof(TYPE)), \
sizeof(TYPE))) sizeof(TYPE)))
#define wapp_dbl_list_insert_alloc(TYPE, ALLOCATOR, LIST_PTR, ITEM_PTR, ITEM_INDEX) \ #define wpDblListInsert_alloc(TYPE, ALLOCATOR, LIST_PTR, ITEM_PTR, ITEM_INDEX) \
(_dbl_list_insert(LIST_PTR, _dbl_list_node_alloc(ALLOCATOR, ITEM_PTR, sizeof(TYPE)), \ (_dblListInsert(LIST_PTR, _dblListNodeAlloc(ALLOCATOR, ITEM_PTR, sizeof(TYPE)), \
ITEM_INDEX, sizeof(TYPE))) ITEM_INDEX, sizeof(TYPE)))
#define wapp_dbl_list_pop_front(TYPE, LIST_PTR) \ #define wpDblListPop_front(TYPE, LIST_PTR) \
((TYPE *)( \ ((TYPE *)( \
(LIST_PTR == NULL || (LIST_PTR)->node_count == 0) ? \ (LIST_PTR == NULL || (LIST_PTR)->node_count == 0) ? \
NULL : \ NULL : \
_dbl_list_pop_front(LIST_PTR, sizeof(TYPE))->item \ _dblListPopFront(LIST_PTR, sizeof(TYPE))->item \
)) ))
#define wapp_dbl_list_pop_back(TYPE, LIST_PTR) \ #define wpDblListPop_back(TYPE, LIST_PTR) \
((TYPE *)( \ ((TYPE *)( \
(LIST_PTR == NULL || (LIST_PTR)->node_count == 0) ? \ (LIST_PTR == NULL || (LIST_PTR)->node_count == 0) ? \
NULL : \ NULL : \
_dbl_list_pop_back(LIST_PTR, sizeof(TYPE))->item \ _dblListPopBack(LIST_PTR, sizeof(TYPE))->item \
)) ))
#define wapp_dbl_list_remove(TYPE, LIST_PTR, ITEM_INDEX) \ #define wpDblListRemove(TYPE, LIST_PTR, ITEM_INDEX) \
((TYPE *)( \ ((TYPE *)( \
(LIST_PTR == NULL || (LIST_PTR)->node_count == 0 || ITEM_INDEX >= (LIST_PTR)->node_count) ? \ (LIST_PTR == NULL || (LIST_PTR)->node_count == 0 || ITEM_INDEX >= (LIST_PTR)->node_count) ? \
NULL : \ NULL : \
_dbl_list_remove(LIST_PTR, ITEM_INDEX, sizeof(TYPE))->item \ _dblListRemove(LIST_PTR, ITEM_INDEX, sizeof(TYPE))->item \
)) ))
#define wapp_dbl_list_pop_front_node(TYPE, LIST_PTR) \ #define wpDblListPop_front_node(TYPE, LIST_PTR) \
( \ ( \
(LIST_PTR == NULL || (LIST_PTR)->node_count == 0) ? \ (LIST_PTR == NULL || (LIST_PTR)->node_count == 0) ? \
NULL : \ NULL : \
_dbl_list_pop_front(LIST_PTR, sizeof(TYPE)) \ _dblListPopFront(LIST_PTR, sizeof(TYPE)) \
) )
#define wapp_dbl_list_pop_back_node(TYPE, LIST_PTR) \ #define wpDblListPop_back_node(TYPE, LIST_PTR) \
( \ ( \
(LIST_PTR == NULL || (LIST_PTR)->node_count == 0) ? \ (LIST_PTR == NULL || (LIST_PTR)->node_count == 0) ? \
NULL : \ NULL : \
_dbl_list_pop_back(LIST_PTR, sizeof(TYPE)) \ _dblListPopBack(LIST_PTR, sizeof(TYPE)) \
) )
#define wapp_dbl_list_remove_node(TYPE, LIST_PTR, ITEM_INDEX) \ #define wpDblListRemove_node(TYPE, LIST_PTR, ITEM_INDEX) \
( \ ( \
(LIST_PTR == NULL || (LIST_PTR)->node_count == 0 || ITEM_INDEX >= (LIST_PTR)->node_count) ? \ (LIST_PTR == NULL || (LIST_PTR)->node_count == 0 || ITEM_INDEX >= (LIST_PTR)->node_count) ? \
NULL : \ NULL : \
_dbl_list_remove(LIST_PTR, ITEM_INDEX, sizeof(TYPE)) \ _dblListRemove(LIST_PTR, ITEM_INDEX, sizeof(TYPE)) \
) )
#define wapp_dbl_list_empty(TYPE, LIST_PTR) \ #define wpDblListEmpty(TYPE, LIST_PTR) \
(_dbl_list_empty(LIST_PTR, sizeof(TYPE))) (_dblListEmpty(LIST_PTR, sizeof(TYPE)))
GenericList *_dbl_list_alloc(const WpAllocator *allocator, u64 item_size); WpDblList *_dblListAlloc(const WpAllocator *allocator, u64 item_size);
GenericNode *_dbl_list_node_alloc(const WpAllocator *allocator, void *item, u64 item_size); WpDblNode *_dblListNodeAlloc(const WpAllocator *allocator, void *item, u64 item_size);
GenericNode *_dbl_list_get(const GenericList *list, u64 index, u64 item_size); WpDblNode *_dblListGet(const WpDblList *list, u64 index, u64 item_size);
void _dbl_list_push_front(GenericList *list, GenericNode *node, u64 item_size); void _dblListPushFront(WpDblList *list, WpDblNode *node, u64 item_size);
void _dbl_list_push_back(GenericList *list, GenericNode *node, u64 item_size); void _dblListPushBack(WpDblList *list, WpDblNode *node, u64 item_size);
void _dbl_list_insert(GenericList *list, GenericNode *node, u64 index, u64 item_size); void _dblListInsert(WpDblList *list, WpDblNode *node, u64 index, u64 item_size);
GenericNode *_dbl_list_pop_front(GenericList *list, u64 item_size); WpDblNode *_dblListPopFront(WpDblList *list, u64 item_size);
GenericNode *_dbl_list_pop_back(GenericList *list, u64 item_size); WpDblNode *_dblListPopBack(WpDblList *list, u64 item_size);
GenericNode *_dbl_list_remove(GenericList *list, u64 index, u64 item_size); WpDblNode *_dblListRemove(WpDblList *list, u64 index, u64 item_size);
void _dbl_list_empty(GenericList *list, u64 item_size); void _dblListEmpty(WpDblList *list, u64 item_size);
#ifdef WP_PLATFORM_CPP #ifdef WP_PLATFORM_CPP
END_C_LINKAGE END_C_LINKAGE