-/* These macros are for insertion into and deletion from a singly-linked list
- * with back pointers to the previous element's next pointer. In order to
- * make these macros act like expressions, they use the comma operator for
- * sequenced evaluations of assignment, and "a && b" for "evaluate assignment
- * b if expression a is true". */
-#define LIST_INSERT(head, elem) \
- ((elem)->next = *(head), \
- (*head) && ((*(head))->prev_p = &(elem)->next), \
- (*head) = (elem), (elem)->prev_p = (head))
-#define LIST_DELETE(elem) \
- (*(elem)->prev_p = (elem)->next, \
- (elem)->next && ((elem)->next->prev_p = (elem)->prev_p))
-