home *** CD-ROM | disk | FTP | other *** search
/ Tricks of the Windows Gam…ming Gurus (2nd Edition) / Disc2.iso / msdn_vcb / samples / vc98 / sdk / sdktools / winnt / remote / srvlist.h < prev    next >
Text File  |  1997-09-01  |  2KB  |  121 lines

  1. /*++
  2.  
  3. Copyright (c) 1997  Microsoft Corporation
  4.  
  5. Module Name:
  6.  
  7.     SrvList.h
  8.  
  9. Abstract:
  10.  
  11.     List package for SrvList.c
  12.  
  13. Environment:
  14.  
  15.     Console App. User mode.
  16.  
  17. Revision History:
  18.  
  19. --*/
  20.  
  21. //
  22. //  Doubly-linked list manipulation routines.  Implemented as macros
  23. //  but logically these are procedures.
  24. //
  25.  
  26. //
  27. //  VOID
  28. //  InitializeListHead(
  29. //      PLIST_ENTRY ListHead
  30. //      );
  31. //
  32.  
  33. #define InitializeListHead(ListHead) (\
  34.     (ListHead)->Flink = (ListHead)->Blink = (ListHead))
  35.  
  36. //
  37. //  BOOLEAN
  38. //  IsListEmpty(
  39. //      PLIST_ENTRY ListHead
  40. //      );
  41. //
  42.  
  43. #define IsListEmpty(ListHead) \
  44.     ((ListHead)->Flink == (ListHead))
  45.  
  46. //
  47. //  PLIST_ENTRY
  48. //  RemoveHeadList(
  49. //      PLIST_ENTRY ListHead
  50. //      );
  51. //
  52.  
  53. #define RemoveHeadList(ListHead) \
  54.     (ListHead)->Flink;\
  55.     {RemoveEntryList((ListHead)->Flink)}
  56.  
  57. //
  58. //  PLIST_ENTRY
  59. //  RemoveTailList(
  60. //      PLIST_ENTRY ListHead
  61. //      );
  62. //
  63.  
  64. #define RemoveTailList(ListHead) \
  65.     (ListHead)->Blink;\
  66.     {RemoveEntryList((ListHead)->Blink)}
  67.  
  68. //
  69. //  VOID
  70. //  RemoveEntryList(
  71. //      PLIST_ENTRY Entry
  72. //      );
  73. //
  74.  
  75. #define RemoveEntryList(Entry) {\
  76.     PLIST_ENTRY _EX_Blink;\
  77.     PLIST_ENTRY _EX_Flink;\
  78.     _EX_Flink = (Entry)->Flink;\
  79.     _EX_Blink = (Entry)->Blink;\
  80.     _EX_Blink->Flink = _EX_Flink;\
  81.     _EX_Flink->Blink = _EX_Blink;\
  82.     }
  83.  
  84. //
  85. //  VOID
  86. //  InsertTailList(
  87. //      PLIST_ENTRY ListHead,
  88. //      PLIST_ENTRY Entry
  89. //      );
  90. //
  91.  
  92. #define InsertTailList(ListHead,Entry) {\
  93.     PLIST_ENTRY _EX_Blink;\
  94.     PLIST_ENTRY _EX_ListHead;\
  95.     _EX_ListHead = (ListHead);\
  96.     _EX_Blink = _EX_ListHead->Blink;\
  97.     (Entry)->Flink = _EX_ListHead;\
  98.     (Entry)->Blink = _EX_Blink;\
  99.     _EX_Blink->Flink = (Entry);\
  100.     _EX_ListHead->Blink = (Entry);\
  101.     }
  102.  
  103. //
  104. //  VOID
  105. //  InsertHeadList(
  106. //      PLIST_ENTRY ListHead,
  107. //      PLIST_ENTRY Entry
  108. //      );
  109. //
  110.  
  111. #define InsertHeadList(ListHead,Entry) {\
  112.     PLIST_ENTRY _EX_Flink;\
  113.     PLIST_ENTRY _EX_ListHead;\
  114.     _EX_ListHead = (ListHead);\
  115.     _EX_Flink = _EX_ListHead->Flink;\
  116.     (Entry)->Flink = _EX_Flink;\
  117.     (Entry)->Blink = _EX_ListHead;\
  118.     _EX_Flink->Blink = (Entry);\
  119.     _EX_ListHead->Flink = (Entry);\
  120.     }
  121.