blob: dd3a199d4e2f48c0e970136cf176c7b7e7e26872 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
|
/*++
Copyright (c) Scott Gasch
Module Name:
list.c
Abstract:
Random doubly linked list helper routines.
Author:
Scott Gasch ([email protected]) 29 Nov 2007
Revision History:
--*/
#include "chess.h"
INLINE void
InitializeListHead(IN DLIST_ENTRY *pListHead)
{
pListHead->pFlink = pListHead->pBlink = pListHead;
}
INLINE FLAG
IsListEmpty(IN DLIST_ENTRY *pListHead)
{
return (FLAG)(pListHead->pFlink == pListHead);
}
INLINE FLAG
RemoveEntryList(IN DLIST_ENTRY *pEntry)
{
DLIST_ENTRY *pBlink;
DLIST_ENTRY *pFlink;
pFlink = pEntry->pFlink;
pBlink = pEntry->pBlink;
pBlink->pFlink = pFlink;
pFlink->pBlink = pBlink;
return (FLAG)(pFlink == pBlink);
}
INLINE DLIST_ENTRY *
RemoveHeadList(IN DLIST_ENTRY *pListHead)
{
DLIST_ENTRY *pFlink;
DLIST_ENTRY *pEntry;
pEntry = pListHead->pFlink;
pFlink = pEntry->pFlink;
pListHead->pFlink = pFlink;
pFlink->pBlink = pListHead;
return(pEntry);
}
INLINE DLIST_ENTRY *
RemoveTailList(IN DLIST_ENTRY *pListHead)
{
DLIST_ENTRY *pBlink;
DLIST_ENTRY *pEntry;
pEntry = pListHead->pBlink;
pBlink = pEntry->pBlink;
pListHead->pBlink = pBlink;
pBlink->pFlink = pListHead;
return(pEntry);
}
INLINE void
InsertTailList(IN DLIST_ENTRY *pListHead,
IN DLIST_ENTRY *pEntry)
{
DLIST_ENTRY *pBlink;
pBlink = pListHead->pBlink;
pEntry->pFlink = pListHead;
pEntry->pBlink = pBlink;
pBlink->pFlink = pEntry;
pListHead->pBlink = pEntry;
}
INLINE void
InsertHeadList(IN DLIST_ENTRY *pListHead,
IN DLIST_ENTRY *pEntry)
{
DLIST_ENTRY *pFlink;
pFlink = pListHead->pFlink;
pEntry->pFlink = pFlink;
pEntry->pBlink = pListHead;
pFlink->pBlink = pEntry;
pListHead->pFlink = pEntry;
}
|