Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #ifndef _DGL_HEAP_H_
00023 #define _DGL_HEAP_H_
00024
00025 typedef union _dglHeapData
00026 {
00027 void *pv;
00028 int n;
00029 unsigned int un;
00030 long l;
00031 unsigned long ul;
00032
00033 } dglHeapData_u;
00034
00035
00036 typedef struct _dglHeapNode
00037 {
00038 long key;
00039 dglHeapData_u value;
00040 unsigned char flags;
00041
00042 } dglHeapNode_s;
00043
00044 typedef struct _dglHeap
00045 {
00046
00047 long index;
00048 long count;
00049 long block;
00050 dglHeapNode_s *pnode;
00051
00052 } dglHeap_s;
00053
00054 extern void dglHeapInit(dglHeap_s * pheap);
00055
00056
00057 typedef void (*dglHeapCancelItem_fn) (dglHeap_s * pheap,
00058 dglHeapNode_s * pitem);
00059 extern void dglHeapFree(dglHeap_s * pheap,
00060 dglHeapCancelItem_fn pfnCancelItem);
00061
00062 extern int dglHeapInsertMax(dglHeap_s * pheap,
00063 long key,
00064 unsigned char flags, dglHeapData_u value);
00065
00066 extern int dglHeapExtractMax(dglHeap_s * pheap, dglHeapNode_s * pnoderet);
00067
00068 extern int dglHeapInsertMin(dglHeap_s * pheap,
00069 long key,
00070 unsigned char flags, dglHeapData_u value);
00071
00072 extern int dglHeapExtractMin(dglHeap_s * pheap, dglHeapNode_s * pnoderet);
00073
00074 #endif