1.1 --- a/src/iterator.c Thu May 23 19:29:14 2024 +0200 1.2 +++ b/src/iterator.c Thu May 23 20:29:28 2024 +0200 1.3 @@ -42,8 +42,8 @@ 1.4 1.5 static void cx_iter_next_fast(void *it) { 1.6 struct cx_iterator_s *iter = it; 1.7 - if (iter->remove) { 1.8 - iter->remove = false; 1.9 + if (iter->base.remove) { 1.10 + iter->base.remove = false; 1.11 iter->elem_count--; 1.12 // only move the last element when we are not currently aiming 1.13 // at the last element already 1.14 @@ -60,8 +60,8 @@ 1.15 1.16 static void cx_iter_next_slow(void *it) { 1.17 struct cx_iterator_s *iter = it; 1.18 - if (iter->remove) { 1.19 - iter->remove = false; 1.20 + if (iter->base.remove) { 1.21 + iter->base.remove = false; 1.22 iter->elem_count--; 1.23 1.24 // number of elements to move 1.25 @@ -92,11 +92,11 @@ 1.26 iter.elem_handle = array; 1.27 iter.elem_size = elem_size; 1.28 iter.elem_count = array == NULL ? 0 : elem_count; 1.29 - iter.valid = cx_iter_valid; 1.30 - iter.current = cx_iter_current; 1.31 - iter.next = remove_keeps_order ? cx_iter_next_slow : cx_iter_next_fast; 1.32 - iter.remove = false; 1.33 - iter.mutating = true; 1.34 + iter.base.valid = cx_iter_valid; 1.35 + iter.base.current = cx_iter_current; 1.36 + iter.base.next = remove_keeps_order ? cx_iter_next_slow : cx_iter_next_fast; 1.37 + iter.base.remove = false; 1.38 + iter.base.mutating = true; 1.39 1.40 return iter; 1.41 } 1.42 @@ -107,6 +107,6 @@ 1.43 size_t elem_count 1.44 ) { 1.45 CxIterator iter = cxMutIterator((void*)array, elem_size, elem_count, false); 1.46 - iter.mutating = false; 1.47 + iter.base.mutating = false; 1.48 return iter; 1.49 }