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

VxWorks

开发平台:

C/C++

  1. /* qPriHeapLib.h - heap library header */
  2. /* Copyright 1984-1992 Wind River Systems, Inc. */
  3. /*
  4. modification history
  5. --------------------
  6. 02c,22sep92,rrr  added support for c++
  7. 02b,19jul92,pme  made qPriHeapRemove return STATUS.
  8. 02a,04jul92,jcf  cleaned up.
  9. 01f,26may92,rrr  the tree shuffle
  10. 01e,04oct91,rrr  passed through the ansification filter
  11.   -changed VOID to void
  12.   -changed copyright notice
  13. 01d,05oct90,shl  added ANSI function prototypes.
  14.  added copyright notice.
  15. 01c,05jul90,jcf  added qPriHeapCalibrate().
  16.  make priority key unsigned.
  17. 01b,26jun90,jcf  remove queue class definition.
  18. 01a,19oct89,jcf  created.
  19. */
  20. #ifndef __INCqPriHeapLibh
  21. #define __INCqPriHeapLibh
  22. #ifdef __cplusplus
  23. extern "C" {
  24. #endif
  25. #include "vxWorks.h"
  26. #include "vwModNum.h"
  27. #include "qClass.h"
  28. /* status codes */
  29. #define S_qPriHeapLib_NULL_HEAP_ARRAY (M_qPriHeapLib | 1)
  30. /* type definitions */
  31. /* HIDDEN */
  32. typedef struct /* Q_PRI_HEAP_NODE */
  33.     {
  34.     ULONG key; /* heap key (0 is highest priority) */
  35.     int   index; /* current index into heap array */
  36.     } Q_PRI_HEAP_NODE;
  37. typedef Q_PRI_HEAP_NODE *HEAP_ARRAY[];
  38. typedef struct /* Q_PRI_HEAP_HEAD */
  39.     {
  40.     Q_PRI_HEAP_NODE *pHighNode; /* highest priority node in heap */
  41.     HEAP_ARRAY     *pHeapArray; /* start of heap table */
  42.     int      heapIndex; /* index of next available heap slot */
  43.     } Q_PRI_HEAP_HEAD;
  44. /* END_HIDDEN */
  45. /* function declarations */
  46. #if defined(__STDC__) || defined(__cplusplus)
  47. extern HEAP_ARRAY * qPriHeapArrayCreate (int heapSize);
  48. extern Q_PRI_HEAP_HEAD *qPriHeapCreate (HEAP_ARRAY *pHeapArray);
  49. extern Q_PRI_HEAP_NODE *qPriHeapEach (Q_PRI_HEAP_HEAD *pQHead, FUNCPTR routine,
  50.       int routineArg);
  51. extern Q_PRI_HEAP_NODE *qPriHeapGet (Q_PRI_HEAP_HEAD *pQPriHeapHead);
  52. extern Q_PRI_HEAP_NODE *qPriHeapGetExpired (Q_PRI_HEAP_HEAD *pQPriHeapHead);
  53. extern STATUS  qPriHeapArrayDelete (HEAP_ARRAY *pHeapArray);
  54. extern STATUS  qPriHeapDelete (Q_PRI_HEAP_HEAD *pQPriHeapHead);
  55. extern STATUS  qPriHeapInit (Q_PRI_HEAP_HEAD *pQPriHeapHead,
  56.       HEAP_ARRAY *pHeapArray);
  57. extern STATUS  qPriHeapTerminate (Q_PRI_HEAP_HEAD *pQPriHeapHead);
  58. extern ULONG  qPriHeapKey (Q_PRI_HEAP_NODE *pQPriHeapNode,
  59.      int keyType);
  60. extern int  qPriHeapInfo (Q_PRI_HEAP_HEAD *pQPriHeapHead,
  61.       int nodeArray [], int maxNodes);
  62. extern void  qPriHeapAdvance (Q_PRI_HEAP_HEAD *pQPriHeapHead);
  63. extern void  qPriHeapCalibrate (Q_PRI_HEAP_HEAD *pQPriHeapHead,
  64.    ULONG keyDelta);
  65. extern void  qPriHeapPut (Q_PRI_HEAP_HEAD *pQPriHeapHead,
  66.      Q_PRI_HEAP_NODE *pQPriHeapNode, ULONG key);
  67. extern STATUS  qPriHeapRemove (Q_PRI_HEAP_HEAD *pQPriHeapHead,
  68. Q_PRI_HEAP_NODE *pQPriHeapNode);
  69. extern void  qPriHeapResort (Q_PRI_HEAP_HEAD *pQPriHeapHead,
  70. Q_PRI_HEAP_NODE *pQPriHeapNode,
  71. ULONG newKey);
  72. extern void  qPriHeapShow (Q_PRI_HEAP_HEAD *pHeap, int format);
  73. #else /* __STDC__ */
  74. extern HEAP_ARRAY * qPriHeapArrayCreate ();
  75. extern Q_PRI_HEAP_HEAD *qPriHeapCreate ();
  76. extern Q_PRI_HEAP_NODE *qPriHeapEach ();
  77. extern Q_PRI_HEAP_NODE *qPriHeapGet ();
  78. extern Q_PRI_HEAP_NODE *qPriHeapGetExpired ();
  79. extern STATUS  qPriHeapArrayDelete ();
  80. extern STATUS  qPriHeapDelete ();
  81. extern STATUS  qPriHeapInit ();
  82. extern STATUS  qPriHeapTerminate ();
  83. extern ULONG  qPriHeapKey ();
  84. extern int  qPriHeapInfo ();
  85. extern void  qPriHeapAdvance ();
  86. extern void  qPriHeapCalibrate ();
  87. extern void  qPriHeapPut ();
  88. extern STATUS  qPriHeapRemove ();
  89. extern void  qPriHeapResort ();
  90. extern void  qPriHeapShow ();
  91. #endif /* __STDC__ */
  92. #ifdef __cplusplus
  93. }
  94. #endif
  95. #endif /* __INCqPriHeapLibh */