dllLib.h
上传用户:luoyougen
上传日期:2008-05-12
资源大小:23136k
文件大小:4k
源码类别:

VxWorks

开发平台:

C/C++

  1. /* dllLib.h - doubly linked list library header */
  2. /* Copyright 1984-1992 Wind River Systems, Inc. */
  3. /*
  4. modification history
  5. --------------------
  6. 01h,22sep92,rrr  added support for c++
  7. 01g,04jul92,jcf  cleaned up.
  8. 01f,26may92,rrr  the tree shuffle
  9. 01e,04oct91,rrr  passed through the ansification filter
  10.   -changed VOID to void
  11.   -changed copyright notice
  12. 01d,08apr91,jdi  added NOMANUAL to prevent mangen.
  13. 01c,20dec90,gae  fixed declaration of dllRemove.
  14. 01b,05oct90,shl  added ANSI function prototypes.
  15.  added copyright notice.
  16. 01a,07aug89,jcf  written.
  17. */
  18. #ifndef __INCdllLibh
  19. #define __INCdllLibh
  20. #ifdef __cplusplus
  21. extern "C" {
  22. #endif
  23. /* type definitions */
  24. typedef struct dlnode /* Node of a linked list. */
  25.     {
  26.     struct dlnode *next; /* Points at the next node in the list */
  27.     struct dlnode *previous; /* Points at the previous node in the list */
  28.     } DL_NODE;
  29. /* HIDDEN */
  30. typedef struct /* Header for a linked list. */
  31.     {
  32.     DL_NODE *head; /* header of list */
  33.     DL_NODE *tail; /* tail of list */
  34.     } DL_LIST;
  35. /* END_HIDDEN */
  36. /*******************************************************************************
  37. *
  38. * dllFirst - find first node in list
  39. *
  40. * DESCRIPTION
  41. * Finds the first node in a doubly linked list.
  42. *
  43. * RETURNS
  44. * Pointer to the first node in a list, or
  45. * NULL if the list is empty.
  46. *
  47. * NOMANUAL
  48. */
  49. #define DLL_FIRST(pList)
  50.     (
  51.     (((DL_LIST *)(pList))->head)
  52.     )
  53. /*******************************************************************************
  54. *
  55. * dllLast - find last node in list
  56. *
  57. * Finds the last node in a doubly linked list.
  58. *
  59. * RETURNS
  60. *  pointer to the last node in list, or
  61. *  NULL if the list is empty.
  62. *
  63. * NOMANUAL
  64. */
  65. #define DLL_LAST(pList)
  66.     (
  67.     (((DL_LIST *)(pList))->tail)
  68.     )
  69. /*******************************************************************************
  70. *
  71. * dllNext - find next node in list
  72. *
  73. * Locates the node immediately after the node pointed to by the pNode.
  74. *
  75. * RETURNS:
  76. *  Pointer to the next node in the list, or
  77. * NULL if there is no next node.
  78. *
  79. * NOMANUAL
  80. */
  81. #define DLL_NEXT(pNode)
  82.     (
  83.     (((DL_NODE *)(pNode))->next)
  84.     )
  85. /*******************************************************************************
  86. *
  87. * dllPrevious - find preceding node in list
  88. *
  89. * Locates the node immediately before the node pointed to by the pNode.
  90. *
  91. * RETURNS:
  92. *  Pointer to the preceding node in the list, or
  93. * NULL if there is no next node.
  94. *
  95. * NOMANUAL
  96. */
  97. #define DLL_PREVIOUS(pNode)
  98.     (
  99.     (((DL_NODE *)(pNode))->previous)
  100.     )
  101. /*******************************************************************************
  102. *
  103. * dllEmpty - boolean function to check for empty list
  104. *
  105. * RETURNS:
  106. *  TRUE if list is empty
  107. * FALSE otherwise
  108. *
  109. * NOMANUAL
  110. */
  111. #define DLL_EMPTY(pList)
  112.     (
  113.     (((DL_LIST *)pList)->head == NULL)
  114.     )
  115. /* function declarations */
  116. #if defined(__STDC__) || defined(__cplusplus)
  117. extern DL_LIST *dllCreate (void);
  118. extern DL_NODE *dllEach (DL_LIST *pList, FUNCPTR routine, int routineArg);
  119. extern DL_NODE *dllGet (DL_LIST *pList);
  120. extern STATUS  dllDelete (DL_LIST *pList);
  121. extern STATUS  dllInit (DL_LIST *pList);
  122. extern STATUS  dllTerminate (DL_LIST *pList);
  123. extern int  dllCount (DL_LIST *pList);
  124. extern void  dllAdd (DL_LIST *pList, DL_NODE *pNode);
  125. extern void  dllInsert (DL_LIST *pList, DL_NODE *pPrev, DL_NODE *pNode);
  126. extern void  dllRemove (DL_LIST *pList, DL_NODE *pNode);
  127. #else /* __STDC__ */
  128. extern DL_LIST *dllCreate ();
  129. extern DL_NODE *dllEach ();
  130. extern DL_NODE *dllGet ();
  131. extern STATUS  dllDelete ();
  132. extern STATUS  dllInit ();
  133. extern STATUS  dllTerminate ();
  134. extern int  dllCount ();
  135. extern void  dllAdd ();
  136. extern void  dllInsert ();
  137. extern void  dllRemove ();
  138. #endif /* __STDC__ */
  139. #ifdef __cplusplus
  140. }
  141. #endif
  142. #endif /* __INCdllLibh */