6#define GET_OBJ_NODE(list, obj) ((Link *)(((u32)(obj)) + (list)->offset))
19 Link *node = GET_OBJ_NODE(list, obj);
27 Link *node = GET_OBJ_NODE(list, obj);
32 GET_OBJ_NODE(list, list->
tailObject)->nextObject = obj;
44 Link *node = GET_OBJ_NODE(list, obj);
52 Link *node = GET_OBJ_NODE(list, obj);
57 GET_OBJ_NODE(list, list->
headObject)->prevObject = obj;
69 if (target ==
nullptr) {
76 Link *node = GET_OBJ_NODE(list, obj);
77 void *prevObj = GET_OBJ_NODE(list, target)->prevObject;
78 Link *prevNode = GET_OBJ_NODE(list, prevObj);
86 GET_OBJ_NODE(list, target)->prevObject = obj;
94 Link *node = GET_OBJ_NODE(list, obj);
121 if (obj ==
nullptr) {
125 return GET_OBJ_NODE(list, obj)->nextObject;
129 if (obj ==
nullptr) {
133 return GET_OBJ_NODE(list, obj)->prevObject;
Debugging library which includes various utilities used by the rest of nw4r.
void List_Append(List *list, void *obj)
Adds an object to the end of the list.
void List_Prepend(List *list, void *obj)
Adds an object to the beginning of the list.
void List_Remove(List *list, void *obj)
Deletes an object from the list.
void * List_GetPrev(const List *list, const void *obj)
Gets the object linked before the given one.
void List_Init(List *list, u16 offset)
Initializes the list.
void * List_GetNext(const List *list, const void *obj)
Gets the object linked after the given one.
void List_Insert(List *list, void *target, void *obj)
Inserts an object at a specified position in the list.
A doubly-linked list node. See List.
void * prevObject
The previous linked object.
void * nextObject
The next linked object.
A doubly-linked list container. See Link.
void * headObject
The first linked object.
void * tailObject
The last linked object.
u16 numObjects
The linked object count.
u16 offset
The offset of the Link structure in each object.