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_STACK_H_
00027 #define _GDSL_STACK_H_
00028
00029
00030 #include <stdio.h>
00031
00032
00033 #include "gdsl_types.h"
00034
00035 #ifdef __cplusplus
00036 extern "C"
00037 {
00038 #endif
00039
00040
00053 typedef struct _gdsl_stack* gdsl_stack_t;
00054
00055
00056
00057
00058
00079 extern gdsl_stack_t
00080 gdsl_stack_alloc (const char* NAME,
00081 gdsl_alloc_func_t ALLOC_F,
00082 gdsl_free_func_t FREE_F
00083 );
00084
00098 extern void
00099 gdsl_stack_free (gdsl_stack_t S
00100 );
00101
00115 extern void
00116 gdsl_stack_flush (gdsl_stack_t S
00117 );
00118
00119
00120
00121
00122
00132 extern const char*
00133 gdsl_stack_get_name (const gdsl_stack_t S
00134 );
00135
00143 extern ulong
00144 gdsl_stack_get_size (const gdsl_stack_t S
00145 );
00146
00164 extern ulong
00165 gdsl_stack_get_growing_factor (const gdsl_stack_t S
00166 );
00167
00176 extern bool
00177 gdsl_stack_is_empty (const gdsl_stack_t S
00178 );
00179
00190 extern gdsl_element_t
00191 gdsl_stack_get_top (const gdsl_stack_t S
00192 );
00193
00204 extern gdsl_element_t
00205 gdsl_stack_get_bottom (const gdsl_stack_t S
00206 );
00207
00208
00209
00210
00211
00225 extern gdsl_stack_t
00226 gdsl_stack_set_name (gdsl_stack_t S,
00227 const char* NEW_NAME
00228 );
00229
00248 extern void
00249 gdsl_stack_set_growing_factor (gdsl_stack_t S,
00250 ulong G
00251 );
00252
00272 extern gdsl_element_t
00273 gdsl_stack_insert (gdsl_stack_t S,
00274 void* VALUE
00275 );
00276
00289 extern gdsl_element_t
00290 gdsl_stack_remove (gdsl_stack_t S
00291 );
00292
00293
00294
00295
00296
00312 extern gdsl_element_t
00313 gdsl_stack_search (const gdsl_stack_t S,
00314 gdsl_compare_func_t COMP_F,
00315 void* VALUE
00316 );
00317
00328 extern gdsl_element_t
00329 gdsl_stack_search_by_position (const gdsl_stack_t S,
00330 ulong POS
00331 );
00332
00333
00334
00335
00336
00354 extern gdsl_element_t
00355 gdsl_stack_map_forward (const gdsl_stack_t S,
00356 gdsl_map_func_t MAP_F,
00357 void* USER_DATA
00358 );
00359
00377 extern gdsl_element_t
00378 gdsl_stack_map_backward (const gdsl_stack_t S,
00379 gdsl_map_func_t MAP_F,
00380 void* USER_DATA
00381 );
00382
00383
00384
00385
00386
00402 extern void
00403 gdsl_stack_write (const gdsl_stack_t S,
00404 gdsl_write_func_t WRITE_F,
00405 FILE* OUTPUT_FILE,
00406 void* USER_DATA
00407 );
00408
00425 extern void
00426 gdsl_stack_write_xml (gdsl_stack_t S,
00427 gdsl_write_func_t WRITE_F,
00428 FILE* OUTPUT_FILE,
00429 void* USER_DATA
00430 );
00431
00448 extern void
00449 gdsl_stack_dump (gdsl_stack_t S,
00450 gdsl_write_func_t WRITE_F,
00451 FILE* OUTPUT_FILE,
00452 void* USER_DATA
00453 );
00454
00455
00456
00457
00458
00459
00460
00461 #ifdef __cplusplus
00462 }
00463 #endif
00464
00465
00466 #endif
00467
00468