X-Git-Url: http://de.git.xonotic.org/?p=xonotic%2Fxonotic-data.pk3dir.git;a=blobdiff_plain;f=qcsrc%2Flib%2Flinkedlist.qh;h=aa7d7c9517179a05d06e16ff93788b42f4d4929e;hp=c518de14132fd84890b66342d41d4a75c41c10f9;hb=45d8904a100765555e622598a39967963733df1d;hpb=5e813f65d212e2cfc5c32eae682c0a1b0c0f73da diff --git a/qcsrc/lib/linkedlist.qh b/qcsrc/lib/linkedlist.qh index c518de141..aa7d7c951 100644 --- a/qcsrc/lib/linkedlist.qh +++ b/qcsrc/lib/linkedlist.qh @@ -1,14 +1,14 @@ #pragma once CLASS(LinkedListNode, Object) - ATTRIB(LinkedListNode, ll_data, entity, NULL) - ATTRIB(LinkedListNode, ll_prev, LinkedListNode, NULL) - ATTRIB(LinkedListNode, ll_next, LinkedListNode, NULL) + ATTRIB(LinkedListNode, ll_data, entity); + ATTRIB(LinkedListNode, ll_prev, LinkedListNode); + ATTRIB(LinkedListNode, ll_next, LinkedListNode); ENDCLASS(LinkedListNode) CLASS(LinkedList, Object) - ATTRIB(LinkedList, ll_head, LinkedListNode, NULL); - ATTRIB(LinkedList, ll_tail, LinkedListNode, NULL); + ATTRIB(LinkedList, ll_head, LinkedListNode); + ATTRIB(LinkedList, ll_tail, LinkedListNode); ENDCLASS(LinkedList) #define LL_NEW() NEW(LinkedList) @@ -49,7 +49,6 @@ entity LL_POP(LinkedList this) #define LL_CLEAR_1(this) LL_CLEAR_2(this, LAMBDA()) #define LL_CLEAR_2(this, dtor) \ MACRO_BEGIN \ - { \ LinkedList _ll = this; \ assert(_ll); \ while (_ll.ll_tail) \ @@ -59,26 +58,24 @@ entity LL_POP(LinkedList this) dtor \ delete(it); \ } \ - } MACRO_END + MACRO_END #define LL_DELETE(...) EVAL_LL_DELETE(OVERLOAD(LL_DELETE, __VA_ARGS__)) #define EVAL_LL_DELETE(...) __VA_ARGS__ #define LL_DELETE_1(this) LL_DELETE_2(this, LAMBDA()) #define LL_DELETE_2(this, dtor) \ MACRO_BEGIN \ - { \ LL_CLEAR_2(this, dtor); \ delete(this); \ this = NULL; \ - } MACRO_END + MACRO_END #define LL_EACH(list, cond, body) \ MACRO_BEGIN \ - { \ noref int i = 0; \ for (entity _it = list.ll_head; _it; (_it = _it.ll_next, ++i)) \ { \ ITER_CONST noref entity it = _it.ll_data; \ if (cond) { body } \ } \ - } MACRO_END + MACRO_END