78 #define HLIST_HEAD_INIT { .First = NULL } 80 #define hlist_for_each(_head, _struct_type, _var) _hlist_for_each(_head, _struct_type, Link, _var) 81 #define hlist_for_each_var(_head, _struct_type, _var) _hlist_for_each_var(_head, _struct_type, Link, _var) 83 #define hlist_for_each_link(_head, _struct_type, _member, _var) _hlist_for_each(_head, _struct_type, _member, _var) 84 #define hlist_for_each_link_var(_head, _struct_type, _member, _var) _hlist_for_each_var(_head, _struct_type, _member, _var) 87 #define hlist_for_each_safe(_head, _struct_type, _var) _hlist_for_each_safe(_head, _struct_type, Link, _var) 88 #define hlist_for_each_link_safe(_head, _struct_type, _member, _var) _hlist_for_each_safe(_head, _struct_type, _member, _var) 94 #define _next_h(_var, _member) _var->_member.Next 95 #define _next_hentry(_var, _member, _type) _var ? CONTAINING_RECORD(_next_h(_var, _member), _type, _member) : _var 97 #define _hlist_for_each(_head, _type, _member, _var) \ 98 for (_type *_var = CONTAINING_RECORD((_head).First, _type, _member); \ 100 _var = _next_hentry(_var, _member, _type)) 102 #define _hlist_for_each_var(_head, _type, _member, _var) \ 103 for (_var = CONTAINING_RECORD((_head).First, _type, _member); \ 105 _var = _next_hentry(_var, _member, _type)) 108 #define _hlist_for_each_safe(_head, _type, _member, _var) \ 109 for (_type *_var = CONTAINING_RECORD((_head).First, _type, _member), *_n = _next_hentry(_var, _member, _type); \ 111 _var = _n, _n = _next_hentry(_var, _member, _type))
struct _HLIST_ENTRY * Next
static void HListRemoveEntry(HLIST_ENTRY *Entry)
static void HlistInitalizeHead(HLIST_HEAD *Head)
static BOOLEAN HListIsEmpty(const HLIST_HEAD *Head)
struct _HLIST_HEAD HLIST_HEAD
struct _HLIST_ENTRY ** PPrev
static void HListInsert(HLIST_HEAD *Head, HLIST_ENTRY *Entry)
struct _HLIST_ENTRY HLIST_ENTRY