diff options
author | Kartik Agaram <vc@akkartik.com> | 2020-01-01 18:22:19 -0800 |
---|---|---|
committer | Kartik Agaram <vc@akkartik.com> | 2020-01-01 18:42:48 -0800 |
commit | 65409d2312e702a48d3cf5b32479d25266bda3c3 (patch) | |
tree | 62a7262fce61f2302109246da4536ce6f8e9ef80 /tools/iso/kernel.soso/list.h | |
parent | a6da50ad30d2e1825575ffef497ab450a8f26e94 (diff) | |
download | mu-65409d2312e702a48d3cf5b32479d25266bda3c3.tar.gz |
5858
Move script to create a Soso boot image into a sub-directory. I'm trying to streamline newcomer attention to just a couple of use cases.
Diffstat (limited to 'tools/iso/kernel.soso/list.h')
-rw-r--r-- | tools/iso/kernel.soso/list.h | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/tools/iso/kernel.soso/list.h b/tools/iso/kernel.soso/list.h new file mode 100644 index 00000000..4e7831b2 --- /dev/null +++ b/tools/iso/kernel.soso/list.h @@ -0,0 +1,58 @@ +#ifndef LIST_H +#define LIST_H + +#include "common.h" + +#define List_Foreach(listNode, list) for (ListNode* listNode = list->head; NULL != listNode ; listNode = listNode->next) + +typedef struct ListNode { + struct ListNode* previous; + struct ListNode* next; + void* data; +} ListNode; + +typedef struct List { + struct ListNode* head; + struct ListNode* tail; +} List; + +List* List_Create(); +void List_Clear(List* list); +void List_Destroy(List* list); +List* List_CreateClone(List* list); +BOOL List_IsEmpty(List* list); +void List_Append(List* list, void* data); +void List_Prepend(List* list, void* data); +ListNode* List_GetFirstNode(List* list); +ListNode* List_GetLastNode(List* list); +ListNode* List_FindFirstOccurrence(List* list, void* data); +int List_FindFirstOccurrenceIndex(List* list, void* data); +int List_GetCount(List* list); +void List_RemoveNode(List* list, ListNode* node); +void List_RemoveFirstNode(List* list); +void List_RemoveLastNode(List* list); +void List_RemoveFirstOccurrence(List* list, void* data); + +typedef struct Stack { + List* list; +} Stack; + +Stack* Stack_Create(); +void Stack_Clear(Stack* stack); +void Stack_Destroy(Stack* stack); +BOOL Stack_IsEmpty(Stack* stack); +void Stack_Push(Stack* stack, void* data); +void* Stack_Pop(Stack* stack); + +typedef struct Queue { + List* list; +} Queue; + +Queue* Queue_Create(); +void Queue_Clear(Queue* queue); +void Queue_Destroy(Queue* queue); +BOOL Queue_IsEmpty(Queue* queue); +void Queue_Enqueue(Queue* queue, void* data); +void* Queue_Dequeue(Queue* stack); + +#endif // LIST_H |