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_LIST_H_
00027 #define _GDSL_LIST_H_
00028
00029 #include <stdio.h>
00030
00031 #include "gdsl_types.h"
00032
00033 #ifdef __cplusplus
00034 extern "C"
00035 {
00036 #endif
00037
00038
00051 typedef struct _gdsl_list* gdsl_list_t;
00052
00059 typedef struct _gdsl_list_cursor* gdsl_list_cursor_t;
00060
00061
00062
00063
00064
00085 extern gdsl_list_t
00086 gdsl_list_alloc (const char* NAME,
00087 gdsl_alloc_func_t ALLOC_F,
00088 gdsl_free_func_t FREE_F
00089 );
00090
00103 extern void
00104 gdsl_list_free (gdsl_list_t L
00105 );
00106
00120 extern void
00121 gdsl_list_flush (gdsl_list_t L
00122 );
00123
00124
00125
00126
00127
00137 extern const char*
00138 gdsl_list_get_name (const gdsl_list_t L
00139 );
00140
00148 extern ulong
00149 gdsl_list_get_size (const gdsl_list_t L
00150 );
00151
00160 extern bool
00161 gdsl_list_is_empty (const gdsl_list_t L
00162 );
00163
00174 extern gdsl_element_t
00175 gdsl_list_get_head (const gdsl_list_t L
00176 );
00177
00188 extern gdsl_element_t
00189 gdsl_list_get_tail (const gdsl_list_t L
00190 );
00191
00192
00193
00194
00195
00209 extern gdsl_list_t
00210 gdsl_list_set_name (gdsl_list_t L,
00211 const char* NEW_NAME
00212 );
00213
00232 extern gdsl_element_t
00233 gdsl_list_insert_head (gdsl_list_t L,
00234 void* VALUE
00235 );
00236
00255 extern gdsl_element_t
00256 gdsl_list_insert_tail (gdsl_list_t L,
00257 void* VALUE
00258 );
00259
00275 extern gdsl_element_t
00276 gdsl_list_remove_head (gdsl_list_t L
00277 );
00278
00294 extern gdsl_element_t
00295 gdsl_list_remove_tail (gdsl_list_t L
00296 );
00297
00316 extern gdsl_element_t
00317 gdsl_list_remove (gdsl_list_t L,
00318 gdsl_compare_func_t COMP_F,
00319 const void* VALUE
00320 );
00321
00337 extern gdsl_list_t
00338 gdsl_list_delete_head (gdsl_list_t L
00339 );
00340
00356 extern gdsl_list_t
00357 gdsl_list_delete_tail (gdsl_list_t L
00358 );
00359
00378 extern gdsl_list_t
00379 gdsl_list_delete (gdsl_list_t L,
00380 gdsl_compare_func_t COMP_F,
00381 const void* VALUE
00382 );
00383
00384
00385
00386
00387
00405 extern gdsl_element_t
00406 gdsl_list_search (const gdsl_list_t L,
00407 gdsl_compare_func_t COMP_F,
00408 const void* VALUE
00409 );
00410
00423 extern gdsl_element_t
00424 gdsl_list_search_by_position (const gdsl_list_t L,
00425 ulong POS
00426 );
00427
00444 extern gdsl_element_t
00445 gdsl_list_search_max (const gdsl_list_t L,
00446 gdsl_compare_func_t COMP_F
00447 );
00448
00465 extern gdsl_element_t
00466 gdsl_list_search_min (const gdsl_list_t L,
00467 gdsl_compare_func_t COMP_F
00468 );
00469
00470
00471
00472
00473
00486 extern gdsl_list_t
00487 gdsl_list_sort (gdsl_list_t L,
00488 gdsl_compare_func_t COMP_F
00489 );
00490
00491
00492
00493
00494
00512 extern gdsl_element_t
00513 gdsl_list_map_forward (const gdsl_list_t L,
00514 gdsl_map_func_t MAP_F,
00515 void* USER_DATA
00516 );
00517
00535 extern gdsl_element_t
00536 gdsl_list_map_backward (const gdsl_list_t L,
00537 gdsl_map_func_t MAP_F,
00538 void* USER_DATA
00539 );
00540
00541
00542
00543
00544
00560 extern void
00561 gdsl_list_write (const gdsl_list_t L,
00562 gdsl_write_func_t WRITE_F,
00563 FILE* OUTPUT_FILE,
00564 void* USER_DATA
00565 );
00566
00583 extern void
00584 gdsl_list_write_xml (const gdsl_list_t L,
00585 gdsl_write_func_t WRITE_F,
00586 FILE* OUTPUT_FILE,
00587 void* USER_DATA
00588 );
00589
00606 extern void
00607 gdsl_list_dump (const gdsl_list_t L,
00608 gdsl_write_func_t WRITE_F,
00609 FILE* OUTPUT_FILE,
00610 void* USER_DATA
00611 );
00612
00613
00614
00615
00616
00626 gdsl_list_cursor_t
00627 gdsl_list_cursor_alloc (const gdsl_list_t L
00628 );
00636 void
00637 gdsl_list_cursor_free (gdsl_list_cursor_t C
00638 );
00639
00650 extern void
00651 gdsl_list_cursor_move_to_head (gdsl_list_cursor_t C
00652 );
00653
00664 extern void
00665 gdsl_list_cursor_move_to_tail (gdsl_list_cursor_t C
00666 );
00667
00683 extern gdsl_element_t
00684 gdsl_list_cursor_move_to_value (gdsl_list_cursor_t C,
00685 gdsl_compare_func_t COMP_F,
00686 void* VALUE
00687 );
00688
00703 extern gdsl_element_t
00704 gdsl_list_cursor_move_to_position (gdsl_list_cursor_t C,
00705 ulong POS
00706 );
00707
00719 extern void
00720 gdsl_list_cursor_step_forward (gdsl_list_cursor_t C
00721 );
00722
00734 extern void
00735 gdsl_list_cursor_step_backward (gdsl_list_cursor_t C
00736 );
00737
00747 extern bool
00748 gdsl_list_cursor_is_on_head (const gdsl_list_cursor_t C
00749 );
00750
00760 extern bool
00761 gdsl_list_cursor_is_on_tail (const gdsl_list_cursor_t C
00762 );
00763
00773 extern bool
00774 gdsl_list_cursor_has_succ (const gdsl_list_cursor_t C
00775 );
00776
00786 extern bool
00787 gdsl_list_cursor_has_pred (const gdsl_list_cursor_t C
00788 );
00789
00803 extern void
00804 gdsl_list_cursor_set_content (gdsl_list_cursor_t C,
00805 gdsl_element_t E
00806 );
00815 extern gdsl_element_t
00816 gdsl_list_cursor_get_content (const gdsl_list_cursor_t C
00817 );
00818
00837 extern gdsl_element_t
00838 gdsl_list_cursor_insert_after (gdsl_list_cursor_t C,
00839 void* VALUE
00840 );
00859 extern gdsl_element_t
00860 gdsl_list_cursor_insert_before (gdsl_list_cursor_t C,
00861 void* VALUE
00862 );
00863
00877 extern gdsl_element_t
00878 gdsl_list_cursor_remove (gdsl_list_cursor_t C
00879 );
00880
00893 extern gdsl_element_t
00894 gdsl_list_cursor_remove_after (gdsl_list_cursor_t C
00895 );
00896
00909 extern gdsl_element_t
00910 gdsl_list_cursor_remove_before (gdsl_list_cursor_t C
00911 );
00912
00928 extern gdsl_list_cursor_t
00929 gdsl_list_cursor_delete (gdsl_list_cursor_t C
00930 );
00931
00947 extern gdsl_list_cursor_t
00948 gdsl_list_cursor_delete_after (gdsl_list_cursor_t C
00949 );
00950
00965 extern gdsl_list_cursor_t
00966 gdsl_list_cursor_delete_before (gdsl_list_cursor_t C
00967 );
00968
00969
00970
00971
00972
00973
00974
00975 #ifdef __cplusplus
00976 }
00977 #endif
00978
00979
00980 #endif
00981
00982