-#ifndef LINKEDLIST_H
-#define LINKEDLIST_H
+#pragma once
CLASS(LinkedListNode, Object)
ATTRIB(LinkedListNode, ll_data, entity, NULL)
return e;
}
-#define LL_CLEAR(...) EVAL(OVERLOAD(LL_CLEAR, __VA_ARGS__))
+#define LL_CLEAR(...) EVAL_LL_CLEAR(OVERLOAD(LL_CLEAR, __VA_ARGS__))
+#define EVAL_LL_CLEAR(...) __VA_ARGS__
#define LL_CLEAR_1(this) LL_CLEAR_2(this, LAMBDA())
#define LL_CLEAR_2(this, dtor) \
MACRO_BEGIN \
} \
} MACRO_END
-#define LL_DELETE(...) EVAL(OVERLOAD(LL_DELETE, __VA_ARGS__))
+#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(this, dtor); \
+ LL_CLEAR_2(this, dtor); \
remove(this); \
this = NULL; \
} MACRO_END
if (cond) { body } \
} \
} MACRO_END
-
-#endif