summaryrefslogtreecommitdiff
path: root/src/list.c
diff options
context:
space:
mode:
authorScott Gasch <[email protected]>2016-06-01 18:58:58 -0700
committerScott Gasch <[email protected]>2016-06-01 18:58:58 -0700
commit3fd43cd5fcb22bb65bf2a92a25d95d801b11c9e0 (patch)
tree9b6443235d16ba17f094a1a1c7ae53d2bcb9267b /src/list.c
Initial checkin for typhoon chess engine.
Diffstat (limited to 'src/list.c')
-rw-r--r--src/list.c100
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;
+}