linklist.hmd
Upload User: caisha3
Upload Date: 2013-09-21
Package Size: 208739k
Code Size: 2k
Category:

Windows Develop

Development Platform:

Visual C++

  1. //////////////////////////////////////////////////////////////////////
  2. //
  3. //  PRIVATE header file for linklist utility
  4. //
  5. //////////////////////////////////////////////////////////////////////
  6. //
  7. //  A Linked List Entry
  8. //
  9. typedef struct _lle
  10.     {
  11. #ifdef DEBUGVER
  12.     WORD            wTest;      // consistency check
  13. #endif
  14.     HLLE            hlleNext;
  15. #ifdef DBLLINK
  16.     HLLE            hllePrev;
  17. #endif // DBLLINK
  18.     WORD            rgw[0];     // Variable length data
  19.     } LLE;
  20. typedef LLE *       PLLE;
  21. typedef LLE FAR *   LPLLE;
  22. //
  23. // Linked List Information
  24. //
  25. typedef struct _lli
  26.     {
  27.     HLLE            hlleHead;
  28.     HLLE            hlleTail;
  29.     DWORD           chlleMac;
  30.     void *          pcs;                // pointer to critical section object
  31.     DWORD           cbUserData;         // How big the user data is
  32.     LLF             llf;                // LinkList Flags
  33.     LPFNKILLNODE    lpfnKill;           // Callback for deletion of node
  34.     LPFNFCMPNODE    lpfnCmp;            // Callback for node comparison
  35.     } LLI;
  36. typedef LLI *       PLLI;
  37. typedef LLI FAR *   LPLLI;
  38. //
  39. //  Some NICE nulls (for clean code)
  40. //
  41. #define hlliNull    (HLLI)NULL
  42. #define hlleNull    (HLLE)NULL
  43. //
  44. // These help keep the code clean
  45. //
  46. #define LockHlle(hlle)      ((LPLLE)LockHmem(hlle))
  47. #define LockHlli(hlli)      ((LPLLI)LockHmem(hlli))
  48. #define HlliAlloc()         ((HLLI)AllocHmem(sizeof(LLI)))
  49. #define HlleAllocCb(cb)     ((HLLE)AllocHmem(cb))
  50. #define FreeHlli(hlli)      FreeHmem(hlli)
  51. #define FreeHlle(hlle)      FreeHmem(hlle)
  52. //
  53. //  PRIVATE INTERNAL ROUTINES
  54. //
  55. void PASCAL LLInsertHlle( HLLI, HLLE, HLLE, HLLE );
  56. void PASCAL LLDeleteHlle( HLLI, HLLE, HLLE );
  57. //
  58. // Some debug stuff
  59. //
  60. #ifdef DEBUGVER
  61. #define WCONSIST        (WORD)0xabcd
  62. #endif // DEBUGVER