2424 * THE SOFTWARE.
2525 */
2626
27+ #include <stdint.h>
2728#include <stdlib.h>
2829#include <assert.h>
2930
3536
3637// approximatelly doubling primes; made with Mathematica command: Table[Prime[Floor[(1.7)^n]], {n, 3, 24}]
3738// prefixed with zero for the empty case.
38- STATIC int doubling_primes [] = {0 , 7 , 19 , 43 , 89 , 179 , 347 , 647 , 1229 , 2297 , 4243 , 7829 , 14347 , 26017 , 47149 , 84947 , 152443 , 273253 , 488399 , 869927 , 1547173 , 2745121 , 4861607 };
39+ STATIC uint32_t doubling_primes [] = {0 , 7 , 19 , 43 , 89 , 179 , 347 , 647 , 1229 , 2297 , 4243 , 7829 , 14347 , 26017 , 47149 , 84947 , 152443 , 273253 , 488399 , 869927 , 1547173 , 2745121 , 4861607 };
3940
40- STATIC int get_doubling_prime_greater_or_equal_to (int x ) {
41- for (int i = 0 ; i < sizeof (doubling_primes ) / sizeof ( int ); i ++ ) {
41+ STATIC mp_uint_t get_doubling_prime_greater_or_equal_to (mp_uint_t x ) {
42+ for (int i = 0 ; i < MP_ARRAY_SIZE (doubling_primes ); i ++ ) {
4243 if (doubling_primes [i ] >= x ) {
4344 return doubling_primes [i ];
4445 }
@@ -51,7 +52,7 @@ STATIC int get_doubling_prime_greater_or_equal_to(int x) {
5152/******************************************************************************/
5253/* map */
5354
54- void mp_map_init (mp_map_t * map , int n ) {
55+ void mp_map_init (mp_map_t * map , mp_uint_t n ) {
5556 if (n == 0 ) {
5657 map -> alloc = 0 ;
5758 map -> table = NULL ;
@@ -64,15 +65,15 @@ void mp_map_init(mp_map_t *map, int n) {
6465 map -> table_is_fixed_array = 0 ;
6566}
6667
67- void mp_map_init_fixed_table (mp_map_t * map , int n , const mp_obj_t * table ) {
68+ void mp_map_init_fixed_table (mp_map_t * map , mp_uint_t n , const mp_obj_t * table ) {
6869 map -> alloc = n ;
6970 map -> used = n ;
7071 map -> all_keys_are_qstrs = 1 ;
7172 map -> table_is_fixed_array = 1 ;
7273 map -> table = (mp_map_elem_t * )table ;
7374}
7475
75- mp_map_t * mp_map_new (int n ) {
76+ mp_map_t * mp_map_new (mp_uint_t n ) {
7677 mp_map_t * map = m_new (mp_map_t , 1 );
7778 mp_map_init (map , n );
7879 return map ;
@@ -103,13 +104,13 @@ void mp_map_clear(mp_map_t *map) {
103104}
104105
105106STATIC void mp_map_rehash (mp_map_t * map ) {
106- int old_alloc = map -> alloc ;
107+ mp_uint_t old_alloc = map -> alloc ;
107108 mp_map_elem_t * old_table = map -> table ;
108109 map -> alloc = get_doubling_prime_greater_or_equal_to (map -> alloc + 1 );
109110 map -> used = 0 ;
110111 map -> all_keys_are_qstrs = 1 ;
111112 map -> table = m_new0 (mp_map_elem_t , map -> alloc );
112- for (int i = 0 ; i < old_alloc ; i ++ ) {
113+ for (mp_uint_t i = 0 ; i < old_alloc ; i ++ ) {
113114 if (old_table [i ].key != MP_OBJ_NULL && old_table [i ].key != MP_OBJ_SENTINEL ) {
114115 mp_map_lookup (map , old_table [i ].key , MP_MAP_LOOKUP_ADD_IF_NOT_FOUND )-> value = old_table [i ].value ;
115116 }
@@ -168,8 +169,8 @@ mp_map_elem_t* mp_map_lookup(mp_map_t *map, mp_obj_t index, mp_map_lookup_kind_t
168169 }
169170
170171 mp_uint_t hash = mp_obj_hash (index );
171- uint pos = hash % map -> alloc ;
172- uint start_pos = pos ;
172+ mp_uint_t pos = hash % map -> alloc ;
173+ mp_uint_t start_pos = pos ;
173174 mp_map_elem_t * avail_slot = NULL ;
174175 for (;;) {
175176 mp_map_elem_t * slot = & map -> table [pos ];
@@ -242,19 +243,19 @@ mp_map_elem_t* mp_map_lookup(mp_map_t *map, mp_obj_t index, mp_map_lookup_kind_t
242243/******************************************************************************/
243244/* set */
244245
245- void mp_set_init (mp_set_t * set , int n ) {
246+ void mp_set_init (mp_set_t * set , mp_uint_t n ) {
246247 set -> alloc = n ;
247248 set -> used = 0 ;
248249 set -> table = m_new0 (mp_obj_t , set -> alloc );
249250}
250251
251252STATIC void mp_set_rehash (mp_set_t * set ) {
252- int old_alloc = set -> alloc ;
253+ mp_uint_t old_alloc = set -> alloc ;
253254 mp_obj_t * old_table = set -> table ;
254255 set -> alloc = get_doubling_prime_greater_or_equal_to (set -> alloc + 1 );
255256 set -> used = 0 ;
256257 set -> table = m_new0 (mp_obj_t , set -> alloc );
257- for (int i = 0 ; i < old_alloc ; i ++ ) {
258+ for (mp_uint_t i = 0 ; i < old_alloc ; i ++ ) {
258259 if (old_table [i ] != MP_OBJ_NULL && old_table [i ] != MP_OBJ_SENTINEL ) {
259260 mp_set_lookup (set , old_table [i ], MP_MAP_LOOKUP_ADD_IF_NOT_FOUND );
260261 }
@@ -271,8 +272,8 @@ mp_obj_t mp_set_lookup(mp_set_t *set, mp_obj_t index, mp_map_lookup_kind_t looku
271272 }
272273 }
273274 mp_uint_t hash = mp_obj_hash (index );
274- uint pos = hash % set -> alloc ;
275- uint start_pos = pos ;
275+ mp_uint_t pos = hash % set -> alloc ;
276+ mp_uint_t start_pos = pos ;
276277 mp_obj_t * avail_slot = NULL ;
277278 for (;;) {
278279 mp_obj_t elem = set -> table [pos ];
@@ -333,7 +334,7 @@ mp_obj_t mp_set_lookup(mp_set_t *set, mp_obj_t index, mp_map_lookup_kind_t looku
333334}
334335
335336mp_obj_t mp_set_remove_first (mp_set_t * set ) {
336- for (uint pos = 0 ; pos < set -> alloc ; pos ++ ) {
337+ for (mp_uint_t pos = 0 ; pos < set -> alloc ; pos ++ ) {
337338 if (MP_SET_SLOT_IS_FILLED (set , pos )) {
338339 mp_obj_t elem = set -> table [pos ];
339340 // delete element
@@ -359,7 +360,7 @@ void mp_set_clear(mp_set_t *set) {
359360
360361#if DEBUG_PRINT
361362void mp_map_dump (mp_map_t * map ) {
362- for (int i = 0 ; i < map -> alloc ; i ++ ) {
363+ for (mp_uint_t i = 0 ; i < map -> alloc ; i ++ ) {
363364 if (map -> table [i ].key != NULL ) {
364365 mp_obj_print (map -> table [i ].key , PRINT_REPR );
365366 } else {
0 commit comments