Fix c99 compatibility: use __typeof__ instead of typeof in public headers
[userspace-rcu.git] / urcu / list.h
index bb50128e56e4de7d57df313672f012d9077f3573..f27ff7ba7900ddcf17ba9be95087d1bd4fee1c5f 100644 (file)
@@ -37,6 +37,7 @@ struct cds_list_head
   struct cds_list_head *prev;
 };
 
+
 /* Define a variable with the head and tail of the list.  */
 #define CDS_LIST_HEAD(name) \
   struct cds_list_head name = { &(name), &(name) }
@@ -125,21 +126,14 @@ cds_list_splice (struct cds_list_head *add, struct cds_list_head *head)
     }
 }
 
-/* Returns 1 if list is empty, 0 otherwise */
-static inline
-int cds_list_empty(struct cds_list_head *head)
-{
-       return head->next == head->prev;
-}
-
 /* Get typed element from list at a given position.  */
 #define cds_list_entry(ptr, type, member) \
   ((type *) ((char *) (ptr) - (unsigned long) (&((type *) 0)->member)))
 
 
 /* Get first entry from a list. */
-#define cds_list_first_entry(head, type, member) \
-       cds_list_entry((head)->next, type, member)
+#define cds_list_first_entry(ptr, type, member) \
+       cds_list_entry((ptr)->next, type, member)
 
 
 /* Iterate forward over the elements of the list.  */
@@ -160,20 +154,20 @@ int cds_list_empty(struct cds_list_head *head)
        pos = p, p = pos->prev)
 
 #define cds_list_for_each_entry(pos, head, member)                             \
-       for (pos = cds_list_entry((head)->next, typeof(*pos), member);  \
+       for (pos = cds_list_entry((head)->next, __typeof__(*pos), member); \
             &pos->member != (head);                                    \
-            pos = cds_list_entry(pos->member.next, typeof(*pos), member))
+            pos = cds_list_entry(pos->member.next, __typeof__(*pos), member))
 
 #define cds_list_for_each_entry_reverse(pos, head, member)                     \
-       for (pos = cds_list_entry((head)->prev, typeof(*pos), member);  \
+       for (pos = cds_list_entry((head)->prev, __typeof__(*pos), member); \
             &pos->member != (head);                                    \
-            pos = cds_list_entry(pos->member.prev, typeof(*pos), member))
+            pos = cds_list_entry(pos->member.prev, __typeof__(*pos), member))
 
 #define cds_list_for_each_entry_safe(pos, p, head, member)                     \
-       for (pos = cds_list_entry((head)->next, typeof(*pos), member),  \
-                    p = cds_list_entry(pos->member.next,typeof(*pos), member); \
+       for (pos = cds_list_entry((head)->next, __typeof__(*pos), member), \
+                    p = cds_list_entry(pos->member.next, __typeof__(*pos), member); \
             &pos->member != (head);                                    \
-            pos = p, p = cds_list_entry(pos->member.next, typeof(*pos), member))
+            pos = p, p = cds_list_entry(pos->member.next, __typeof__(*pos), member))
 
 static inline int cds_list_empty(struct cds_list_head *head)
 {
This page took 0.023933 seconds and 4 git commands to generate.