65 lines
1.7 KiB
Plaintext
65 lines
1.7 KiB
Plaintext
|
//////////////////////////////////////////////////////////////////////
|
||
|
//
|
||
|
// PRIVATE header file for linklist utility
|
||
|
//
|
||
|
//////////////////////////////////////////////////////////////////////
|
||
|
//
|
||
|
|
||
|
//
|
||
|
// A Linked List Entry
|
||
|
//
|
||
|
typedef struct _lle
|
||
|
{
|
||
|
#ifdef DEBUGVER
|
||
|
WORD wTest; // consistency check
|
||
|
#endif
|
||
|
HLLE hlleNext;
|
||
|
#ifdef DBLLINK
|
||
|
HLLE hllePrev;
|
||
|
#endif // DBLLINK
|
||
|
WORD rgw[1]; // Variable length data
|
||
|
} LLE;
|
||
|
typedef LLE * PLLE;
|
||
|
typedef LLE FAR * LPLLE;
|
||
|
//
|
||
|
// Linked List Information
|
||
|
//
|
||
|
typedef struct _lli
|
||
|
{
|
||
|
HLLE hlleHead;
|
||
|
HLLE hlleTail;
|
||
|
DWORD chlleMac;
|
||
|
DWORD cbUserData; // How big the user data is
|
||
|
LLF llf; // LinkList Flags
|
||
|
LPFNKILLNODE lpfnKill; // Callback for deletion of node
|
||
|
LPFNFCMPNODE lpfnCmp; // Callback for node comparison
|
||
|
} LLI;
|
||
|
typedef LLI * PLLI;
|
||
|
typedef LLI FAR * LPLLI;
|
||
|
//
|
||
|
// Some NICE nulls (for clean code)
|
||
|
//
|
||
|
#define hlliNull (HLLI)NULL
|
||
|
#define hlleNull (HLLE)NULL
|
||
|
//
|
||
|
// These help keep the code clean
|
||
|
//
|
||
|
#define LockHlle(hlle) ((LPLLE)LockHmem(hlle))
|
||
|
#define LockHlli(hlli) ((LPLLI)LockHmem(hlli))
|
||
|
#define HlliAlloc() ((HLLI)AllocHmem(sizeof(LLI)))
|
||
|
#define HlleAllocCb(cb) ((HLLE)AllocHmem(cb))
|
||
|
#define FreeHlli(hlli) FreeHmem(hlli)
|
||
|
#define FreeHlle(hlle) FreeHmem(hlle)
|
||
|
//
|
||
|
// PRIVATE INTERNAL ROUTINES
|
||
|
//
|
||
|
void PASCAL LLInsertHlle( HLLI, HLLE, HLLE, HLLE );
|
||
|
void PASCAL LLDeleteHlle( HLLI, HLLE, HLLE );
|
||
|
//
|
||
|
// Some debug stuff
|
||
|
//
|
||
|
#ifdef DEBUGVER
|
||
|
#define WCONSIST (WORD)0xabcd
|
||
|
#endif // DEBUGVER
|
||
|
|