summaryrefslogtreecommitdiff
path: root/plist.h
diff options
context:
space:
mode:
authorRichard Braun <rbraun@sceen.net>2017-02-04 00:24:05 +0100
committerRichard Braun <rbraun@sceen.net>2017-02-04 00:24:05 +0100
commit4d1d8d41a6fb0cb1f08dac5ee69d55e0832f85ee (patch)
treeb38af4b24fcf8a0bfce181c6ab039b569f5d82c5 /plist.h
parent507e77c8a2754be31c8273167aa7e50189e68c85 (diff)
plist: fix macros, update plist_add interface
Diffstat (limited to 'plist.h')
-rw-r--r--plist.h25
1 files changed, 12 insertions, 13 deletions
diff --git a/plist.h b/plist.h
index 4ba8301..07ee3c8 100644
--- a/plist.h
+++ b/plist.h
@@ -142,13 +142,13 @@ plist_prev(const struct plist_node *pnode)
* Get the entry next to the given entry.
*/
#define plist_next_entry(entry, member) \
- list_next_entry(&(entry)->member, node)
+ plist_entry(plist_next(&(entry)->member), typeof(*(entry)), member)
/*
* Get the entry previous to the given entry.
*/
#define plist_prev_entry(entry, member) \
- list_prev_entry(&(entry)->member, node)
+ plist_entry(plist_prev(&(entry)->member), typeof(*(entry)), member)
/*
* Return true if node is after the last or before the first node of
@@ -180,10 +180,9 @@ plist_singular(const struct plist *plist)
/*
* Add a node to a priority list.
- *
- * The node must be initialized before calling this function.
*/
-void plist_add(struct plist *plist, struct plist_node *pnode);
+void plist_add(struct plist *plist, struct plist_node *pnode,
+ unsigned int priority);
/*
* Remove a node from a priority list.
@@ -231,25 +230,25 @@ for (pnode = plist_last(plist), tmp = plist_prev(pnode); \
*
* The entry node must not be altered during the loop.
*/
-#define plist_for_each_entry(plist, entry, member) \
- list_for_each_entry(&(plist)->list, entry, member)
+#define plist_for_each_entry(plist, entry, member) \
+ list_for_each_entry(&(plist)->list, entry, member.node)
/*
* Forge a loop to process all entries of a priority list.
*/
-#define plist_for_each_entry_safe(plist, entry, tmp, member) \
- list_for_each_entry_safe(&(plist)->list, entry, tmp, member)
+#define plist_for_each_entry_safe(plist, entry, tmp, member) \
+ list_for_each_entry_safe(&(plist)->list, entry, tmp, member.node)
/*
* Version of plist_for_each_entry() that processes entries backward.
*/
-#define plist_for_each_entry_reverse(plist, entry, member) \
- list_for_each_entry_reverse(&(plist)->list, entry, member)
+#define plist_for_each_entry_reverse(plist, entry, member) \
+ list_for_each_entry_reverse(&(plist)->list, entry, member.node)
/*
* Version of plist_for_each_entry_safe() that processes entries backward.
*/
-#define plist_for_each_entry_reverse_safe(plist, entry, tmp, member) \
- list_for_each_entry_reverse_safe(&(plist)->list, entry, tmp, member)
+#define plist_for_each_entry_reverse_safe(plist, entry, tmp, member) \
+ list_for_each_entry_reverse_safe(&(plist)->list, entry, tmp, member.node)
#endif /* _PLIST_H */