diff options
| author | Scott Gasch <[email protected]> | 2016-06-01 18:58:58 -0700 |
|---|---|---|
| committer | Scott Gasch <[email protected]> | 2016-06-01 18:58:58 -0700 |
| commit | 3fd43cd5fcb22bb65bf2a92a25d95d801b11c9e0 (patch) | |
| tree | 9b6443235d16ba17f094a1a1c7ae53d2bcb9267b /src/list.c | |
Initial checkin for typhoon chess engine.
Diffstat (limited to 'src/list.c')
| -rw-r--r-- | src/list.c | 100 |
1 files changed, 100 insertions, 0 deletions
diff --git a/src/list.c b/src/list.c new file mode 100644 index 0000000..dd3a199 --- /dev/null +++ b/src/list.c @@ -0,0 +1,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; +} |
