home *** CD-ROM | disk | FTP | other *** search
- /*+
- **
- ** Include Name: MEMLIB.h
- **
- ** Description: MEM specific includes to be included in MEM application pgms
- **
- **
- **
- ** Written by: John Tal
- **
- **
- **
- ** Modification history:
- **
- ** Date Programmer Mod # Modification Description
- **
- *-
- */
-
- #ifdef MEMLIB_H /* Allow compiler one copy */
- #else
- #define MEMLIB_H /* Tag this one included */
-
- #include <memincs.h>
-
-
- /*
- ** TRE structs
- */
-
- struct TNODE_S
- {
- PVOID pvData;
- struct TNODE_S *psLeft;
- struct TNODE_S *psRight;
- };
- typedef struct TNODE_S TNODE_T;
- typedef TNODE_T *TNODE_P;
- typedef TNODE_T **TNODE_PP;
-
-
- /*
- ** LST structs
- */
-
- struct LLIST_S
- {
- struct LLIST_S *psPrev;
- struct LLIST_S *psNext;
- VOID *pvData;
- };
- typedef struct LLIST_S LLIST_T;
- typedef LLIST_T *LLIST_P;
- typedef LLIST_T **LLIST_PP;
-
- /*
- ** LCK structs
- */
-
- struct LOCK_S
- {
- ULONG ulongLock; /* Semaphore (RAM) */
- SHORT sLockId; /* associated lock id */
- };
-
- typedef struct LOCK_S LOCK_T;
- typedef LOCK_T *LOCK_P;
- typedef LOCK_T **LOCK_PP;
-
- /*
- ** HEP structs
- */
-
- struct HEAP_DATA_S{
- SHORT sPriority;
- PVOID pvData;
- };
-
- typedef struct HEAP_DATA_S HEAP_DATA_T;
- typedef HEAP_DATA_T * HEAP_DATA_P;
- typedef HEAP_DATA_T ** HEAP_DATA_PP;
-
- struct HEAP_S{
- SHORT sMaxHeapElms;
- SHORT sHeapBottom;
- HEAP_DATA_P psHeapData;
- };
-
- typedef struct HEAP_S HEAP_T;
- typedef HEAP_T * HEAP_P;
- typedef HEAP_T ** HEAP_PP;
-
-
-
- /*
- ** TRE dcls
- */
-
- #ifdef C_ANSI
-
- SHORT APIENTRY
- MemTreRotateNodeLeft(TNODE_P,TNODE_PP);
-
- SHORT APIENTRY
- MemTreRotateNodeRight(TNODE_P,TNODE_PP);
-
- SHORT APIENTRY
- MemTreLeaf(TNODE_P);
-
- SHORT APIENTRY MemTreAllocNode(TNODE_PP);
-
- SHORT APIENTRY MemTreInsertNode(TNODE_P,
- TNODE_P,
- SHORT (*)(PVOID,PVOID),
- TNODE_PP);
-
- SHORT APIENTRY MemTreFindNode(TNODE_P,
- PVOID,
- SHORT (*)(PVOID,PVOID),
- TNODE_PP);
-
- SHORT APIENTRY MemTreDeleteNode(TNODE_P,
- PVOID,
- SHORT (*)(PVOID,PVOID),
- TNODE_PP);
-
- SHORT APIENTRY
- MemTreVacateTree(TNODE_PP,BOOL );
-
- SHORT APIENTRY
- MemTreWalk(TNODE_P, SHORT, SHORT (APIENTRY *)(PVOID));
-
- #else
- SHORT APIENTRY MemTreRotateNodeLeft();
- SHORT APIENTRY MemTreRotateNodeRight();
- SHORT APIENTRY MemTreLeaf();
- SHORT APIENTRY MemTreAllocNode();
- SHORT APIENTRY MemTreInsertNode();
- SHORT APIENTRY MemTreFindNode();
- SHORT APIENTRY MemTreDeleteNode();
- SHORT APIENTRY MemTreVacateTree();
- SHORT APIENTRY MemTreWalk();
-
- #endif
-
- /*
- ** LST
- */
-
- #ifdef C_ANSI
-
- SHORT APIENTRY
- MemLstAllocMember(LLIST_PP);
-
- SHORT APIENTRY
- MemLstInsertMember(LLIST_P,
- LLIST_P,
- SHORT (*)(PVOID,PVOID),
- LLIST_PP);
-
- SHORT APIENTRY
- MemLstFindMember(LLIST_P,
- PVOID,
- SHORT (*)(PVOID,PVOID),
- LLIST_PP);
-
-
- SHORT APIENTRY
- MemLstFindTailMember(LLIST_P,
- LLIST_PP);
-
- SHORT APIENTRY
- MemLstAddAfterMember(LLIST_P,LLIST_P);
-
- SHORT APIENTRY
- MemLstAddBeforeMember(LLIST_P,
- LLIST_P,
- LLIST_P,
- LLIST_PP);
-
- SHORT APIENTRY
- MemLstDeleteMember(LLIST_P,
- LLIST_P,
- LLIST_PP);
-
-
- SHORT APIENTRY
- MemLstUnlinkMember(LLIST_P,
- LLIST_P,
- LLIST_PP);
-
- SHORT APIENTRY
- MemLstVacateList(LLIST_PP,
- BOOL);
-
- #else
- SHORT APIENTRY MemLstAllocMember();
- SHORT APIENTRY MemLstInsertMember();
- SHORT APIENTRY MemLstFindMember();
- SHORT APIENTRY MemLstFindTailMember();
- SHORT APIENTRY MemLstAddAfterMember();
- SHORT APIENTRY MemLstAddBeforeMember();
- SHORT APIENTRY MemLstDeleteMember();
- SHORT APIENTRY MemLstUnlinkMember();
- SHORT APIENTRY MemLstVacateList();
-
- #endif
-
-
-
- #ifdef C_ANSI
-
- SHORT APIENTRY
- MemLckManageLocks(SHORT, LOCK_P, SHORT );
-
- SHORT APIENTRY
- MemLckInitLock(LOCK_P );
-
- #else
- SHORT APIENTRY MemLckManageLocks();
- SHORT APIENTRY MemLckInitLock();
-
- #endif
-
- /*
- ** Stack routines
- */
-
- #ifdef C_ANSI
-
- SHORT APIENTRY
- MemStkVacateStack(LLIST_PP, BOOL );
-
- SHORT APIENTRY
- MemStkClearStack(LLIST_PP );
-
- SHORT APIENTRY
- MemStkPush(LLIST_PP, PVOID );
-
- SHORT APIENTRY
- MemStkPop(LLIST_PP, PVOID );
-
- SHORT APIENTRY
- MemStkEmptyStack(LLIST_P, BOOL * );
-
- #else
- SHORT APIENTRY MemStkVacateStack();
- SHORT APIENTRY MemStkClearStack();
- SHORT APIENTRY MemStkPush();
- SHORT APIENTRY MemStkPop();
- SHORT APIENTRY MemStkEmptyStack();
-
- #endif
-
-
- /*
- ** (FIFO) Queue Routines
- */
-
- #ifdef C_ANSI
-
- SHORT APIENTRY
- MemQueEnqMember(LLIST_PP, LLIST_PP, PVOID);
-
- SHORT APIENTRY
- MemQueDeqMember(LLIST_PP, LLIST_PP, PVOID *);
-
- #else
-
- SHORT APIENTRY
- MemQueEnqMember();
-
- SHORT APIENTRY
- MemQueDeqMember();
-
- #endif
-
-
-
- /*
- ** Heap (Priority Queue) Routines
- */
-
- #ifdef C_ANSI
-
- SHORT APIENTRY
- MemHepDeque(HEAP_P ,PSHORT ,PVOID * );
-
- SHORT APIENTRY
- MemHepDown(HEAP_P, SHORT );
-
- SHORT APIENTRY
- MemHepEnque(HEAP_P, SHORT, PVOID );
-
- SHORT APIENTRY
- MemHepInit(HEAP_PP, SHORT );
-
- SHORT APIENTRY
- MemHepSwap(HEAP_DATA_P, HEAP_DATA_P );
-
- SHORT APIENTRY
- MemHepUp(HEAP_P );
-
- SHORT APIENTRY
- MemHepSearch(HEAP_P,
- PVOID,
- SHORT (*)(PVOID,PVOID),
- HEAP_DATA_PP );
-
- SHORT APIENTRY
- MemHepVacateHeap(HEAP_PP, BOOL );
-
- #else
-
- SHORT APIENTRY
- MemHepDeque();
-
- SHORT APIENTRY
- MemHepDown();
-
- SHORT APIENTRY
- MemHepEnque();
-
- SHORT APIENTRY
- MemHepInit();
-
- SHORT APIENTRY
- MemHepSwap();
-
- SHORT APIENTRY
- MemHepUp();
-
- SHORT APIENTRY
- MemHepSearch();
-
- SHORT APIENTRY
- MemHepVacateHeap();
-
- #endif
-
-
- #endif /* MEMLIB_H */
-
-
-