331 enum cx_map_iterator_type type |
331 enum cx_map_iterator_type type |
332 ) { |
332 ) { |
333 CxIterator iter; |
333 CxIterator iter; |
334 |
334 |
335 iter.src_handle = map; |
335 iter.src_handle = map; |
336 iter.base.valid = cx_hash_map_iter_valid; |
336 iter.elem_count = map->size; |
337 iter.base.next = cx_hash_map_iter_next; |
|
338 |
337 |
339 switch (type) { |
338 switch (type) { |
340 case CX_MAP_ITERATOR_PAIRS: |
339 case CX_MAP_ITERATOR_PAIRS: |
|
340 iter.elem_size = sizeof(CxMapEntry); |
341 iter.base.current = cx_hash_map_iter_current_entry; |
341 iter.base.current = cx_hash_map_iter_current_entry; |
342 break; |
342 break; |
343 case CX_MAP_ITERATOR_KEYS: |
343 case CX_MAP_ITERATOR_KEYS: |
|
344 iter.elem_size = sizeof(CxHashKey); |
344 iter.base.current = cx_hash_map_iter_current_key; |
345 iter.base.current = cx_hash_map_iter_current_key; |
345 break; |
346 break; |
346 case CX_MAP_ITERATOR_VALUES: |
347 case CX_MAP_ITERATOR_VALUES: |
|
348 iter.elem_size = map->item_size; |
347 iter.base.current = cx_hash_map_iter_current_value; |
349 iter.base.current = cx_hash_map_iter_current_value; |
348 break; |
350 break; |
349 default: |
351 default: |
350 assert(false); |
352 assert(false); |
351 } |
353 } |
352 |
354 |
|
355 iter.base.valid = cx_hash_map_iter_valid; |
|
356 iter.base.next = cx_hash_map_iter_next; |
353 iter.base.remove = false; |
357 iter.base.remove = false; |
354 iter.base.mutating = false; |
358 iter.base.mutating = false; |
355 |
359 |
356 iter.slot = 0; |
360 iter.slot = 0; |
357 iter.index = 0; |
361 iter.index = 0; |