diff --git a/foo.txt b/foo.txt deleted file mode 100644 index c833fd0..0000000 --- a/foo.txt +++ /dev/null @@ -1,242 +0,0 @@ -#include -#include - -#define IN -#define STATUS_FAILURE -1 -#define STATUS_SUCCESS 0 - -typedef struct _item_t Item_t; -typedef struct _list_t List_t; -struct _item_t -{ - Item_t *Previous; - Item_t *Next; -}; - -struct _list_t -{ - Item_t *First; - Item_t *Last; -}; - - -/* checked */ -List_t * -InitializeList() -{ - List_t * TList; - - TList = malloc(sizeof *TList); - TList->First = NULL; - TList->Last = NULL; - return TList; -} - -/* checked */ -Item_t * -CreateItem() -{ - Item_t * p; - p = malloc(sizeof *p); - p->Next = NULL; - p->Previous = NULL; - p->Priority = 0; - return p; -} - - -/* checked */ -int -InsertItemAtFront( IN List_t * TList, - IN Item_t * kItem) -{ - if(TList->First == NULL) - { - TList->First = kItem; - TList->Last = kItem; - kItem->Previous = NULL; - kItem->Next = NULL; - } - else - { - Item_t * FirstItem; - - FirstItem = TList->First; - kItem->Next = FirstItem; - TList->First = kItem; - FirstItem->Previous = kItem; - - - } - return STATUS_SUCCESS; -} - - - -/* checked */ -int -SetItemPriority( IN Item_t * kItem, - IN PRIORITY Priority) -{ - kItem->Priority = Priority; - return STATUS_SUCCESS; -} - - -/* checked */ -int -InsertItemBetweenItems( IN List_t * TList, - IN Item_t * Previous, - IN Item_t * Next, - IN Item_t * Insert) -{ - - if(Previous == NULL || Next == NULL) - return STATUS_FAILURE; - else - { - Previous->Next = Insert; - Next->Previous = Insert; - Insert->Previous = Previous; - Insert->Next = Next; - - } - - return STATUS_SUCCESS; -} - - -/* checked */ -int -RemoveItem( IN List_t * TList, - IN Item_t * kItem) -{ - kItem->Previous->Next = kItem->Next; - kItem->Next->Previous = kItem->Previous; - kItem->Previous = NULL; - kItem->Next = NULL; - return STATUS_SUCCESS; -} - -/* checked */ -int -DestroyItemsInList(IN List_t * ItemList) -{ - Item_t * z, tmp; - - z = ItemList->Last; - while(z != NULL) - { - tmp = z->Previous; - MmFreeFromNonPagedPool(z); - z = tmp; - } - ItemList->First = NULL; - ItemList->Last = NULL; - - return STATUS_SUCCESS; -} - - - -NTSTATUS -DestroyItemList(IN List_t * ItemList) -{ - MmFreeFromNonPagedPool(ItemList); - return STATUS_SUCCESS; -} - -/* checked */ -Item_t * -GetFirstItem(IN List_t * kItem) -{ - return kItem->First; -} - -/* checked */ -Item_t * -GetLastItem(IN List_t * kItem) -{ - return kItem->Last; -} - -/* checked */ -List_t * -RemoveItemListBetweenItems( IN Item_t * Previous, - IN Item_t * Next) -{ - List_t * NewList; - - NewList = InitializeList(); - - NewList->First = Previous->Next; - NewList->Last = Next->Previous; - - NewList->First->Previous = NULL; - NewList->Last->Next = NULL; - - Previous->Next = Next; - Next->Previous = Previous; - - return NewList; -} - - -/* checked */ -void -InsertItemListBetweenItems( IN Item_t * Previous, - IN Item_t * Next, - IN List_t * Insert) -{ - assert(Previous != NULL); - assert(Next != NULL); - - Previous->Next = Insert->First; - Next->Previous = Insert->Last; - Insert->First->Previous = Previous; - Insert->Last->Next = Next; - return STATUS_SUCCESS; -} - - - -int -main() -{ - List_t * High; - Item_t * a,b,c,d,e,z; - - High = InitializeList(); - - a = CreateItem(); - b = CreateItem(); - c = CreateItem(); - d = CreateItem(); - e = CreateItem(); - - SetItemPriority(a, 1); - SetItemPriority(b, 2); - SetItemPriority(c, 3); - SetItemPriority(d, 4); - SetItemPriority(e, 5); - - InsertItemAtFront(High, a); - InsertItemAtFront(High, b); - InsertItemAtFront(High, c); - InsertItemAtFront(High, d); - InsertItemAtFront(High, e); - - - z = High->Last; - while(z != NULL) - { - printf("Priority! equals %d\n", z->Priority); - z = z->Previous; - } - - - - - - return 0; -}