]> pd.if.org Git - liblfds/blob - liblfds/liblfds6.1.0/liblfds610/src/lfds610_stack/lfds610_stack_delete.c
Initial import (all versions, including the new 7.1.0)
[liblfds] / liblfds / liblfds6.1.0 / liblfds610 / src / lfds610_stack / lfds610_stack_delete.c
1 #include "lfds610_stack_internal.h"
2
3
4
5
6
7 /****************************************************************************/
8 void lfds610_stack_delete( struct lfds610_stack_state *ss, void (*user_data_delete_function)(void *user_data, void *user_state), void *user_state )
9 {
10   void
11     *user_data;
12
13   assert( ss != NULL );
14   // TRD : user_data_delete_function can be NULL
15   // TRD : user_state can be NULL
16
17   while( lfds610_stack_pop(ss, &user_data) )
18     if( user_data_delete_function != NULL )
19       user_data_delete_function( user_data, user_state );
20
21   lfds610_freelist_delete( ss->fs, lfds610_stack_internal_freelist_delete_function, NULL );
22
23   lfds610_liblfds_aligned_free( ss );
24
25   return;
26 }
27
28
29
30
31
32 /****************************************************************************/
33 void lfds610_stack_clear( struct lfds610_stack_state *ss, void (*user_data_clear_function)(void *user_data, void *user_state), void *user_state )
34 {
35   void
36     *user_data;
37
38   assert( ss != NULL );
39   // TRD : user_data_clear_function can be NULL
40   // TRD : user_state can be NULL
41
42   while( lfds610_stack_pop(ss, &user_data) )
43     if( user_data_clear_function != NULL )
44       user_data_clear_function( user_data, user_state );
45
46   return;
47 }
48
49
50
51
52
53 /****************************************************************************/
54 #pragma warning( disable : 4100 )
55
56 void lfds610_stack_internal_freelist_delete_function( void *user_data, void *user_state )
57 {
58   assert( user_data != NULL );
59   assert( user_state == NULL );
60
61   lfds610_liblfds_aligned_free( user_data );
62
63   return;
64 }
65
66 #pragma warning( default : 4100 )
67