00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026 #ifndef __GDSL_BSTREE_H_
00027 #define __GDSL_BSTREE_H_
00028
00029
00030 #include "_gdsl_bintree.h"
00031 #include "gdsl_macros.h"
00032 #include "gdsl_types.h"
00033
00034
00035 #ifdef __cplusplus
00036 extern "C"
00037 {
00038 #endif
00039
00040
00052 typedef _gdsl_bintree_t _gdsl_bstree_t;
00053
00061 typedef int (* _gdsl_bstree_map_func_t) (_gdsl_bstree_t TREE,
00062 void* USER_DATA
00063 );
00064
00071 typedef void (* _gdsl_bstree_write_func_t) (_gdsl_bstree_t TREE,
00072 FILE* OUTPUT_FILE,
00073 void* USER_DATA
00074 );
00075
00076
00077
00078
00079
00093 extern _gdsl_bstree_t
00094 _gdsl_bstree_alloc (const gdsl_element_t E
00095 );
00096
00110 extern void
00111 _gdsl_bstree_free (_gdsl_bstree_t T,
00112 const gdsl_free_func_t FREE_F
00113 );
00114
00132 extern _gdsl_bstree_t
00133 _gdsl_bstree_copy (const _gdsl_bstree_t T,
00134 const gdsl_copy_func_t COPY_F
00135 );
00136
00137
00138
00139
00140
00151 extern bool
00152 _gdsl_bstree_is_empty (const _gdsl_bstree_t T
00153 );
00154
00165 extern bool
00166 _gdsl_bstree_is_leaf (const _gdsl_bstree_t T
00167 );
00168
00176 extern gdsl_element_t
00177 _gdsl_bstree_get_content (const _gdsl_bstree_t T
00178 );
00179
00190 extern bool
00191 _gdsl_bstree_is_root (const _gdsl_bstree_t T
00192 );
00193
00204 extern _gdsl_bstree_t
00205 _gdsl_bstree_get_parent (const _gdsl_bstree_t T
00206 );
00207
00218 extern _gdsl_bstree_t
00219 _gdsl_bstree_get_left (const _gdsl_bstree_t T
00220 );
00221
00232 extern _gdsl_bstree_t
00233 _gdsl_bstree_get_right (const _gdsl_bstree_t T
00234 );
00235
00244 extern ulong
00245 _gdsl_bstree_get_size (const _gdsl_bstree_t T
00246 );
00247
00259 extern ulong
00260 _gdsl_bstree_get_height (const _gdsl_bstree_t T
00261 );
00262
00263
00264
00265
00266
00290 extern _gdsl_bstree_t
00291 _gdsl_bstree_insert (_gdsl_bstree_t* T,
00292 const gdsl_compare_func_t COMP_F,
00293 const gdsl_element_t VALUE,
00294 int* RESULT
00295 );
00296
00318 extern gdsl_element_t
00319 _gdsl_bstree_remove (_gdsl_bstree_t* T,
00320 const gdsl_compare_func_t COMP_F,
00321 const gdsl_element_t VALUE
00322 );
00323
00324
00325
00326
00327
00345 extern _gdsl_bstree_t
00346 _gdsl_bstree_search (const _gdsl_bstree_t T,
00347 const gdsl_compare_func_t COMP_F,
00348 const gdsl_element_t VALUE
00349 );
00350
00367 extern _gdsl_bstree_t
00368 _gdsl_bstree_search_next (const _gdsl_bstree_t T,
00369 const gdsl_compare_func_t COMP_F,
00370 const gdsl_element_t VALUE
00371 );
00372
00373
00374
00375
00376
00395 extern _gdsl_bstree_t
00396 _gdsl_bstree_map_prefix (const _gdsl_bstree_t T,
00397 const _gdsl_bstree_map_func_t MAP_F,
00398 void* USER_DATA
00399 );
00400
00419 extern _gdsl_bstree_t
00420 _gdsl_bstree_map_infix (const _gdsl_bstree_t T,
00421 const _gdsl_bstree_map_func_t MAP_F,
00422 void* USER_DATA
00423 );
00424
00443 extern _gdsl_bstree_t
00444 _gdsl_bstree_map_postfix (const _gdsl_bstree_t T,
00445 const _gdsl_bstree_map_func_t MAP_F,
00446 void* USER_DATA
00447 );
00448
00449
00450
00451
00452
00470 extern void
00471 _gdsl_bstree_write (const _gdsl_bstree_t T,
00472 const _gdsl_bstree_write_func_t WRITE_F,
00473 FILE* OUTPUT_FILE,
00474 void* USER_DATA
00475 );
00476
00496 extern void
00497 _gdsl_bstree_write_xml (const _gdsl_bstree_t T,
00498 const _gdsl_bstree_write_func_t WRITE_F,
00499 FILE* OUTPUT_FILE,
00500 void* USER_DATA
00501 );
00502
00521 extern void
00522 _gdsl_bstree_dump (const _gdsl_bstree_t T,
00523 const _gdsl_bstree_write_func_t WRITE_F,
00524 FILE* OUTPUT_FILE,
00525 void* USER_DATA
00526 );
00527
00528
00529
00530
00531
00532
00533 #ifdef __cplusplus
00534 }
00535 #endif
00536
00537
00538 #endif
00539
00540