]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blobdiff - qcsrc/lib/linkedlist.qh
Merge branch 'master' into terencehill/translated_keys
[xonotic/xonotic-data.pk3dir.git] / qcsrc / lib / linkedlist.qh
index 07d99b4f1226f73d843d0304e302d2439d6947e3..aa7d7c9517179a05d06e16ff93788b42f4d4929e 100644 (file)
@@ -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)
@@ -40,7 +40,7 @@ entity LL_POP(LinkedList this)
        LinkedListNode prev = n.ll_prev;
        if (prev) (this.ll_tail = prev).ll_next = NULL;
        else this.ll_head = this.ll_tail = NULL;
-       remove(n);
+       delete(n);
        return e;
 }
 
@@ -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) \
@@ -57,28 +56,26 @@ entity LL_POP(LinkedList this)
                        entity it = LL_POP(_ll); \
                        if (!it) continue; \
                        dtor \
-                       remove(it); \
+                       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); \
-               remove(this); \
+               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))  \
                {                                                               \
-                       noref entity it = _it.ll_data;                              \
+                       ITER_CONST noref entity it = _it.ll_data;                   \
                        if (cond) { body }                                          \
                }                                                               \
-       MACRO_END
+       MACRO_END