summaryrefslogtreecommitdiffstats
path: root/src/apk_defines.h
diff options
context:
space:
mode:
authorTimo Teras <timo.teras@iki.fi>2008-11-27 20:25:01 +0200
committerTimo Teras <timo.teras@iki.fi>2008-11-27 20:25:01 +0200
commitf0609951b9fd2938c0f30853e0aa6b08b8698a88 (patch)
tree3b1f72cbaad90d715d60643c0fac98b7aaedd37e /src/apk_defines.h
parent1a7f3e3678844165d2660ebff09da26b9ba01576 (diff)
downloadapk-tools-f0609951b9fd2938c0f30853e0aa6b08b8698a88.tar.bz2
apk-tools-f0609951b9fd2938c0f30853e0aa6b08b8698a88.tar.xz
hash, db: use apk_blob_t and list_*
Diffstat (limited to 'src/apk_defines.h')
-rw-r--r--src/apk_defines.h69
1 files changed, 69 insertions, 0 deletions
diff --git a/src/apk_defines.h b/src/apk_defines.h
index 64abe72..4b741d4 100644
--- a/src/apk_defines.h
+++ b/src/apk_defines.h
@@ -169,4 +169,73 @@ static inline struct hlist_node **hlist_tail_ptr(struct hlist_head *h)
({ tpos = hlist_entry(pos, typeof(*tpos), member); 1;}); \
pos = n)
+
+struct list_head {
+ struct list_head *next, *prev;
+};
+
+static inline void list_init(struct list_head *list)
+{
+ list->next = list;
+ list->prev = list;
+}
+
+static inline void __list_add(struct list_head *new,
+ struct list_head *prev,
+ struct list_head *next)
+{
+ next->prev = new;
+ new->next = next;
+ new->prev = prev;
+ prev->next = new;
+}
+
+static inline void list_add(struct list_head *new, struct list_head *head)
+{
+ __list_add(new, head, head->next);
+}
+
+static inline void list_add_tail(struct list_head *new, struct list_head *head)
+{
+ __list_add(new, head->prev, head);
+}
+
+static inline void __list_del(struct list_head * prev, struct list_head * next)
+{
+ next->prev = prev;
+ prev->next = next;
+}
+
+static inline void list_del(struct list_head *entry)
+{
+ __list_del(entry->prev, entry->next);
+ entry->next = LIST_POISON1;
+ entry->prev = LIST_POISON2;
+}
+
+static inline int list_hashed(const struct list_head *n)
+{
+ return n->next != n->prev;
+}
+
+#define list_entry(ptr, type, member) container_of(ptr,type,member)
+
+#define list_for_each(pos, head) \
+ for (pos = (head)->next; pos != (head); pos = pos->next)
+
+#define list_for_each_safe(pos, n, head) \
+ for (pos = (head)->next, n = pos->next; pos != (head); \
+ pos = n, n = pos->next)
+
+#define list_for_each_entry(pos, head, member) \
+ for (pos = list_entry((head)->next, typeof(*pos), member); \
+ &pos->member != (head); \
+ pos = list_entry(pos->member.next, typeof(*pos), member))
+
+#define list_for_each_entry_safe(pos, n, head, member) \
+ for (pos = list_entry((head)->next, typeof(*pos), member), \
+ n = list_entry(pos->member.next, typeof(*pos), member); \
+ &pos->member != (head); \
+ pos = n, n = list_entry(n->member.next, typeof(*n), member))
+
#endif