00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #ifndef _DGL_TREE_H_
00023 #define _DGL_TREE_H_
00024
00025 __BEGIN_DECLS
00026
00027
00028 #include "avl.h"
00029 #include "tavl.h"
00030
00031
00032 #define USE_THREADED_AVL
00033
00034 #if defined(USE_THREADED_AVL)
00035 #define avl_table tavl_table
00036 #define avl_traverser tavl_traverser
00037 #define avl_create tavl_create
00038 #define avl_copy tavl_copy
00039 #define avl_destroy tavl_destroy
00040 #define avl_probe tavl_probe
00041 #define avl_insert tavl_insert
00042 #define avl_replace tavl_replace
00043 #define avl_delete tavl_delete
00044 #define avl_find tavl_find
00045 #define avl_assert_insert tavl_assert_insert
00046 #define avl_assert_delete tavl_assert_delete
00047 #define avl_t_init tavl_t_init
00048 #define avl_t_first tavl_t_first
00049 #define avl_t_last tavl_t_last
00050 #define avl_t_find tavl_t_find
00051 #define avl_t_insert tavl_t_insert
00052 #define avl_t_copy tavl_t_copy
00053 #define avl_t_next tavl_t_next
00054 #define avl_t_prev tavl_t_prev
00055 #define avl_t_cur tavl_t_cur
00056 #define avl_t_replace tavl_t_replace
00057 #endif
00058
00059
00060 extern void * dglTreeGetAllocator ();
00061
00062
00063
00064
00065 typedef struct _dglTreeNode
00066 {
00067 long nKey;
00068 void * pv;
00069 void * pv2;
00070 } dglTreeNode_s;
00071 extern dglTreeNode_s * dglTreeNodeAlloc();
00072 extern void dglTreeNodeCancel( void * pvNode , void * pvParam );
00073 extern int dglTreeNodeCompare( const void * pvNodeA , const void * pvNodeB , void * pvParam );
00074 extern dglTreeNode_s * dglTreeNodeAdd( void * pvAVL, dglInt32_t nKey );
00075
00076
00077
00078
00079
00080 typedef struct _dglTreeNode2
00081 {
00082 long nKey;
00083 void * pv;
00084 void * pv2;
00085 void * pv3;
00086 } dglTreeNode2_s;
00087 extern dglTreeNode2_s * dglTreeNode2Alloc();
00088 extern void dglTreeNode2Cancel( void * pvNode , void * pvParam );
00089 extern int dglTreeNode2Compare( const void * pvNodeA , const void * pvNodeB , void * pvParam );
00090 extern dglTreeNode2_s * dglTreeNode2Add( void * pvAVL, dglInt32_t nKey );
00091
00092
00093
00094
00095
00096 typedef struct _dglTreeEdge
00097 {
00098 dglInt32_t nKey;
00099 void * pv;
00100 } dglTreeEdge_s;
00101 extern dglTreeEdge_s * dglTreeEdgeAlloc();
00102 extern void dglTreeEdgeCancel( void * pvEdge , void * pvParam );
00103 extern int dglTreeEdgeCompare( const void * pvEdgeA , const void * pvEdgeB , void * pvParam );
00104 extern dglTreeEdge_s * dglTreeEdgeAdd( void * pvAVL, dglInt32_t nKey );
00105
00106
00107
00108
00109
00110
00111 typedef struct _dglTreeTouchI32
00112 {
00113 dglInt32_t nKey;
00114 } dglTreeTouchI32_s;
00115 extern dglTreeTouchI32_s * dglTreeTouchI32Alloc();
00116 extern void dglTreeTouchI32Cancel( void * pvTouchI32 , void * pvParam );
00117 extern int dglTreeTouchI32Compare( const void * pvTouchI32A , const void * pvTouchI32B , void * pvParam );
00118 extern dglTreeTouchI32_s * dglTreeTouchI32Add( void * pvAVL, dglInt32_t nKey );
00119
00120
00121
00122
00123
00124 typedef struct _dglTreePredist
00125 {
00126 dglInt32_t nKey;
00127 dglInt32_t nFrom;
00128 dglInt32_t nDistance;
00129 dglInt32_t nCost;
00130 dglInt32_t * pnEdge;
00131 dglByte_t bFlags;
00132 } dglTreePredist_s;
00133 extern dglTreePredist_s * dglTreePredistAlloc();
00134 extern void dglTreePredistCancel( void * pvPredist , void * pvParam );
00135 extern int dglTreePredistCompare( const void * pvPredistA , const void * pvPredistB , void * pvParam );
00136 extern dglTreePredist_s * dglTreePredistAdd( void * pvAVL, dglInt32_t nKey );
00137
00138
00139
00140
00141
00142 typedef struct _dglTreeNodePri32
00143 {
00144 dglInt32_t nKey;
00145 dglInt32_t cnVal;
00146 dglInt32_t * pnVal;
00147 } dglTreeNodePri32_s;
00148 extern dglTreeNodePri32_s * dglTreeNodePri32Alloc();
00149 extern void dglTreeNodePri32Cancel( void * pvNodePri32 , void * pvParam );
00150 extern int dglTreeNodePri32Compare( const void * pvNodePri32A , const void * pvNodePri32B , void * pvParam );
00151 extern dglTreeNodePri32_s * dglTreeNodePri32Add( void * pvAVL, dglInt32_t nKey );
00152
00153
00154
00155
00156
00157 typedef struct _dglTreeEdgePri32
00158 {
00159 dglInt32_t nKey;
00160 dglInt32_t cnData;
00161 dglInt32_t * pnData;
00162 } dglTreeEdgePri32_s;
00163 extern dglTreeEdgePri32_s * dglTreeEdgePri32Alloc();
00164 extern void dglTreeEdgePri32Cancel( void * pvEdgePri32 , void * pvParam );
00165 extern int dglTreeEdgePri32Compare( const void * pvEdgePri32A , const void * pvEdgePri32B , void * pvParam );
00166 extern dglTreeEdgePri32_s * dglTreeEdgePri32Add( void * pvAVL, dglInt32_t nKey );
00167
00168
00169 __END_DECLS
00170
00171 #endif