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

VxWorks

开发平台:

C/C++

  1. /* sllLib.h - singly linked list library header */
  2. /* Copyright 1984-1992 Wind River Systems, Inc. */
  3. /*
  4. modification history
  5. --------------------
  6. 02b,22sep92,rrr  added support for c++
  7. 02a,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,05oct90,shl  added ANSI function prototypes.
  14.  added copyright notice.
  15. 01b,10aug90,dnw  changed declaration of sllRemove() from STATUS to void.
  16. 01a,03jun89,jcf  written.
  17. */
  18. #ifndef __INCsllLibh
  19. #define __INCsllLibh
  20. #ifdef __cplusplus
  21. extern "C" {
  22. #endif
  23. /* type definitions */
  24. typedef struct slnode /* Node of a linked list. */
  25.     {
  26.     struct slnode *next; /* Points at the next node in the list */
  27.     } SL_NODE;
  28. /* HIDDEN */
  29. typedef struct /* Header for a linked list. */
  30.     {
  31.     SL_NODE *head; /* header of list */
  32.     SL_NODE *tail; /* tail of list */
  33.     } SL_LIST;
  34. /* END_HIDDEN */
  35. /************************************************************************
  36. *
  37. * sllFirst - find first node in list
  38. *
  39. * DESCRIPTION
  40. * Finds the first node in a singly linked list.
  41. *
  42. * RETURNS
  43. * Pointer to the first node in a list, or
  44. * NULL if the list is empty.
  45. *
  46. * NOMANUAL
  47. */
  48. #define SLL_FIRST(pList)
  49.     (
  50.     (((SL_LIST *)pList)->head)
  51.     )
  52. /************************************************************************
  53. *
  54. * sllLast - find last node in list
  55. *
  56. * This routine finds the last node in a singly linked list.
  57. *
  58. * RETURNS
  59. *  pointer to the last node in list, or
  60. *  NULL if the list is empty.
  61. *
  62. * NOMANUAL
  63. */
  64. #define SLL_LAST(pList)
  65.     (
  66.     (((SL_LIST *)pList)->tail)
  67.     )
  68. /************************************************************************
  69. *
  70. * sllNext - find next node in list
  71. *
  72. * Locates the node immediately after the node pointed to by the pNode.
  73. *
  74. * RETURNS:
  75. *  Pointer to the next node in the list, or
  76. * NULL if there is no next node.
  77. *
  78. * NOMANUAL
  79. */
  80. #define SLL_NEXT(pNode)
  81.     (
  82.     (((SL_NODE *)pNode)->next)
  83.     )
  84. /************************************************************************
  85. *
  86. * sllEmpty - boolean function to check for empty list
  87. *
  88. * RETURNS:
  89. *  TRUE if list is empty
  90. * FALSE otherwise
  91. *
  92. * NOMANUAL
  93. */
  94. #define SLL_EMPTY(pList)
  95.     (
  96.     (((SL_LIST *)pList)->head == NULL)
  97.     )
  98. /* function declarations */
  99. #if defined(__STDC__) || defined(__cplusplus)
  100. extern SL_LIST *sllCreate (void);
  101. extern SL_NODE *sllEach (SL_LIST *pList, FUNCPTR routine, int routineArg);
  102. extern SL_NODE *sllGet (SL_LIST *pList);
  103. extern SL_NODE *sllPrevious (SL_LIST *pList, SL_NODE *pNode);
  104. extern STATUS  sllDelete (SL_LIST *pList);
  105. extern STATUS  sllInit (SL_LIST *pList);
  106. extern STATUS  sllTerminate (SL_LIST *pList);
  107. extern int  sllCount (SL_LIST *pList);
  108. extern void  sllPutAtHead (SL_LIST *pList, SL_NODE *pNode);
  109. extern void  sllPutAtTail (SL_LIST *pList, SL_NODE *pNode);
  110. extern void  sllRemove (SL_LIST *pList, SL_NODE *pDeleteNode,
  111.    SL_NODE *pPrevNode);
  112. #else /* __STDC__ */
  113. extern SL_LIST *sllCreate ();
  114. extern SL_NODE *sllEach ();
  115. extern SL_NODE *sllGet ();
  116. extern SL_NODE *sllPrevious ();
  117. extern STATUS  sllDelete ();
  118. extern STATUS  sllInit ();
  119. extern STATUS  sllTerminate ();
  120. extern int  sllCount ();
  121. extern void  sllPutAtHead ();
  122. extern void  sllPutAtTail ();
  123. extern void  sllRemove ();
  124. #endif /* __STDC__ */
  125. #ifdef __cplusplus
  126. }
  127. #endif
  128. #endif /* __INCsllLibh */