rx-queue-macros-rename-20050530
authorDerrick Brashear <shadow@dementia.org>
Tue, 31 May 2005 03:11:38 +0000 (03:11 +0000)
committerDerrick Brashear <shadow@dementia.org>
Tue, 31 May 2005 03:11:38 +0000 (03:11 +0000)
/usr/include/ctype.h on macos 10.3.9 now uses _Q

bah

src/rx/rx_queue.h

index 3fbc186..fcd813c 100644 (file)
@@ -58,14 +58,14 @@ for (n=0, queue_Scan(&myqueue, qe, nqe, myelement), n++) {}
 /* INTERNAL macros */
 
 /* This one coerces the user's structure to a queue element (or queue head) */
-#define        _Q(x) ((struct rx_queue *)(x))
+#define        _RXQ(x) ((struct rx_queue *)(x))
 
 /* This one adds a queue element (i) before or after another queue element (or queue head) (q), doubly linking everything together.  It's called by the user usable macros, below.  If (a,b) is (next,prev) then the element i is linked after q; if it is (prev,next) then it is linked before q */
 /* N.B.  I don't think it is possible to write this expression, correctly, with less than one comma (you can easily write an alternative expression with no commas that works with most or all compilers, but it's not clear that it really is un-ambiguous, legal C-code). */
-#define _QA(q,i,a,b) (((i->a=q->a)->b=i)->b=q, q->a=i)
+#define _RXQA(q,i,a,b) (((i->a=q->a)->b=i)->b=q, q->a=i)
 
 /* These ones splice two queues together.  If (a,b) is (next,prev) then (*q2) is prepended to (*q1), otherwise (*q2) is appended to (*q1). */
-#define _QS(q1,q2,a,b) if (queue_IsEmpty(q2)); else \
+#define _RXQS(q1,q2,a,b) if (queue_IsEmpty(q2)); else \
     ((((q2->a->b=q1)->a->b=q2->b)->a=q1->a, q1->a=q2->a), queue_Init(q2))
 
 /* This one removes part of queue (*q1) and attaches it to queue (*q2).
@@ -75,94 +75,94 @@ for (n=0, queue_Scan(&myqueue, qe, nqe, myelement), n++) {}
  * otherwise the subchain is the elements in (*q1) after (i).
  * If (x,y) is (q1,i) then operation is either BeforePrepend of AfterAppend.
  * If (x,y) is (i,q1) then operation is either BeforeAppend or AfterPrepend. */
-#define _QSP(q1,q2,i,a,b,c,d,x,y) if (!queue_IsEnd(q1,i->c)) \
+#define _RXQSP(q1,q2,i,a,b,c,d,x,y) if (!queue_IsEnd(q1,i->c)) \
     (((y->b->a=q2->a)->b=y->b), ((x->a->b=q2)->a=x->a), ((i->c=q1)->d=i))
 
 /* Basic remove operation.  Doesn't update the queue item to indicate it's been removed */
-#define _QR(i) ((_Q(i)->prev->next=_Q(i)->next)->prev=_Q(i)->prev)
+#define _RXQR(i) ((_RXQ(i)->prev->next=_RXQ(i)->next)->prev=_RXQ(i)->prev)
 
 /* EXPORTED macros */
 
 /* Initialize a queue head (*q).  A queue head is just a queue element */
-#define queue_Init(q) (_Q(q))->prev = (_Q(q))->next = (_Q(q))
+#define queue_Init(q) (_RXQ(q))->prev = (_RXQ(q))->next = (_RXQ(q))
 
 /* Prepend a queue element (*i) to the head of the queue, after the queue head (*q).  The new queue element should not currently be on any list. */
-#define queue_Prepend(q,i) _QA(_Q(q),_Q(i),next,prev)
+#define queue_Prepend(q,i) _RXQA(_RXQ(q),_RXQ(i),next,prev)
 
 /* Append a queue element (*i) to the end of the queue, before the queue head (*q).  The new queue element should not currently be on any list. */
-#define queue_Append(q,i) _QA(_Q(q),_Q(i),prev,next)
+#define queue_Append(q,i) _RXQA(_RXQ(q),_RXQ(i),prev,next)
 
 /* Insert a queue element (*i2) before another element (*i1) in the queue.  The new queue element should not currently be on any list. */
-#define queue_InsertBefore(i1,i2) _QA(_Q(i1),_Q(i2),prev,next)
+#define queue_InsertBefore(i1,i2) _RXQA(_RXQ(i1),_RXQ(i2),prev,next)
 
 /* Insert a queue element (*i2) after another element (*i1) in the queue.  The new queue element should not currently be on any list. */
-#define queue_InsertAfter(i1,i2) _QA(_Q(i1),_Q(i2),next,prev)
+#define queue_InsertAfter(i1,i2) _RXQA(_RXQ(i1),_RXQ(i2),next,prev)
 
 /* Spice the members of (*q2) to the beginning of (*q1), re-initialize (*q2) */
-#define queue_SplicePrepend(q1,q2) _QS(_Q(q1),_Q(q2),next,prev)
+#define queue_SplicePrepend(q1,q2) _RXQS(_RXQ(q1),_RXQ(q2),next,prev)
 
 /* Splice the members of queue (*q2) to the end of (*q1), re-initialize (*q2) */
-#define queue_SpliceAppend(q1,q2) _QS(_Q(q1),_Q(q2),prev,next)
+#define queue_SpliceAppend(q1,q2) _RXQS(_RXQ(q1),_RXQ(q2),prev,next)
 
 /* split the members after i off of queue (*q1), and append them onto queue (*q2) */
-#define queue_SplitAfterAppend(q1,q2,i) _QSP(_Q(q1),_Q(q2),_Q(i),prev,next,next,prev,_Q(q1),_Q(i))
+#define queue_SplitAfterAppend(q1,q2,i) _RXQSP(_RXQ(q1),_RXQ(q2),_RXQ(i),prev,next,next,prev,_RXQ(q1),_RXQ(i))
 
 /* split the members after i off of queue (*q1), and prepend them onto queue (*q2) */
-#define queue_SplitAfterPrepend(q1,q2,i) _QSP(_Q(q1),_Q(q2),_Q(i),next,prev,next,prev,_Q(i),_Q(q1))
+#define queue_SplitAfterPrepend(q1,q2,i) _RXQSP(_RXQ(q1),_RXQ(q2),_RXQ(i),next,prev,next,prev,_RXQ(i),_RXQ(q1))
 
 /* split the members before i off of queue (*q1), and append them onto queue (*q2) */
-#define queue_SplitBeforeAppend(q1,q2,i) _QSP(_Q(q1),_Q(q2),_Q(i),prev,next,prev,next,_Q(i),_Q(q1))
+#define queue_SplitBeforeAppend(q1,q2,i) _RXQSP(_RXQ(q1),_RXQ(q2),_RXQ(i),prev,next,prev,next,_RXQ(i),_RXQ(q1))
 
 /* split the members before i off of queue (*q1), and prepend them onto queue (*q2) */
-#define queue_SplitBeforePrepend(q1,q2,i) _QSP(_Q(q1),_Q(q2),_Q(i),next,prev,prev,next,_Q(q1),_Q(i))
+#define queue_SplitBeforePrepend(q1,q2,i) _RXQSP(_RXQ(q1),_RXQ(q2),_RXQ(i),next,prev,prev,next,_RXQ(q1),_RXQ(i))
 
 /* Replace the queue (*q1) with the contents of the queue (*q2), re-initialize (*q2) */
 #define queue_Replace(q1,q2) if (queue_IsEmpty(q2)) queue_Init(q1); else \
-    (*_Q(q1) = *_Q(q2), _Q(q1)->next->prev = _Q(q1)->prev->next = _Q(q1), queue_Init(q2))
+    (*_RXQ(q1) = *_RXQ(q2), _RXQ(q1)->next->prev = _RXQ(q1)->prev->next = _RXQ(q1), queue_Init(q2))
 
 /* Remove a queue element (*i) from it's queue.  The next field is 0'd, so that any further use of this q entry will hopefully cause a core dump.  Multiple removes of the same queue item are not supported */
-#define queue_Remove(i) (_QR(i), _Q(i)->next = 0)
+#define queue_Remove(i) (_RXQR(i), _RXQ(i)->next = 0)
 
 /* Move the queue element (*i) from it's queue to the end of the queue (*q) */
-#define queue_MoveAppend(q,i) (_QR(i), queue_Append(q,i))
+#define queue_MoveAppend(q,i) (_RXQR(i), queue_Append(q,i))
 
 /* Move the queue element (*i) from it's queue to the head of the queue (*q) */
-#define queue_MovePrepend(q,i) (_QR(i), queue_Prepend(q,i))
+#define queue_MovePrepend(q,i) (_RXQR(i), queue_Prepend(q,i))
 
 /* Return the first element of a queue, coerced too the specified structure s */
 /* Warning:  this returns the queue head, if the queue is empty */
-#define queue_First(q,s) ((struct s *)_Q(q)->next)
+#define queue_First(q,s) ((struct s *)_RXQ(q)->next)
 
 /* Return the last element of a queue, coerced to the specified structure s */
 /* Warning:  this returns the queue head, if the queue is empty */
-#define queue_Last(q,s) ((struct s *)_Q(q)->prev)
+#define queue_Last(q,s) ((struct s *)_RXQ(q)->prev)
 
 /* Return the next element in a queue, beyond the specified item, coerced to the specified structure s */
 /* Warning:  this returns the queue head, if the item specified is the last in the queue */
-#define queue_Next(i,s) ((struct s *)_Q(i)->next)
+#define queue_Next(i,s) ((struct s *)_RXQ(i)->next)
 
 /* Return the previous element to a specified element of a queue, coerced to the specified structure s */
 /* Warning:  this returns the queue head, if the item specified is the first in the queue */
-#define queue_Prev(i,s) ((struct s *)_Q(i)->prev)
+#define queue_Prev(i,s) ((struct s *)_RXQ(i)->prev)
 
 /* Return true if the queue is empty, i.e. just consists of a queue head.  The queue head must have been initialized some time prior to this call */
-#define queue_IsEmpty(q) (_Q(q)->next == _Q(q))
+#define queue_IsEmpty(q) (_RXQ(q)->next == _RXQ(q))
 
 /* Return true if the queue is non-empty, i.e. consists of a queue head plus at least one queue item */
-#define queue_IsNotEmpty(q) (_Q(q)->next != _Q(q))
+#define queue_IsNotEmpty(q) (_RXQ(q)->next != _RXQ(q))
 
 /* Return true if the queue item is currently in a queue */
 /* Returns false if the item was removed from a queue OR is uninitialized (zero) */
-#define queue_IsOnQueue(i) (_Q(i)->next != 0)
+#define queue_IsOnQueue(i) (_RXQ(i)->next != 0)
 
 /* Returns true if the queue item (i) is the first element of the queue (q) */
-#define queue_IsFirst(q,i) (_Q(q)->first == _Q(i))
+#define queue_IsFirst(q,i) (_RXQ(q)->first == _RXQ(i))
 
 /* Returns true if the queue item (i) is the last element of the queue (q) */
-#define queue_IsLast(q,i) (_Q(q)->prev == _Q(i))
+#define queue_IsLast(q,i) (_RXQ(q)->prev == _RXQ(i))
 
 /* Returns true if the queue item (i) is the end of the queue (q), that is, i is the head of the queue */
-#define queue_IsEnd(q,i) (_Q(q) == _Q(i))
+#define queue_IsEnd(q,i) (_RXQ(q) == _RXQ(i))
 
 /* Prototypical loop to scan an entire queue forwards.  q is the queue
  * head, qe is the loop variable, next is a variable used to store the