123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121 |
- #ifndef LIST_H_INCLUDED
- #define LIST_H_INCLUDED
- #include <windows.h>
- #ifndef FORCEINLINE
- #define FORCEINLINE __inline__
- #endif // FORCEINLINE
- #if !defined(_LIST_ENTRY_DEFINED) && !defined(_MSC_VER)
- typedef struct _LIST_ENTRY {
- struct _LIST_ENTRY *Flink;
- struct _LIST_ENTRY *Blink;
- } LIST_ENTRY, *PLIST_ENTRY;
- #endif // _LIST_ENTRY_DEFINED
- FORCEINLINE
- VOID
- InitializeListHead(
- OUT PLIST_ENTRY ListHead)
- {
- ListHead->Flink = ListHead->Blink = ListHead;
- }
- FORCEINLINE
- BOOLEAN
- IsListEmpty(
- IN CONST LIST_ENTRY * ListHead)
- {
- return (BOOLEAN)(ListHead->Flink == ListHead);
- }
- FORCEINLINE
- BOOLEAN
- RemoveEntryList(
- IN PLIST_ENTRY Entry)
- {
- PLIST_ENTRY OldFlink;
- PLIST_ENTRY OldBlink;
- OldFlink = Entry->Flink;
- OldBlink = Entry->Blink;
- OldFlink->Blink = OldBlink;
- OldBlink->Flink = OldFlink;
- return (BOOLEAN)(OldFlink == OldBlink);
- }
- FORCEINLINE
- PLIST_ENTRY
- RemoveHeadList(
- IN OUT PLIST_ENTRY ListHead)
- {
- PLIST_ENTRY Flink;
- PLIST_ENTRY Entry;
- Entry = ListHead->Flink;
- Flink = Entry->Flink;
- ListHead->Flink = Flink;
- Flink->Blink = ListHead;
- return Entry;
- }
- FORCEINLINE
- PLIST_ENTRY
- RemoveTailList(
- IN OUT PLIST_ENTRY ListHead)
- {
- PLIST_ENTRY Blink;
- PLIST_ENTRY Entry;
- Entry = ListHead->Blink;
- Blink = Entry->Blink;
- ListHead->Blink = Blink;
- Blink->Flink = ListHead;
- return Entry;
- }
- FORCEINLINE
- VOID
- InsertTailList(
- IN OUT PLIST_ENTRY ListHead,
- IN OUT PLIST_ENTRY Entry)
- {
- PLIST_ENTRY OldBlink;
- OldBlink = ListHead->Blink;
- Entry->Flink = ListHead;
- Entry->Blink = OldBlink;
- OldBlink->Flink = Entry;
- ListHead->Blink = Entry;
- }
- FORCEINLINE
- VOID
- InsertHeadList(
- IN OUT PLIST_ENTRY ListHead,
- IN OUT PLIST_ENTRY Entry)
- {
- PLIST_ENTRY OldFlink;
- OldFlink = ListHead->Flink;
- Entry->Flink = OldFlink;
- Entry->Blink = ListHead;
- OldFlink->Blink = Entry;
- ListHead->Flink = Entry;
- }
- FORCEINLINE
- VOID
- AppendTailList(
- IN OUT PLIST_ENTRY ListHead,
- IN OUT PLIST_ENTRY ListToAppend)
- {
- PLIST_ENTRY ListEnd = ListHead->Blink;
- ListHead->Blink->Flink = ListToAppend;
- ListHead->Blink = ListToAppend->Blink;
- ListToAppend->Blink->Flink = ListHead;
- ListToAppend->Blink = ListEnd;
- }
- #endif // LIST_H_INCLUDED
|