//*********************************************** // // Filename : Container.h // // Purpose : prototypes for the container file // // Modification History : 25 Nov 96 Creation // //*********************************************** #ifndef _CONTAINER_H #define _CONTAINER_H //*********************************************** // // Includes // // //*********************************************** #include "types.h" //*********************************************** // // Defines and typedefs // //*********************************************** #define ORDLIST_ERROR -1 #define ORDLIST_EQUAL 0 #define ORDLIST_LEFT_LESS 1 #define ORDLIST_RIGHT_LESS 2 typedef void * HCONTAINER; typedef HCONTAINER HSTACK; typedef HCONTAINER HQUEUE; typedef HCONTAINER HLIST; typedef HCONTAINER HORDLIST; //*********************************************** // // Function Prototypes // //*********************************************** #ifdef __cplusplus extern "C" { #endif // call these functions to initialize and shutdown the debug messages for // containers extern void InitializeContainers(void); extern void ShutdownContainers(void); // Stack Functions // CreateStack(estimated number of items in stack, size of each item // Push(handle to container returned from CreateStack, data to be passed in (must be void *) // : returns handle to new stack // Pop(handle to container returned from CreateStack, data to be passed in (must be void *) // : returns BOOLEAN // DeleteStack deletes the stack container // StackSize returns size of stack extern HSTACK CreateStack(UINT32 num_of_elem , UINT32 siz_of_each); extern HSTACK Push(HSTACK hStack, void *data); extern BOOLEAN Pop(HSTACK hStack, void *data); extern UINT32 StackSize(HSTACK hStack); extern BOOLEAN DeleteStack(HSTACK hStack); extern BOOLEAN PeekStack(HSTACK hStack, void *data); // Queue Functions // CreateQueue(estimated number of items in queue, size of each item // AddtoQueue(handle to container returned from CreateQueue, data to be passed in (must be void *)) // : returns handle to queue // RemfromQueue(handle to container returned from CreateQueue, variable where data is stored (must be void *)) // : returns BOOLEAN // PeekQueue(handle to the queue, variable where peeked data is stored). Item is not deleted. // : returns BOOLEAN // QueueSize(handle to the queue) returns the queue size // DeleteQueue(handle to container) Delete the queue container // : returns BOOLEAN extern HQUEUE CreateQueue(UINT32 num_of_elem, UINT32 siz_of_each); extern HQUEUE AddtoQueue(HQUEUE hQueue, void *data); extern BOOLEAN RemfromQueue(HQUEUE hQueue,void *data); extern BOOLEAN PeekQueue(HQUEUE hQueue, void *data); extern UINT32 QueueSize(HQUEUE hQueue); extern BOOLEAN DeleteQueue(HQUEUE hQueue); // List Functions // CreateList(estimated number of items in queue, size of each item // AddtoList(handle to container returned from CreateQueue, data to be passed in (must be void *) // position where data is to be added (0...sizeof(list)) // : returns handle to new list // RemfromList(handle to container returned from CreateList, variable where data is stored (must be void *) // position where data is to be deleted (0...sizeof(list)-1) // PeekList(handle to the list, variable where peeked data is stored). Item is not deleted. // position where data is to be peeked (0...sizeof(list)-1) // ListSize(handle to the list) returns the list size // DeleteList(handle to the list) Delete the list container extern HLIST CreateList(UINT32 num_of_elem, UINT32 siz_of_each); extern HLIST AddtoList(HLIST hList, void *data, UINT32 position); extern BOOLEAN RemfromList(HLIST hList,void *data, UINT32 position); extern BOOLEAN PeekList(HLIST hList, void *data, UINT32 position); extern UINT32 ListSize(HLIST hList); extern BOOLEAN DeleteList(HLIST hList); extern BOOLEAN SwapListNode(HLIST hList, void *pdata, UINT32 uiPos); extern BOOLEAN StoreListNode(HLIST hList, void *pdata, UINT32 uiPos); // Ordered List Functions // CreateOrdList(estimated number of items in ordered list, size of each item, // pointer to a compare function that returns info on whether the data in the ordered stack // is < or > the new data to be added into the ordered list. // AddtoOrdList(handle to container returned from CreateOrdList, data to be passed in (must be void *) // RemfromOrdList(handle to container returned from CreateList, variable where data is stored (must be void *) // position where data is to be deleted (0...sizeof(list)-1) // PeekOrdList(handle to the list, variable where peeked data is stored). Item is not deleted. // position where data is to be peeked (0...sizeof(list)-1) // OrdListSize(handle to the list) returns the ordered list size // DeleteOrdList(handle to the list) Delete the ordered list container extern HLIST CreateOrdList(UINT32 num_of_elem, UINT32 siz_of_each, INT8 (*compare)(void *,void *, UINT32)); extern HLIST AddtoOrdList(HLIST hList, void *data); extern BOOLEAN RemfromOrdList(HLIST hList,void *data, UINT32 position); extern BOOLEAN PeekOrdList(HLIST hList, void *data, UINT32 position); extern UINT32 OrdListSize(HLIST hList); extern BOOLEAN DeleteOrdList(HLIST hList); #ifdef __cplusplus } #endif #endif