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_HEAP_H_
00027 #define _GDSL_HEAP_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
00054 typedef struct heap* gdsl_heap_t;
00055
00056
00057
00058
00059
00082 extern gdsl_heap_t
00083 gdsl_heap_alloc (const char* NAME,
00084 gdsl_alloc_func_t ALLOC_F,
00085 gdsl_free_func_t FREE_F,
00086 gdsl_compare_func_t COMP_F
00087 );
00088
00102 extern void
00103 gdsl_heap_free (gdsl_heap_t H
00104 );
00105
00119 extern void
00120 gdsl_heap_flush (gdsl_heap_t H
00121 );
00122
00123
00124
00125
00126
00136 extern const char*
00137 gdsl_heap_get_name (const gdsl_heap_t H
00138 );
00139
00147 extern ulong
00148 gdsl_heap_get_size (const gdsl_heap_t H
00149 );
00150
00161 extern gdsl_element_t
00162 gdsl_heap_get_top (const gdsl_heap_t H
00163 );
00164
00173 extern bool
00174 gdsl_heap_is_empty (const gdsl_heap_t H
00175 );
00176
00177
00178
00179
00180
00194 extern gdsl_heap_t
00195 gdsl_heap_set_name (gdsl_heap_t H,
00196 const char* NEW_NAME
00197 );
00198
00213 extern gdsl_element_t
00214 gdsl_heap_set_top (gdsl_heap_t H,
00215 void* VALUE
00216 );
00217
00236 extern gdsl_element_t
00237 gdsl_heap_insert (gdsl_heap_t H,
00238 void* VALUE
00239 );
00240
00255 extern gdsl_element_t
00256 gdsl_heap_remove_top (gdsl_heap_t H
00257 );
00258
00274 extern gdsl_heap_t
00275 gdsl_heap_delete_top (gdsl_heap_t H
00276 );
00277
00278
00279
00280
00281
00297 extern gdsl_element_t
00298 gdsl_heap_map_forward (const gdsl_heap_t H,
00299 gdsl_map_func_t MAP_F,
00300 void* USER_DATA
00301 );
00302
00303
00304
00305
00306
00322 extern void
00323 gdsl_heap_write (const gdsl_heap_t H,
00324 gdsl_write_func_t WRITE_F,
00325 FILE* OUTPUT_FILE,
00326 void* USER_DATA
00327 );
00328
00345 extern void
00346 gdsl_heap_write_xml (const gdsl_heap_t H,
00347 gdsl_write_func_t WRITE_F,
00348 FILE* OUTPUT_FILE,
00349 void* USER_DATA
00350 );
00351
00368 extern void
00369 gdsl_heap_dump (const gdsl_heap_t H,
00370 gdsl_write_func_t WRITE_F,
00371 FILE* OUTPUT_FILE,
00372 void* USER_DATA
00373 );
00374
00375
00376
00377
00378
00379
00380 #ifdef __cplusplus
00381 }
00382 #endif
00383
00384
00385 #endif
00386
00387