diff -r d4baf4dd55c3 -r fe0d69d72bcd src/iterator.c --- a/src/iterator.c Thu May 23 19:29:14 2024 +0200 +++ b/src/iterator.c Thu May 23 20:29:28 2024 +0200 @@ -42,8 +42,8 @@ static void cx_iter_next_fast(void *it) { struct cx_iterator_s *iter = it; - if (iter->remove) { - iter->remove = false; + if (iter->base.remove) { + iter->base.remove = false; iter->elem_count--; // only move the last element when we are not currently aiming // at the last element already @@ -60,8 +60,8 @@ static void cx_iter_next_slow(void *it) { struct cx_iterator_s *iter = it; - if (iter->remove) { - iter->remove = false; + if (iter->base.remove) { + iter->base.remove = false; iter->elem_count--; // number of elements to move @@ -92,11 +92,11 @@ iter.elem_handle = array; iter.elem_size = elem_size; iter.elem_count = array == NULL ? 0 : elem_count; - iter.valid = cx_iter_valid; - iter.current = cx_iter_current; - iter.next = remove_keeps_order ? cx_iter_next_slow : cx_iter_next_fast; - iter.remove = false; - iter.mutating = true; + iter.base.valid = cx_iter_valid; + iter.base.current = cx_iter_current; + iter.base.next = remove_keeps_order ? cx_iter_next_slow : cx_iter_next_fast; + iter.base.remove = false; + iter.base.mutating = true; return iter; } @@ -107,6 +107,6 @@ size_t elem_count ) { CxIterator iter = cxMutIterator((void*)array, elem_size, elem_count, false); - iter.mutating = false; + iter.base.mutating = false; return iter; }