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 <stdio.h>
00031
00032
00033 #include "gdsl_types.h"
00034
00035
00036 #ifdef __cplusplus
00037 extern "C"
00038 {
00039 #endif
00040
00041
00053 typedef struct gdsl_bstree* gdsl_bstree_t;
00054
00055
00056
00057
00058
00085 extern gdsl_bstree_t
00086 gdsl_bstree_alloc (const char* NAME,
00087 gdsl_alloc_func_t ALLOC_F,
00088 gdsl_free_func_t FREE_F,
00089 gdsl_compare_func_t COMP_F
00090 );
00091
00105 extern void
00106 gdsl_bstree_free (gdsl_bstree_t T
00107 );
00108
00123 extern void
00124 gdsl_bstree_flush (gdsl_bstree_t T
00125 );
00126
00127
00128
00129
00130
00140 extern const char*
00141 gdsl_bstree_get_name (const gdsl_bstree_t T
00142 );
00143
00152 extern bool
00153 gdsl_bstree_is_empty (const gdsl_bstree_t T
00154 );
00155
00163 extern gdsl_element_t
00164 gdsl_bstree_get_root (const gdsl_bstree_t T
00165 );
00166
00175 extern ulong
00176 gdsl_bstree_get_size (const gdsl_bstree_t T
00177 );
00178
00187 extern ulong
00188 gdsl_bstree_get_height (const gdsl_bstree_t T
00189 );
00190
00191
00192
00193
00194
00208 extern gdsl_bstree_t
00209 gdsl_bstree_set_name (gdsl_bstree_t T,
00210 const char* NEW_NAME
00211 );
00212
00235 extern gdsl_element_t
00236 gdsl_bstree_insert (gdsl_bstree_t T,
00237 void* VALUE,
00238 int* RESULT
00239 );
00240
00259 extern gdsl_element_t
00260 gdsl_bstree_remove (gdsl_bstree_t T,
00261 void* VALUE
00262 );
00263
00283 extern gdsl_bstree_t
00284 gdsl_bstree_delete (gdsl_bstree_t T,
00285 void* VALUE
00286 );
00287
00288
00289
00290
00291
00311 extern gdsl_element_t
00312 gdsl_bstree_search (const gdsl_bstree_t T,
00313 gdsl_compare_func_t COMP_F,
00314 void* VALUE
00315 );
00316
00317
00318
00319
00320
00339 extern gdsl_element_t
00340 gdsl_bstree_map_prefix (const gdsl_bstree_t T,
00341 gdsl_map_func_t MAP_F,
00342 void* USER_DATA
00343 );
00344
00363 extern gdsl_element_t
00364 gdsl_bstree_map_infix (const gdsl_bstree_t T,
00365 gdsl_map_func_t MAP_F,
00366 void* USER_DATA
00367 );
00368
00387 extern gdsl_element_t
00388 gdsl_bstree_map_postfix (const gdsl_bstree_t T,
00389 gdsl_map_func_t MAP_F,
00390 void* USER_DATA
00391 );
00392
00393
00394
00395
00396
00413 extern void
00414 gdsl_bstree_write (const gdsl_bstree_t T,
00415 gdsl_write_func_t WRITE_F,
00416 FILE* OUTPUT_FILE,
00417 void* USER_DATA
00418 );
00419
00438 extern void
00439 gdsl_bstree_write_xml (const gdsl_bstree_t T,
00440 gdsl_write_func_t WRITE_F,
00441 FILE* OUTPUT_FILE,
00442 void* USER_DATA
00443 );
00444
00462 extern void
00463 gdsl_bstree_dump (const gdsl_bstree_t T,
00464 gdsl_write_func_t WRITE_F,
00465 FILE* OUTPUT_FILE,
00466 void* USER_DATA
00467 );
00468
00469
00470
00471
00472
00473
00474 #ifdef __cplusplus
00475 }
00476 #endif
00477
00478
00479 #endif
00480
00481