2 #include "lfds710_hash_addonly_internal.h"
8 /****************************************************************************/
9 void lfds710_hash_a_iterate_init( struct lfds710_hash_a_state *has,
10 struct lfds710_hash_a_iterate *hai )
12 LFDS710_PAL_ASSERT( has != NULL );
13 LFDS710_PAL_ASSERT( hai != NULL );
15 hai->baus = has->baus_array;
16 hai->baus_end = has->baus_array + has->array_size;
26 /****************************************************************************/
27 int lfds710_hash_a_iterate( struct lfds710_hash_a_iterate *hai,
28 struct lfds710_hash_a_element **hae )
30 enum lfds710_misc_flag
31 finished_flag = LFDS710_MISC_FLAG_LOWERED;
36 LFDS710_PAL_ASSERT( hai != NULL );
37 LFDS710_PAL_ASSERT( hae != NULL );
39 while( finished_flag == LFDS710_MISC_FLAG_LOWERED )
41 lfds710_btree_au_get_by_absolute_position_and_then_by_relative_position( hai->baus, &hai->baue, LFDS710_BTREE_AU_ABSOLUTE_POSITION_SMALLEST_IN_TREE, LFDS710_BTREE_AU_RELATIVE_POSITION_NEXT_LARGER_ELEMENT_IN_ENTIRE_TREE );
43 if( hai->baue != NULL )
45 *hae = LFDS710_BTREE_AU_GET_VALUE_FROM_ELEMENT( *hai->baue );
46 finished_flag = LFDS710_MISC_FLAG_RAISED;
50 if( hai->baue == NULL )
51 if( ++hai->baus == hai->baus_end )
54 finished_flag = LFDS710_MISC_FLAG_RAISED;