diff options
author | Timo Teras <timo.teras@iki.fi> | 2008-11-27 20:25:01 +0200 |
---|---|---|
committer | Timo Teras <timo.teras@iki.fi> | 2008-11-27 20:25:01 +0200 |
commit | f0609951b9fd2938c0f30853e0aa6b08b8698a88 (patch) | |
tree | 3b1f72cbaad90d715d60643c0fac98b7aaedd37e /src/apk_defines.h | |
parent | 1a7f3e3678844165d2660ebff09da26b9ba01576 (diff) | |
download | apk-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.h | 69 |
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 |