Files
dmex b02427417c PH1.x: fixed build
git-svn-id: svn://svn.code.sf.net/p/processhacker/code@5614 21ef857c-d57f-4fe0-8362-d861dc6d29cd
2014-02-25 23:14:38 +00:00

81 lines
2.2 KiB
C#

using System;
namespace ProcessHacker.Common
{
public class LinkedListEntry<T>
{
public LinkedListEntry<T> Flink;
public LinkedListEntry<T> Blink;
public T Value;
}
public static class LinkedList
{
public static void InitializeListHead<T>(LinkedListEntry<T> listHead)
{
listHead.Flink = listHead.Blink = listHead;
}
public static bool RemoveEntryList<T>(LinkedListEntry<T> entry)
{
LinkedListEntry<T> blink;
LinkedListEntry<T> flink;
flink = entry.Flink;
blink = entry.Blink;
blink.Flink = flink;
flink.Blink = blink;
return flink == blink;
}
public static LinkedListEntry<T> RemoveHeadList<T>(LinkedListEntry<T> listHead)
{
LinkedListEntry<T> flink;
LinkedListEntry<T> entry;
entry = listHead.Flink;
flink = entry.Flink;
listHead.Flink = flink;
flink.Blink = listHead;
return entry;
}
public static LinkedListEntry<T> RemoveTailList<T>(LinkedListEntry<T> listHead)
{
LinkedListEntry<T> blink;
LinkedListEntry<T> entry;
entry = listHead.Blink;
blink = entry.Blink;
listHead.Blink = blink;
blink.Flink = listHead;
return entry;
}
public static void InsertTailList<T>(LinkedListEntry<T> listHead, LinkedListEntry<T> entry)
{
LinkedListEntry<T> blink;
blink = listHead.Blink;
entry.Flink = listHead;
entry.Blink = blink;
blink.Flink = entry;
listHead.Blink = entry;
}
public static void InsertHeadList<T>(LinkedListEntry<T> listHead, LinkedListEntry<T> entry)
{
LinkedListEntry<T> flink;
flink = listHead.Flink;
entry.Flink = flink;
entry.Blink = listHead;
flink.Blink = entry;
listHead.Flink = entry;
}
}
}